(lp1 (ccopy_reg _reconstructor p2 (cpygments.token _TokenType p3 c__builtin__ tuple p4 (S'Comment' p5 S'Single' p6 ttRp7 (dp8 S'subtypes' p9 c__builtin__ set p10 ((ltRp11 sS'parent' p12 g2 (g3 g4 (g5 ttRp13 (dp14 g12 g2 (g3 g4 (ttRp15 (dp16 g5 g13 sS'Name' p17 g2 (g3 g4 (g17 ttRp18 (dp19 S'Function' p20 g2 (g3 g4 (g17 g20 ttRp21 (dp22 g9 g10 ((ltRp23 sg12 g18 sbsS'Exception' p24 g2 (g3 g4 (g17 g24 ttRp25 (dp26 g9 g10 ((ltRp27 sg12 g18 sbsS'Tag' p28 g2 (g3 g4 (g17 g28 ttRp29 (dp30 g9 g10 ((ltRp31 sg12 g18 sbsS'Constant' p32 g2 (g3 g4 (g17 g32 ttRp33 (dp34 g9 g10 ((ltRp35 sg12 g18 sbsg12 g15 sS'Pseudo' p36 g2 (g3 g4 (g17 g36 ttRp37 (dp38 g9 g10 ((ltRp39 sg12 g18 sbsS'Attribute' p40 g2 (g3 g4 (g17 g40 ttRp41 (dp42 g9 g10 ((ltRp43 sg12 g18 sbsS'Label' p44 g2 (g3 g4 (g17 g44 ttRp45 (dp46 g9 g10 ((ltRp47 sg12 g18 sbsS'Blubb' p48 g2 (g3 g4 (g17 g48 ttRp49 (dp50 g9 g10 ((ltRp51 sg12 g18 sbsS'Entity' p52 g2 (g3 g4 (g17 g52 ttRp53 (dp54 g9 g10 ((ltRp55 sg12 g18 sbsS'Builtin' p56 g2 (g3 g4 (g17 g56 ttRp57 (dp58 g9 g10 ((lp59 g2 (g3 g4 (g17 g56 g36 ttRp60 (dp61 g9 g10 ((ltRp62 sg12 g57 sbatRp63 sg36 g60 sg12 g18 sbsS'Other' p64 g2 (g3 g4 (g17 g64 ttRp65 (dp66 g9 g10 ((ltRp67 sg12 g18 sbsS'Identifier' p68 g2 (g3 g4 (g17 g68 ttRp69 (dp70 g9 g10 ((ltRp71 sg12 g18 sbsS'Variable' p72 g2 (g3 g4 (g17 g72 ttRp73 (dp74 g12 g18 sS'Global' p75 g2 (g3 g4 (g17 g72 g75 ttRp76 (dp77 g9 g10 ((ltRp78 sg12 g73 sbsS'Instance' p79 g2 (g3 g4 (g17 g72 g79 ttRp80 (dp81 g9 g10 ((ltRp82 sg12 g73 sbsS'Anonymous' p83 g2 (g3 g4 (g17 g72 g83 ttRp84 (dp85 g9 g10 ((ltRp86 sg12 g73 sbsg9 g10 ((lp87 g84 ag80 ag76 ag2 (g3 g4 (g17 g72 S'Class' p88 ttRp89 (dp90 g9 g10 ((ltRp91 sg12 g73 sbatRp92 sg88 g89 sbsg9 g10 ((lp93 g2 (g3 g4 (g17 S'Decorator' p94 ttRp95 (dp96 g9 g10 ((ltRp97 sg12 g18 sbag41 ag33 ag37 ag2 (g3 g4 (g17 S'Namespace' p98 ttRp99 (dp100 g9 g10 ((ltRp101 sg12 g18 sbag69 ag57 ag73 ag65 ag49 ag53 ag21 ag2 (g3 g4 (g17 S'Property' p102 ttRp103 (dp104 g9 g10 ((ltRp105 sg12 g18 sbag45 ag29 ag25 ag2 (g3 g4 (g17 g88 ttRp106 (dp107 g9 g10 ((ltRp108 sg12 g18 sbatRp109 sg102 g103 sg88 g106 sg94 g95 sg98 g99 sbsS'Keyword' p110 g2 (g3 g4 (g110 ttRp111 (dp112 S'Pervasive' p113 g2 (g3 g4 (g110 g113 ttRp114 (dp115 g9 g10 ((ltRp116 sg12 g111 sbsg32 g2 (g3 g4 (g110 g32 ttRp117 (dp118 g9 g10 ((ltRp119 sg12 g111 sbsg12 g15 sg98 g2 (g3 g4 (g110 g98 ttRp120 (dp121 g9 g10 ((ltRp122 sg12 g111 sbsg36 g2 (g3 g4 (g110 g36 ttRp123 (dp124 g9 g10 ((ltRp125 sg12 g111 sbsS'Reserved' p126 g2 (g3 g4 (g110 g126 ttRp127 (dp128 g9 g10 ((ltRp129 sg12 g111 sbsS'Declaration' p130 g2 (g3 g4 (g110 g130 ttRp131 (dp132 g9 g10 ((ltRp133 sg12 g111 sbsg72 g2 (g3 g4 (g110 g72 ttRp134 (dp135 g9 g10 ((ltRp136 sg12 g111 sbsg9 g10 ((lp137 g117 ag127 ag2 (g3 g4 (g110 S'Type' p138 ttRp139 (dp140 g9 g10 ((ltRp141 sg12 g111 sbag114 ag131 ag134 ag120 ag123 atRp142 sg138 g139 sbsS'Generic' p143 g2 (g3 g4 (g143 ttRp144 (dp145 S'Prompt' p146 g2 (g3 g4 (g143 g146 ttRp147 (dp148 g9 g10 ((ltRp149 sg12 g144 sbsg12 g15 sS'Deleted' p150 g2 (g3 g4 (g143 g150 ttRp151 (dp152 g9 g10 ((ltRp153 sg12 g144 sbsS'Traceback' p154 g2 (g3 g4 (g143 g154 ttRp155 (dp156 g9 g10 ((ltRp157 sg12 g144 sbsS'Emph' p158 g2 (g3 g4 (g143 g158 ttRp159 (dp160 g9 g10 ((ltRp161 sg12 g144 sbsS'Output' p162 g2 (g3 g4 (g143 g162 ttRp163 (dp164 g9 g10 ((ltRp165 sg12 g144 sbsS'Subheading' p166 g2 (g3 g4 (g143 g166 ttRp167 (dp168 g9 g10 ((ltRp169 sg12 g144 sbsS'Error' p170 g2 (g3 g4 (g143 g170 ttRp171 (dp172 g9 g10 ((ltRp173 sg12 g144 sbsg9 g10 ((lp174 g163 ag159 ag171 ag167 ag155 ag151 ag2 (g3 g4 (g143 S'Heading' p175 ttRp176 (dp177 g9 g10 ((ltRp178 sg12 g144 sbag2 (g3 g4 (g143 S'Inserted' p179 ttRp180 (dp181 g9 g10 ((ltRp182 sg12 g144 sbag2 (g3 g4 (g143 S'Strong' p183 ttRp184 (dp185 g9 g10 ((ltRp186 sg12 g144 sbag147 atRp187 sg183 g184 sg179 g180 sg175 g176 sbsS'Text' p188 g2 (g3 g4 (g188 ttRp189 (dp190 g9 g10 ((lp191 g2 (g3 g4 (g188 S'Symbol' p192 ttRp193 (dp194 g9 g10 ((ltRp195 sg12 g189 sbag2 (g3 g4 (g188 S'Whitespace' p196 ttRp197 (dp198 g9 g10 ((ltRp199 sg12 g189 sbatRp200 sg192 g193 sg196 g197 sg12 g15 sbsS'Punctuation' p201 g2 (g3 g4 (g201 ttRp202 (dp203 g9 g10 ((lp204 g2 (g3 g4 (g201 S'Indicator' p205 ttRp206 (dp207 g9 g10 ((ltRp208 sg12 g202 sbatRp209 sg205 g206 sg12 g15 sbsS'Token' p210 g15 sS'Number' p211 g2 (g3 g4 (S'Literal' p212 g211 ttRp213 (dp214 S'Bin' p215 g2 (g3 g4 (g212 g211 g215 ttRp216 (dp217 g9 g10 ((ltRp218 sg12 g213 sbsS'Binary' p219 g2 (g3 g4 (g212 g211 g219 ttRp220 (dp221 g9 g10 ((ltRp222 sg12 g213 sbsg12 g2 (g3 g4 (g212 ttRp223 (dp224 S'String' p225 g2 (g3 g4 (g212 g225 ttRp226 (dp227 S'Regex' p228 g2 (g3 g4 (g212 g225 g228 ttRp229 (dp230 g9 g10 ((ltRp231 sg12 g226 sbsS'Interpol' p232 g2 (g3 g4 (g212 g225 g232 ttRp233 (dp234 g9 g10 ((ltRp235 sg12 g226 sbsS'Regexp' p236 g2 (g3 g4 (g212 g225 g236 ttRp237 (dp238 g9 g10 ((ltRp239 sg12 g226 sbsg12 g223 sS'Heredoc' p240 g2 (g3 g4 (g212 g225 g240 ttRp241 (dp242 g9 g10 ((ltRp243 sg12 g226 sbsS'Double' p244 g2 (g3 g4 (g212 g225 g244 ttRp245 (dp246 g9 g10 ((ltRp247 sg12 g226 sbsg192 g2 (g3 g4 (g212 g225 g192 ttRp248 (dp249 g9 g10 ((ltRp250 sg12 g226 sbsS'Escape' p251 g2 (g3 g4 (g212 g225 g251 ttRp252 (dp253 g9 g10 ((ltRp254 sg12 g226 sbsS'Character' p255 g2 (g3 g4 (g212 g225 g255 ttRp256 (dp257 g9 g10 ((ltRp258 sg12 g226 sbsS'Interp' p259 g2 (g3 g4 (g212 g225 g259 ttRp260 (dp261 g9 g10 ((ltRp262 sg12 g226 sbsS'Backtick' p263 g2 (g3 g4 (g212 g225 g263 ttRp264 (dp265 g9 g10 ((ltRp266 sg12 g226 sbsS'Char' p267 g2 (g3 g4 (g212 g225 g267 ttRp268 (dp269 g9 g10 ((ltRp270 sg12 g226 sbsg6 g2 (g3 g4 (g212 g225 g6 ttRp271 (dp272 g9 g10 ((ltRp273 sg12 g226 sbsg64 g2 (g3 g4 (g212 g225 g64 ttRp274 (dp275 g9 g10 ((ltRp276 sg12 g226 sbsS'Doc' p277 g2 (g3 g4 (g212 g225 g277 ttRp278 (dp279 g9 g10 ((ltRp280 sg12 g226 sbsg9 g10 ((lp281 g274 ag2 (g3 g4 (g212 g225 S'Atom' p282 ttRp283 (dp284 g9 g10 ((ltRp285 sg12 g226 sbag245 ag268 ag260 ag278 ag241 ag264 ag233 ag248 ag237 ag229 ag271 ag256 ag252 atRp286 sg282 g283 sbsg12 g15 sg211 g213 sS'Scalar' p287 g2 (g3 g4 (g212 g287 ttRp288 (dp289 g9 g10 ((lp290 g2 (g3 g4 (g212 g287 S'Plain' p291 ttRp292 (dp293 g9 g10 ((ltRp294 sg12 g288 sbatRp295 sg12 g223 sg291 g292 sbsg64 g2 (g3 g4 (g212 g64 ttRp296 (dp297 g9 g10 ((ltRp298 sg12 g223 sbsS'Date' p299 g2 (g3 g4 (g212 g299 ttRp300 (dp301 g9 g10 ((ltRp302 sg12 g223 sbsg9 g10 ((lp303 g300 ag226 ag296 ag213 ag288 atRp304 sbsS'Decimal' p305 g2 (g3 g4 (g212 g211 g305 ttRp306 (dp307 g9 g10 ((ltRp308 sg12 g213 sbsS'Float' p309 g2 (g3 g4 (g212 g211 g309 ttRp310 (dp311 g9 g10 ((ltRp312 sg12 g213 sbsS'Hex' p313 g2 (g3 g4 (g212 g211 g313 ttRp314 (dp315 g9 g10 ((ltRp316 sg12 g213 sbsS'Integer' p317 g2 (g3 g4 (g212 g211 g317 ttRp318 (dp319 g9 g10 ((lp320 g2 (g3 g4 (g212 g211 g317 S'Long' p321 ttRp322 (dp323 g9 g10 ((ltRp324 sg12 g318 sbatRp325 sg321 g322 sg12 g213 sbsS'Octal' p326 g2 (g3 g4 (g212 g211 g326 ttRp327 (dp328 g9 g10 ((ltRp329 sg12 g213 sbsg9 g10 ((lp330 g216 ag220 ag327 ag306 ag2 (g3 g4 (g212 g211 S'Oct' p331 ttRp332 (dp333 g9 g10 ((ltRp334 sg12 g213 sbag318 ag310 ag314 atRp335 sg331 g332 sbsg212 g223 sg64 g2 (g3 g4 (g64 ttRp336 (dp337 g9 g10 ((ltRp338 sg12 g15 sbsg170 g2 (g3 g4 (g170 ttRp339 (dp340 g9 g10 ((ltRp341 sg12 g15 sbsS'Operator' p342 g2 (g3 g4 (g342 ttRp343 (dp344 g9 g10 ((lp345 g2 (g3 g4 (g342 S'Word' p346 ttRp347 (dp348 g9 g10 ((ltRp349 sg12 g343 sbatRp350 sg346 g347 sg12 g15 sbsg9 g10 ((lp351 g13 ag339 ag144 ag189 ag18 ag202 ag111 ag223 ag343 ag336 atRp352 sg225 g226 sbsS'Preproc' p353 g2 (g3 g4 (g5 g353 ttRp354 (dp355 g9 g10 ((ltRp356 sg12 g13 sbsg6 g7 sS'Multiline' p357 g2 (g3 g4 (g5 g357 ttRp358 (dp359 g9 g10 ((ltRp360 sg12 g13 sbsg9 g10 ((lp361 g2 (g3 g4 (g5 S'Special' p362 ttRp363 (dp364 g9 g10 ((ltRp365 sg12 g13 sbag354 ag7 ag358 atRp366 sg362 g363 sbsbV# -*- ruby -*- p367 tp368 a(g189 V\u000a\u000a p369 tp370 a(g7 V# Local variables: p371 tp372 a(g189 V\u000a tp373 a(g7 V# indent-tabs-mode: nil p374 tp375 a(g189 V\u000a tp376 a(g7 V# ruby-indent-level: 4 p377 tp378 a(g189 V\u000a tp379 a(g7 V# End: p380 tp381 a(g189 V\u000a\u000a p382 tp383 a(g7 V# @@PLEAC@@_NAME p384 tp385 a(g189 V\u000a tp386 a(g7 V# @@SKIP@@ Ruby p387 tp388 a(g189 V\u000a\u000a p389 tp390 a(g7 V# @@PLEAC@@_WEB p391 tp392 a(g189 V\u000a tp393 a(g7 V# @@SKIP@@ http://www.ruby-lang.org p394 tp395 a(g189 V\u000a\u000a\u000a p396 tp397 a(g7 V# @@PLEAC@@_1.0 p398 tp399 a(g189 V\u000a tp400 a(g18 Vstring p401 tp402 a(g189 V tp403 a(g343 V= tp404 a(g189 V tp405 a(g271 V'\u005cn' p406 tp407 a(g189 V p408 tp409 a(g7 V# two characters, \u005c and an n p410 tp411 a(g189 V\u000a tp412 a(g18 Vstring p413 tp414 a(g189 V tp415 a(g343 V= tp416 a(g189 V tp417 a(g271 V'Jon \u005c'Maddog\u005c' Orwant' p418 tp419 a(g189 V p420 tp421 a(g7 V# literal single quotes p422 tp423 a(g189 V\u000a\u000a p424 tp425 a(g18 Vstring p426 tp427 a(g189 V tp428 a(g343 V= tp429 a(g189 V tp430 a(g245 V" tp431 a(g252 V\u005cn p432 tp433 a(g245 V" tp434 a(g189 V p435 tp436 a(g7 V# a "newline" character p437 tp438 a(g189 V\u000a tp439 a(g18 Vstring p440 tp441 a(g189 V tp442 a(g343 V= tp443 a(g189 V tp444 a(g245 V" tp445 a(g245 VJon p446 tp447 a(g252 V\u005c" p448 tp449 a(g245 VMaddog p450 tp451 a(g252 V\u005c" p452 tp453 a(g245 V Orwant p454 tp455 a(g245 V" tp456 a(g189 V p457 tp458 a(g7 V# literal double quotes p459 tp460 a(g189 V\u000a\u000a p461 tp462 a(g18 Vstring p463 tp464 a(g189 V tp465 a(g343 V= tp466 a(g189 V tp467 a(g274 V%q/Jon 'Maddog' Orwant/ p468 tp469 a(g189 V p470 tp471 a(g7 V# literal single quotes p472 tp473 a(g189 V\u000a\u000a p474 tp475 a(g18 Vstring p476 tp477 a(g189 V tp478 a(g343 V= tp479 a(g189 V tp480 a(g274 V%q[ p481 tp482 a(g274 VJon 'Maddog' Orwant p483 tp484 a(g274 V] tp485 a(g189 V p486 tp487 a(g7 V# literal single quotes p488 tp489 a(g189 V\u000a tp490 a(g18 Vstring p491 tp492 a(g189 V tp493 a(g343 V= tp494 a(g189 V tp495 a(g274 V%q{ p496 tp497 a(g274 VJon 'Maddog' Orwant p498 tp499 a(g274 V} tp500 a(g189 V p501 tp502 a(g7 V# literal single quotes p503 tp504 a(g189 V\u000a tp505 a(g18 Vstring p506 tp507 a(g189 V tp508 a(g343 V= tp509 a(g189 V tp510 a(g274 V%q( p511 tp512 a(g274 VJon 'Maddog' Orwant p513 tp514 a(g274 V) tp515 a(g189 V p516 tp517 a(g7 V# literal single quotes p518 tp519 a(g189 V\u000a tp520 a(g18 Vstring p521 tp522 a(g189 V tp523 a(g343 V= tp524 a(g189 V tp525 a(g274 V%q< p526 tp527 a(g274 VJon 'Maddog' Orwant p528 tp529 a(g274 V> tp530 a(g189 V p531 tp532 a(g7 V# literal single quotes p533 tp534 a(g189 V\u000a\u000a p535 tp536 a(g18 Va tp537 a(g189 V tp538 a(g343 V= tp539 a(g189 V tp540 a(g343 V<< p541 tp542 a(g241 V" tp543 a(g33 VEOF p544 tp545 a(g241 V" tp546 a(g189 V\u000a tp547 a(g241 VThis is a multiline here document\u000a p548 tp549 a(g241 Vterminated by EOF on a line by itself\u000a p550 tp551 a(g33 VEOF\u000a p552 tp553 a(g189 V\u000a\u000a p554 tp555 a(g7 V# @@PLEAC@@_1.1 p556 tp557 a(g189 V\u000a tp558 a(g18 Vvalue p559 tp560 a(g189 V tp561 a(g343 V= tp562 a(g189 V tp563 a(g18 Vstring p564 tp565 a(g343 V[ tp566 a(g18 Voffset p567 tp568 a(g202 V, tp569 a(g18 Vcount p570 tp571 a(g343 V] tp572 a(g189 V\u000a tp573 a(g18 Vvalue p574 tp575 a(g189 V tp576 a(g343 V= tp577 a(g189 V tp578 a(g18 Vstring p579 tp580 a(g343 V[ tp581 a(g18 Voffset p582 tp583 a(g343 V. tp584 a(g18 V. tp585 a(g343 V- tp586 a(g318 V1 tp587 a(g343 V] tp588 a(g189 V\u000a\u000a p589 tp590 a(g18 Vstring p591 tp592 a(g343 V[ tp593 a(g18 Voffset p594 tp595 a(g202 V, tp596 a(g18 Vcount p597 tp598 a(g343 V] tp599 a(g189 V tp600 a(g343 V= tp601 a(g189 V tp602 a(g18 Vnewstring p603 tp604 a(g189 V\u000a tp605 a(g18 Vstring p606 tp607 a(g343 V[ tp608 a(g18 Voffset p609 tp610 a(g343 V. tp611 a(g18 V. tp612 a(g343 V- tp613 a(g318 V1 tp614 a(g343 V] tp615 a(g189 V p616 tp617 a(g343 V= tp618 a(g189 V tp619 a(g18 Vnewtail p620 tp621 a(g189 V\u000a\u000a p622 tp623 a(g7 V# in Ruby we can also specify intervals by their two offsets p624 tp625 a(g189 V\u000a tp626 a(g18 Vvalue p627 tp628 a(g189 V tp629 a(g343 V= tp630 a(g189 V tp631 a(g18 Vstring p632 tp633 a(g343 V[ tp634 a(g18 Voffset p635 tp636 a(g343 V. tp637 a(g18 V. tp638 a(g18 Voffs2 p639 tp640 a(g343 V] tp641 a(g189 V\u000a tp642 a(g18 Vstring p643 tp644 a(g343 V[ tp645 a(g18 Voffset p646 tp647 a(g343 V. tp648 a(g18 V. tp649 a(g18 Voffs2 p650 tp651 a(g343 V] tp652 a(g189 V tp653 a(g343 V= tp654 a(g189 V tp655 a(g18 Vnewstring p656 tp657 a(g189 V\u000a\u000a p658 tp659 a(g18 Vleading p660 tp661 a(g202 V, tp662 a(g189 V tp663 a(g18 Vs1 p664 tp665 a(g202 V, tp666 a(g189 V tp667 a(g18 Vs2 p668 tp669 a(g202 V, tp670 a(g189 V tp671 a(g18 Vtrailing p672 tp673 a(g189 V tp674 a(g343 V= tp675 a(g189 V tp676 a(g18 Vdata p677 tp678 a(g343 V. tp679 a(g18 Vunpack p680 tp681 a(g202 V( tp682 a(g245 V" tp683 a(g245 VA5 x3 A8 A8 A* p684 tp685 a(g245 V" tp686 a(g202 V) tp687 a(g189 V\u000a\u000a p688 tp689 a(g18 Vfivers p690 tp691 a(g189 V tp692 a(g343 V= tp693 a(g189 V tp694 a(g18 Vstring p695 tp696 a(g343 V. tp697 a(g18 Vunpack p698 tp699 a(g202 V( tp700 a(g245 V" tp701 a(g245 VA5 p702 tp703 a(g245 V" tp704 a(g189 V tp705 a(g343 V* tp706 a(g189 V tp707 a(g202 V( tp708 a(g18 Vstring p709 tp710 a(g343 V. tp711 a(g18 Vlength p712 tp713 a(g343 V/ tp714 a(g318 V5 tp715 a(g202 V) tp716 a(g202 V) tp717 a(g189 V\u000a\u000a p718 tp719 a(g18 Vchars p720 tp721 a(g189 V tp722 a(g343 V= tp723 a(g189 V tp724 a(g18 Vstring p725 tp726 a(g343 V. tp727 a(g18 Vunpack p728 tp729 a(g202 V( tp730 a(g245 V" tp731 a(g245 VA1 p732 tp733 a(g245 V" tp734 a(g189 V tp735 a(g343 V* tp736 a(g189 V tp737 a(g18 Vstring p738 tp739 a(g343 V. tp740 a(g18 Vlength p741 tp742 a(g202 V) tp743 a(g189 V\u000a\u000a p744 tp745 a(g18 Vstring p746 tp747 a(g189 V tp748 a(g343 V= tp749 a(g189 V tp750 a(g245 V" tp751 a(g245 VThis is what you have p752 tp753 a(g245 V" tp754 a(g189 V\u000a tp755 a(g7 V# +012345678901234567890 Indexing forwards (left to right) p756 tp757 a(g189 V\u000a tp758 a(g7 V# 109876543210987654321- Indexing backwards (right to left) p759 tp760 a(g189 V\u000a tp761 a(g7 V# note that 0 means 10 or 20, etc. above p762 tp763 a(g189 V\u000a\u000a p764 tp765 a(g18 Vfirst p766 tp767 a(g189 V p768 tp769 a(g343 V= tp770 a(g189 V tp771 a(g18 Vstring p772 tp773 a(g343 V[ tp774 a(g318 V0 tp775 a(g202 V, tp776 a(g189 V tp777 a(g318 V1 tp778 a(g343 V] tp779 a(g189 V p780 tp781 a(g7 V# "T" p782 tp783 a(g189 V\u000a tp784 a(g18 Vstart p785 tp786 a(g189 V p787 tp788 a(g343 V= tp789 a(g189 V tp790 a(g18 Vstring p791 tp792 a(g343 V[ tp793 a(g318 V5 tp794 a(g202 V, tp795 a(g189 V tp796 a(g318 V2 tp797 a(g343 V] tp798 a(g189 V p799 tp800 a(g7 V# "is" p801 tp802 a(g189 V\u000a tp803 a(g18 Vrest p804 tp805 a(g189 V p806 tp807 a(g343 V= tp808 a(g189 V tp809 a(g18 Vstring p810 tp811 a(g343 V[ tp812 a(g318 V13 p813 tp814 a(g343 V. tp815 a(g18 V. tp816 a(g343 V- tp817 a(g318 V1 tp818 a(g343 V] tp819 a(g189 V p820 tp821 a(g7 V# "you have" p822 tp823 a(g189 V\u000a tp824 a(g18 Vlast p825 tp826 a(g189 V p827 tp828 a(g343 V= tp829 a(g189 V tp830 a(g18 Vstring p831 tp832 a(g343 V[ tp833 a(g343 V- tp834 a(g318 V1 tp835 a(g202 V, tp836 a(g189 V tp837 a(g318 V1 tp838 a(g343 V] tp839 a(g189 V p840 tp841 a(g7 V# "e" p842 tp843 a(g189 V\u000a tp844 a(g18 Vend_ p845 tp846 a(g189 V p847 tp848 a(g343 V= tp849 a(g189 V tp850 a(g18 Vstring p851 tp852 a(g343 V[ tp853 a(g343 V- tp854 a(g318 V4 tp855 a(g343 V. tp856 a(g18 V. tp857 a(g343 V- tp858 a(g318 V1 tp859 a(g343 V] tp860 a(g189 V p861 tp862 a(g7 V# "have" p863 tp864 a(g189 V\u000a tp865 a(g18 Vpiece p866 tp867 a(g189 V p868 tp869 a(g343 V= tp870 a(g189 V tp871 a(g18 Vstring p872 tp873 a(g343 V[ tp874 a(g343 V- tp875 a(g318 V8 tp876 a(g202 V, tp877 a(g189 V tp878 a(g318 V3 tp879 a(g343 V] tp880 a(g189 V p881 tp882 a(g7 V# "you" p883 tp884 a(g189 V\u000a\u000a p885 tp886 a(g18 Vstring p887 tp888 a(g343 V[ tp889 a(g318 V5 tp890 a(g202 V, tp891 a(g189 V tp892 a(g318 V2 tp893 a(g343 V] tp894 a(g189 V tp895 a(g343 V= tp896 a(g189 V tp897 a(g245 V" tp898 a(g245 Vwasn't p899 tp900 a(g245 V" tp901 a(g189 V p902 tp903 a(g7 V# change "is" to "wasn't" p904 tp905 a(g189 V\u000a tp906 a(g18 Vstring p907 tp908 a(g343 V[ tp909 a(g343 V- tp910 a(g318 V12 p911 tp912 a(g343 V. tp913 a(g18 V. tp914 a(g343 V- tp915 a(g318 V1 tp916 a(g343 V] tp917 a(g189 V tp918 a(g343 V= tp919 a(g189 V tp920 a(g245 V" tp921 a(g245 Vondrous p922 tp923 a(g245 V" tp924 a(g189 V tp925 a(g7 V# "This wasn't wondrous" p926 tp927 a(g189 V\u000a tp928 a(g18 Vstring p929 tp930 a(g343 V[ tp931 a(g318 V0 tp932 a(g202 V, tp933 a(g189 V tp934 a(g318 V1 tp935 a(g343 V] tp936 a(g189 V tp937 a(g343 V= tp938 a(g189 V tp939 a(g245 V" tp940 a(g245 V" tp941 a(g189 V p942 tp943 a(g7 V# delete first character p944 tp945 a(g189 V\u000a tp946 a(g18 Vstring p947 tp948 a(g343 V[ tp949 a(g343 V- tp950 a(g318 V10 p951 tp952 a(g343 V. tp953 a(g18 V. tp954 a(g343 V- tp955 a(g318 V1 tp956 a(g343 V] tp957 a(g189 V p958 tp959 a(g343 V= tp960 a(g189 V tp961 a(g245 V" tp962 a(g245 V" tp963 a(g189 V p964 tp965 a(g7 V# delete last 10 characters p966 tp967 a(g189 V\u000a\u000a p968 tp969 a(g111 Vif p970 tp971 a(g189 V tp972 a(g18 Vstring p973 tp974 a(g343 V[ tp975 a(g343 V- tp976 a(g318 V10 p977 tp978 a(g343 V. tp979 a(g18 V. tp980 a(g343 V- tp981 a(g318 V1 tp982 a(g343 V] tp983 a(g189 V tp984 a(g343 V=~ p985 tp986 a(g189 V tp987 a(g229 V/ tp988 a(g229 Vpattern p989 tp990 a(g229 V/ tp991 a(g189 V\u000a p992 tp993 a(g57 Vputs p994 tp995 a(g189 V tp996 a(g245 V" tp997 a(g245 VPattern matches in last 10 characters p998 tp999 a(g245 V" tp1000 a(g189 V\u000a tp1001 a(g111 Vend p1002 tp1003 a(g189 V\u000a\u000a p1004 tp1005 a(g18 Vstring p1006 tp1007 a(g343 V[ tp1008 a(g318 V0 tp1009 a(g202 V, tp1010 a(g189 V tp1011 a(g318 V5 tp1012 a(g343 V] tp1013 a(g343 V. tp1014 a(g18 Vgsub! p1015 tp1016 a(g202 V( tp1017 a(g229 V/ tp1018 a(g229 Vis p1019 tp1020 a(g229 V/ tp1021 a(g202 V, tp1022 a(g189 V tp1023 a(g271 V'at' p1024 tp1025 a(g202 V) tp1026 a(g189 V\u000a\u000a p1027 tp1028 a(g18 Va tp1029 a(g189 V tp1030 a(g343 V= tp1031 a(g189 V tp1032 a(g245 V" tp1033 a(g245 Vmake a hat p1034 tp1035 a(g245 V" tp1036 a(g189 V\u000a tp1037 a(g18 Va tp1038 a(g343 V[ tp1039 a(g318 V0 tp1040 a(g202 V, tp1041 a(g189 V tp1042 a(g318 V1 tp1043 a(g343 V] tp1044 a(g202 V, tp1045 a(g189 V tp1046 a(g18 Va tp1047 a(g343 V[ tp1048 a(g343 V- tp1049 a(g318 V1 tp1050 a(g202 V, tp1051 a(g189 V tp1052 a(g318 V1 tp1053 a(g343 V] tp1054 a(g189 V tp1055 a(g343 V= tp1056 a(g189 V tp1057 a(g18 Va tp1058 a(g343 V[ tp1059 a(g343 V- tp1060 a(g318 V1 tp1061 a(g202 V, tp1062 a(g189 V tp1063 a(g318 V1 tp1064 a(g343 V] tp1065 a(g202 V, tp1066 a(g189 V tp1067 a(g18 Va tp1068 a(g343 V[ tp1069 a(g318 V0 tp1070 a(g202 V, tp1071 a(g189 V tp1072 a(g318 V1 tp1073 a(g343 V] tp1074 a(g189 V\u000a\u000a p1075 tp1076 a(g18 Va tp1077 a(g189 V tp1078 a(g343 V= tp1079 a(g189 V tp1080 a(g245 V" tp1081 a(g245 VTo be or not to be p1082 tp1083 a(g245 V" tp1084 a(g189 V\u000a tp1085 a(g18 Vb tp1086 a(g189 V tp1087 a(g343 V= tp1088 a(g189 V tp1089 a(g18 Va tp1090 a(g343 V. tp1091 a(g18 Vunpack p1092 tp1093 a(g202 V( tp1094 a(g245 V" tp1095 a(g245 Vx6 A6 p1096 tp1097 a(g245 V" tp1098 a(g202 V) tp1099 a(g189 V\u000a\u000a p1100 tp1101 a(g18 Vb tp1102 a(g202 V, tp1103 a(g189 V tp1104 a(g18 Vc tp1105 a(g189 V tp1106 a(g343 V= tp1107 a(g189 V tp1108 a(g18 Va tp1109 a(g343 V. tp1110 a(g18 Vunpack p1111 tp1112 a(g202 V( tp1113 a(g245 V" tp1114 a(g245 Vx6 A2 X5 A2 p1115 tp1116 a(g245 V" tp1117 a(g202 V) tp1118 a(g189 V\u000a tp1119 a(g57 Vputs p1120 tp1121 a(g189 V tp1122 a(g245 V" tp1123 a(g233 V#{ p1124 tp1125 a(g18 Vb tp1126 a(g233 V} tp1127 a(g252 V\u005cn p1128 tp1129 a(g233 V#{ p1130 tp1131 a(g18 Vc tp1132 a(g233 V} tp1133 a(g252 V\u005cn p1134 tp1135 a(g245 V" tp1136 a(g189 V\u000a\u000a p1137 tp1138 a(g111 Vdef p1139 tp1140 a(g189 V tp1141 a(g21 Vcut2fmt p1142 tp1143 a(g202 V( tp1144 a(g343 V* tp1145 a(g18 Vargs p1146 tp1147 a(g202 V) tp1148 a(g189 V\u000a p1149 tp1150 a(g18 Vtemplate p1151 tp1152 a(g189 V tp1153 a(g343 V= tp1154 a(g189 V tp1155 a(g271 V'' p1156 tp1157 a(g189 V\u000a p1158 tp1159 a(g18 Vlastpos p1160 tp1161 a(g189 V p1162 tp1163 a(g343 V= tp1164 a(g189 V tp1165 a(g318 V1 tp1166 a(g189 V\u000a p1167 tp1168 a(g111 Vfor p1169 tp1170 a(g189 V tp1171 a(g18 Vplace p1172 tp1173 a(g189 V tp1174 a(g111 Vin p1175 tp1176 a(g189 V tp1177 a(g18 Vargs p1178 tp1179 a(g189 V\u000a p1180 tp1181 a(g18 Vtemplate p1182 tp1183 a(g189 V tp1184 a(g343 V+= p1185 tp1186 a(g189 V tp1187 a(g245 V" tp1188 a(g245 VA tp1189 a(g245 V" tp1190 a(g189 V tp1191 a(g343 V+ tp1192 a(g189 V tp1193 a(g202 V( tp1194 a(g18 Vplace p1195 tp1196 a(g189 V tp1197 a(g343 V- tp1198 a(g189 V tp1199 a(g18 Vlastpos p1200 tp1201 a(g202 V) tp1202 a(g343 V. tp1203 a(g18 Vto_s p1204 tp1205 a(g189 V tp1206 a(g343 V+ tp1207 a(g189 V tp1208 a(g245 V" tp1209 a(g245 V tp1210 a(g245 V" tp1211 a(g189 V\u000a p1212 tp1213 a(g18 Vlastpos p1214 tp1215 a(g189 V p1216 tp1217 a(g343 V= tp1218 a(g189 V tp1219 a(g18 Vplace p1220 tp1221 a(g189 V\u000a p1222 tp1223 a(g111 Vend p1224 tp1225 a(g189 V\u000a p1226 tp1227 a(g18 Vtemplate p1228 tp1229 a(g189 V tp1230 a(g343 V+= p1231 tp1232 a(g189 V tp1233 a(g245 V" tp1234 a(g245 VA* p1235 tp1236 a(g245 V" tp1237 a(g189 V\u000a p1238 tp1239 a(g111 Vreturn p1240 tp1241 a(g189 V tp1242 a(g18 Vtemplate p1243 tp1244 a(g189 V\u000a tp1245 a(g111 Vend p1246 tp1247 a(g189 V\u000a\u000a p1248 tp1249 a(g18 Vfmt p1250 tp1251 a(g189 V tp1252 a(g343 V= tp1253 a(g189 V tp1254 a(g18 Vcut2fmt p1255 tp1256 a(g202 V( tp1257 a(g318 V8 tp1258 a(g202 V, tp1259 a(g189 V tp1260 a(g318 V14 p1261 tp1262 a(g202 V, tp1263 a(g189 V tp1264 a(g318 V20 p1265 tp1266 a(g202 V, tp1267 a(g189 V tp1268 a(g318 V26 p1269 tp1270 a(g202 V, tp1271 a(g189 V tp1272 a(g318 V30 p1273 tp1274 a(g202 V) tp1275 a(g189 V\u000a\u000a\u000a p1276 tp1277 a(g7 V# @@PLEAC@@_1.2 p1278 tp1279 a(g189 V\u000a tp1280 a(g7 V# careful! "b is true" doesn't mean "b != 0" (0 is true in Ruby) p1281 tp1282 a(g189 V\u000a tp1283 a(g7 V# thus no problem of "defined" later since only nil is false p1284 tp1285 a(g189 V\u000a tp1286 a(g7 V# the following sets to `c' if `b' is nil or false p1287 tp1288 a(g189 V\u000a tp1289 a(g18 Va tp1290 a(g189 V tp1291 a(g343 V= tp1292 a(g189 V tp1293 a(g18 Vb tp1294 a(g189 V tp1295 a(g343 V|| p1296 tp1297 a(g189 V tp1298 a(g18 Vc tp1299 a(g189 V\u000a\u000a p1300 tp1301 a(g7 V# if you need Perl's behaviour (setting to `c' if `b' is 0) the most p1302 tp1303 a(g189 V\u000a tp1304 a(g7 V# effective way is to use Numeric#nonzero? (thanks to Dave Thomas!) p1305 tp1306 a(g189 V\u000a tp1307 a(g18 Va tp1308 a(g189 V tp1309 a(g343 V= tp1310 a(g189 V tp1311 a(g18 Vb tp1312 a(g343 V. tp1313 a(g18 Vnonzero? p1314 tp1315 a(g189 V tp1316 a(g343 V|| p1317 tp1318 a(g189 V tp1319 a(g18 Vc tp1320 a(g189 V\u000a\u000a p1321 tp1322 a(g7 V# you will still want to use defined? in order to test p1323 tp1324 a(g189 V\u000a tp1325 a(g7 V# for scope existence of a given object p1326 tp1327 a(g189 V\u000a tp1328 a(g18 Va tp1329 a(g189 V tp1330 a(g343 V= tp1331 a(g189 V tp1332 a(g18 Vdefined? p1333 tp1334 a(g202 V( tp1335 a(g18 Vb tp1336 a(g202 V) tp1337 a(g189 V tp1338 a(g202 V? tp1339 a(g189 V tp1340 a(g18 Vb tp1341 a(g189 V tp1342 a(g202 V: tp1343 a(g189 V tp1344 a(g18 Vc tp1345 a(g189 V\u000a\u000a p1346 tp1347 a(g18 Vdir p1348 tp1349 a(g189 V tp1350 a(g343 V= tp1351 a(g189 V tp1352 a(g33 VARGV p1353 tp1354 a(g343 V. tp1355 a(g18 Vshift p1356 tp1357 a(g189 V tp1358 a(g343 V|| p1359 tp1360 a(g189 V tp1361 a(g245 V" tp1362 a(g245 V/tmp p1363 tp1364 a(g245 V" tp1365 a(g189 V\u000a\u000a\u000a p1366 tp1367 a(g7 V# @@PLEAC@@_1.3 p1368 tp1369 a(g189 V\u000a tp1370 a(g18 Vv1 p1371 tp1372 a(g202 V, tp1373 a(g189 V tp1374 a(g18 Vv2 p1375 tp1376 a(g189 V tp1377 a(g343 V= tp1378 a(g189 V tp1379 a(g18 Vv2 p1380 tp1381 a(g202 V, tp1382 a(g189 V tp1383 a(g18 Vv1 p1384 tp1385 a(g189 V\u000a\u000a p1386 tp1387 a(g18 Valpha p1388 tp1389 a(g202 V, tp1390 a(g189 V tp1391 a(g18 Vbeta p1392 tp1393 a(g202 V, tp1394 a(g189 V tp1395 a(g18 Vproduction p1396 tp1397 a(g189 V tp1398 a(g343 V= tp1399 a(g189 V tp1400 a(g274 V%w( p1401 tp1402 a(g274 VJanuary March August p1403 tp1404 a(g274 V) tp1405 a(g189 V\u000a tp1406 a(g18 Valpha p1407 tp1408 a(g202 V, tp1409 a(g189 V tp1410 a(g18 Vbeta p1411 tp1412 a(g202 V, tp1413 a(g189 V tp1414 a(g18 Vproduction p1415 tp1416 a(g189 V tp1417 a(g343 V= tp1418 a(g189 V tp1419 a(g18 Vbeta p1420 tp1421 a(g202 V, tp1422 a(g189 V tp1423 a(g18 Vproduction p1424 tp1425 a(g202 V, tp1426 a(g189 V tp1427 a(g18 Valpha p1428 tp1429 a(g189 V\u000a\u000a\u000a p1430 tp1431 a(g7 V# @@PLEAC@@_1.4 p1432 tp1433 a(g189 V\u000a tp1434 a(g18 Vnum p1435 tp1436 a(g189 V tp1437 a(g343 V= tp1438 a(g189 V tp1439 a(g18 Vchar p1440 tp1441 a(g343 V[ tp1442 a(g318 V0 tp1443 a(g343 V] tp1444 a(g189 V\u000a tp1445 a(g18 Vchar p1446 tp1447 a(g189 V tp1448 a(g343 V= tp1449 a(g189 V tp1450 a(g18 Vnum p1451 tp1452 a(g343 V. tp1453 a(g18 Vchr p1454 tp1455 a(g189 V\u000a\u000a p1456 tp1457 a(g7 V# Ruby also supports having a char from character constant p1458 tp1459 a(g189 V\u000a tp1460 a(g18 Vnum p1461 tp1462 a(g189 V tp1463 a(g343 V= tp1464 a(g189 V tp1465 a(g268 V?r p1466 tp1467 a(g189 V\u000a\u000a p1468 tp1469 a(g18 Vchar p1470 tp1471 a(g189 V tp1472 a(g343 V= tp1473 a(g189 V tp1474 a(g57 Vsprintf p1475 tp1476 a(g202 V( tp1477 a(g245 V" tp1478 a(g245 V%c p1479 tp1480 a(g245 V" tp1481 a(g202 V, tp1482 a(g189 V tp1483 a(g18 Vnum p1484 tp1485 a(g202 V) tp1486 a(g189 V\u000a tp1487 a(g57 Vprintf p1488 tp1489 a(g202 V( tp1490 a(g245 V" tp1491 a(g245 VNumber %d is character %c p1492 tp1493 a(g252 V\u005cn p1494 tp1495 a(g245 V" tp1496 a(g202 V, tp1497 a(g189 V tp1498 a(g18 Vnum p1499 tp1500 a(g202 V, tp1501 a(g189 V tp1502 a(g18 Vnum p1503 tp1504 a(g202 V) tp1505 a(g189 V\u000a\u000a p1506 tp1507 a(g18 Vascii p1508 tp1509 a(g189 V tp1510 a(g343 V= tp1511 a(g189 V tp1512 a(g18 Vstring p1513 tp1514 a(g343 V. tp1515 a(g18 Vunpack p1516 tp1517 a(g202 V( tp1518 a(g245 V" tp1519 a(g245 VC* p1520 tp1521 a(g245 V" tp1522 a(g202 V) tp1523 a(g189 V\u000a tp1524 a(g18 Vstring p1525 tp1526 a(g189 V tp1527 a(g343 V= tp1528 a(g189 V tp1529 a(g18 Vascii p1530 tp1531 a(g343 V. tp1532 a(g18 Vpack p1533 tp1534 a(g202 V( tp1535 a(g245 V" tp1536 a(g245 VC* p1537 tp1538 a(g245 V" tp1539 a(g202 V) tp1540 a(g189 V\u000a\u000a p1541 tp1542 a(g18 Vhal p1543 tp1544 a(g189 V tp1545 a(g343 V= tp1546 a(g189 V tp1547 a(g245 V" tp1548 a(g245 VHAL p1549 tp1550 a(g245 V" tp1551 a(g189 V\u000a tp1552 a(g18 Vascii p1553 tp1554 a(g189 V tp1555 a(g343 V= tp1556 a(g189 V tp1557 a(g18 Vhal p1558 tp1559 a(g343 V. tp1560 a(g18 Vunpack p1561 tp1562 a(g202 V( tp1563 a(g245 V" tp1564 a(g245 VC* p1565 tp1566 a(g245 V" tp1567 a(g202 V) tp1568 a(g189 V\u000a tp1569 a(g7 V# We can't use Array#each since we can't mutate a Fixnum p1570 tp1571 a(g189 V\u000a tp1572 a(g18 Vascii p1573 tp1574 a(g343 V. tp1575 a(g18 Vcollect! p1576 tp1577 a(g189 V tp1578 a(g202 V{ tp1579 a(g189 V tp1580 a(g343 V| tp1581 a(g18 Vi tp1582 a(g343 V| tp1583 a(g189 V\u000a p1584 tp1585 a(g18 Vi tp1586 a(g189 V tp1587 a(g343 V+ tp1588 a(g189 V tp1589 a(g318 V1 tp1590 a(g189 V p1591 tp1592 a(g7 V# add one to each ASCII value p1593 tp1594 a(g189 V\u000a tp1595 a(g202 V} tp1596 a(g189 V \u000a p1597 tp1598 a(g18 Vibm p1599 tp1600 a(g189 V tp1601 a(g343 V= tp1602 a(g189 V tp1603 a(g18 Vascii p1604 tp1605 a(g343 V. tp1606 a(g18 Vpack p1607 tp1608 a(g202 V( tp1609 a(g245 V" tp1610 a(g245 VC* p1611 tp1612 a(g245 V" tp1613 a(g202 V) tp1614 a(g189 V\u000a tp1615 a(g57 Vputs p1616 tp1617 a(g189 V tp1618 a(g18 Vibm p1619 tp1620 a(g189 V\u000a\u000a\u000a p1621 tp1622 a(g7 V# @@PLEAC@@_1.5 p1623 tp1624 a(g189 V\u000a tp1625 a(g18 Varray p1626 tp1627 a(g189 V tp1628 a(g343 V= tp1629 a(g189 V tp1630 a(g18 Vstring p1631 tp1632 a(g343 V. tp1633 a(g18 Vsplit p1634 tp1635 a(g202 V( tp1636 a(g271 V'' p1637 tp1638 a(g202 V) tp1639 a(g189 V\u000a\u000a p1640 tp1641 a(g18 Varray p1642 tp1643 a(g189 V tp1644 a(g343 V= tp1645 a(g189 V tp1646 a(g18 Vstring p1647 tp1648 a(g343 V. tp1649 a(g18 Vunpack p1650 tp1651 a(g202 V( tp1652 a(g245 V" tp1653 a(g245 VC* p1654 tp1655 a(g245 V" tp1656 a(g202 V) tp1657 a(g189 V\u000a\u000a p1658 tp1659 a(g18 Vstring p1660 tp1661 a(g343 V. tp1662 a(g18 Vscan p1663 tp1664 a(g202 V( tp1665 a(g229 V/ tp1666 a(g229 V. tp1667 a(g229 V/ tp1668 a(g202 V) tp1669 a(g189 V tp1670 a(g202 V{ tp1671 a(g189 V tp1672 a(g343 V| tp1673 a(g18 Vb tp1674 a(g343 V| tp1675 a(g189 V\u000a p1676 tp1677 a(g7 V# do something with b p1678 tp1679 a(g189 V\u000a tp1680 a(g202 V} tp1681 a(g189 V\u000a\u000a p1682 tp1683 a(g18 Vstring p1684 tp1685 a(g189 V tp1686 a(g343 V= tp1687 a(g189 V tp1688 a(g245 V" tp1689 a(g245 Van apple a day p1690 tp1691 a(g245 V" tp1692 a(g189 V\u000a tp1693 a(g57 Vprint p1694 tp1695 a(g189 V tp1696 a(g245 V" tp1697 a(g245 Vunique chars are: p1698 tp1699 a(g245 V" tp1700 a(g202 V, tp1701 a(g189 V tp1702 a(g18 Vstring p1703 tp1704 a(g343 V. tp1705 a(g18 Vsplit p1706 tp1707 a(g202 V( tp1708 a(g271 V'' p1709 tp1710 a(g202 V) tp1711 a(g343 V. tp1712 a(g18 Vuniq p1713 tp1714 a(g343 V. tp1715 a(g18 Vsort p1716 tp1717 a(g202 V, tp1718 a(g189 V tp1719 a(g245 V" tp1720 a(g252 V\u005cn p1721 tp1722 a(g245 V" tp1723 a(g189 V\u000a\u000a p1724 tp1725 a(g18 Vsum p1726 tp1727 a(g189 V tp1728 a(g343 V= tp1729 a(g189 V tp1730 a(g318 V0 tp1731 a(g189 V\u000a tp1732 a(g111 Vfor p1733 tp1734 a(g189 V tp1735 a(g18 Vascval p1736 tp1737 a(g189 V tp1738 a(g111 Vin p1739 tp1740 a(g189 V tp1741 a(g18 Vstring p1742 tp1743 a(g343 V. tp1744 a(g18 Vunpack p1745 tp1746 a(g202 V( tp1747 a(g245 V" tp1748 a(g245 VC* p1749 tp1750 a(g245 V" tp1751 a(g202 V) tp1752 a(g189 V tp1753 a(g7 V# or use Array#each for a pure OO style :) p1754 tp1755 a(g189 V\u000a p1756 tp1757 a(g18 Vsum p1758 tp1759 a(g189 V tp1760 a(g343 V+= p1761 tp1762 a(g189 V tp1763 a(g18 Vascval p1764 tp1765 a(g189 V\u000a tp1766 a(g111 Vend p1767 tp1768 a(g189 V\u000a tp1769 a(g57 Vputs p1770 tp1771 a(g189 V tp1772 a(g245 V" tp1773 a(g245 Vsum is p1774 tp1775 a(g233 V#{ p1776 tp1777 a(g18 Vsum p1778 tp1779 a(g189 V tp1780 a(g343 V& tp1781 a(g189 V tp1782 a(g314 V0xffffffff p1783 tp1784 a(g233 V} tp1785 a(g245 V" tp1786 a(g189 V tp1787 a(g7 V# since Ruby will go Bignum if necessary p1788 tp1789 a(g189 V\u000a\u000a p1790 tp1791 a(g7 V# @@INCLUDE@@ include/ruby/slowcat.rb p1792 tp1793 a(g189 V\u000a\u000a\u000a p1794 tp1795 a(g7 V# @@PLEAC@@_1.6 p1796 tp1797 a(g189 V\u000a tp1798 a(g18 Vrevbytes p1799 tp1800 a(g189 V tp1801 a(g343 V= tp1802 a(g189 V tp1803 a(g18 Vstring p1804 tp1805 a(g343 V. tp1806 a(g18 Vreverse p1807 tp1808 a(g189 V\u000a\u000a p1809 tp1810 a(g18 Vrevwords p1811 tp1812 a(g189 V tp1813 a(g343 V= tp1814 a(g189 V tp1815 a(g18 Vstring p1816 tp1817 a(g343 V. tp1818 a(g18 Vsplit p1819 tp1820 a(g202 V( tp1821 a(g245 V" tp1822 a(g245 V tp1823 a(g245 V" tp1824 a(g202 V) tp1825 a(g343 V. tp1826 a(g18 Vreverse p1827 tp1828 a(g343 V. tp1829 a(g18 Vjoin p1830 tp1831 a(g202 V( tp1832 a(g245 V" tp1833 a(g245 V tp1834 a(g245 V" tp1835 a(g202 V) tp1836 a(g189 V\u000a\u000a p1837 tp1838 a(g18 Vrevwords p1839 tp1840 a(g189 V tp1841 a(g343 V= tp1842 a(g189 V tp1843 a(g18 Vstring p1844 tp1845 a(g343 V. tp1846 a(g18 Vsplit p1847 tp1848 a(g202 V( tp1849 a(g229 V/ tp1850 a(g229 V( tp1851 a(g229 V\u005c tp1852 a(g229 Vs+) p1853 tp1854 a(g229 V/ tp1855 a(g202 V) tp1856 a(g343 V. tp1857 a(g18 Vreverse p1858 tp1859 a(g343 V. tp1860 a(g18 Vjoin p1861 tp1862 a(g189 V\u000a\u000a p1863 tp1864 a(g7 V# using the fact that IO is Enumerable, you can directly "select" it p1865 tp1866 a(g189 V\u000a tp1867 a(g18 Vlong_palindromes p1868 tp1869 a(g189 V tp1870 a(g343 V= tp1871 a(g189 V tp1872 a(g33 VFile p1873 tp1874 a(g343 V. tp1875 a(g18 Vopen p1876 tp1877 a(g202 V( tp1878 a(g245 V" tp1879 a(g245 V/usr/share/dict/words p1880 tp1881 a(g245 V" tp1882 a(g202 V) tp1883 a(g343 V. tp1884 a(g189 V\u000a p1885 tp1886 a(g57 Vselect p1887 tp1888 a(g189 V tp1889 a(g202 V{ tp1890 a(g189 V tp1891 a(g343 V| tp1892 a(g18 Vw tp1893 a(g343 V| tp1894 a(g189 V tp1895 a(g18 Vw tp1896 a(g343 V. tp1897 a(g18 Vchomp! p1898 tp1899 a(g202 V; tp1900 a(g189 V tp1901 a(g18 Vw tp1902 a(g343 V. tp1903 a(g18 Vreverse p1904 tp1905 a(g189 V tp1906 a(g343 V== p1907 tp1908 a(g189 V tp1909 a(g18 Vw tp1910 a(g189 V tp1911 a(g343 V&& p1912 tp1913 a(g189 V tp1914 a(g18 Vw tp1915 a(g343 V. tp1916 a(g18 Vlength p1917 tp1918 a(g189 V tp1919 a(g343 V> tp1920 a(g189 V tp1921 a(g318 V5 tp1922 a(g189 V tp1923 a(g202 V} tp1924 a(g189 V\u000a\u000a\u000a p1925 tp1926 a(g7 V# @@PLEAC@@_1.7 p1927 tp1928 a(g189 V\u000a tp1929 a(g111 Vwhile p1930 tp1931 a(g189 V tp1932 a(g18 Vstring p1933 tp1934 a(g343 V. tp1935 a(g18 Vsub! p1936 tp1937 a(g202 V( tp1938 a(g245 V" tp1939 a(g252 V\u005ct p1940 tp1941 a(g245 V+ tp1942 a(g245 V" tp1943 a(g202 V) tp1944 a(g189 V tp1945 a(g202 V{ tp1946 a(g189 V tp1947 a(g271 V' ' p1948 tp1949 a(g189 V tp1950 a(g343 V* tp1951 a(g189 V tp1952 a(g202 V( tp1953 a(g76 V$& p1954 tp1955 a(g343 V. tp1956 a(g18 Vlength p1957 tp1958 a(g189 V tp1959 a(g343 V* tp1960 a(g189 V tp1961 a(g318 V8 tp1962 a(g189 V tp1963 a(g343 V- tp1964 a(g189 V tp1965 a(g76 V$` p1966 tp1967 a(g343 V. tp1968 a(g18 Vlength p1969 tp1970 a(g189 V tp1971 a(g343 V% tp1972 a(g189 V tp1973 a(g318 V8 tp1974 a(g202 V) tp1975 a(g189 V tp1976 a(g202 V} tp1977 a(g189 V\u000a tp1978 a(g111 Vend p1979 tp1980 a(g189 V\u000a\u000a\u000a p1981 tp1982 a(g7 V# @@PLEAC@@_1.8 p1983 tp1984 a(g189 V\u000a tp1985 a(g271 V'You owe #{debt} to me' p1986 tp1987 a(g343 V. tp1988 a(g18 Vgsub p1989 tp1990 a(g202 V( tp1991 a(g229 V/ tp1992 a(g229 V\u005c tp1993 a(g233 V#{ p1994 tp1995 a(g202 V( tp1996 a(g202 V\u005c tp1997 a(g18 Vw tp1998 a(g343 V+ tp1999 a(g202 V) tp2000 a(g233 V} tp2001 a(g229 V/ tp2002 a(g202 V) tp2003 a(g189 V tp2004 a(g202 V{ tp2005 a(g189 V tp2006 a(g57 Veval p2007 tp2008 a(g202 V( tp2009 a(g76 V$1 p2010 tp2011 a(g202 V) tp2012 a(g189 V tp2013 a(g202 V} tp2014 a(g189 V\u000a\u000a p2015 tp2016 a(g18 Vrows p2017 tp2018 a(g202 V, tp2019 a(g189 V tp2020 a(g18 Vcols p2021 tp2022 a(g189 V tp2023 a(g343 V= tp2024 a(g189 V tp2025 a(g318 V24 p2026 tp2027 a(g202 V, tp2028 a(g189 V tp2029 a(g318 V80 p2030 tp2031 a(g189 V\u000a tp2032 a(g18 Vtext p2033 tp2034 a(g189 V tp2035 a(g343 V= tp2036 a(g189 V tp2037 a(g274 V%q( p2038 tp2039 a(g274 VI am p2040 tp2041 a(g274 V# tp2042 a(g274 V{rows} high and p2043 tp2044 a(g274 V# tp2045 a(g274 V{cols} long p2046 tp2047 a(g274 V) tp2048 a(g189 V\u000a tp2049 a(g18 Vtext p2050 tp2051 a(g343 V. tp2052 a(g18 Vgsub! p2053 tp2054 a(g202 V( tp2055 a(g229 V/ tp2056 a(g229 V\u005c tp2057 a(g233 V#{ p2058 tp2059 a(g202 V( tp2060 a(g202 V\u005c tp2061 a(g18 Vw tp2062 a(g343 V+ tp2063 a(g202 V) tp2064 a(g233 V} tp2065 a(g229 V/ tp2066 a(g202 V) tp2067 a(g189 V tp2068 a(g202 V{ tp2069 a(g189 V tp2070 a(g57 Veval p2071 tp2072 a(g202 V( tp2073 a(g245 V" tp2074 a(g233 V#{ p2075 tp2076 a(g76 V$1 p2077 tp2078 a(g233 V} tp2079 a(g245 V" tp2080 a(g202 V) tp2081 a(g189 V tp2082 a(g202 V} tp2083 a(g189 V\u000a tp2084 a(g57 Vputs p2085 tp2086 a(g189 V tp2087 a(g18 Vtext p2088 tp2089 a(g189 V\u000a\u000a p2090 tp2091 a(g271 V'I am 17 years old' p2092 tp2093 a(g343 V. tp2094 a(g18 Vgsub p2095 tp2096 a(g202 V( tp2097 a(g229 V/ tp2098 a(g229 V\u005c tp2099 a(g229 Vd+ p2100 tp2101 a(g229 V/ tp2102 a(g202 V) tp2103 a(g189 V tp2104 a(g202 V{ tp2105 a(g189 V tp2106 a(g318 V2 tp2107 a(g189 V tp2108 a(g343 V* tp2109 a(g189 V tp2110 a(g76 V$& p2111 tp2112 a(g343 V. tp2113 a(g18 Vto_i p2114 tp2115 a(g189 V tp2116 a(g202 V} tp2117 a(g189 V\u000a\u000a\u000a p2118 tp2119 a(g7 V# @@PLEAC@@_1.9 p2120 tp2121 a(g189 V\u000a tp2122 a(g18 Ve tp2123 a(g189 V tp2124 a(g343 V= tp2125 a(g189 V tp2126 a(g245 V" tp2127 a(g245 Vbo peep p2128 tp2129 a(g245 V" tp2130 a(g343 V. tp2131 a(g18 Vupcase p2132 tp2133 a(g189 V\u000a tp2134 a(g18 Ve tp2135 a(g343 V. tp2136 a(g18 Vdowncase! p2137 tp2138 a(g189 V\u000a tp2139 a(g18 Ve tp2140 a(g343 V. tp2141 a(g18 Vcapitalize! p2142 tp2143 a(g189 V\u000a\u000a p2144 tp2145 a(g245 V" tp2146 a(g245 VthIS is a loNG liNE p2147 tp2148 a(g245 V" tp2149 a(g343 V. tp2150 a(g18 Vgsub! p2151 tp2152 a(g202 V( tp2153 a(g229 V/ tp2154 a(g229 V\u005c tp2155 a(g229 Vw+ p2156 tp2157 a(g229 V/ tp2158 a(g202 V) tp2159 a(g189 V tp2160 a(g202 V{ tp2161 a(g189 V tp2162 a(g76 V$& p2163 tp2164 a(g343 V. tp2165 a(g18 Vcapitalize p2166 tp2167 a(g189 V tp2168 a(g202 V} tp2169 a(g189 V\u000a\u000a\u000a p2170 tp2171 a(g7 V# @@PLEAC@@_1.10 p2172 tp2173 a(g189 V\u000a tp2174 a(g245 V" tp2175 a(g245 VI have p2176 tp2177 a(g233 V#{ p2178 tp2179 a(g18 Vn tp2180 a(g343 V+ tp2181 a(g318 V1 tp2182 a(g233 V} tp2183 a(g245 V guanacos. p2184 tp2185 a(g245 V" tp2186 a(g189 V\u000a tp2187 a(g57 Vprint p2188 tp2189 a(g189 V tp2190 a(g245 V" tp2191 a(g245 VI have p2192 tp2193 a(g245 V" tp2194 a(g202 V, tp2195 a(g189 V tp2196 a(g18 Vn tp2197 a(g343 V+ tp2198 a(g318 V1 tp2199 a(g202 V, tp2200 a(g189 V tp2201 a(g245 V" tp2202 a(g245 V guanacos. p2203 tp2204 a(g245 V" tp2205 a(g189 V\u000a\u000a\u000a p2206 tp2207 a(g7 V# @@PLEAC@@_1.11 p2208 tp2209 a(g189 V\u000a tp2210 a(g18 Vvar p2211 tp2212 a(g189 V tp2213 a(g343 V= tp2214 a(g189 V tp2215 a(g343 V<< p2216 tp2217 a(g241 V' tp2218 a(g33 VEOF p2219 tp2220 a(g241 V' tp2221 a(g343 V. tp2222 a(g18 Vgsub p2223 tp2224 a(g202 V( tp2225 a(g229 V/ tp2226 a(g229 V^ tp2227 a(g229 V\u005c tp2228 a(g229 Vs+ p2229 tp2230 a(g229 V/ tp2231 a(g202 V, tp2232 a(g189 V tp2233 a(g271 V'' p2234 tp2235 a(g202 V) tp2236 a(g189 V\u000a tp2237 a(g241 V your text\u000a p2238 tp2239 a(g241 V goes here\u000a p2240 tp2241 a(g33 VEOF\u000a p2242 tp2243 a(g189 V\u000a\u000a p2244 tp2245 a(g7 V# @@PLEAC@@_1.12 p2246 tp2247 a(g189 V\u000a tp2248 a(g18 Vstring p2249 tp2250 a(g189 V tp2251 a(g343 V= tp2252 a(g189 V tp2253 a(g245 V" tp2254 a(g245 VFolding and splicing is the work of an editor, p2255 tp2256 a(g252 V\u005cn p2257 tp2258 a(g245 V" tp2259 a(g343 V+ tp2260 a(g189 V\u000a p2261 tp2262 a(g245 V" tp2263 a(g245 Vnot a mere collection of silicon p2264 tp2265 a(g252 V\u005cn p2266 tp2267 a(g245 V" tp2268 a(g343 V+ tp2269 a(g189 V \u000a p2270 tp2271 a(g245 V" tp2272 a(g245 Vand p2273 tp2274 a(g252 V\u005cn p2275 tp2276 a(g245 V" tp2277 a(g343 V+ tp2278 a(g189 V\u000a p2279 tp2280 a(g245 V" tp2281 a(g245 Vmobile electrons! p2282 tp2283 a(g245 V" tp2284 a(g189 V\u000a\u000a p2285 tp2286 a(g111 Vdef p2287 tp2288 a(g189 V tp2289 a(g21 Vwrap p2290 tp2291 a(g202 V( tp2292 a(g18 Vstr p2293 tp2294 a(g202 V, tp2295 a(g189 V tp2296 a(g18 Vmax_size p2297 tp2298 a(g202 V) tp2299 a(g189 V\u000a p2300 tp2301 a(g18 Vall p2302 tp2303 a(g189 V tp2304 a(g343 V= tp2305 a(g189 V tp2306 a(g343 V[ tp2307 a(g343 V] tp2308 a(g189 V\u000a p2309 tp2310 a(g18 Vline p2311 tp2312 a(g189 V tp2313 a(g343 V= tp2314 a(g189 V tp2315 a(g271 V'' p2316 tp2317 a(g189 V\u000a p2318 tp2319 a(g111 Vfor p2320 tp2321 a(g189 V tp2322 a(g18 Vl tp2323 a(g189 V tp2324 a(g111 Vin p2325 tp2326 a(g189 V tp2327 a(g18 Vstr p2328 tp2329 a(g343 V. tp2330 a(g18 Vsplit p2331 tp2332 a(g189 V\u000a p2333 tp2334 a(g111 Vif p2335 tp2336 a(g189 V tp2337 a(g202 V( tp2338 a(g18 Vline p2339 tp2340 a(g343 V+ tp2341 a(g18 Vl tp2342 a(g202 V) tp2343 a(g343 V. tp2344 a(g18 Vlength p2345 tp2346 a(g189 V tp2347 a(g343 V> tp2348 a(g343 V= tp2349 a(g189 V tp2350 a(g18 Vmax_size p2351 tp2352 a(g189 V\u000a p2353 tp2354 a(g18 Vall p2355 tp2356 a(g343 V. tp2357 a(g18 Vpush p2358 tp2359 a(g202 V( tp2360 a(g18 Vline p2361 tp2362 a(g202 V) tp2363 a(g189 V\u000a p2364 tp2365 a(g18 Vline p2366 tp2367 a(g189 V tp2368 a(g343 V= tp2369 a(g189 V tp2370 a(g271 V'' p2371 tp2372 a(g189 V\u000a p2373 tp2374 a(g111 Vend p2375 tp2376 a(g189 V\u000a p2377 tp2378 a(g18 Vline p2379 tp2380 a(g189 V tp2381 a(g343 V+= p2382 tp2383 a(g189 V tp2384 a(g18 Vline p2385 tp2386 a(g189 V tp2387 a(g343 V== p2388 tp2389 a(g189 V tp2390 a(g271 V'' p2391 tp2392 a(g189 V tp2393 a(g202 V? tp2394 a(g189 V tp2395 a(g18 Vl tp2396 a(g189 V tp2397 a(g202 V: tp2398 a(g189 V tp2399 a(g271 V' ' p2400 tp2401 a(g189 V tp2402 a(g343 V+ tp2403 a(g189 V tp2404 a(g18 Vl tp2405 a(g189 V\u000a p2406 tp2407 a(g111 Vend p2408 tp2409 a(g189 V\u000a p2410 tp2411 a(g18 Vall p2412 tp2413 a(g343 V. tp2414 a(g18 Vpush p2415 tp2416 a(g202 V( tp2417 a(g18 Vline p2418 tp2419 a(g202 V) tp2420 a(g343 V. tp2421 a(g18 Vjoin p2422 tp2423 a(g202 V( tp2424 a(g245 V" tp2425 a(g252 V\u005cn p2426 tp2427 a(g245 V" tp2428 a(g202 V) tp2429 a(g189 V\u000a tp2430 a(g111 Vend p2431 tp2432 a(g189 V\u000a\u000a p2433 tp2434 a(g57 Vprint p2435 tp2436 a(g189 V tp2437 a(g18 Vwrap p2438 tp2439 a(g202 V( tp2440 a(g18 Vstring p2441 tp2442 a(g202 V, tp2443 a(g189 V tp2444 a(g318 V20 p2445 tp2446 a(g202 V) tp2447 a(g189 V\u000a tp2448 a(g7 V#=> Folding and p2449 tp2450 a(g189 V\u000a tp2451 a(g7 V#=> splicing is the p2452 tp2453 a(g189 V\u000a tp2454 a(g7 V#=> work of an editor, p2455 tp2456 a(g189 V\u000a tp2457 a(g7 V#=> not a mere p2458 tp2459 a(g189 V\u000a tp2460 a(g7 V#=> collection of p2461 tp2462 a(g189 V\u000a tp2463 a(g7 V#=> silicon and mobile p2464 tp2465 a(g189 V\u000a tp2466 a(g7 V#=> electrons! p2467 tp2468 a(g189 V\u000a\u000a\u000a p2469 tp2470 a(g7 V# @@PLEAC@@_1.13 p2471 tp2472 a(g189 V\u000a tp2473 a(g18 Vstring p2474 tp2475 a(g189 V tp2476 a(g343 V= tp2477 a(g189 V tp2478 a(g274 V%q( p2479 tp2480 a(g274 VMom said, "Don't do that." p2481 tp2482 a(g274 V) tp2483 a(g189 V\u000a tp2484 a(g18 Vstring p2485 tp2486 a(g343 V. tp2487 a(g18 Vgsub p2488 tp2489 a(g202 V( tp2490 a(g229 V/ tp2491 a(g229 V['"] p2492 tp2493 a(g229 V/ tp2494 a(g202 V) tp2495 a(g189 V tp2496 a(g202 V{ tp2497 a(g189 V tp2498 a(g271 V'\u005c\u005c' p2499 tp2500 a(g343 V+ tp2501 a(g76 V$& p2502 tp2503 a(g189 V tp2504 a(g202 V} tp2505 a(g189 V\u000a tp2506 a(g18 Vstring p2507 tp2508 a(g343 V. tp2509 a(g18 Vgsub p2510 tp2511 a(g202 V( tp2512 a(g229 V/ tp2513 a(g229 V['"] p2514 tp2515 a(g229 V/ tp2516 a(g202 V, tp2517 a(g189 V tp2518 a(g271 V'\u005c&\u005c&' p2519 tp2520 a(g202 V) tp2521 a(g189 V\u000a tp2522 a(g18 Vstring p2523 tp2524 a(g343 V. tp2525 a(g18 Vgsub p2526 tp2527 a(g202 V( tp2528 a(g229 V/ tp2529 a(g229 V[^A-Z] p2530 tp2531 a(g229 V/ tp2532 a(g202 V) tp2533 a(g189 V tp2534 a(g202 V{ tp2535 a(g189 V tp2536 a(g271 V'\u005c\u005c' p2537 tp2538 a(g343 V+ tp2539 a(g76 V$& p2540 tp2541 a(g189 V tp2542 a(g202 V} tp2543 a(g189 V\u000a tp2544 a(g245 V" tp2545 a(g245 Vis a test! p2546 tp2547 a(g245 V" tp2548 a(g343 V. tp2549 a(g18 Vgsub p2550 tp2551 a(g202 V( tp2552 a(g229 V/ tp2553 a(g229 V\u005c tp2554 a(g229 VW tp2555 a(g229 V/ tp2556 a(g202 V) tp2557 a(g189 V tp2558 a(g202 V{ tp2559 a(g189 V tp2560 a(g271 V'\u005c\u005c' p2561 tp2562 a(g343 V+ tp2563 a(g76 V$& p2564 tp2565 a(g189 V tp2566 a(g202 V} tp2567 a(g189 V p2568 tp2569 a(g7 V# no function like quotemeta? p2570 tp2571 a(g189 V\u000a\u000a\u000a p2572 tp2573 a(g7 V# @@PLEAC@@_1.14 p2574 tp2575 a(g189 V\u000a tp2576 a(g18 Vstring p2577 tp2578 a(g343 V. tp2579 a(g18 Vstrip! p2580 tp2581 a(g189 V\u000a\u000a\u000a p2582 tp2583 a(g7 V# @@PLEAC@@_1.15 p2584 tp2585 a(g189 V\u000a tp2586 a(g111 Vdef p2587 tp2588 a(g189 V tp2589 a(g21 Vparse_csv p2590 tp2591 a(g202 V( tp2592 a(g18 Vtext p2593 tp2594 a(g202 V) tp2595 a(g189 V\u000a p2596 tp2597 a(g123 Vnew p2598 tp2599 a(g189 V tp2600 a(g343 V= tp2601 a(g189 V tp2602 a(g18 Vtext p2603 tp2604 a(g343 V. tp2605 a(g18 Vscan p2606 tp2607 a(g202 V( tp2608 a(g229 V/ tp2609 a(g229 V"([^ p2610 tp2611 a(g229 V\u005c tp2612 a(g229 V" tp2613 a(g229 V\u005c\u005c p2614 tp2615 a(g229 V]*(?: p2616 tp2617 a(g229 V\u005c\u005c p2618 tp2619 a(g229 V.[^ p2620 tp2621 a(g229 V\u005c tp2622 a(g229 V" tp2623 a(g229 V\u005c\u005c p2624 tp2625 a(g229 V]*)*)",?|([^,]+),?|, p2626 tp2627 a(g229 V/ tp2628 a(g202 V) tp2629 a(g189 V\u000a p2630 tp2631 a(g123 Vnew p2632 tp2633 a(g189 V tp2634 a(g343 V<< p2635 tp2636 a(g189 V tp2637 a(g123 Vnil p2638 tp2639 a(g189 V tp2640 a(g111 Vif p2641 tp2642 a(g189 V tp2643 a(g18 Vtext p2644 tp2645 a(g343 V[ tp2646 a(g343 V- tp2647 a(g318 V1 tp2648 a(g343 V] tp2649 a(g189 V tp2650 a(g343 V== p2651 tp2652 a(g189 V tp2653 a(g268 V?, p2654 tp2655 a(g189 V\u000a p2656 tp2657 a(g123 Vnew p2658 tp2659 a(g343 V. tp2660 a(g18 Vflatten p2661 tp2662 a(g343 V. tp2663 a(g18 Vcompact p2664 tp2665 a(g189 V\u000a tp2666 a(g111 Vend p2667 tp2668 a(g189 V \u000a\u000a p2669 tp2670 a(g18 Vline p2671 tp2672 a(g189 V tp2673 a(g343 V= tp2674 a(g189 V tp2675 a(g274 V%q< p2676 tp2677 a(g274 VXYZZY,"","O'Reilly, Inc","Wall, Larry","a p2678 tp2679 a(g274 V\u005c tp2680 a(g274 V"glug p2681 tp2682 a(g274 V\u005c tp2683 a(g274 V" bit,",5,"Error, Core Dumped" p2684 tp2685 a(g274 V> tp2686 a(g189 V\u000a tp2687 a(g18 Vfields p2688 tp2689 a(g189 V tp2690 a(g343 V= tp2691 a(g189 V tp2692 a(g18 Vparse_csv p2693 tp2694 a(g202 V( tp2695 a(g18 Vline p2696 tp2697 a(g202 V) tp2698 a(g189 V\u000a tp2699 a(g18 Vfields p2700 tp2701 a(g343 V. tp2702 a(g18 Veach_with_index p2703 tp2704 a(g189 V tp2705 a(g202 V{ tp2706 a(g189 V tp2707 a(g343 V| tp2708 a(g18 Vv tp2709 a(g202 V, tp2710 a(g18 Vi tp2711 a(g343 V| tp2712 a(g189 V\u000a p2713 tp2714 a(g57 Vprint p2715 tp2716 a(g189 V tp2717 a(g245 V" tp2718 a(g233 V#{ p2719 tp2720 a(g18 Vi tp2721 a(g233 V} tp2722 a(g245 V : p2723 tp2724 a(g233 V#{ p2725 tp2726 a(g18 Vv tp2727 a(g233 V} tp2728 a(g252 V\u005cn p2729 tp2730 a(g245 V" tp2731 a(g202 V; tp2732 a(g189 V\u000a tp2733 a(g202 V} tp2734 a(g189 V\u000a\u000a\u000a p2735 tp2736 a(g7 V# @@PLEAC@@_1.16 p2737 tp2738 a(g189 V\u000a tp2739 a(g7 V# Use the soundex.rb Library from Michael Neumann. p2740 tp2741 a(g189 V\u000a tp2742 a(g7 V# http://www.s-direktnet.de/homepages/neumann/rb_prgs/Soundex.rb p2743 tp2744 a(g189 V\u000a tp2745 a(g57 Vrequire p2746 tp2747 a(g189 V tp2748 a(g271 V'Soundex' p2749 tp2750 a(g189 V\u000a\u000a p2751 tp2752 a(g18 Vcode p2753 tp2754 a(g189 V tp2755 a(g343 V= tp2756 a(g189 V tp2757 a(g33 VText p2758 tp2759 a(g343 V:: p2760 tp2761 a(g33 VSoundex p2762 tp2763 a(g343 V. tp2764 a(g18 Vsoundex p2765 tp2766 a(g202 V( tp2767 a(g18 Vstring p2768 tp2769 a(g202 V) tp2770 a(g189 V\u000a tp2771 a(g18 Vcodes p2772 tp2773 a(g189 V tp2774 a(g343 V= tp2775 a(g189 V tp2776 a(g33 VText p2777 tp2778 a(g343 V:: p2779 tp2780 a(g33 VSoundex p2781 tp2782 a(g343 V. tp2783 a(g18 Vsoundex p2784 tp2785 a(g202 V( tp2786 a(g18 Varray p2787 tp2788 a(g202 V) tp2789 a(g189 V\u000a\u000a p2790 tp2791 a(g7 V# substitution function for getpwent(): p2792 tp2793 a(g189 V\u000a tp2794 a(g7 V# returns an array of user entries, p2795 tp2796 a(g189 V\u000a tp2797 a(g7 V# each entry contains the username and the full name p2798 tp2799 a(g189 V\u000a tp2800 a(g111 Vdef p2801 tp2802 a(g189 V tp2803 a(g21 Vlogin_names p2804 tp2805 a(g189 V\u000a p2806 tp2807 a(g18 Vresult p2808 tp2809 a(g189 V tp2810 a(g343 V= tp2811 a(g189 V tp2812 a(g343 V[ tp2813 a(g343 V] tp2814 a(g189 V\u000a p2815 tp2816 a(g33 VFile p2817 tp2818 a(g343 V. tp2819 a(g18 Vopen p2820 tp2821 a(g202 V( tp2822 a(g245 V" tp2823 a(g245 V/etc/passwd p2824 tp2825 a(g245 V" tp2826 a(g202 V) tp2827 a(g189 V tp2828 a(g202 V{ tp2829 a(g189 V tp2830 a(g343 V| tp2831 a(g18 Vfile p2832 tp2833 a(g343 V| tp2834 a(g189 V\u000a p2835 tp2836 a(g18 Vfile p2837 tp2838 a(g343 V. tp2839 a(g18 Veach_line p2840 tp2841 a(g189 V tp2842 a(g202 V{ tp2843 a(g189 V tp2844 a(g343 V| tp2845 a(g18 Vline p2846 tp2847 a(g343 V| tp2848 a(g189 V\u000a p2849 tp2850 a(g111 Vnext p2851 tp2852 a(g189 V tp2853 a(g111 Vif p2854 tp2855 a(g189 V tp2856 a(g18 Vline p2857 tp2858 a(g343 V. tp2859 a(g18 Vmatch p2860 tp2861 a(g202 V( tp2862 a(g229 V/ tp2863 a(g229 V^ tp2864 a(g229 V# tp2865 a(g229 V/ tp2866 a(g202 V) tp2867 a(g189 V\u000a p2868 tp2869 a(g18 Vcols p2870 tp2871 a(g189 V tp2872 a(g343 V= tp2873 a(g189 V tp2874 a(g18 Vline p2875 tp2876 a(g343 V. tp2877 a(g18 Vsplit p2878 tp2879 a(g202 V( tp2880 a(g245 V" tp2881 a(g245 V: tp2882 a(g245 V" tp2883 a(g202 V) tp2884 a(g189 V\u000a p2885 tp2886 a(g18 Vresult p2887 tp2888 a(g343 V. tp2889 a(g18 Vpush p2890 tp2891 a(g202 V( tp2892 a(g343 V[ tp2893 a(g18 Vcols p2894 tp2895 a(g343 V[ tp2896 a(g318 V0 tp2897 a(g343 V] tp2898 a(g202 V, tp2899 a(g189 V tp2900 a(g18 Vcols p2901 tp2902 a(g343 V[ tp2903 a(g318 V4 tp2904 a(g343 V] tp2905 a(g343 V] tp2906 a(g202 V) tp2907 a(g189 V\u000a p2908 tp2909 a(g202 V} tp2910 a(g189 V\u000a p2911 tp2912 a(g202 V} tp2913 a(g189 V\u000a p2914 tp2915 a(g18 Vresult p2916 tp2917 a(g189 V\u000a tp2918 a(g111 Vend p2919 tp2920 a(g189 V\u000a\u000a p2921 tp2922 a(g57 Vputs p2923 tp2924 a(g189 V tp2925 a(g245 V" tp2926 a(g245 VLookup user: p2927 tp2928 a(g245 V" tp2929 a(g189 V\u000a tp2930 a(g18 Vuser p2931 tp2932 a(g189 V tp2933 a(g343 V= tp2934 a(g189 V tp2935 a(g33 VSTDIN p2936 tp2937 a(g343 V. tp2938 a(g18 Vgets p2939 tp2940 a(g189 V\u000a tp2941 a(g18 Vuser p2942 tp2943 a(g343 V. tp2944 a(g18 Vchomp! p2945 tp2946 a(g189 V\u000a tp2947 a(g57 Vexit p2948 tp2949 a(g189 V tp2950 a(g111 Vunless p2951 tp2952 a(g189 V tp2953 a(g18 Vuser p2954 tp2955 a(g189 V\u000a tp2956 a(g18 Vname_code p2957 tp2958 a(g189 V tp2959 a(g343 V= tp2960 a(g189 V tp2961 a(g33 VText p2962 tp2963 a(g343 V:: p2964 tp2965 a(g33 VSoundex p2966 tp2967 a(g343 V. tp2968 a(g18 Vsoundex p2969 tp2970 a(g202 V( tp2971 a(g18 Vuser p2972 tp2973 a(g202 V) tp2974 a(g189 V\u000a\u000a p2975 tp2976 a(g18 Vsplitter p2977 tp2978 a(g189 V tp2979 a(g343 V= tp2980 a(g189 V tp2981 a(g33 VRegexp p2982 tp2983 a(g343 V. tp2984 a(g18 Vnew p2985 tp2986 a(g202 V( tp2987 a(g271 V'(\u005cw+)[^,]*\u005cb(\u005cw+)' p2988 tp2989 a(g202 V) tp2990 a(g189 V\u000a tp2991 a(g111 Vfor p2992 tp2993 a(g189 V tp2994 a(g18 Vusername p2995 tp2996 a(g202 V, tp2997 a(g189 V tp2998 a(g18 Vfullname p2999 tp3000 a(g189 V tp3001 a(g111 Vin p3002 tp3003 a(g189 V tp3004 a(g18 Vlogin_names p3005 tp3006 a(g189 V tp3007 a(g111 Vdo p3008 tp3009 a(g189 V\u000a p3010 tp3011 a(g18 Vfirstname p3012 tp3013 a(g202 V, tp3014 a(g189 V tp3015 a(g18 Vlastname p3016 tp3017 a(g189 V tp3018 a(g343 V= tp3019 a(g189 V tp3020 a(g18 Vsplitter p3021 tp3022 a(g343 V. tp3023 a(g18 Vmatch p3024 tp3025 a(g202 V( tp3026 a(g18 Vfullname p3027 tp3028 a(g202 V) tp3029 a(g343 V[ tp3030 a(g318 V1 tp3031 a(g202 V, tp3032 a(g318 V2 tp3033 a(g343 V] tp3034 a(g189 V\u000a p3035 tp3036 a(g111 Vif p3037 tp3038 a(g189 V tp3039 a(g18 Vname_code p3040 tp3041 a(g189 V tp3042 a(g343 V== p3043 tp3044 a(g189 V tp3045 a(g33 VText p3046 tp3047 a(g343 V:: p3048 tp3049 a(g33 VSoundex p3050 tp3051 a(g343 V. tp3052 a(g18 Vsoundex p3053 tp3054 a(g202 V( tp3055 a(g18 Vusername p3056 tp3057 a(g202 V) tp3058 a(g189 V\u000a p3059 tp3060 a(g343 V|| p3061 tp3062 a(g189 V tp3063 a(g18 Vname_code p3064 tp3065 a(g189 V tp3066 a(g343 V== p3067 tp3068 a(g189 V tp3069 a(g33 VText p3070 tp3071 a(g343 V:: p3072 tp3073 a(g33 VSoundex p3074 tp3075 a(g343 V. tp3076 a(g18 Vsoundex p3077 tp3078 a(g202 V( tp3079 a(g18 Vfirstname p3080 tp3081 a(g202 V) tp3082 a(g189 V\u000a p3083 tp3084 a(g343 V|| p3085 tp3086 a(g189 V tp3087 a(g18 Vname_code p3088 tp3089 a(g189 V tp3090 a(g343 V== p3091 tp3092 a(g189 V tp3093 a(g33 VText p3094 tp3095 a(g343 V:: p3096 tp3097 a(g33 VSoundex p3098 tp3099 a(g343 V. tp3100 a(g18 Vsoundex p3101 tp3102 a(g202 V( tp3103 a(g18 Vlastname p3104 tp3105 a(g202 V) tp3106 a(g189 V\u000a p3107 tp3108 a(g111 Vthen p3109 tp3110 a(g189 V\u000a p3111 tp3112 a(g57 Vputs p3113 tp3114 a(g189 V tp3115 a(g245 V" tp3116 a(g233 V#{ p3117 tp3118 a(g18 Vusername p3119 tp3120 a(g233 V} tp3121 a(g245 V: p3122 tp3123 a(g233 V#{ p3124 tp3125 a(g18 Vfirstname p3126 tp3127 a(g233 V} tp3128 a(g245 V tp3129 a(g233 V#{ p3130 tp3131 a(g18 Vlastname p3132 tp3133 a(g233 V} tp3134 a(g245 V" tp3135 a(g189 V\u000a p3136 tp3137 a(g111 Vend p3138 tp3139 a(g189 V\u000a tp3140 a(g111 Vend p3141 tp3142 a(g189 V\u000a\u000a\u000a p3143 tp3144 a(g7 V# @@PLEAC@@_1.17 p3145 tp3146 a(g189 V\u000a tp3147 a(g7 V# @@INCLUDE@@ include/ruby/fixstyle.rb p3148 tp3149 a(g189 V\u000a\u000a\u000a p3150 tp3151 a(g7 V# @@PLEAC@@_1.18 p3152 tp3153 a(g189 V\u000a tp3154 a(g7 V# @@INCLUDE@@ include/ruby/psgrep.rb p3155 tp3156 a(g189 V\u000a\u000a\u000a p3157 tp3158 a(g7 V# @@PLEAC@@_2.1 p3159 tp3160 a(g189 V\u000a tp3161 a(g7 V# Matz tells that you can use Integer() for strict checked conversion. p3162 tp3163 a(g189 V\u000a tp3164 a(g57 VInteger p3165 tp3166 a(g202 V( tp3167 a(g245 V" tp3168 a(g245 Vabc p3169 tp3170 a(g245 V" tp3171 a(g202 V) tp3172 a(g189 V\u000a tp3173 a(g7 V#=> `Integer': invalid value for Integer: "abc" (ArgumentError) p3174 tp3175 a(g189 V\u000a tp3176 a(g57 VInteger p3177 tp3178 a(g202 V( tp3179 a(g245 V" tp3180 a(g245 V567 p3181 tp3182 a(g245 V" tp3183 a(g202 V) tp3184 a(g189 V\u000a tp3185 a(g7 V#=> 567 p3186 tp3187 a(g189 V\u000a\u000a p3188 tp3189 a(g7 V# You may use Float() for floating point stuff p3190 tp3191 a(g189 V\u000a tp3192 a(g57 VInteger p3193 tp3194 a(g202 V( tp3195 a(g245 V" tp3196 a(g245 V56.7 p3197 tp3198 a(g245 V" tp3199 a(g202 V) tp3200 a(g189 V\u000a tp3201 a(g7 V#=> `Integer': invalid value for Integer: "56.7" (ArgumentError) p3202 tp3203 a(g189 V\u000a tp3204 a(g57 VFloat p3205 tp3206 a(g202 V( tp3207 a(g245 V" tp3208 a(g245 V56.7 p3209 tp3210 a(g245 V" tp3211 a(g202 V) tp3212 a(g189 V\u000a tp3213 a(g7 V#=> 56.7 p3214 tp3215 a(g189 V\u000a\u000a p3216 tp3217 a(g7 V# You may also use a regexp for that p3218 tp3219 a(g189 V\u000a tp3220 a(g111 Vif p3221 tp3222 a(g189 V tp3223 a(g18 Vstring p3224 tp3225 a(g189 V tp3226 a(g343 V=~ p3227 tp3228 a(g189 V tp3229 a(g229 V/ tp3230 a(g229 V^[+-]? p3231 tp3232 a(g229 V\u005c tp3233 a(g229 Vd+$ p3234 tp3235 a(g229 V/ tp3236 a(g189 V\u000a p3237 tp3238 a(g57 Vp tp3239 a(g189 V tp3240 a(g271 V'is an integer' p3241 tp3242 a(g189 V\u000a tp3243 a(g111 Velse p3244 tp3245 a(g189 V\u000a p3246 tp3247 a(g57 Vp tp3248 a(g189 V tp3249 a(g271 V'is not' p3250 tp3251 a(g189 V\u000a tp3252 a(g111 Vend p3253 tp3254 a(g189 V\u000a\u000a p3255 tp3256 a(g111 Vif p3257 tp3258 a(g189 V tp3259 a(g18 Vstring p3260 tp3261 a(g189 V tp3262 a(g343 V=~ p3263 tp3264 a(g189 V tp3265 a(g229 V/ tp3266 a(g229 V^-?(?: p3267 tp3268 a(g229 V\u005c tp3269 a(g229 Vd+(?: p3270 tp3271 a(g229 V\u005c tp3272 a(g229 V. tp3273 a(g229 V\u005c tp3274 a(g229 Vd*)?| p3275 tp3276 a(g229 V\u005c tp3277 a(g229 V. tp3278 a(g229 V\u005c tp3279 a(g229 Vd+)$ p3280 tp3281 a(g229 V/ tp3282 a(g189 V\u000a p3283 tp3284 a(g57 Vp tp3285 a(g189 V tp3286 a(g271 V'is a decimal number' p3287 tp3288 a(g189 V\u000a tp3289 a(g111 Velse p3290 tp3291 a(g189 V\u000a p3292 tp3293 a(g57 Vp tp3294 a(g189 V tp3295 a(g271 V'is not' p3296 tp3297 a(g189 V\u000a tp3298 a(g111 Vend p3299 tp3300 a(g189 V\u000a\u000a\u000a p3301 tp3302 a(g7 V# @@PLEAC@@_2.2 p3303 tp3304 a(g189 V\u000a tp3305 a(g7 V# equal(num1, num2, accuracy) : returns true if num1 and num2 are p3306 tp3307 a(g189 V\u000a tp3308 a(g7 V# equal to accuracy number of decimal places p3309 tp3310 a(g189 V\u000a tp3311 a(g111 Vdef p3312 tp3313 a(g189 V tp3314 a(g21 Vequal p3315 tp3316 a(g202 V( tp3317 a(g18 Vi tp3318 a(g202 V, tp3319 a(g189 V tp3320 a(g18 Vj tp3321 a(g202 V, tp3322 a(g189 V tp3323 a(g18 Va tp3324 a(g202 V) tp3325 a(g189 V\u000a p3326 tp3327 a(g57 Vsprintf p3328 tp3329 a(g202 V( tp3330 a(g245 V" tp3331 a(g245 V%. p3332 tp3333 a(g233 V#{ p3334 tp3335 a(g18 Va tp3336 a(g233 V} tp3337 a(g245 Vg tp3338 a(g245 V" tp3339 a(g202 V, tp3340 a(g189 V tp3341 a(g18 Vi tp3342 a(g202 V) tp3343 a(g189 V tp3344 a(g343 V== p3345 tp3346 a(g189 V tp3347 a(g57 Vsprintf p3348 tp3349 a(g202 V( tp3350 a(g245 V" tp3351 a(g245 V%. p3352 tp3353 a(g233 V#{ p3354 tp3355 a(g18 Va tp3356 a(g233 V} tp3357 a(g245 Vg tp3358 a(g245 V" tp3359 a(g202 V, tp3360 a(g189 V tp3361 a(g18 Vj tp3362 a(g202 V) tp3363 a(g189 V\u000a tp3364 a(g111 Vend p3365 tp3366 a(g189 V\u000a\u000a p3367 tp3368 a(g18 Vwage p3369 tp3370 a(g189 V tp3371 a(g343 V= tp3372 a(g189 V tp3373 a(g318 V536 p3374 tp3375 a(g189 V p3376 tp3377 a(g7 V# $5.36/hour p3378 tp3379 a(g189 V\u000a tp3380 a(g18 Vweek p3381 tp3382 a(g189 V tp3383 a(g343 V= tp3384 a(g189 V tp3385 a(g318 V40 p3386 tp3387 a(g189 V tp3388 a(g343 V* tp3389 a(g189 V tp3390 a(g18 Vwage p3391 tp3392 a(g189 V p3393 tp3394 a(g7 V# $214.40 p3395 tp3396 a(g189 V\u000a tp3397 a(g57 Vprintf p3398 tp3399 a(g202 V( tp3400 a(g245 V" tp3401 a(g245 VOne week's wage is: p3402 tp3403 a(g245 V\u005c tp3404 a(g245 V$%.2f p3405 tp3406 a(g252 V\u005cn p3407 tp3408 a(g245 V" tp3409 a(g202 V, tp3410 a(g189 V tp3411 a(g18 Vweek p3412 tp3413 a(g343 V/ tp3414 a(g318 V100 p3415 tp3416 a(g343 V. tp3417 a(g318 V0 tp3418 a(g202 V) tp3419 a(g189 V\u000a\u000a\u000a p3420 tp3421 a(g7 V# @@PLEAC@@_2.3 p3422 tp3423 a(g189 V\u000a tp3424 a(g18 Vnum p3425 tp3426 a(g343 V. tp3427 a(g18 Vround p3428 tp3429 a(g189 V p3430 tp3431 a(g7 V# rounds to integer p3432 tp3433 a(g189 V\u000a\u000a p3434 tp3435 a(g18 Va tp3436 a(g189 V tp3437 a(g343 V= tp3438 a(g189 V tp3439 a(g318 V0 tp3440 a(g343 V. tp3441 a(g318 V255 p3442 tp3443 a(g189 V\u000a tp3444 a(g18 Vb tp3445 a(g189 V tp3446 a(g343 V= tp3447 a(g189 V tp3448 a(g57 Vsprintf p3449 tp3450 a(g202 V( tp3451 a(g245 V" tp3452 a(g245 V%.2f p3453 tp3454 a(g245 V" tp3455 a(g202 V, tp3456 a(g189 V tp3457 a(g18 Va tp3458 a(g202 V) tp3459 a(g189 V\u000a tp3460 a(g57 Vprint p3461 tp3462 a(g189 V p3463 tp3464 a(g245 V" tp3465 a(g245 VUnrounded: p3466 tp3467 a(g233 V#{ p3468 tp3469 a(g18 Va tp3470 a(g233 V} tp3471 a(g252 V\u005cn p3472 tp3473 a(g245 VRounded: p3474 tp3475 a(g233 V#{ p3476 tp3477 a(g18 Vb tp3478 a(g233 V} tp3479 a(g252 V\u005cn p3480 tp3481 a(g245 V" tp3482 a(g189 V\u000a tp3483 a(g57 Vprintf p3484 tp3485 a(g189 V tp3486 a(g245 V" tp3487 a(g245 VUnrounded: p3488 tp3489 a(g233 V#{ p3490 tp3491 a(g18 Va tp3492 a(g233 V} tp3493 a(g252 V\u005cn p3494 tp3495 a(g245 VRounded: %.2f p3496 tp3497 a(g252 V\u005cn p3498 tp3499 a(g245 V" tp3500 a(g202 V, tp3501 a(g189 V tp3502 a(g18 Va tp3503 a(g189 V\u000a\u000a p3504 tp3505 a(g57 Vprint p3506 tp3507 a(g189 V tp3508 a(g245 V" tp3509 a(g245 Vnumber p3510 tp3511 a(g252 V\u005ct p3512 tp3513 a(g245 Vint p3514 tp3515 a(g252 V\u005ct p3516 tp3517 a(g245 Vfloor p3518 tp3519 a(g252 V\u005ct p3520 tp3521 a(g245 Vceil p3522 tp3523 a(g252 V\u005cn p3524 tp3525 a(g245 V" tp3526 a(g189 V\u000a tp3527 a(g18 Va tp3528 a(g189 V tp3529 a(g343 V= tp3530 a(g189 V tp3531 a(g343 V[ tp3532 a(g189 V tp3533 a(g318 V3 tp3534 a(g343 V. tp3535 a(g318 V3 tp3536 a(g189 V tp3537 a(g202 V, tp3538 a(g189 V tp3539 a(g318 V3 tp3540 a(g343 V. tp3541 a(g318 V5 tp3542 a(g189 V tp3543 a(g202 V, tp3544 a(g189 V tp3545 a(g318 V3 tp3546 a(g343 V. tp3547 a(g318 V7 tp3548 a(g202 V, tp3549 a(g189 V tp3550 a(g343 V- tp3551 a(g318 V3 tp3552 a(g343 V. tp3553 a(g318 V3 tp3554 a(g189 V tp3555 a(g343 V] tp3556 a(g189 V\u000a tp3557 a(g111 Vfor p3558 tp3559 a(g189 V tp3560 a(g18 Vn tp3561 a(g189 V tp3562 a(g111 Vin p3563 tp3564 a(g189 V tp3565 a(g18 Va tp3566 a(g189 V\u000a p3567 tp3568 a(g57 Vprintf p3569 tp3570 a(g202 V( tp3571 a(g245 V" tp3572 a(g245 V% .1f p3573 tp3574 a(g252 V\u005ct p3575 tp3576 a(g245 V% .1f p3577 tp3578 a(g252 V\u005ct p3579 tp3580 a(g245 V% .1f p3581 tp3582 a(g252 V\u005ct p3583 tp3584 a(g245 V% .1f p3585 tp3586 a(g252 V\u005cn p3587 tp3588 a(g245 V" tp3589 a(g202 V, tp3590 a(g189 V p3591 tp3592 a(g7 V# at least I don't fake my output :) p3593 tp3594 a(g189 V\u000a p3595 tp3596 a(g18 Vn tp3597 a(g202 V, tp3598 a(g189 V tp3599 a(g18 Vn tp3600 a(g343 V. tp3601 a(g18 Vto_i p3602 tp3603 a(g202 V, tp3604 a(g189 V tp3605 a(g18 Vn tp3606 a(g343 V. tp3607 a(g18 Vfloor p3608 tp3609 a(g202 V, tp3610 a(g189 V tp3611 a(g18 Vn tp3612 a(g343 V. tp3613 a(g18 Vceil p3614 tp3615 a(g202 V) tp3616 a(g189 V\u000a tp3617 a(g111 Vend p3618 tp3619 a(g189 V\u000a\u000a\u000a p3620 tp3621 a(g7 V# @@PLEAC@@_2.4 p3622 tp3623 a(g189 V\u000a tp3624 a(g111 Vdef p3625 tp3626 a(g189 V tp3627 a(g21 Vdec2bin p3628 tp3629 a(g202 V( tp3630 a(g18 Vn tp3631 a(g202 V) tp3632 a(g189 V\u000a p3633 tp3634 a(g343 V[ tp3635 a(g18 Vn tp3636 a(g343 V] tp3637 a(g343 V. tp3638 a(g18 Vpack p3639 tp3640 a(g202 V( tp3641 a(g245 V" tp3642 a(g245 VN tp3643 a(g245 V" tp3644 a(g202 V) tp3645 a(g343 V. tp3646 a(g18 Vunpack p3647 tp3648 a(g202 V( tp3649 a(g245 V" tp3650 a(g245 VB32 p3651 tp3652 a(g245 V" tp3653 a(g202 V) tp3654 a(g343 V[ tp3655 a(g318 V0 tp3656 a(g343 V] tp3657 a(g343 V. tp3658 a(g18 Vsub p3659 tp3660 a(g202 V( tp3661 a(g229 V/ tp3662 a(g229 V^0+(?= p3663 tp3664 a(g229 V\u005c tp3665 a(g229 Vd) p3666 tp3667 a(g229 V/ tp3668 a(g202 V, tp3669 a(g189 V tp3670 a(g271 V'' p3671 tp3672 a(g202 V) tp3673 a(g189 V\u000a tp3674 a(g111 Vend p3675 tp3676 a(g189 V\u000a\u000a p3677 tp3678 a(g111 Vdef p3679 tp3680 a(g189 V tp3681 a(g21 Vbin2dec p3682 tp3683 a(g202 V( tp3684 a(g18 Vn tp3685 a(g202 V) tp3686 a(g189 V\u000a p3687 tp3688 a(g343 V[ tp3689 a(g202 V( tp3690 a(g245 V" tp3691 a(g245 V0 tp3692 a(g245 V" tp3693 a(g343 V* tp3694 a(g318 V32 p3695 tp3696 a(g343 V+ tp3697 a(g18 Vn tp3698 a(g343 V. tp3699 a(g18 Vto_s p3700 tp3701 a(g202 V) tp3702 a(g343 V[ tp3703 a(g343 V- tp3704 a(g318 V32 p3705 tp3706 a(g343 V. tp3707 a(g18 V. tp3708 a(g343 V- tp3709 a(g318 V1 tp3710 a(g343 V] tp3711 a(g343 V] tp3712 a(g343 V. tp3713 a(g18 Vpack p3714 tp3715 a(g202 V( tp3716 a(g245 V" tp3717 a(g245 VB32 p3718 tp3719 a(g245 V" tp3720 a(g202 V) tp3721 a(g343 V. tp3722 a(g18 Vunpack p3723 tp3724 a(g202 V( tp3725 a(g245 V" tp3726 a(g245 VN tp3727 a(g245 V" tp3728 a(g202 V) tp3729 a(g343 V[ tp3730 a(g318 V0 tp3731 a(g343 V] tp3732 a(g189 V\u000a tp3733 a(g111 Vend p3734 tp3735 a(g189 V\u000a\u000a\u000a p3736 tp3737 a(g7 V# @@PLEAC@@_2.5 p3738 tp3739 a(g189 V\u000a tp3740 a(g111 Vfor p3741 tp3742 a(g189 V tp3743 a(g18 Vi tp3744 a(g189 V tp3745 a(g111 Vin p3746 tp3747 a(g189 V tp3748 a(g18 Vx tp3749 a(g189 V tp3750 a(g343 V. tp3751 a(g18 V. tp3752 a(g189 V tp3753 a(g18 Vy tp3754 a(g189 V\u000a p3755 tp3756 a(g7 V# i is set to every integer from x to y, inclusive p3757 tp3758 a(g189 V\u000a tp3759 a(g111 Vend p3760 tp3761 a(g189 V\u000a\u000a p3762 tp3763 a(g18 Vx tp3764 a(g343 V. tp3765 a(g18 Vstep p3766 tp3767 a(g202 V( tp3768 a(g18 Vy tp3769 a(g202 V, tp3770 a(g318 V7 tp3771 a(g202 V) tp3772 a(g189 V tp3773 a(g202 V{ tp3774 a(g189 V tp3775 a(g343 V| tp3776 a(g18 Vi tp3777 a(g343 V| tp3778 a(g189 V\u000a p3779 tp3780 a(g7 V# i is set to every integer from x to y, stepsize = 7 p3781 tp3782 a(g189 V\u000a tp3783 a(g202 V} tp3784 a(g189 V\u000a\u000a p3785 tp3786 a(g57 Vprint p3787 tp3788 a(g189 V tp3789 a(g245 V" tp3790 a(g245 VInfancy is: p3791 tp3792 a(g245 V" tp3793 a(g189 V\u000a tp3794 a(g202 V( tp3795 a(g318 V0 tp3796 a(g343 V. tp3797 a(g18 V. tp3798 a(g318 V2 tp3799 a(g202 V) tp3800 a(g343 V. tp3801 a(g18 Veach p3802 tp3803 a(g189 V tp3804 a(g202 V{ tp3805 a(g189 V tp3806 a(g343 V| tp3807 a(g18 Vi tp3808 a(g343 V| tp3809 a(g189 V\u000a p3810 tp3811 a(g57 Vprint p3812 tp3813 a(g189 V tp3814 a(g18 Vi tp3815 a(g202 V, tp3816 a(g189 V tp3817 a(g245 V" tp3818 a(g245 V tp3819 a(g245 V" tp3820 a(g189 V\u000a tp3821 a(g202 V} tp3822 a(g189 V\u000a tp3823 a(g57 Vprint p3824 tp3825 a(g189 V tp3826 a(g245 V" tp3827 a(g252 V\u005cn p3828 tp3829 a(g245 V" tp3830 a(g189 V\u000a\u000a\u000a p3831 tp3832 a(g7 V# @@PLEAC@@_2.6 p3833 tp3834 a(g189 V\u000a tp3835 a(g7 V# We can add conversion methods to the Integer class, p3836 tp3837 a(g189 V\u000a tp3838 a(g7 V# this makes a roman number just a representation for normal numbers. p3839 tp3840 a(g189 V\u000a tp3841 a(g111 Vclass p3842 tp3843 a(g189 V tp3844 a(g106 VInteger p3845 tp3846 a(g189 V\u000a \u000a p3847 tp3848 a(g89 V@@romanlist p3849 tp3850 a(g189 V tp3851 a(g343 V= tp3852 a(g189 V tp3853 a(g343 V[ tp3854 a(g343 V[ tp3855 a(g245 V" tp3856 a(g245 VM tp3857 a(g245 V" tp3858 a(g202 V, tp3859 a(g189 V tp3860 a(g318 V1000 p3861 tp3862 a(g343 V] tp3863 a(g202 V, tp3864 a(g189 V\u000a p3865 tp3866 a(g343 V[ tp3867 a(g245 V" tp3868 a(g245 VCM p3869 tp3870 a(g245 V" tp3871 a(g202 V, tp3872 a(g189 V tp3873 a(g318 V900 p3874 tp3875 a(g343 V] tp3876 a(g202 V, tp3877 a(g189 V\u000a p3878 tp3879 a(g343 V[ tp3880 a(g245 V" tp3881 a(g245 VD tp3882 a(g245 V" tp3883 a(g202 V, tp3884 a(g189 V p3885 tp3886 a(g318 V500 p3887 tp3888 a(g343 V] tp3889 a(g202 V, tp3890 a(g189 V\u000a p3891 tp3892 a(g343 V[ tp3893 a(g245 V" tp3894 a(g245 VCD p3895 tp3896 a(g245 V" tp3897 a(g202 V, tp3898 a(g189 V tp3899 a(g318 V400 p3900 tp3901 a(g343 V] tp3902 a(g202 V, tp3903 a(g189 V\u000a p3904 tp3905 a(g343 V[ tp3906 a(g245 V" tp3907 a(g245 VC tp3908 a(g245 V" tp3909 a(g202 V, tp3910 a(g189 V p3911 tp3912 a(g318 V100 p3913 tp3914 a(g343 V] tp3915 a(g202 V, tp3916 a(g189 V\u000a p3917 tp3918 a(g343 V[ tp3919 a(g245 V" tp3920 a(g245 VXC p3921 tp3922 a(g245 V" tp3923 a(g202 V, tp3924 a(g189 V p3925 tp3926 a(g318 V90 p3927 tp3928 a(g343 V] tp3929 a(g202 V, tp3930 a(g189 V\u000a p3931 tp3932 a(g343 V[ tp3933 a(g245 V" tp3934 a(g245 VL tp3935 a(g245 V" tp3936 a(g202 V, tp3937 a(g189 V p3938 tp3939 a(g318 V50 p3940 tp3941 a(g343 V] tp3942 a(g202 V, tp3943 a(g189 V\u000a p3944 tp3945 a(g343 V[ tp3946 a(g245 V" tp3947 a(g245 VXL p3948 tp3949 a(g245 V" tp3950 a(g202 V, tp3951 a(g189 V p3952 tp3953 a(g318 V40 p3954 tp3955 a(g343 V] tp3956 a(g202 V, tp3957 a(g189 V\u000a p3958 tp3959 a(g343 V[ tp3960 a(g245 V" tp3961 a(g245 VX tp3962 a(g245 V" tp3963 a(g202 V, tp3964 a(g189 V p3965 tp3966 a(g318 V10 p3967 tp3968 a(g343 V] tp3969 a(g202 V, tp3970 a(g189 V\u000a p3971 tp3972 a(g343 V[ tp3973 a(g245 V" tp3974 a(g245 VIX p3975 tp3976 a(g245 V" tp3977 a(g202 V, tp3978 a(g189 V p3979 tp3980 a(g318 V9 tp3981 a(g343 V] tp3982 a(g202 V, tp3983 a(g189 V\u000a p3984 tp3985 a(g343 V[ tp3986 a(g245 V" tp3987 a(g245 VV tp3988 a(g245 V" tp3989 a(g202 V, tp3990 a(g189 V p3991 tp3992 a(g318 V5 tp3993 a(g343 V] tp3994 a(g202 V, tp3995 a(g189 V\u000a p3996 tp3997 a(g343 V[ tp3998 a(g245 V" tp3999 a(g245 VIV p4000 tp4001 a(g245 V" tp4002 a(g202 V, tp4003 a(g189 V p4004 tp4005 a(g318 V4 tp4006 a(g343 V] tp4007 a(g202 V, tp4008 a(g189 V\u000a p4009 tp4010 a(g343 V[ tp4011 a(g245 V" tp4012 a(g245 VI tp4013 a(g245 V" tp4014 a(g202 V, tp4015 a(g189 V p4016 tp4017 a(g318 V1 tp4018 a(g343 V] tp4019 a(g343 V] tp4020 a(g189 V\u000a \u000a p4021 tp4022 a(g111 Vdef p4023 tp4024 a(g189 V tp4025 a(g21 Vto_roman p4026 tp4027 a(g189 V\u000a p4028 tp4029 a(g18 Vremains p4030 tp4031 a(g189 V tp4032 a(g343 V= tp4033 a(g189 V tp4034 a(g57 Vself p4035 tp4036 a(g189 V\u000a p4037 tp4038 a(g18 Vroman p4039 tp4040 a(g189 V tp4041 a(g343 V= tp4042 a(g189 V tp4043 a(g245 V" tp4044 a(g245 V" tp4045 a(g189 V\u000a p4046 tp4047 a(g111 Vfor p4048 tp4049 a(g189 V tp4050 a(g18 Vsym p4051 tp4052 a(g202 V, tp4053 a(g189 V tp4054 a(g18 Vnum p4055 tp4056 a(g189 V tp4057 a(g111 Vin p4058 tp4059 a(g189 V tp4060 a(g89 V@@romanlist p4061 tp4062 a(g189 V\u000a p4063 tp4064 a(g111 Vwhile p4065 tp4066 a(g189 V tp4067 a(g18 Vremains p4068 tp4069 a(g189 V tp4070 a(g343 V> tp4071 a(g343 V= tp4072 a(g189 V tp4073 a(g18 Vnum p4074 tp4075 a(g189 V\u000a p4076 tp4077 a(g18 Vremains p4078 tp4079 a(g189 V tp4080 a(g343 V-= p4081 tp4082 a(g189 V tp4083 a(g18 Vnum p4084 tp4085 a(g189 V\u000a p4086 tp4087 a(g18 Vroman p4088 tp4089 a(g189 V tp4090 a(g343 V<< p4091 tp4092 a(g189 V tp4093 a(g18 Vsym p4094 tp4095 a(g189 V\u000a p4096 tp4097 a(g111 Vend p4098 tp4099 a(g189 V\u000a p4100 tp4101 a(g111 Vend p4102 tp4103 a(g189 V\u000a p4104 tp4105 a(g18 Vroman p4106 tp4107 a(g189 V\u000a p4108 tp4109 a(g111 Vend p4110 tp4111 a(g189 V\u000a \u000a p4112 tp4113 a(g111 Vdef p4114 tp4115 a(g189 V tp4116 a(g106 VInteger p4117 tp4118 a(g343 V. tp4119 a(g21 Vfrom_roman p4120 tp4121 a(g202 V( tp4122 a(g18 Vroman p4123 tp4124 a(g202 V) tp4125 a(g189 V\u000a p4126 tp4127 a(g18 Vustr p4128 tp4129 a(g189 V tp4130 a(g343 V= tp4131 a(g189 V tp4132 a(g18 Vroman p4133 tp4134 a(g343 V. tp4135 a(g18 Vupcase p4136 tp4137 a(g189 V\u000a p4138 tp4139 a(g18 Vsum p4140 tp4141 a(g189 V tp4142 a(g343 V= tp4143 a(g189 V tp4144 a(g318 V0 tp4145 a(g189 V\u000a p4146 tp4147 a(g111 Vfor p4148 tp4149 a(g189 V tp4150 a(g18 Ventry p4151 tp4152 a(g189 V tp4153 a(g111 Vin p4154 tp4155 a(g189 V tp4156 a(g89 V@@romanlist p4157 tp4158 a(g189 V\u000a p4159 tp4160 a(g18 Vsym p4161 tp4162 a(g202 V, tp4163 a(g189 V tp4164 a(g18 Vnum p4165 tp4166 a(g189 V tp4167 a(g343 V= tp4168 a(g189 V tp4169 a(g18 Ventry p4170 tp4171 a(g343 V[ tp4172 a(g318 V0 tp4173 a(g343 V] tp4174 a(g202 V, tp4175 a(g189 V tp4176 a(g18 Ventry p4177 tp4178 a(g343 V[ tp4179 a(g318 V1 tp4180 a(g343 V] tp4181 a(g189 V\u000a p4182 tp4183 a(g111 Vwhile p4184 tp4185 a(g189 V tp4186 a(g18 Vsym p4187 tp4188 a(g189 V tp4189 a(g343 V== p4190 tp4191 a(g189 V tp4192 a(g18 Vustr p4193 tp4194 a(g343 V[ tp4195 a(g318 V0 tp4196 a(g202 V, tp4197 a(g189 V tp4198 a(g18 Vsym p4199 tp4200 a(g343 V. tp4201 a(g18 Vlength p4202 tp4203 a(g343 V] tp4204 a(g189 V\u000a p4205 tp4206 a(g18 Vsum p4207 tp4208 a(g189 V tp4209 a(g343 V+= p4210 tp4211 a(g189 V tp4212 a(g18 Vnum p4213 tp4214 a(g189 V\u000a p4215 tp4216 a(g18 Vustr p4217 tp4218 a(g343 V. tp4219 a(g18 Vslice! p4220 tp4221 a(g202 V( tp4222 a(g318 V0 tp4223 a(g202 V, tp4224 a(g189 V tp4225 a(g18 Vsym p4226 tp4227 a(g343 V. tp4228 a(g18 Vlength p4229 tp4230 a(g202 V) tp4231 a(g189 V\u000a p4232 tp4233 a(g111 Vend p4234 tp4235 a(g189 V\u000a p4236 tp4237 a(g111 Vend p4238 tp4239 a(g189 V\u000a p4240 tp4241 a(g18 Vsum p4242 tp4243 a(g189 V\u000a p4244 tp4245 a(g111 Vend p4246 tp4247 a(g189 V\u000a \u000a p4248 tp4249 a(g111 Vend p4250 tp4251 a(g189 V\u000a\u000a\u000a p4252 tp4253 a(g18 Vroman_fifteen p4254 tp4255 a(g189 V tp4256 a(g343 V= tp4257 a(g189 V tp4258 a(g318 V15 p4259 tp4260 a(g343 V. tp4261 a(g18 Vto_roman p4262 tp4263 a(g189 V\u000a tp4264 a(g57 Vputs p4265 tp4266 a(g189 V tp4267 a(g245 V" tp4268 a(g245 VRoman for fifteen is p4269 tp4270 a(g233 V#{ p4271 tp4272 a(g18 Vroman_fifteen p4273 tp4274 a(g233 V} tp4275 a(g245 V" tp4276 a(g189 V\u000a tp4277 a(g18 Vi tp4278 a(g189 V tp4279 a(g343 V= tp4280 a(g189 V tp4281 a(g57 VInteger p4282 tp4283 a(g343 V. tp4284 a(g18 Vfrom_roman p4285 tp4286 a(g202 V( tp4287 a(g18 Vroman_fifteen p4288 tp4289 a(g202 V) tp4290 a(g189 V\u000a tp4291 a(g57 Vputs p4292 tp4293 a(g189 V tp4294 a(g245 V" tp4295 a(g245 VConverted back, p4296 tp4297 a(g233 V#{ p4298 tp4299 a(g18 Vroman_fifteen p4300 tp4301 a(g233 V} tp4302 a(g245 V is p4303 tp4304 a(g233 V#{ p4305 tp4306 a(g18 Vi tp4307 a(g233 V} tp4308 a(g245 V" tp4309 a(g189 V\u000a\u000a p4310 tp4311 a(g7 V# check p4312 tp4313 a(g189 V\u000a tp4314 a(g111 Vfor p4315 tp4316 a(g189 V tp4317 a(g18 Vi tp4318 a(g189 V tp4319 a(g111 Vin p4320 tp4321 a(g189 V tp4322 a(g202 V( tp4323 a(g318 V1 tp4324 a(g343 V. tp4325 a(g18 V. tp4326 a(g318 V3900 p4327 tp4328 a(g202 V) tp4329 a(g189 V\u000a p4330 tp4331 a(g18 Vr tp4332 a(g189 V tp4333 a(g343 V= tp4334 a(g189 V tp4335 a(g18 Vi tp4336 a(g343 V. tp4337 a(g18 Vto_roman p4338 tp4339 a(g189 V\u000a p4340 tp4341 a(g18 Vj tp4342 a(g189 V tp4343 a(g343 V= tp4344 a(g189 V tp4345 a(g57 VInteger p4346 tp4347 a(g343 V. tp4348 a(g18 Vfrom_roman p4349 tp4350 a(g202 V( tp4351 a(g18 Vr tp4352 a(g202 V) tp4353 a(g189 V\u000a p4354 tp4355 a(g111 Vif p4356 tp4357 a(g189 V tp4358 a(g18 Vi tp4359 a(g189 V tp4360 a(g343 V!= p4361 tp4362 a(g189 V tp4363 a(g18 Vj tp4364 a(g189 V\u000a p4365 tp4366 a(g57 Vputs p4367 tp4368 a(g189 V tp4369 a(g245 V" tp4370 a(g245 Verror: p4371 tp4372 a(g233 V#{ p4373 tp4374 a(g18 Vi tp4375 a(g233 V} tp4376 a(g245 V : p4377 tp4378 a(g233 V#{ p4379 tp4380 a(g18 Vr tp4381 a(g233 V} tp4382 a(g245 V - p4383 tp4384 a(g233 V#{ p4385 tp4386 a(g18 Vj tp4387 a(g233 V} tp4388 a(g245 V" tp4389 a(g189 V\u000a p4390 tp4391 a(g111 Vend p4392 tp4393 a(g189 V\u000a tp4394 a(g111 Vend p4395 tp4396 a(g189 V\u000a\u000a\u000a p4397 tp4398 a(g7 V# @@PLEAC@@_2.7 p4399 tp4400 a(g189 V\u000a tp4401 a(g18 Vrandom p4402 tp4403 a(g189 V tp4404 a(g343 V= tp4405 a(g189 V tp4406 a(g57 Vrand p4407 tp4408 a(g202 V( tp4409 a(g18 Vy tp4410 a(g343 V- tp4411 a(g18 Vx tp4412 a(g343 V+ tp4413 a(g318 V1 tp4414 a(g202 V) tp4415 a(g343 V+ tp4416 a(g18 Vx tp4417 a(g189 V\u000a\u000a p4418 tp4419 a(g18 Vchars p4420 tp4421 a(g189 V tp4422 a(g343 V= tp4423 a(g189 V tp4424 a(g343 V[ tp4425 a(g245 V" tp4426 a(g245 VA tp4427 a(g245 V" tp4428 a(g343 V. tp4429 a(g18 V. tp4430 a(g245 V" tp4431 a(g245 VZ tp4432 a(g245 V" tp4433 a(g202 V, tp4434 a(g245 V" tp4435 a(g245 Va tp4436 a(g245 V" tp4437 a(g343 V. tp4438 a(g18 V. tp4439 a(g245 V" tp4440 a(g245 Vz tp4441 a(g245 V" tp4442 a(g202 V, tp4443 a(g245 V" tp4444 a(g245 V0 tp4445 a(g245 V" tp4446 a(g343 V. tp4447 a(g18 V. tp4448 a(g245 V" tp4449 a(g245 V9 tp4450 a(g245 V" tp4451 a(g343 V] tp4452 a(g343 V. tp4453 a(g18 Vcollect p4454 tp4455 a(g189 V tp4456 a(g202 V{ tp4457 a(g189 V tp4458 a(g343 V| tp4459 a(g18 Vr tp4460 a(g343 V| tp4461 a(g189 V tp4462 a(g18 Vr tp4463 a(g343 V. tp4464 a(g18 Vto_a p4465 tp4466 a(g189 V tp4467 a(g202 V} tp4468 a(g343 V. tp4469 a(g18 Vjoin p4470 tp4471 a(g189 V tp4472 a(g343 V+ tp4473 a(g189 V tp4474 a(g274 V%q( p4475 tp4476 a(g274 V!@$%^&* p4477 tp4478 a(g274 V) tp4479 a(g189 V\u000a tp4480 a(g18 Vpassword p4481 tp4482 a(g189 V tp4483 a(g343 V= tp4484 a(g189 V tp4485 a(g202 V( tp4486 a(g318 V1 tp4487 a(g343 V. tp4488 a(g18 V. tp4489 a(g318 V8 tp4490 a(g202 V) tp4491 a(g343 V. tp4492 a(g18 Vcollect p4493 tp4494 a(g189 V tp4495 a(g202 V{ tp4496 a(g189 V tp4497 a(g18 Vchars p4498 tp4499 a(g343 V[ tp4500 a(g57 Vrand p4501 tp4502 a(g202 V( tp4503 a(g18 Vchars p4504 tp4505 a(g343 V. tp4506 a(g18 Vsize p4507 tp4508 a(g202 V) tp4509 a(g343 V] tp4510 a(g189 V tp4511 a(g202 V} tp4512 a(g343 V. tp4513 a(g18 Vpack p4514 tp4515 a(g202 V( tp4516 a(g245 V" tp4517 a(g245 VC* p4518 tp4519 a(g245 V" tp4520 a(g202 V) tp4521 a(g189 V\u000a\u000a\u000a p4522 tp4523 a(g7 V# @@PLEAC@@_2.8 p4524 tp4525 a(g189 V\u000a tp4526 a(g57 Vsrand p4527 tp4528 a(g189 V p4529 tp4530 a(g7 V# uses a combination of the time, the process id, and a sequence number p4531 tp4532 a(g189 V\u000a tp4533 a(g57 Vsrand p4534 tp4535 a(g202 V( tp4536 a(g18 Vval p4537 tp4538 a(g202 V) tp4539 a(g189 V p4540 tp4541 a(g7 V# for repeatable behaviour p4542 tp4543 a(g189 V\u000a\u000a\u000a p4544 tp4545 a(g7 V# @@PLEAC@@_2.9 p4546 tp4547 a(g189 V\u000a tp4548 a(g7 V# from the randomr lib: p4549 tp4550 a(g189 V\u000a tp4551 a(g7 V# http://raa.ruby-lang.org/project/randomr/ p4552 tp4553 a(g189 V\u000a tp4554 a(g343 V- tp4555 a(g343 V- tp4556 a(g343 V- tp4557 a(g343 V- tp4558 a(g343 V> tp4559 a(g189 V tp4560 a(g18 Vhttp p4561 tp4562 a(g248 V:/ p4563 tp4564 a(g343 V/ tp4565 a(g18 Vraa p4566 tp4567 a(g343 V. tp4568 a(g18 Vruby p4569 tp4570 a(g343 V- tp4571 a(g18 Vlang p4572 tp4573 a(g343 V. tp4574 a(g18 Vorg p4575 tp4576 a(g343 V/ tp4577 a(g18 Vproject p4578 tp4579 a(g343 V/ tp4580 a(g18 Vrandomr p4581 tp4582 a(g343 V/ tp4583 a(g189 V\u000a\u000a p4584 tp4585 a(g57 Vrequire p4586 tp4587 a(g189 V tp4588 a(g271 V'random/mersenne_twister' p4589 tp4590 a(g189 V\u000a tp4591 a(g18 Vmers p4592 tp4593 a(g189 V tp4594 a(g343 V= tp4595 a(g189 V tp4596 a(g33 VRandom p4597 tp4598 a(g343 V:: p4599 tp4600 a(g33 VMersenneTwister p4601 tp4602 a(g343 V. tp4603 a(g18 Vnew p4604 tp4605 a(g189 V tp4606 a(g318 V123456789 p4607 tp4608 a(g189 V\u000a tp4609 a(g57 Vputs p4610 tp4611 a(g189 V tp4612 a(g18 Vmers p4613 tp4614 a(g343 V. tp4615 a(g18 Vrand p4616 tp4617 a(g202 V( tp4618 a(g318 V0 tp4619 a(g202 V) tp4620 a(g189 V p4621 tp4622 a(g7 V# 0.550321932544541 p4623 tp4624 a(g189 V\u000a tp4625 a(g57 Vputs p4626 tp4627 a(g189 V tp4628 a(g18 Vmers p4629 tp4630 a(g343 V. tp4631 a(g18 Vrand p4632 tp4633 a(g202 V( tp4634 a(g318 V10 p4635 tp4636 a(g202 V) tp4637 a(g189 V p4638 tp4639 a(g7 V# 2 p4640 tp4641 a(g189 V\u000a\u000a p4642 tp4643 a(g7 V# using online sources of random data via the realrand package: p4644 tp4645 a(g189 V\u000a tp4646 a(g7 V# http://raa.ruby-lang.org/project/realrand/ p4647 tp4648 a(g189 V\u000a tp4649 a(g7 V# **Note** p4650 tp4651 a(g189 V\u000a tp4652 a(g7 V# The following online services are used in this package: p4653 tp4654 a(g189 V\u000a tp4655 a(g7 V# http://www.random.org - source: atmospheric noise p4656 tp4657 a(g189 V\u000a tp4658 a(g7 V# http://www.fourmilab.ch/hotbits - source: radioactive decay timings p4659 tp4660 a(g189 V\u000a tp4661 a(g7 V# http://random.hd.org - source: entropy from local and network noise p4662 tp4663 a(g189 V\u000a tp4664 a(g7 V# Please visit the sites and respect the rules of each service. p4665 tp4666 a(g189 V\u000a\u000a p4667 tp4668 a(g57 Vrequire p4669 tp4670 a(g189 V tp4671 a(g271 V'random/online' p4672 tp4673 a(g189 V\u000a\u000a p4674 tp4675 a(g18 Vgenerator1 p4676 tp4677 a(g189 V tp4678 a(g343 V= tp4679 a(g189 V tp4680 a(g33 VRandom p4681 tp4682 a(g343 V:: p4683 tp4684 a(g33 VRandomOrg p4685 tp4686 a(g343 V. tp4687 a(g18 Vnew p4688 tp4689 a(g189 V\u000a tp4690 a(g57 Vputs p4691 tp4692 a(g189 V tp4693 a(g18 Vgenerator1 p4694 tp4695 a(g343 V. tp4696 a(g18 Vrandbyte p4697 tp4698 a(g202 V( tp4699 a(g318 V5 tp4700 a(g202 V) tp4701 a(g343 V. tp4702 a(g18 Vjoin p4703 tp4704 a(g202 V( tp4705 a(g245 V" tp4706 a(g245 V, tp4707 a(g245 V" tp4708 a(g202 V) tp4709 a(g189 V\u000a tp4710 a(g57 Vputs p4711 tp4712 a(g189 V tp4713 a(g18 Vgenerator1 p4714 tp4715 a(g343 V. tp4716 a(g18 Vrandnum p4717 tp4718 a(g202 V( tp4719 a(g318 V10 p4720 tp4721 a(g202 V, tp4722 a(g189 V tp4723 a(g318 V1 tp4724 a(g202 V, tp4725 a(g189 V tp4726 a(g318 V6 tp4727 a(g202 V) tp4728 a(g343 V. tp4729 a(g18 Vjoin p4730 tp4731 a(g202 V( tp4732 a(g245 V" tp4733 a(g245 V, tp4734 a(g245 V" tp4735 a(g202 V) tp4736 a(g189 V p4737 tp4738 a(g7 V# Roll dice 10 times. p4739 tp4740 a(g189 V\u000a\u000a p4741 tp4742 a(g18 Vgenerator2 p4743 tp4744 a(g189 V tp4745 a(g343 V= tp4746 a(g189 V tp4747 a(g33 VRandom p4748 tp4749 a(g343 V:: p4750 tp4751 a(g33 VFourmiLab p4752 tp4753 a(g343 V. tp4754 a(g18 Vnew p4755 tp4756 a(g189 V\u000a tp4757 a(g57 Vputs p4758 tp4759 a(g189 V tp4760 a(g18 Vgenerator2 p4761 tp4762 a(g343 V. tp4763 a(g18 Vrandbyte p4764 tp4765 a(g202 V( tp4766 a(g318 V5 tp4767 a(g202 V) tp4768 a(g343 V. tp4769 a(g18 Vjoin p4770 tp4771 a(g202 V( tp4772 a(g245 V" tp4773 a(g245 V, tp4774 a(g245 V" tp4775 a(g202 V) tp4776 a(g189 V\u000a tp4777 a(g7 V# randnum is not supported. p4778 tp4779 a(g189 V\u000a\u000a p4780 tp4781 a(g18 Vgenerator3 p4782 tp4783 a(g189 V tp4784 a(g343 V= tp4785 a(g189 V tp4786 a(g33 VRandom p4787 tp4788 a(g343 V:: p4789 tp4790 a(g33 VEntropyPool p4791 tp4792 a(g343 V. tp4793 a(g18 Vnew p4794 tp4795 a(g189 V\u000a tp4796 a(g57 Vputs p4797 tp4798 a(g189 V tp4799 a(g18 Vgenerator3 p4800 tp4801 a(g343 V. tp4802 a(g18 Vrandbyte p4803 tp4804 a(g202 V( tp4805 a(g318 V5 tp4806 a(g202 V) tp4807 a(g343 V. tp4808 a(g18 Vjoin p4809 tp4810 a(g202 V( tp4811 a(g245 V" tp4812 a(g245 V, tp4813 a(g245 V" tp4814 a(g202 V) tp4815 a(g189 V\u000a tp4816 a(g7 V# randnum is not supported. p4817 tp4818 a(g189 V\u000a\u000a\u000a p4819 tp4820 a(g7 V# @@PLEAC@@_2.10 p4821 tp4822 a(g189 V\u000a tp4823 a(g111 Vdef p4824 tp4825 a(g189 V tp4826 a(g21 Vgaussian_rand p4827 tp4828 a(g189 V\u000a p4829 tp4830 a(g111 Vbegin p4831 tp4832 a(g189 V\u000a p4833 tp4834 a(g18 Vu1 p4835 tp4836 a(g189 V tp4837 a(g343 V= tp4838 a(g189 V tp4839 a(g318 V2 tp4840 a(g189 V tp4841 a(g343 V* tp4842 a(g189 V tp4843 a(g57 Vrand p4844 tp4845 a(g202 V( tp4846 a(g202 V) tp4847 a(g189 V tp4848 a(g343 V- tp4849 a(g189 V tp4850 a(g318 V1 tp4851 a(g189 V\u000a p4852 tp4853 a(g18 Vu2 p4854 tp4855 a(g189 V tp4856 a(g343 V= tp4857 a(g189 V tp4858 a(g318 V2 tp4859 a(g189 V tp4860 a(g343 V* tp4861 a(g189 V tp4862 a(g57 Vrand p4863 tp4864 a(g202 V( tp4865 a(g202 V) tp4866 a(g189 V tp4867 a(g343 V- tp4868 a(g189 V tp4869 a(g318 V1 tp4870 a(g189 V\u000a p4871 tp4872 a(g18 Vw tp4873 a(g189 V tp4874 a(g343 V= tp4875 a(g189 V tp4876 a(g18 Vu1 p4877 tp4878 a(g343 V* tp4879 a(g18 Vu1 p4880 tp4881 a(g189 V tp4882 a(g343 V+ tp4883 a(g189 V tp4884 a(g18 Vu2 p4885 tp4886 a(g343 V* tp4887 a(g18 Vu2 p4888 tp4889 a(g189 V\u000a p4890 tp4891 a(g111 Vend p4892 tp4893 a(g189 V tp4894 a(g111 Vwhile p4895 tp4896 a(g189 V tp4897 a(g202 V( tp4898 a(g18 Vw tp4899 a(g189 V tp4900 a(g343 V> tp4901 a(g343 V= tp4902 a(g189 V tp4903 a(g318 V1 tp4904 a(g202 V) tp4905 a(g189 V\u000a p4906 tp4907 a(g18 Vw tp4908 a(g189 V tp4909 a(g343 V= tp4910 a(g189 V tp4911 a(g33 VMath p4912 tp4913 a(g343 V. tp4914 a(g18 Vsqrt p4915 tp4916 a(g202 V( tp4917 a(g202 V( tp4918 a(g343 V- tp4919 a(g318 V2 tp4920 a(g343 V* tp4921 a(g33 VMath p4922 tp4923 a(g343 V. tp4924 a(g18 Vlog p4925 tp4926 a(g202 V( tp4927 a(g18 Vw tp4928 a(g202 V) tp4929 a(g202 V) tp4930 a(g343 V/ tp4931 a(g18 Vw tp4932 a(g202 V) tp4933 a(g189 V\u000a p4934 tp4935 a(g343 V[ tp4936 a(g189 V tp4937 a(g18 Vu2 p4938 tp4939 a(g343 V* tp4940 a(g18 Vw tp4941 a(g202 V, tp4942 a(g189 V tp4943 a(g18 Vu1 p4944 tp4945 a(g343 V* tp4946 a(g18 Vw tp4947 a(g189 V tp4948 a(g343 V] tp4949 a(g189 V\u000a tp4950 a(g111 Vend p4951 tp4952 a(g189 V\u000a\u000a p4953 tp4954 a(g18 Vmean p4955 tp4956 a(g189 V tp4957 a(g343 V= tp4958 a(g189 V tp4959 a(g318 V25 p4960 tp4961 a(g189 V\u000a tp4962 a(g18 Vsdev p4963 tp4964 a(g189 V tp4965 a(g343 V= tp4966 a(g189 V tp4967 a(g318 V2 tp4968 a(g189 V\u000a tp4969 a(g18 Vsalary p4970 tp4971 a(g189 V tp4972 a(g343 V= tp4973 a(g189 V tp4974 a(g18 Vgaussian_rand p4975 tp4976 a(g343 V[ tp4977 a(g318 V0 tp4978 a(g343 V] tp4979 a(g189 V tp4980 a(g343 V* tp4981 a(g189 V tp4982 a(g18 Vsdev p4983 tp4984 a(g189 V tp4985 a(g343 V+ tp4986 a(g189 V tp4987 a(g18 Vmean p4988 tp4989 a(g189 V\u000a tp4990 a(g57 Vprintf p4991 tp4992 a(g202 V( tp4993 a(g245 V" tp4994 a(g245 VYou have been hired at p4995 tp4996 a(g245 V\u005c tp4997 a(g245 V$%.2f p4998 tp4999 a(g252 V\u005cn p5000 tp5001 a(g245 V" tp5002 a(g202 V, tp5003 a(g189 V tp5004 a(g18 Vsalary p5005 tp5006 a(g202 V) tp5007 a(g189 V\u000a\u000a\u000a p5008 tp5009 a(g7 V# @@PLEAC@@_2.11 p5010 tp5011 a(g189 V\u000a tp5012 a(g111 Vdef p5013 tp5014 a(g189 V tp5015 a(g21 Vdeg2rad p5016 tp5017 a(g202 V( tp5018 a(g18 Vd tp5019 a(g202 V) tp5020 a(g189 V\u000a p5021 tp5022 a(g202 V( tp5023 a(g18 Vd tp5024 a(g343 V/ tp5025 a(g318 V180 p5026 tp5027 a(g343 V. tp5028 a(g318 V0 tp5029 a(g202 V) tp5030 a(g343 V* tp5031 a(g33 VMath p5032 tp5033 a(g343 V:: p5034 tp5035 a(g33 VPI p5036 tp5037 a(g189 V\u000a tp5038 a(g111 Vend p5039 tp5040 a(g189 V\u000a\u000a p5041 tp5042 a(g111 Vdef p5043 tp5044 a(g189 V tp5045 a(g21 Vrad2deg p5046 tp5047 a(g202 V( tp5048 a(g18 Vr tp5049 a(g202 V) tp5050 a(g189 V\u000a p5051 tp5052 a(g202 V( tp5053 a(g18 Vr tp5054 a(g343 V/ tp5055 a(g33 VMath p5056 tp5057 a(g343 V:: p5058 tp5059 a(g33 VPI p5060 tp5061 a(g202 V) tp5062 a(g343 V* tp5063 a(g318 V180 p5064 tp5065 a(g189 V\u000a tp5066 a(g111 Vend p5067 tp5068 a(g189 V\u000a\u000a\u000a p5069 tp5070 a(g7 V# @@PLEAC@@_2.12 p5071 tp5072 a(g189 V\u000a tp5073 a(g18 Vsin_val p5074 tp5075 a(g189 V tp5076 a(g343 V= tp5077 a(g189 V tp5078 a(g33 VMath p5079 tp5080 a(g343 V. tp5081 a(g18 Vsin p5082 tp5083 a(g202 V( tp5084 a(g18 Vangle p5085 tp5086 a(g202 V) tp5087 a(g189 V\u000a tp5088 a(g18 Vcos_val p5089 tp5090 a(g189 V tp5091 a(g343 V= tp5092 a(g189 V tp5093 a(g33 VMath p5094 tp5095 a(g343 V. tp5096 a(g18 Vcos p5097 tp5098 a(g202 V( tp5099 a(g18 Vangle p5100 tp5101 a(g202 V) tp5102 a(g189 V\u000a tp5103 a(g18 Vtan_val p5104 tp5105 a(g189 V tp5106 a(g343 V= tp5107 a(g189 V tp5108 a(g33 VMath p5109 tp5110 a(g343 V. tp5111 a(g18 Vtan p5112 tp5113 a(g202 V( tp5114 a(g18 Vangle p5115 tp5116 a(g202 V) tp5117 a(g189 V\u000a\u000a p5118 tp5119 a(g7 V# AFAIK Ruby's Math module doesn't provide acos/asin p5120 tp5121 a(g189 V\u000a tp5122 a(g7 V# While we're at it, let's also define missing hyperbolic functions p5123 tp5124 a(g189 V\u000a tp5125 a(g111 Vmodule p5126 tp5127 a(g189 V tp5128 a(g99 VMath p5129 tp5130 a(g189 V\u000a p5131 tp5132 a(g111 Vdef p5133 tp5134 a(g189 V tp5135 a(g106 VMath p5136 tp5137 a(g343 V. tp5138 a(g21 Vasin p5139 tp5140 a(g202 V( tp5141 a(g18 Vx tp5142 a(g202 V) tp5143 a(g189 V\u000a p5144 tp5145 a(g18 Vatan2 p5146 tp5147 a(g202 V( tp5148 a(g18 Vx tp5149 a(g202 V, tp5150 a(g189 V tp5151 a(g18 Vsqrt p5152 tp5153 a(g202 V( tp5154 a(g318 V1 tp5155 a(g189 V tp5156 a(g343 V- tp5157 a(g189 V tp5158 a(g18 Vx tp5159 a(g343 V** p5160 tp5161 a(g318 V2 tp5162 a(g202 V) tp5163 a(g202 V) tp5164 a(g189 V\u000a p5165 tp5166 a(g111 Vend p5167 tp5168 a(g189 V\u000a p5169 tp5170 a(g111 Vdef p5171 tp5172 a(g189 V tp5173 a(g106 VMath p5174 tp5175 a(g343 V. tp5176 a(g21 Vacos p5177 tp5178 a(g202 V( tp5179 a(g18 Vx tp5180 a(g202 V) tp5181 a(g189 V\u000a p5182 tp5183 a(g18 Vatan2 p5184 tp5185 a(g202 V( tp5186 a(g18 Vsqrt p5187 tp5188 a(g202 V( tp5189 a(g318 V1 tp5190 a(g189 V tp5191 a(g343 V- tp5192 a(g189 V tp5193 a(g18 Vx tp5194 a(g343 V** p5195 tp5196 a(g318 V2 tp5197 a(g202 V) tp5198 a(g202 V, tp5199 a(g189 V tp5200 a(g18 Vx tp5201 a(g202 V) tp5202 a(g189 V\u000a p5203 tp5204 a(g111 Vend p5205 tp5206 a(g189 V\u000a p5207 tp5208 a(g111 Vdef p5209 tp5210 a(g189 V tp5211 a(g106 VMath p5212 tp5213 a(g343 V. tp5214 a(g21 Vatan p5215 tp5216 a(g202 V( tp5217 a(g18 Vx tp5218 a(g202 V) tp5219 a(g189 V\u000a p5220 tp5221 a(g18 Vatan2 p5222 tp5223 a(g202 V( tp5224 a(g18 Vx tp5225 a(g202 V, tp5226 a(g189 V tp5227 a(g318 V1 tp5228 a(g202 V) tp5229 a(g189 V\u000a p5230 tp5231 a(g111 Vend p5232 tp5233 a(g189 V\u000a p5234 tp5235 a(g111 Vdef p5236 tp5237 a(g189 V tp5238 a(g106 VMath p5239 tp5240 a(g343 V. tp5241 a(g21 Vsinh p5242 tp5243 a(g202 V( tp5244 a(g18 Vx tp5245 a(g202 V) tp5246 a(g189 V\u000a p5247 tp5248 a(g202 V( tp5249 a(g18 Vexp p5250 tp5251 a(g202 V( tp5252 a(g18 Vx tp5253 a(g202 V) tp5254 a(g189 V tp5255 a(g343 V- tp5256 a(g189 V tp5257 a(g18 Vexp p5258 tp5259 a(g202 V( tp5260 a(g343 V- tp5261 a(g18 Vx tp5262 a(g202 V) tp5263 a(g202 V) tp5264 a(g189 V tp5265 a(g343 V/ tp5266 a(g189 V tp5267 a(g318 V2 tp5268 a(g189 V\u000a p5269 tp5270 a(g111 Vend p5271 tp5272 a(g189 V\u000a p5273 tp5274 a(g111 Vdef p5275 tp5276 a(g189 V tp5277 a(g106 VMath p5278 tp5279 a(g343 V. tp5280 a(g21 Vcosh p5281 tp5282 a(g202 V( tp5283 a(g18 Vx tp5284 a(g202 V) tp5285 a(g189 V\u000a p5286 tp5287 a(g202 V( tp5288 a(g18 Vexp p5289 tp5290 a(g202 V( tp5291 a(g18 Vx tp5292 a(g202 V) tp5293 a(g189 V tp5294 a(g343 V+ tp5295 a(g189 V tp5296 a(g18 Vexp p5297 tp5298 a(g202 V( tp5299 a(g343 V- tp5300 a(g18 Vx tp5301 a(g202 V) tp5302 a(g202 V) tp5303 a(g189 V tp5304 a(g343 V/ tp5305 a(g189 V tp5306 a(g318 V2 tp5307 a(g189 V\u000a p5308 tp5309 a(g111 Vend p5310 tp5311 a(g189 V\u000a p5312 tp5313 a(g111 Vdef p5314 tp5315 a(g189 V tp5316 a(g106 VMath p5317 tp5318 a(g343 V. tp5319 a(g21 Vtanh p5320 tp5321 a(g202 V( tp5322 a(g18 Vx tp5323 a(g202 V) tp5324 a(g189 V\u000a p5325 tp5326 a(g18 Vsinh p5327 tp5328 a(g202 V( tp5329 a(g18 Vx tp5330 a(g202 V) tp5331 a(g189 V tp5332 a(g343 V/ tp5333 a(g189 V tp5334 a(g18 Vcosh p5335 tp5336 a(g202 V( tp5337 a(g18 Vx tp5338 a(g202 V) tp5339 a(g189 V\u000a p5340 tp5341 a(g111 Vend p5342 tp5343 a(g189 V\u000a tp5344 a(g111 Vend p5345 tp5346 a(g189 V\u000a\u000a p5347 tp5348 a(g7 V# The support for Complex numbers is not built-in p5349 tp5350 a(g189 V\u000a tp5351 a(g18 Vy tp5352 a(g189 V tp5353 a(g343 V= tp5354 a(g189 V tp5355 a(g33 VMath p5356 tp5357 a(g343 V. tp5358 a(g18 Vacos p5359 tp5360 a(g202 V( tp5361 a(g318 V3 tp5362 a(g343 V. tp5363 a(g318 V7 tp5364 a(g202 V) tp5365 a(g189 V\u000a tp5366 a(g7 V#=> in `sqrt': square root for negative number (ArgumentError) p5367 tp5368 a(g189 V\u000a\u000a p5369 tp5370 a(g7 V# There is an implementation of Complex numbers in 'complex.rb' in current p5371 tp5372 a(g189 V\u000a tp5373 a(g7 V# Ruby distro, but it doesn't support atan2 with complex args, so it doesn't p5374 tp5375 a(g189 V\u000a tp5376 a(g7 V# solve this problem. p5377 tp5378 a(g189 V\u000a\u000a\u000a p5379 tp5380 a(g7 V# @@PLEAC@@_2.13 p5381 tp5382 a(g189 V\u000a tp5383 a(g18 Vlog_e p5384 tp5385 a(g189 V tp5386 a(g343 V= tp5387 a(g189 V tp5388 a(g33 VMath p5389 tp5390 a(g343 V. tp5391 a(g18 Vlog p5392 tp5393 a(g202 V( tp5394 a(g18 Vval p5395 tp5396 a(g202 V) tp5397 a(g189 V\u000a tp5398 a(g18 Vlog_10 p5399 tp5400 a(g189 V tp5401 a(g343 V= tp5402 a(g189 V tp5403 a(g33 VMath p5404 tp5405 a(g343 V. tp5406 a(g18 Vlog10 p5407 tp5408 a(g202 V( tp5409 a(g18 Vval p5410 tp5411 a(g202 V) tp5412 a(g189 V\u000a\u000a p5413 tp5414 a(g111 Vdef p5415 tp5416 a(g189 V tp5417 a(g21 Vlog_base p5418 tp5419 a(g202 V( tp5420 a(g18 Vbase p5421 tp5422 a(g202 V, tp5423 a(g189 V tp5424 a(g18 Vval p5425 tp5426 a(g202 V) tp5427 a(g189 V\u000a p5428 tp5429 a(g33 VMath p5430 tp5431 a(g343 V. tp5432 a(g18 Vlog p5433 tp5434 a(g202 V( tp5435 a(g18 Vval p5436 tp5437 a(g202 V) tp5438 a(g343 V/ tp5439 a(g33 VMath p5440 tp5441 a(g343 V. tp5442 a(g18 Vlog p5443 tp5444 a(g202 V( tp5445 a(g18 Vbase p5446 tp5447 a(g202 V) tp5448 a(g189 V\u000a tp5449 a(g111 Vend p5450 tp5451 a(g189 V\u000a\u000a p5452 tp5453 a(g18 Vanswer p5454 tp5455 a(g189 V tp5456 a(g343 V= tp5457 a(g189 V tp5458 a(g18 Vlog_base p5459 tp5460 a(g202 V( tp5461 a(g318 V10 p5462 tp5463 a(g202 V, tp5464 a(g189 V tp5465 a(g318 V10_000 p5466 tp5467 a(g202 V) tp5468 a(g189 V\u000a tp5469 a(g57 Vputs p5470 tp5471 a(g189 V tp5472 a(g245 V" tp5473 a(g245 Vlog10(10,000) = p5474 tp5475 a(g233 V#{ p5476 tp5477 a(g18 Vanswer p5478 tp5479 a(g233 V} tp5480 a(g245 V" tp5481 a(g189 V\u000a\u000a\u000a p5482 tp5483 a(g7 V# @@PLEAC@@_2.14 p5484 tp5485 a(g189 V\u000a tp5486 a(g57 Vrequire p5487 tp5488 a(g189 V tp5489 a(g271 V'matrix.rb' p5490 tp5491 a(g189 V\u000a\u000a p5492 tp5493 a(g18 Va tp5494 a(g189 V tp5495 a(g343 V= tp5496 a(g189 V tp5497 a(g33 VMatrix p5498 tp5499 a(g343 V[ tp5500 a(g343 V[ tp5501 a(g318 V3 tp5502 a(g202 V, tp5503 a(g189 V tp5504 a(g318 V2 tp5505 a(g202 V, tp5506 a(g189 V tp5507 a(g318 V3 tp5508 a(g343 V] tp5509 a(g202 V, tp5510 a(g189 V tp5511 a(g343 V[ tp5512 a(g318 V5 tp5513 a(g202 V, tp5514 a(g189 V tp5515 a(g318 V9 tp5516 a(g202 V, tp5517 a(g189 V tp5518 a(g318 V8 tp5519 a(g343 V] tp5520 a(g343 V] tp5521 a(g189 V\u000a tp5522 a(g18 Vb tp5523 a(g189 V tp5524 a(g343 V= tp5525 a(g189 V tp5526 a(g33 VMatrix p5527 tp5528 a(g343 V[ tp5529 a(g343 V[ tp5530 a(g318 V4 tp5531 a(g202 V, tp5532 a(g189 V tp5533 a(g318 V7 tp5534 a(g343 V] tp5535 a(g202 V, tp5536 a(g189 V tp5537 a(g343 V[ tp5538 a(g318 V9 tp5539 a(g202 V, tp5540 a(g189 V tp5541 a(g318 V3 tp5542 a(g343 V] tp5543 a(g202 V, tp5544 a(g189 V tp5545 a(g343 V[ tp5546 a(g318 V8 tp5547 a(g202 V, tp5548 a(g189 V tp5549 a(g318 V1 tp5550 a(g343 V] tp5551 a(g343 V] tp5552 a(g189 V\u000a tp5553 a(g18 Vc tp5554 a(g189 V tp5555 a(g343 V= tp5556 a(g189 V tp5557 a(g18 Va tp5558 a(g189 V tp5559 a(g343 V* tp5560 a(g189 V tp5561 a(g18 Vb tp5562 a(g189 V\u000a\u000a p5563 tp5564 a(g18 Va tp5565 a(g343 V. tp5566 a(g18 Vrow_size p5567 tp5568 a(g189 V\u000a tp5569 a(g18 Va tp5570 a(g343 V. tp5571 a(g18 Vcolumn_size p5572 tp5573 a(g189 V\u000a\u000a p5574 tp5575 a(g18 Vc tp5576 a(g343 V. tp5577 a(g18 Vdet p5578 tp5579 a(g189 V\u000a tp5580 a(g18 Va tp5581 a(g343 V. tp5582 a(g18 Vtranspose p5583 tp5584 a(g189 V\u000a\u000a\u000a p5585 tp5586 a(g7 V# @@PLEAC@@_2.15 p5587 tp5588 a(g189 V\u000a tp5589 a(g57 Vrequire p5590 tp5591 a(g189 V tp5592 a(g271 V'complex.rb' p5593 tp5594 a(g189 V\u000a tp5595 a(g57 Vrequire p5596 tp5597 a(g189 V tp5598 a(g271 V'rational.rb' p5599 tp5600 a(g189 V\u000a\u000a p5601 tp5602 a(g18 Va tp5603 a(g189 V tp5604 a(g343 V= tp5605 a(g189 V tp5606 a(g33 VComplex p5607 tp5608 a(g202 V( tp5609 a(g318 V3 tp5610 a(g202 V, tp5611 a(g189 V tp5612 a(g318 V5 tp5613 a(g202 V) tp5614 a(g189 V p5615 tp5616 a(g7 V# 3 + 5i p5617 tp5618 a(g189 V\u000a tp5619 a(g18 Vb tp5620 a(g189 V tp5621 a(g343 V= tp5622 a(g189 V tp5623 a(g33 VComplex p5624 tp5625 a(g202 V( tp5626 a(g318 V2 tp5627 a(g202 V, tp5628 a(g189 V tp5629 a(g343 V- tp5630 a(g318 V2 tp5631 a(g202 V) tp5632 a(g189 V p5633 tp5634 a(g7 V# 2 - 2i p5635 tp5636 a(g189 V\u000a tp5637 a(g57 Vputs p5638 tp5639 a(g189 V tp5640 a(g245 V" tp5641 a(g245 Vc = p5642 tp5643 a(g233 V#{ p5644 tp5645 a(g18 Va tp5646 a(g343 V* tp5647 a(g18 Vb tp5648 a(g233 V} tp5649 a(g245 V" tp5650 a(g189 V\u000a\u000a p5651 tp5652 a(g18 Vc tp5653 a(g189 V tp5654 a(g343 V= tp5655 a(g189 V tp5656 a(g18 Va tp5657 a(g189 V tp5658 a(g343 V* tp5659 a(g189 V tp5660 a(g18 Vb tp5661 a(g189 V\u000a tp5662 a(g18 Vd tp5663 a(g189 V tp5664 a(g343 V= tp5665 a(g189 V tp5666 a(g318 V3 tp5667 a(g189 V tp5668 a(g343 V+ tp5669 a(g189 V tp5670 a(g318 V4 tp5671 a(g343 V* tp5672 a(g33 VComplex p5673 tp5674 a(g343 V:: p5675 tp5676 a(g18 VI tp5677 a(g189 V\u000a\u000a p5678 tp5679 a(g57 Vprintf p5680 tp5681 a(g189 V tp5682 a(g245 V" tp5683 a(g245 Vsqrt( p5684 tp5685 a(g233 V#{ p5686 tp5687 a(g18 Vd tp5688 a(g233 V} tp5689 a(g245 V) = %s p5690 tp5691 a(g252 V\u005cn p5692 tp5693 a(g245 V" tp5694 a(g202 V, tp5695 a(g189 V tp5696 a(g33 VMath p5697 tp5698 a(g343 V. tp5699 a(g18 Vsqrt p5700 tp5701 a(g202 V( tp5702 a(g18 Vd tp5703 a(g202 V) tp5704 a(g189 V\u000a\u000a\u000a p5705 tp5706 a(g7 V# @@PLEAC@@_2.16 p5707 tp5708 a(g189 V\u000a tp5709 a(g18 Vnumber p5710 tp5711 a(g189 V tp5712 a(g343 V= tp5713 a(g189 V tp5714 a(g18 Vhexadecimal p5715 tp5716 a(g343 V. tp5717 a(g18 Vhex p5718 tp5719 a(g189 V\u000a tp5720 a(g18 Vnumber p5721 tp5722 a(g189 V tp5723 a(g343 V= tp5724 a(g189 V tp5725 a(g18 Voctal p5726 tp5727 a(g343 V. tp5728 a(g18 Voct p5729 tp5730 a(g189 V\u000a\u000a p5731 tp5732 a(g57 Vprint p5733 tp5734 a(g189 V tp5735 a(g245 V" tp5736 a(g245 VGimme a number in decimal, octal, or hex: p5737 tp5738 a(g245 V" tp5739 a(g189 V\u000a tp5740 a(g18 Vnum p5741 tp5742 a(g189 V tp5743 a(g343 V= tp5744 a(g189 V tp5745 a(g57 Vgets p5746 tp5747 a(g343 V. tp5748 a(g18 Vchomp p5749 tp5750 a(g189 V\u000a tp5751 a(g57 Vexit p5752 tp5753 a(g189 V tp5754 a(g111 Vunless p5755 tp5756 a(g189 V tp5757 a(g18 Vdefined? p5758 tp5759 a(g202 V( tp5760 a(g18 Vnum p5761 tp5762 a(g202 V) tp5763 a(g189 V\u000a tp5764 a(g18 Vnum p5765 tp5766 a(g189 V tp5767 a(g343 V= tp5768 a(g189 V tp5769 a(g18 Vnum p5770 tp5771 a(g343 V. tp5772 a(g18 Voct p5773 tp5774 a(g189 V tp5775 a(g111 Vif p5776 tp5777 a(g189 V tp5778 a(g18 Vnum p5779 tp5780 a(g189 V tp5781 a(g343 V=~ p5782 tp5783 a(g189 V tp5784 a(g229 V/ tp5785 a(g229 V^0 p5786 tp5787 a(g229 V/ tp5788 a(g189 V p5789 tp5790 a(g7 V# does both oct and hex p5791 tp5792 a(g189 V\u000a tp5793 a(g57 Vprintf p5794 tp5795 a(g189 V tp5796 a(g245 V" tp5797 a(g245 V%d %x %o p5798 tp5799 a(g252 V\u005cn p5800 tp5801 a(g245 V" tp5802 a(g202 V, tp5803 a(g189 V tp5804 a(g18 Vnum p5805 tp5806 a(g202 V, tp5807 a(g189 V tp5808 a(g18 Vnum p5809 tp5810 a(g202 V, tp5811 a(g189 V tp5812 a(g18 Vnum p5813 tp5814 a(g189 V\u000a\u000a p5815 tp5816 a(g57 Vprint p5817 tp5818 a(g189 V tp5819 a(g245 V" tp5820 a(g245 VEnter file permission in octal: p5821 tp5822 a(g245 V" tp5823 a(g189 V\u000a tp5824 a(g18 Vpermissions p5825 tp5826 a(g189 V tp5827 a(g343 V= tp5828 a(g189 V tp5829 a(g57 Vgets p5830 tp5831 a(g343 V. tp5832 a(g18 Vchomp p5833 tp5834 a(g189 V\u000a tp5835 a(g111 Vraise p5836 tp5837 a(g189 V tp5838 a(g245 V" tp5839 a(g245 VExiting ... p5840 tp5841 a(g252 V\u005cn p5842 tp5843 a(g245 V" tp5844 a(g189 V tp5845 a(g111 Vunless p5846 tp5847 a(g189 V tp5848 a(g18 Vdefined? p5849 tp5850 a(g202 V( tp5851 a(g18 Vpermissions p5852 tp5853 a(g202 V) tp5854 a(g189 V\u000a tp5855 a(g57 Vputs p5856 tp5857 a(g189 V tp5858 a(g245 V" tp5859 a(g245 VThe decimal value is p5860 tp5861 a(g233 V#{ p5862 tp5863 a(g18 Vpermissions p5864 tp5865 a(g343 V. tp5866 a(g18 Voct p5867 tp5868 a(g233 V} tp5869 a(g245 V" tp5870 a(g189 V\u000a\u000a\u000a p5871 tp5872 a(g7 V# @@PLEAC@@_2.17 p5873 tp5874 a(g189 V\u000a tp5875 a(g111 Vdef p5876 tp5877 a(g189 V tp5878 a(g21 Vcommify p5879 tp5880 a(g202 V( tp5881 a(g18 Vn tp5882 a(g202 V) tp5883 a(g189 V\u000a p5884 tp5885 a(g18 Vn tp5886 a(g343 V. tp5887 a(g18 Vto_s p5888 tp5889 a(g189 V tp5890 a(g343 V=~ p5891 tp5892 a(g189 V tp5893 a(g229 V/ tp5894 a(g229 V([^ p5895 tp5896 a(g229 V\u005c tp5897 a(g229 V.]*)( p5898 tp5899 a(g229 V\u005c tp5900 a(g229 V..*)? p5901 tp5902 a(g229 V/ tp5903 a(g189 V\u000a p5904 tp5905 a(g18 Vint p5906 tp5907 a(g202 V, tp5908 a(g189 V tp5909 a(g18 Vdec p5910 tp5911 a(g189 V tp5912 a(g343 V= tp5913 a(g189 V tp5914 a(g76 V$1 p5915 tp5916 a(g343 V. tp5917 a(g18 Vreverse p5918 tp5919 a(g202 V, tp5920 a(g189 V tp5921 a(g76 V$2 p5922 tp5923 a(g189 V tp5924 a(g202 V? tp5925 a(g189 V tp5926 a(g76 V$2 p5927 tp5928 a(g189 V tp5929 a(g202 V: tp5930 a(g189 V tp5931 a(g245 V" tp5932 a(g245 V" tp5933 a(g189 V\u000a p5934 tp5935 a(g111 Vwhile p5936 tp5937 a(g189 V tp5938 a(g18 Vint p5939 tp5940 a(g343 V. tp5941 a(g18 Vgsub! p5942 tp5943 a(g202 V( tp5944 a(g229 V/ tp5945 a(g229 V(,| p5946 tp5947 a(g229 V\u005c tp5948 a(g229 V.|^)( p5949 tp5950 a(g229 V\u005c tp5951 a(g229 Vd{3})( p5952 tp5953 a(g229 V\u005c tp5954 a(g229 Vd) p5955 tp5956 a(g229 V/ tp5957 a(g202 V, tp5958 a(g189 V tp5959 a(g271 V'\u005c1\u005c2,\u005c3' p5960 tp5961 a(g202 V) tp5962 a(g189 V\u000a p5963 tp5964 a(g111 Vend p5965 tp5966 a(g189 V\u000a p5967 tp5968 a(g18 Vint p5969 tp5970 a(g343 V. tp5971 a(g18 Vreverse p5972 tp5973 a(g189 V tp5974 a(g343 V+ tp5975 a(g189 V tp5976 a(g18 Vdec p5977 tp5978 a(g189 V\u000a tp5979 a(g111 Vend p5980 tp5981 a(g189 V\u000a\u000a\u000a p5982 tp5983 a(g7 V# @@PLEAC@@_2.18 p5984 tp5985 a(g189 V\u000a tp5986 a(g57 Vprintf p5987 tp5988 a(g189 V tp5989 a(g245 V" tp5990 a(g245 VIt took %d hour%s p5991 tp5992 a(g252 V\u005cn p5993 tp5994 a(g245 V" tp5995 a(g202 V, tp5996 a(g189 V tp5997 a(g18 Vtime p5998 tp5999 a(g202 V, tp6000 a(g189 V tp6001 a(g18 Vtime p6002 tp6003 a(g189 V tp6004 a(g343 V== p6005 tp6006 a(g189 V tp6007 a(g318 V1 tp6008 a(g189 V tp6009 a(g343 V? tp6010 a(g189 V tp6011 a(g245 V" tp6012 a(g245 V" tp6013 a(g189 V tp6014 a(g202 V: tp6015 a(g189 V tp6016 a(g245 V" tp6017 a(g245 Vs tp6018 a(g245 V" tp6019 a(g189 V\u000a\u000a p6020 tp6021 a(g7 V# dunno if an equivalent to Lingua::EN::Inflect exists... p6022 tp6023 a(g189 V\u000a\u000a\u000a p6024 tp6025 a(g7 V# @@PLEAC@@_2.19 p6026 tp6027 a(g189 V\u000a tp6028 a(g7 V#----------------------------- p6029 tp6030 a(g189 V\u000a tp6031 a(g7 V#!/usr/bin/ruby p6032 tp6033 a(g189 V\u000a tp6034 a(g7 V# bigfact - calculating prime factors p6035 tp6036 a(g189 V\u000a tp6037 a(g111 Vdef p6038 tp6039 a(g189 V tp6040 a(g21 Vfactorize p6041 tp6042 a(g202 V( tp6043 a(g18 Vorig p6044 tp6045 a(g202 V) tp6046 a(g189 V\u000a p6047 tp6048 a(g18 Vfactors p6049 tp6050 a(g189 V tp6051 a(g343 V= tp6052 a(g189 V tp6053 a(g202 V{ tp6054 a(g202 V} tp6055 a(g189 V\u000a p6056 tp6057 a(g18 Vfactors p6058 tp6059 a(g343 V. tp6060 a(g18 Vdefault p6061 tp6062 a(g189 V tp6063 a(g343 V= tp6064 a(g189 V tp6065 a(g318 V0 tp6066 a(g189 V p6067 tp6068 a(g7 V# return 0 instead nil if key not found in hash p6069 tp6070 a(g189 V\u000a p6071 tp6072 a(g18 Vn tp6073 a(g189 V tp6074 a(g343 V= tp6075 a(g189 V tp6076 a(g18 Vorig p6077 tp6078 a(g189 V\u000a p6079 tp6080 a(g18 Vi tp6081 a(g189 V tp6082 a(g343 V= tp6083 a(g189 V tp6084 a(g318 V2 tp6085 a(g189 V\u000a p6086 tp6087 a(g18 Vsqi p6088 tp6089 a(g189 V tp6090 a(g343 V= tp6091 a(g189 V tp6092 a(g318 V4 tp6093 a(g189 V p6094 tp6095 a(g7 V# square of i p6096 tp6097 a(g189 V\u000a p6098 tp6099 a(g111 Vwhile p6100 tp6101 a(g189 V tp6102 a(g18 Vsqi p6103 tp6104 a(g189 V tp6105 a(g343 V< tp6106 a(g343 V= tp6107 a(g189 V tp6108 a(g18 Vn tp6109 a(g189 V tp6110 a(g111 Vdo p6111 tp6112 a(g189 V\u000a p6113 tp6114 a(g111 Vwhile p6115 tp6116 a(g189 V tp6117 a(g18 Vn tp6118 a(g343 V. tp6119 a(g18 Vmodulo p6120 tp6121 a(g202 V( tp6122 a(g18 Vi tp6123 a(g202 V) tp6124 a(g189 V tp6125 a(g343 V== p6126 tp6127 a(g189 V tp6128 a(g318 V0 tp6129 a(g189 V tp6130 a(g111 Vdo p6131 tp6132 a(g189 V\u000a p6133 tp6134 a(g18 Vn tp6135 a(g189 V tp6136 a(g343 V/= p6137 tp6138 a(g189 V tp6139 a(g18 Vi tp6140 a(g189 V\u000a p6141 tp6142 a(g18 Vfactors p6143 tp6144 a(g343 V[ tp6145 a(g18 Vi tp6146 a(g343 V] tp6147 a(g189 V tp6148 a(g343 V+= p6149 tp6150 a(g189 V tp6151 a(g318 V1 tp6152 a(g189 V\u000a p6153 tp6154 a(g7 V# puts "Found factor #{i}" p6155 tp6156 a(g189 V\u000a p6157 tp6158 a(g111 Vend p6159 tp6160 a(g189 V\u000a p6161 tp6162 a(g7 V# we take advantage of the fact that (i +1)**2 = i**2 + 2*i +1 p6163 tp6164 a(g189 V\u000a p6165 tp6166 a(g18 Vsqi p6167 tp6168 a(g189 V tp6169 a(g343 V+= p6170 tp6171 a(g189 V tp6172 a(g318 V2 tp6173 a(g189 V tp6174 a(g343 V* tp6175 a(g189 V tp6176 a(g18 Vi tp6177 a(g189 V tp6178 a(g343 V+ tp6179 a(g189 V tp6180 a(g318 V1 tp6181 a(g189 V\u000a p6182 tp6183 a(g18 Vi tp6184 a(g189 V tp6185 a(g343 V+= p6186 tp6187 a(g189 V tp6188 a(g318 V1 tp6189 a(g189 V\u000a p6190 tp6191 a(g111 Vend p6192 tp6193 a(g189 V\u000a \u000a p6194 tp6195 a(g111 Vif p6196 tp6197 a(g189 V tp6198 a(g202 V( tp6199 a(g18 Vn tp6200 a(g189 V tp6201 a(g343 V!= p6202 tp6203 a(g189 V tp6204 a(g318 V1 tp6205 a(g202 V) tp6206 a(g189 V tp6207 a(g343 V&& p6208 tp6209 a(g189 V tp6210 a(g202 V( tp6211 a(g18 Vn tp6212 a(g189 V tp6213 a(g343 V!= p6214 tp6215 a(g189 V tp6216 a(g18 Vorig p6217 tp6218 a(g202 V) tp6219 a(g189 V\u000a p6220 tp6221 a(g18 Vfactors p6222 tp6223 a(g343 V[ tp6224 a(g18 Vn tp6225 a(g343 V] tp6226 a(g189 V tp6227 a(g343 V+= p6228 tp6229 a(g189 V tp6230 a(g318 V1 tp6231 a(g189 V\u000a p6232 tp6233 a(g111 Vend p6234 tp6235 a(g189 V\u000a p6236 tp6237 a(g18 Vfactors p6238 tp6239 a(g189 V\u000a tp6240 a(g111 Vend p6241 tp6242 a(g189 V\u000a\u000a p6243 tp6244 a(g111 Vdef p6245 tp6246 a(g189 V tp6247 a(g21 Vprintfactorhash p6248 tp6249 a(g202 V( tp6250 a(g18 Vorig p6251 tp6252 a(g202 V, tp6253 a(g189 V tp6254 a(g18 Vfactorcount p6255 tp6256 a(g202 V) tp6257 a(g189 V\u000a p6258 tp6259 a(g57 Vprint p6260 tp6261 a(g189 V tp6262 a(g57 Vformat p6263 tp6264 a(g202 V( tp6265 a(g245 V" tp6266 a(g245 V%-10d p6267 tp6268 a(g245 V" tp6269 a(g202 V, tp6270 a(g189 V tp6271 a(g18 Vorig p6272 tp6273 a(g202 V) tp6274 a(g189 V\u000a p6275 tp6276 a(g111 Vif p6277 tp6278 a(g189 V tp6279 a(g18 Vfactorcount p6280 tp6281 a(g343 V. tp6282 a(g18 Vlength p6283 tp6284 a(g189 V tp6285 a(g343 V== p6286 tp6287 a(g189 V tp6288 a(g318 V0 tp6289 a(g189 V\u000a p6290 tp6291 a(g57 Vprint p6292 tp6293 a(g189 V tp6294 a(g245 V" tp6295 a(g245 VPRIME p6296 tp6297 a(g245 V" tp6298 a(g189 V\u000a p6299 tp6300 a(g111 Velse p6301 tp6302 a(g189 V\u000a p6303 tp6304 a(g7 V# sorts after number, because the hash keys are numbers p6305 tp6306 a(g189 V\u000a p6307 tp6308 a(g18 Vfactorcount p6309 tp6310 a(g343 V. tp6311 a(g18 Vsort p6312 tp6313 a(g343 V. tp6314 a(g18 Veach p6315 tp6316 a(g189 V tp6317 a(g202 V{ tp6318 a(g189 V tp6319 a(g343 V| tp6320 a(g18 Vfactor p6321 tp6322 a(g202 V, tp6323 a(g18 Vexponent p6324 tp6325 a(g343 V| tp6326 a(g189 V\u000a p6327 tp6328 a(g57 Vprint p6329 tp6330 a(g189 V tp6331 a(g18 Vfactor p6332 tp6333 a(g189 V\u000a p6334 tp6335 a(g111 Vif p6336 tp6337 a(g189 V tp6338 a(g18 Vexponent p6339 tp6340 a(g189 V tp6341 a(g343 V> tp6342 a(g189 V tp6343 a(g318 V1 tp6344 a(g189 V\u000a p6345 tp6346 a(g57 Vprint p6347 tp6348 a(g189 V tp6349 a(g245 V" tp6350 a(g245 V** p6351 tp6352 a(g245 V" tp6353 a(g202 V, tp6354 a(g189 V tp6355 a(g18 Vexponent p6356 tp6357 a(g189 V\u000a p6358 tp6359 a(g111 Vend p6360 tp6361 a(g189 V\u000a p6362 tp6363 a(g57 Vprint p6364 tp6365 a(g189 V tp6366 a(g245 V" tp6367 a(g245 V tp6368 a(g245 V" tp6369 a(g189 V\u000a p6370 tp6371 a(g202 V} tp6372 a(g189 V\u000a p6373 tp6374 a(g111 Vend p6375 tp6376 a(g189 V\u000a p6377 tp6378 a(g57 Vputs p6379 tp6380 a(g189 V\u000a tp6381 a(g111 Vend p6382 tp6383 a(g189 V\u000a\u000a p6384 tp6385 a(g111 Vfor p6386 tp6387 a(g189 V tp6388 a(g18 Varg p6389 tp6390 a(g189 V tp6391 a(g111 Vin p6392 tp6393 a(g189 V tp6394 a(g33 VARGV p6395 tp6396 a(g189 V\u000a p6397 tp6398 a(g18 Vn tp6399 a(g189 V tp6400 a(g343 V= tp6401 a(g189 V tp6402 a(g18 Varg p6403 tp6404 a(g343 V. tp6405 a(g18 Vto_i p6406 tp6407 a(g189 V\u000a p6408 tp6409 a(g18 Vmfactors p6410 tp6411 a(g189 V tp6412 a(g343 V= tp6413 a(g189 V tp6414 a(g18 Vfactorize p6415 tp6416 a(g202 V( tp6417 a(g18 Vn tp6418 a(g202 V) tp6419 a(g189 V\u000a p6420 tp6421 a(g18 Vprintfactorhash p6422 tp6423 a(g202 V( tp6424 a(g18 Vn tp6425 a(g202 V, tp6426 a(g189 V tp6427 a(g18 Vmfactors p6428 tp6429 a(g202 V) tp6430 a(g189 V\u000a tp6431 a(g111 Vend p6432 tp6433 a(g189 V\u000a tp6434 a(g7 V#----------------------------- p6435 tp6436 a(g189 V\u000a\u000a\u000a p6437 tp6438 a(g7 V# @@PLEAC@@_3.0 p6439 tp6440 a(g189 V\u000a tp6441 a(g57 Vputs p6442 tp6443 a(g189 V tp6444 a(g33 VTime p6445 tp6446 a(g343 V. tp6447 a(g18 Vnow p6448 tp6449 a(g189 V\u000a\u000a p6450 tp6451 a(g57 Vprint p6452 tp6453 a(g189 V tp6454 a(g245 V" tp6455 a(g245 VToday is day p6456 tp6457 a(g245 V" tp6458 a(g202 V, tp6459 a(g189 V tp6460 a(g33 VTime p6461 tp6462 a(g343 V. tp6463 a(g18 Vnow p6464 tp6465 a(g343 V. tp6466 a(g18 Vyday p6467 tp6468 a(g202 V, tp6469 a(g189 V tp6470 a(g245 V" tp6471 a(g245 V of the current year. p6472 tp6473 a(g252 V\u005cn p6474 tp6475 a(g245 V" tp6476 a(g189 V\u000a tp6477 a(g57 Vprint p6478 tp6479 a(g189 V tp6480 a(g245 V" tp6481 a(g245 VToday is day p6482 tp6483 a(g245 V" tp6484 a(g202 V, tp6485 a(g189 V tp6486 a(g33 VTime p6487 tp6488 a(g343 V. tp6489 a(g18 Vnow p6490 tp6491 a(g343 V. tp6492 a(g18 Vday p6493 tp6494 a(g202 V, tp6495 a(g189 V tp6496 a(g245 V" tp6497 a(g245 V of the current month. p6498 tp6499 a(g252 V\u005cn p6500 tp6501 a(g245 V" tp6502 a(g189 V\u000a\u000a\u000a p6503 tp6504 a(g7 V# @@PLEAC@@_3.1 p6505 tp6506 a(g189 V\u000a tp6507 a(g18 Vday p6508 tp6509 a(g202 V, tp6510 a(g189 V tp6511 a(g18 Vmonth p6512 tp6513 a(g202 V, tp6514 a(g189 V tp6515 a(g18 Vyear p6516 tp6517 a(g189 V tp6518 a(g343 V= tp6519 a(g189 V tp6520 a(g33 VTime p6521 tp6522 a(g343 V. tp6523 a(g18 Vnow p6524 tp6525 a(g343 V. tp6526 a(g18 Vday p6527 tp6528 a(g202 V, tp6529 a(g189 V tp6530 a(g33 VTime p6531 tp6532 a(g343 V. tp6533 a(g18 Vnow p6534 tp6535 a(g343 V. tp6536 a(g18 Vmonth p6537 tp6538 a(g202 V, tp6539 a(g189 V tp6540 a(g33 VTime p6541 tp6542 a(g343 V. tp6543 a(g18 Vnow p6544 tp6545 a(g343 V. tp6546 a(g18 Vyear p6547 tp6548 a(g189 V\u000a tp6549 a(g7 V# or p6550 tp6551 a(g189 V\u000a tp6552 a(g18 Vday p6553 tp6554 a(g202 V, tp6555 a(g189 V tp6556 a(g18 Vmonth p6557 tp6558 a(g202 V, tp6559 a(g189 V tp6560 a(g18 Vyear p6561 tp6562 a(g189 V tp6563 a(g343 V= tp6564 a(g189 V tp6565 a(g33 VTime p6566 tp6567 a(g343 V. tp6568 a(g18 Vnow p6569 tp6570 a(g343 V. tp6571 a(g18 Vto_a p6572 tp6573 a(g343 V[ tp6574 a(g318 V3 tp6575 a(g343 V. tp6576 a(g18 V. tp6577 a(g318 V5 tp6578 a(g343 V] tp6579 a(g189 V\u000a\u000a p6580 tp6581 a(g18 Vtl p6582 tp6583 a(g189 V tp6584 a(g343 V= tp6585 a(g189 V tp6586 a(g33 VTime p6587 tp6588 a(g343 V. tp6589 a(g18 Vnow p6590 tp6591 a(g343 V. tp6592 a(g18 Vlocaltime p6593 tp6594 a(g189 V\u000a tp6595 a(g57 Vprintf p6596 tp6597 a(g202 V( tp6598 a(g245 V" tp6599 a(g245 VThe current date is %04d %02d %02d p6600 tp6601 a(g252 V\u005cn p6602 tp6603 a(g245 V" tp6604 a(g202 V, tp6605 a(g189 V tp6606 a(g18 Vtl p6607 tp6608 a(g343 V. tp6609 a(g18 Vyear p6610 tp6611 a(g202 V, tp6612 a(g189 V tp6613 a(g18 Vtl p6614 tp6615 a(g343 V. tp6616 a(g18 Vmonth p6617 tp6618 a(g202 V, tp6619 a(g189 V tp6620 a(g18 Vtl p6621 tp6622 a(g343 V. tp6623 a(g18 Vday p6624 tp6625 a(g202 V) tp6626 a(g189 V\u000a\u000a p6627 tp6628 a(g33 VTime p6629 tp6630 a(g343 V. tp6631 a(g18 Vnow p6632 tp6633 a(g343 V. tp6634 a(g18 Vlocaltime p6635 tp6636 a(g343 V. tp6637 a(g18 Vstrftime p6638 tp6639 a(g202 V( tp6640 a(g245 V" tp6641 a(g245 V%Y-%m-%d p6642 tp6643 a(g245 V" tp6644 a(g202 V) tp6645 a(g189 V\u000a\u000a\u000a p6646 tp6647 a(g7 V# @@PLEAC@@_3.2 p6648 tp6649 a(g189 V\u000a tp6650 a(g33 VTime p6651 tp6652 a(g343 V. tp6653 a(g18 Vlocal p6654 tp6655 a(g202 V( tp6656 a(g18 Vyear p6657 tp6658 a(g202 V, tp6659 a(g189 V tp6660 a(g18 Vmonth p6661 tp6662 a(g202 V, tp6663 a(g189 V tp6664 a(g18 Vday p6665 tp6666 a(g202 V, tp6667 a(g189 V tp6668 a(g18 Vhour p6669 tp6670 a(g202 V, tp6671 a(g189 V tp6672 a(g18 Vminute p6673 tp6674 a(g202 V, tp6675 a(g189 V tp6676 a(g18 Vsecond p6677 tp6678 a(g202 V) tp6679 a(g343 V. tp6680 a(g18 Vtv_sec p6681 tp6682 a(g189 V\u000a tp6683 a(g33 VTime p6684 tp6685 a(g343 V. tp6686 a(g18 Vgm p6687 tp6688 a(g202 V( tp6689 a(g18 Vyear p6690 tp6691 a(g202 V, tp6692 a(g189 V tp6693 a(g18 Vmonth p6694 tp6695 a(g202 V, tp6696 a(g189 V tp6697 a(g18 Vday p6698 tp6699 a(g202 V, tp6700 a(g189 V tp6701 a(g18 Vhour p6702 tp6703 a(g202 V, tp6704 a(g189 V tp6705 a(g18 Vminute p6706 tp6707 a(g202 V, tp6708 a(g189 V tp6709 a(g18 Vsecond p6710 tp6711 a(g202 V) tp6712 a(g343 V. tp6713 a(g18 Vtv_sec p6714 tp6715 a(g189 V\u000a\u000a\u000a p6716 tp6717 a(g7 V# @@PLEAC@@_3.3 p6718 tp6719 a(g189 V\u000a tp6720 a(g18 Vsec p6721 tp6722 a(g202 V, tp6723 a(g189 V tp6724 a(g18 Vmin p6725 tp6726 a(g202 V, tp6727 a(g189 V tp6728 a(g18 Vhour p6729 tp6730 a(g202 V, tp6731 a(g189 V tp6732 a(g18 Vday p6733 tp6734 a(g202 V, tp6735 a(g189 V tp6736 a(g18 Vmonth p6737 tp6738 a(g202 V, tp6739 a(g189 V tp6740 a(g18 Vyear p6741 tp6742 a(g202 V, tp6743 a(g189 V tp6744 a(g18 Vwday p6745 tp6746 a(g202 V, tp6747 a(g189 V tp6748 a(g18 Vyday p6749 tp6750 a(g202 V, tp6751 a(g189 V tp6752 a(g18 Visdst p6753 tp6754 a(g202 V, tp6755 a(g189 V tp6756 a(g18 Vzone p6757 tp6758 a(g189 V tp6759 a(g343 V= tp6760 a(g189 V tp6761 a(g33 VTime p6762 tp6763 a(g343 V. tp6764 a(g18 Vat p6765 tp6766 a(g202 V( tp6767 a(g18 Vepoch_secs p6768 tp6769 a(g202 V) tp6770 a(g343 V. tp6771 a(g18 Vto_a p6772 tp6773 a(g189 V\u000a\u000a\u000a p6774 tp6775 a(g7 V# @@PLEAC@@_3.4 p6776 tp6777 a(g189 V\u000a tp6778 a(g18 Vwhen_ p6779 tp6780 a(g189 V tp6781 a(g343 V= tp6782 a(g189 V tp6783 a(g18 Vnow p6784 tp6785 a(g189 V tp6786 a(g343 V+ tp6787 a(g189 V tp6788 a(g18 Vdifference p6789 tp6790 a(g189 V p6791 tp6792 a(g7 V# now -> Time ; difference -> Numeric (delta in seconds) p6793 tp6794 a(g189 V\u000a tp6795 a(g18 Vthen_ p6796 tp6797 a(g189 V tp6798 a(g343 V= tp6799 a(g189 V tp6800 a(g18 Vnow p6801 tp6802 a(g189 V tp6803 a(g343 V- tp6804 a(g189 V tp6805 a(g18 Vdifference p6806 tp6807 a(g189 V\u000a\u000a\u000a p6808 tp6809 a(g7 V# @@PLEAC@@_3.5 p6810 tp6811 a(g189 V\u000a tp6812 a(g18 Vbree p6813 tp6814 a(g189 V tp6815 a(g343 V= tp6816 a(g189 V tp6817 a(g318 V361535725 p6818 tp6819 a(g189 V\u000a tp6820 a(g18 Vnat p6821 tp6822 a(g189 V p6823 tp6824 a(g343 V= tp6825 a(g189 V p6826 tp6827 a(g318 V96201950 p6828 tp6829 a(g189 V\u000a\u000a p6830 tp6831 a(g18 Vdifference p6832 tp6833 a(g189 V tp6834 a(g343 V= tp6835 a(g189 V tp6836 a(g18 Vbree p6837 tp6838 a(g189 V tp6839 a(g343 V- tp6840 a(g189 V tp6841 a(g18 Vnat p6842 tp6843 a(g189 V\u000a tp6844 a(g57 Vputs p6845 tp6846 a(g189 V tp6847 a(g245 V" tp6848 a(g245 VThere were p6849 tp6850 a(g233 V#{ p6851 tp6852 a(g18 Vdifference p6853 tp6854 a(g233 V} tp6855 a(g245 V seconds between Nat and Bree p6856 tp6857 a(g245 V" tp6858 a(g189 V\u000a\u000a p6859 tp6860 a(g18 Vseconds p6861 tp6862 a(g189 V p6863 tp6864 a(g343 V= tp6865 a(g189 V p6866 tp6867 a(g18 Vdifference p6868 tp6869 a(g189 V tp6870 a(g343 V% tp6871 a(g189 V tp6872 a(g318 V60 p6873 tp6874 a(g189 V\u000a tp6875 a(g18 Vdifference p6876 tp6877 a(g189 V tp6878 a(g343 V= tp6879 a(g189 V tp6880 a(g202 V( tp6881 a(g18 Vdifference p6882 tp6883 a(g189 V tp6884 a(g343 V- tp6885 a(g189 V tp6886 a(g18 Vseconds p6887 tp6888 a(g202 V) tp6889 a(g189 V tp6890 a(g343 V/ tp6891 a(g189 V tp6892 a(g318 V60 p6893 tp6894 a(g189 V\u000a tp6895 a(g18 Vminutes p6896 tp6897 a(g189 V p6898 tp6899 a(g343 V= tp6900 a(g189 V p6901 tp6902 a(g18 Vdifference p6903 tp6904 a(g189 V tp6905 a(g343 V% tp6906 a(g189 V tp6907 a(g318 V60 p6908 tp6909 a(g189 V\u000a tp6910 a(g18 Vdifference p6911 tp6912 a(g189 V tp6913 a(g343 V= tp6914 a(g189 V tp6915 a(g202 V( tp6916 a(g18 Vdifference p6917 tp6918 a(g189 V tp6919 a(g343 V- tp6920 a(g189 V tp6921 a(g18 Vminutes p6922 tp6923 a(g202 V) tp6924 a(g189 V tp6925 a(g343 V/ tp6926 a(g189 V tp6927 a(g318 V60 p6928 tp6929 a(g189 V\u000a tp6930 a(g18 Vhours p6931 tp6932 a(g189 V p6933 tp6934 a(g343 V= tp6935 a(g189 V p6936 tp6937 a(g18 Vdifference p6938 tp6939 a(g189 V tp6940 a(g343 V% tp6941 a(g189 V tp6942 a(g318 V24 p6943 tp6944 a(g189 V\u000a tp6945 a(g18 Vdifference p6946 tp6947 a(g189 V tp6948 a(g343 V= tp6949 a(g189 V tp6950 a(g202 V( tp6951 a(g18 Vdifference p6952 tp6953 a(g189 V tp6954 a(g343 V- tp6955 a(g189 V tp6956 a(g18 Vhours p6957 tp6958 a(g202 V) tp6959 a(g189 V p6960 tp6961 a(g343 V/ tp6962 a(g189 V tp6963 a(g318 V24 p6964 tp6965 a(g189 V\u000a tp6966 a(g18 Vdays p6967 tp6968 a(g189 V p6969 tp6970 a(g343 V= tp6971 a(g189 V p6972 tp6973 a(g18 Vdifference p6974 tp6975 a(g189 V tp6976 a(g343 V% tp6977 a(g189 V tp6978 a(g318 V7 tp6979 a(g189 V\u000a tp6980 a(g18 Vweeks p6981 tp6982 a(g189 V p6983 tp6984 a(g343 V= tp6985 a(g189 V tp6986 a(g202 V( tp6987 a(g18 Vdifference p6988 tp6989 a(g189 V tp6990 a(g343 V- tp6991 a(g189 V tp6992 a(g18 Vdays p6993 tp6994 a(g202 V) tp6995 a(g189 V p6996 tp6997 a(g343 V/ tp6998 a(g189 V p6999 tp7000 a(g318 V7 tp7001 a(g189 V\u000a\u000a p7002 tp7003 a(g57 Vputs p7004 tp7005 a(g189 V tp7006 a(g245 V" tp7007 a(g245 V( tp7008 a(g233 V#{ p7009 tp7010 a(g18 Vweeks p7011 tp7012 a(g233 V} tp7013 a(g245 V weeks, p7014 tp7015 a(g233 V#{ p7016 tp7017 a(g18 Vdays p7018 tp7019 a(g233 V} tp7020 a(g245 V days, p7021 tp7022 a(g233 V#{ p7023 tp7024 a(g18 Vhours p7025 tp7026 a(g233 V} tp7027 a(g245 V: tp7028 a(g233 V#{ p7029 tp7030 a(g18 Vminutes p7031 tp7032 a(g233 V} tp7033 a(g245 V: tp7034 a(g233 V#{ p7035 tp7036 a(g18 Vseconds p7037 tp7038 a(g233 V} tp7039 a(g245 V) tp7040 a(g245 V" tp7041 a(g189 V\u000a\u000a\u000a p7042 tp7043 a(g7 V# @@PLEAC@@_3.6 p7044 tp7045 a(g189 V\u000a tp7046 a(g18 Vmonthday p7047 tp7048 a(g202 V, tp7049 a(g189 V tp7050 a(g18 Vweekday p7051 tp7052 a(g202 V, tp7053 a(g189 V tp7054 a(g18 Vyearday p7055 tp7056 a(g189 V tp7057 a(g343 V= tp7058 a(g189 V tp7059 a(g18 Vdate p7060 tp7061 a(g343 V. tp7062 a(g18 Vmday p7063 tp7064 a(g202 V, tp7065 a(g189 V tp7066 a(g18 Vdate p7067 tp7068 a(g343 V. tp7069 a(g18 Vwday p7070 tp7071 a(g202 V, tp7072 a(g189 V tp7073 a(g18 Vdate p7074 tp7075 a(g343 V. tp7076 a(g18 Vyday p7077 tp7078 a(g189 V\u000a\u000a p7079 tp7080 a(g7 V# AFAIK the week number is not just a division since week boundaries are on sundays p7081 tp7082 a(g189 V\u000a tp7083 a(g18 Vweeknum p7084 tp7085 a(g189 V tp7086 a(g343 V= tp7087 a(g189 V tp7088 a(g18 Vd tp7089 a(g343 V. tp7090 a(g18 Vstrftime p7091 tp7092 a(g202 V( tp7093 a(g245 V" tp7094 a(g245 V%U p7095 tp7096 a(g245 V" tp7097 a(g202 V) tp7098 a(g343 V. tp7099 a(g18 Vto_i p7100 tp7101 a(g189 V tp7102 a(g343 V+ tp7103 a(g189 V tp7104 a(g318 V1 tp7105 a(g189 V\u000a\u000a p7106 tp7107 a(g18 Vyear p7108 tp7109 a(g189 V p7110 tp7111 a(g343 V= tp7112 a(g189 V tp7113 a(g318 V1981 p7114 tp7115 a(g189 V\u000a tp7116 a(g18 Vmonth p7117 tp7118 a(g189 V tp7119 a(g343 V= tp7120 a(g189 V tp7121 a(g245 V" tp7122 a(g245 Vjun p7123 tp7124 a(g245 V" tp7125 a(g189 V p7126 tp7127 a(g7 V# or `6' if you want to emulate a broken language p7128 tp7129 a(g189 V\u000a tp7130 a(g18 Vday p7131 tp7132 a(g189 V p7133 tp7134 a(g343 V= tp7135 a(g189 V tp7136 a(g318 V16 p7137 tp7138 a(g189 V\u000a tp7139 a(g18 Vt tp7140 a(g189 V tp7141 a(g343 V= tp7142 a(g189 V tp7143 a(g33 VTime p7144 tp7145 a(g343 V. tp7146 a(g18 Vmktime p7147 tp7148 a(g202 V( tp7149 a(g18 Vyear p7150 tp7151 a(g202 V, tp7152 a(g189 V tp7153 a(g18 Vmonth p7154 tp7155 a(g202 V, tp7156 a(g189 V tp7157 a(g18 Vday p7158 tp7159 a(g202 V) tp7160 a(g189 V\u000a tp7161 a(g57 Vprint p7162 tp7163 a(g189 V tp7164 a(g245 V" tp7165 a(g233 V#{ p7166 tp7167 a(g18 Vmonth p7168 tp7169 a(g233 V} tp7170 a(g245 V/ tp7171 a(g233 V#{ p7172 tp7173 a(g18 Vday p7174 tp7175 a(g233 V} tp7176 a(g245 V/ tp7177 a(g233 V#{ p7178 tp7179 a(g18 Vyear p7180 tp7181 a(g233 V} tp7182 a(g245 V was a p7183 tp7184 a(g245 V" tp7185 a(g202 V, tp7186 a(g189 V tp7187 a(g18 Vt tp7188 a(g343 V. tp7189 a(g18 Vstrftime p7190 tp7191 a(g202 V( tp7192 a(g245 V" tp7193 a(g245 V%A p7194 tp7195 a(g245 V" tp7196 a(g202 V) tp7197 a(g202 V, tp7198 a(g189 V tp7199 a(g245 V" tp7200 a(g252 V\u005cn p7201 tp7202 a(g245 V" tp7203 a(g189 V\u000a\u000a\u000a p7204 tp7205 a(g7 V# @@PLEAC@@_3.7 p7206 tp7207 a(g189 V\u000a tp7208 a(g18 Vyyyy p7209 tp7210 a(g202 V, tp7211 a(g189 V tp7212 a(g18 Vmm p7213 tp7214 a(g202 V, tp7215 a(g189 V tp7216 a(g18 Vdd p7217 tp7218 a(g189 V tp7219 a(g343 V= tp7220 a(g189 V tp7221 a(g76 V$1 p7222 tp7223 a(g202 V, tp7224 a(g189 V tp7225 a(g76 V$2 p7226 tp7227 a(g202 V, tp7228 a(g189 V tp7229 a(g76 V$3 p7230 tp7231 a(g189 V tp7232 a(g111 Vif p7233 tp7234 a(g189 V tp7235 a(g245 V" tp7236 a(g245 V1998-06-25 p7237 tp7238 a(g245 V" tp7239 a(g189 V tp7240 a(g343 V=~ p7241 tp7242 a(g189 V tp7243 a(g229 V/ tp7244 a(g229 V( tp7245 a(g229 V\u005c tp7246 a(g229 Vd+)-( p7247 tp7248 a(g229 V\u005c tp7249 a(g229 Vd+)-( p7250 tp7251 a(g229 V\u005c tp7252 a(g229 Vd+) p7253 tp7254 a(g229 V/ tp7255 a(g189 V\u000a\u000a p7256 tp7257 a(g18 Vepoch_seconds p7258 tp7259 a(g189 V tp7260 a(g343 V= tp7261 a(g189 V tp7262 a(g33 VTime p7263 tp7264 a(g343 V. tp7265 a(g18 Vmktime p7266 tp7267 a(g202 V( tp7268 a(g18 Vyyyy p7269 tp7270 a(g202 V, tp7271 a(g189 V tp7272 a(g18 Vmm p7273 tp7274 a(g202 V, tp7275 a(g189 V tp7276 a(g18 Vdd p7277 tp7278 a(g202 V) tp7279 a(g343 V. tp7280 a(g18 Vtv_sec p7281 tp7282 a(g189 V\u000a\u000a p7283 tp7284 a(g7 V# dunno an equivalent to Date::Manip#ParseDate p7285 tp7286 a(g189 V\u000a\u000a\u000a p7287 tp7288 a(g7 V# @@PLEAC@@_3.8 p7289 tp7290 a(g189 V\u000a tp7291 a(g18 Vstring p7292 tp7293 a(g189 V tp7294 a(g343 V= tp7295 a(g189 V tp7296 a(g33 VTime p7297 tp7298 a(g343 V. tp7299 a(g18 Vat p7300 tp7301 a(g202 V( tp7302 a(g18 Vepoch_secs p7303 tp7304 a(g202 V) tp7305 a(g189 V\u000a tp7306 a(g33 VTime p7307 tp7308 a(g343 V. tp7309 a(g18 Vat p7310 tp7311 a(g202 V( tp7312 a(g318 V1234567890 p7313 tp7314 a(g202 V) tp7315 a(g343 V. tp7316 a(g18 Vgmtime p7317 tp7318 a(g189 V p7319 tp7320 a(g7 V# gives: Fri Feb 13 23:31:30 UTC 2009 p7321 tp7322 a(g189 V\u000a\u000a p7323 tp7324 a(g18 Vtime p7325 tp7326 a(g189 V tp7327 a(g343 V= tp7328 a(g189 V tp7329 a(g33 VTime p7330 tp7331 a(g343 V. tp7332 a(g18 Vmktime p7333 tp7334 a(g202 V( tp7335 a(g318 V1973 p7336 tp7337 a(g202 V, tp7338 a(g189 V tp7339 a(g245 V" tp7340 a(g245 Vjan p7341 tp7342 a(g245 V" tp7343 a(g202 V, tp7344 a(g189 V tp7345 a(g318 V18 p7346 tp7347 a(g202 V, tp7348 a(g189 V tp7349 a(g318 V3 tp7350 a(g202 V, tp7351 a(g189 V tp7352 a(g318 V45 p7353 tp7354 a(g202 V, tp7355 a(g189 V tp7356 a(g318 V50 p7357 tp7358 a(g202 V) tp7359 a(g189 V\u000a tp7360 a(g57 Vprint p7361 tp7362 a(g189 V tp7363 a(g245 V" tp7364 a(g245 VIn localtime it gives: p7365 tp7366 a(g245 V" tp7367 a(g202 V, tp7368 a(g189 V tp7369 a(g18 Vtime p7370 tp7371 a(g343 V. tp7372 a(g18 Vlocaltime p7373 tp7374 a(g202 V, tp7375 a(g189 V tp7376 a(g245 V" tp7377 a(g252 V\u005cn p7378 tp7379 a(g245 V" tp7380 a(g189 V\u000a\u000a\u000a p7381 tp7382 a(g7 V# @@PLEAC@@_3.9 p7383 tp7384 a(g189 V\u000a tp7385 a(g7 V# Ruby provides micro-seconds in Time object p7386 tp7387 a(g189 V\u000a tp7388 a(g33 VTime p7389 tp7390 a(g343 V. tp7391 a(g18 Vnow p7392 tp7393 a(g343 V. tp7394 a(g18 Vusec p7395 tp7396 a(g189 V\u000a\u000a p7397 tp7398 a(g7 V# Ruby gives the seconds in floating format when substracting two Time objects p7399 tp7400 a(g189 V\u000a tp7401 a(g18 Vbefore p7402 tp7403 a(g189 V tp7404 a(g343 V= tp7405 a(g189 V tp7406 a(g33 VTime p7407 tp7408 a(g343 V. tp7409 a(g18 Vnow p7410 tp7411 a(g189 V\u000a tp7412 a(g18 Vline p7413 tp7414 a(g189 V tp7415 a(g343 V= tp7416 a(g189 V tp7417 a(g57 Vgets p7418 tp7419 a(g189 V\u000a tp7420 a(g18 Velapsed p7421 tp7422 a(g189 V tp7423 a(g343 V= tp7424 a(g189 V tp7425 a(g33 VTime p7426 tp7427 a(g343 V. tp7428 a(g18 Vnow p7429 tp7430 a(g189 V tp7431 a(g343 V- tp7432 a(g189 V tp7433 a(g18 Vbefore p7434 tp7435 a(g189 V\u000a tp7436 a(g57 Vputs p7437 tp7438 a(g189 V tp7439 a(g245 V" tp7440 a(g245 VYou took p7441 tp7442 a(g233 V#{ p7443 tp7444 a(g18 Velapsed p7445 tp7446 a(g233 V} tp7447 a(g245 V seconds. p7448 tp7449 a(g245 V" tp7450 a(g189 V\u000a\u000a p7451 tp7452 a(g7 V# On my Celeron-400 with Linux-2.2.19-14mdk, average for three execs are: p7453 tp7454 a(g189 V\u000a tp7455 a(g7 V# This Ruby version: average 0.00321 sec p7456 tp7457 a(g189 V\u000a tp7458 a(g7 V# Cookbook's Perl version: average 0.00981 sec p7459 tp7460 a(g189 V\u000a tp7461 a(g18 Vsize p7462 tp7463 a(g189 V tp7464 a(g343 V= tp7465 a(g189 V tp7466 a(g318 V500 p7467 tp7468 a(g189 V\u000a tp7469 a(g18 Vnumber_of_times p7470 tp7471 a(g189 V tp7472 a(g343 V= tp7473 a(g189 V tp7474 a(g318 V100 p7475 tp7476 a(g189 V\u000a tp7477 a(g18 Vtotal_time p7478 tp7479 a(g189 V tp7480 a(g343 V= tp7481 a(g189 V tp7482 a(g318 V0 tp7483 a(g189 V\u000a tp7484 a(g18 Vnumber_of_times p7485 tp7486 a(g343 V. tp7487 a(g18 Vtimes p7488 tp7489 a(g189 V tp7490 a(g202 V{ tp7491 a(g189 V\u000a p7492 tp7493 a(g7 V# populate array p7494 tp7495 a(g189 V\u000a p7496 tp7497 a(g18 Varray p7498 tp7499 a(g189 V tp7500 a(g343 V= tp7501 a(g189 V tp7502 a(g343 V[ tp7503 a(g343 V] tp7504 a(g189 V\u000a p7505 tp7506 a(g18 Vsize p7507 tp7508 a(g343 V. tp7509 a(g18 Vtimes p7510 tp7511 a(g189 V tp7512 a(g202 V{ tp7513 a(g189 V tp7514 a(g18 Varray p7515 tp7516 a(g189 V tp7517 a(g343 V<< p7518 tp7519 a(g189 V tp7520 a(g57 Vrand p7521 tp7522 a(g189 V tp7523 a(g202 V} tp7524 a(g189 V\u000a p7525 tp7526 a(g7 V# sort it p7527 tp7528 a(g189 V\u000a p7529 tp7530 a(g18 Vbegin_ p7531 tp7532 a(g189 V tp7533 a(g343 V= tp7534 a(g189 V tp7535 a(g33 VTime p7536 tp7537 a(g343 V. tp7538 a(g18 Vnow p7539 tp7540 a(g189 V\u000a p7541 tp7542 a(g18 Varray p7543 tp7544 a(g343 V. tp7545 a(g18 Vsort! p7546 tp7547 a(g189 V\u000a p7548 tp7549 a(g18 Vtime p7550 tp7551 a(g189 V tp7552 a(g343 V= tp7553 a(g189 V tp7554 a(g33 VTime p7555 tp7556 a(g343 V. tp7557 a(g18 Vnow p7558 tp7559 a(g189 V tp7560 a(g343 V- tp7561 a(g189 V tp7562 a(g18 Vbegin_ p7563 tp7564 a(g189 V\u000a p7565 tp7566 a(g18 Vtotal_time p7567 tp7568 a(g189 V tp7569 a(g343 V+= p7570 tp7571 a(g189 V tp7572 a(g18 Vtime p7573 tp7574 a(g189 V\u000a tp7575 a(g202 V} tp7576 a(g189 V\u000a tp7577 a(g57 Vprintf p7578 tp7579 a(g189 V tp7580 a(g245 V" tp7581 a(g245 VOn average, sorting %d random numbers takes %.5f seconds p7582 tp7583 a(g252 V\u005cn p7584 tp7585 a(g245 V" tp7586 a(g202 V, tp7587 a(g189 V\u000a p7588 tp7589 a(g18 Vsize p7590 tp7591 a(g202 V, tp7592 a(g189 V tp7593 a(g202 V( tp7594 a(g18 Vtotal_time p7595 tp7596 a(g343 V/ tp7597 a(g57 VFloat p7598 tp7599 a(g202 V( tp7600 a(g18 Vnumber_of_times p7601 tp7602 a(g202 V) tp7603 a(g202 V) tp7604 a(g189 V\u000a\u000a\u000a p7605 tp7606 a(g7 V# @@PLEAC@@_3.10 p7607 tp7608 a(g189 V\u000a tp7609 a(g57 Vsleep p7610 tp7611 a(g202 V( tp7612 a(g318 V0 tp7613 a(g343 V. tp7614 a(g332 V005 p7615 tp7616 a(g202 V) tp7617 a(g189 V p7618 tp7619 a(g7 V# Ruby is definitely not as broken as Perl :) p7620 tp7621 a(g189 V\u000a tp7622 a(g7 V# (may be interrupted by sending the process a SIGALRM) p7623 tp7624 a(g189 V\u000a\u000a\u000a p7625 tp7626 a(g7 V# @@PLEAC@@_3.11 p7627 tp7628 a(g189 V\u000a tp7629 a(g7 V#!/usr/bin/ruby -w p7630 tp7631 a(g189 V\u000a tp7632 a(g7 V# hopdelta - feed mail header, produce lines p7633 tp7634 a(g189 V\u000a tp7635 a(g7 V# showing delay at each hop. p7636 tp7637 a(g189 V\u000a tp7638 a(g57 Vrequire p7639 tp7640 a(g189 V tp7641 a(g271 V'time' p7642 tp7643 a(g189 V\u000a tp7644 a(g111 Vclass p7645 tp7646 a(g189 V tp7647 a(g106 VMailHopDelta p7648 tp7649 a(g189 V\u000a\u000a p7650 tp7651 a(g111 Vdef p7652 tp7653 a(g189 V tp7654 a(g21 Vinitialize p7655 tp7656 a(g202 V( tp7657 a(g18 Vmail p7658 tp7659 a(g202 V) tp7660 a(g189 V\u000a p7661 tp7662 a(g80 V@head p7663 tp7664 a(g189 V tp7665 a(g343 V= tp7666 a(g189 V tp7667 a(g18 Vmail p7668 tp7669 a(g343 V. tp7670 a(g18 Vgsub p7671 tp7672 a(g202 V( tp7673 a(g229 V/ tp7674 a(g229 V\u005c tp7675 a(g229 Vn tp7676 a(g229 V\u005c tp7677 a(g229 Vs+ p7678 tp7679 a(g229 V/ tp7680 a(g202 V, tp7681 a(g271 V' ' p7682 tp7683 a(g202 V) tp7684 a(g189 V\u000a p7685 tp7686 a(g80 V@topline p7687 tp7688 a(g189 V tp7689 a(g343 V= tp7690 a(g189 V tp7691 a(g274 V%w-Sender Recipient Time Delta- p7692 tp7693 a(g189 V\u000a p7694 tp7695 a(g80 V@start_from p7696 tp7697 a(g189 V tp7698 a(g343 V= tp7699 a(g189 V tp7700 a(g18 Vmail p7701 tp7702 a(g343 V. tp7703 a(g18 Vmatch p7704 tp7705 a(g202 V( tp7706 a(g229 V/ tp7707 a(g229 V^From.* p7708 tp7709 a(g229 V\u005c tp7710 a(g229 V@([^ p7711 tp7712 a(g229 V\u005c tp7713 a(g229 Vs>]*) p7714 tp7715 a(g229 V/ tp7716 a(g202 V) tp7717 a(g343 V[ tp7718 a(g318 V1 tp7719 a(g343 V] tp7720 a(g189 V\u000a p7721 tp7722 a(g80 V@date p7723 tp7724 a(g189 V tp7725 a(g343 V= tp7726 a(g189 V tp7727 a(g33 VTime p7728 tp7729 a(g343 V. tp7730 a(g18 Vparse p7731 tp7732 a(g202 V( tp7733 a(g18 Vmail p7734 tp7735 a(g343 V. tp7736 a(g18 Vmatch p7737 tp7738 a(g202 V( tp7739 a(g229 V/ tp7740 a(g229 V^Date: p7741 tp7742 a(g229 V\u005c tp7743 a(g229 Vs+(.*) p7744 tp7745 a(g229 V/ tp7746 a(g202 V) tp7747 a(g343 V[ tp7748 a(g318 V1 tp7749 a(g343 V] tp7750 a(g202 V) tp7751 a(g189 V\u000a p7752 tp7753 a(g111 Vend p7754 tp7755 a(g189 V\u000a\u000a p7756 tp7757 a(g111 Vdef p7758 tp7759 a(g189 V tp7760 a(g21 Vout p7761 tp7762 a(g202 V( tp7763 a(g18 Vline p7764 tp7765 a(g202 V) tp7766 a(g189 V\u000a p7767 tp7768 a(g245 V" tp7769 a(g245 V%-20.20s %-20.20s %-20.20s %s p7770 tp7771 a(g245 V" tp7772 a(g189 V tp7773 a(g343 V% tp7774 a(g189 V tp7775 a(g18 Vline p7776 tp7777 a(g189 V\u000a p7778 tp7779 a(g111 Vend p7780 tp7781 a(g189 V\u000a\u000a p7782 tp7783 a(g111 Vdef p7784 tp7785 a(g189 V tp7786 a(g21 Vhop_date p7787 tp7788 a(g202 V( tp7789 a(g18 Vday p7790 tp7791 a(g202 V) tp7792 a(g189 V\u000a p7793 tp7794 a(g18 Vday p7795 tp7796 a(g343 V. tp7797 a(g18 Vstrftime p7798 tp7799 a(g202 V( tp7800 a(g245 V" tp7801 a(g245 V%I:%M:%S %Y/%m/%d p7802 tp7803 a(g245 V" tp7804 a(g202 V) tp7805 a(g189 V\u000a p7806 tp7807 a(g111 Vend p7808 tp7809 a(g189 V\u000a\u000a p7810 tp7811 a(g111 Vdef p7812 tp7813 a(g189 V tp7814 a(g21 Vputs_hops p7815 tp7816 a(g189 V\u000a p7817 tp7818 a(g57 Vputs p7819 tp7820 a(g189 V tp7821 a(g18 Vout p7822 tp7823 a(g202 V( tp7824 a(g80 V@topline p7825 tp7826 a(g202 V) tp7827 a(g189 V \u000a p7828 tp7829 a(g57 Vputs p7830 tp7831 a(g189 V tp7832 a(g18 Vout p7833 tp7834 a(g202 V( tp7835 a(g343 V[ tp7836 a(g271 V'Start' p7837 tp7838 a(g202 V, tp7839 a(g189 V tp7840 a(g80 V@start_from p7841 tp7842 a(g202 V, tp7843 a(g189 V tp7844 a(g18 Vhop_date p7845 tp7846 a(g202 V( tp7847 a(g80 V@date p7848 tp7849 a(g202 V) tp7850 a(g202 V, tp7851 a(g271 V'' p7852 tp7853 a(g343 V] tp7854 a(g202 V) tp7855 a(g189 V\u000a p7856 tp7857 a(g80 V@head p7858 tp7859 a(g343 V. tp7860 a(g18 Vsplit p7861 tp7862 a(g202 V( tp7863 a(g229 V/ tp7864 a(g229 V\u005c tp7865 a(g229 Vn tp7866 a(g229 V/ tp7867 a(g202 V) tp7868 a(g343 V. tp7869 a(g18 Vreverse p7870 tp7871 a(g343 V. tp7872 a(g18 Vgrep p7873 tp7874 a(g202 V( tp7875 a(g229 V/ tp7876 a(g229 V^Received: p7877 tp7878 a(g229 V/ tp7879 a(g202 V) tp7880 a(g343 V. tp7881 a(g18 Veach p7882 tp7883 a(g189 V tp7884 a(g111 Vdo p7885 tp7886 a(g189 V tp7887 a(g343 V| tp7888 a(g18 Vhop p7889 tp7890 a(g343 V| tp7891 a(g189 V\u000a p7892 tp7893 a(g18 Vhop p7894 tp7895 a(g343 V. tp7896 a(g18 Vgsub! p7897 tp7898 a(g202 V( tp7899 a(g229 V/ tp7900 a(g229 V\u005c tp7901 a(g229 Vbon (.*?) (id.*) p7902 tp7903 a(g229 V/ tp7904 a(g202 V, tp7905 a(g271 V'; \u005c1' p7906 tp7907 a(g202 V) tp7908 a(g189 V\u000a p7909 tp7910 a(g18 Vwhence p7911 tp7912 a(g189 V tp7913 a(g343 V= tp7914 a(g189 V tp7915 a(g18 Vhop p7916 tp7917 a(g343 V. tp7918 a(g18 Vmatch p7919 tp7920 a(g202 V( tp7921 a(g229 V/ tp7922 a(g229 V; tp7923 a(g229 V\u005c tp7924 a(g229 Vs+(.*)$ p7925 tp7926 a(g229 V/ tp7927 a(g202 V) tp7928 a(g343 V[ tp7929 a(g318 V1 tp7930 a(g343 V] tp7931 a(g189 V\u000a p7932 tp7933 a(g111 Vunless p7934 tp7935 a(g189 V tp7936 a(g18 Vwhence p7937 tp7938 a(g189 V\u000a p7939 tp7940 a(g57 Vwarn p7941 tp7942 a(g189 V tp7943 a(g245 V" tp7944 a(g245 VBad received line: p7945 tp7946 a(g233 V#{ p7947 tp7948 a(g18 Vhop p7949 tp7950 a(g233 V} tp7951 a(g245 V" tp7952 a(g189 V\u000a p7953 tp7954 a(g111 Vnext p7955 tp7956 a(g189 V\u000a p7957 tp7958 a(g111 Vend p7959 tp7960 a(g189 V\u000a p7961 tp7962 a(g18 Vfrom p7963 tp7964 a(g189 V tp7965 a(g343 V= tp7966 a(g189 V tp7967 a(g76 V$+ p7968 tp7969 a(g189 V tp7970 a(g111 Vif p7971 tp7972 a(g189 V tp7973 a(g18 Vhop p7974 tp7975 a(g189 V tp7976 a(g343 V=~ p7977 tp7978 a(g189 V tp7979 a(g229 V/ tp7980 a(g229 Vfrom p7981 tp7982 a(g229 V\u005c tp7983 a(g229 Vs+( p7984 tp7985 a(g229 V\u005c tp7986 a(g229 VS+)| p7987 tp7988 a(g229 V\u005c tp7989 a(g229 V((.*?) p7990 tp7991 a(g229 V\u005c tp7992 a(g229 V) tp7993 a(g229 V/ tp7994 a(g189 V\u000a p7995 tp7996 a(g18 Vby p7997 tp7998 a(g189 V p7999 tp8000 a(g343 V= tp8001 a(g189 V tp8002 a(g76 V$1 p8003 tp8004 a(g189 V tp8005 a(g111 Vif p8006 tp8007 a(g189 V tp8008 a(g18 Vhop p8009 tp8010 a(g189 V tp8011 a(g343 V=~ p8012 tp8013 a(g189 V tp8014 a(g229 V/ tp8015 a(g229 Vby p8016 tp8017 a(g229 V\u005c tp8018 a(g229 Vs+( p8019 tp8020 a(g229 V\u005c tp8021 a(g229 VS+ p8022 tp8023 a(g229 V\u005c tp8024 a(g229 V. tp8025 a(g229 V\u005c tp8026 a(g229 VS+) p8027 tp8028 a(g229 V/ tp8029 a(g189 V\u000a p8030 tp8031 a(g111 Vnext p8032 tp8033 a(g189 V tp8034 a(g111 Vunless p8035 tp8036 a(g189 V tp8037 a(g18 Vnow p8038 tp8039 a(g189 V tp8040 a(g343 V= tp8041 a(g189 V tp8042 a(g33 VTime p8043 tp8044 a(g343 V. tp8045 a(g18 Vparse p8046 tp8047 a(g202 V( tp8048 a(g18 Vwhence p8049 tp8050 a(g202 V) tp8051 a(g343 V. tp8052 a(g18 Vlocaltime p8053 tp8054 a(g189 V\u000a p8055 tp8056 a(g18 Vdelta p8057 tp8058 a(g189 V tp8059 a(g343 V= tp8060 a(g189 V tp8061 a(g18 Vnow p8062 tp8063 a(g189 V tp8064 a(g343 V- tp8065 a(g189 V tp8066 a(g80 V@date p8067 tp8068 a(g189 V\u000a p8069 tp8070 a(g57 Vputs p8071 tp8072 a(g189 V tp8073 a(g18 Vout p8074 tp8075 a(g202 V( tp8076 a(g343 V[ tp8077 a(g18 Vfrom p8078 tp8079 a(g202 V, tp8080 a(g189 V tp8081 a(g18 Vby p8082 tp8083 a(g202 V, tp8084 a(g189 V tp8085 a(g18 Vhop_date p8086 tp8087 a(g202 V( tp8088 a(g18 Vnow p8089 tp8090 a(g202 V) tp8091 a(g202 V, tp8092 a(g189 V tp8093 a(g18 Vhop_time p8094 tp8095 a(g202 V( tp8096 a(g18 Vdelta p8097 tp8098 a(g202 V) tp8099 a(g343 V] tp8100 a(g202 V) tp8101 a(g189 V\u000a p8102 tp8103 a(g80 V@date p8104 tp8105 a(g189 V tp8106 a(g343 V= tp8107 a(g189 V tp8108 a(g18 Vnow p8109 tp8110 a(g189 V\u000a p8111 tp8112 a(g111 Vend p8113 tp8114 a(g189 V\u000a p8115 tp8116 a(g111 Vend p8117 tp8118 a(g189 V\u000a\u000a p8119 tp8120 a(g111 Vdef p8121 tp8122 a(g189 V tp8123 a(g21 Vhop_time p8124 tp8125 a(g202 V( tp8126 a(g18 Vsecs p8127 tp8128 a(g202 V) tp8129 a(g189 V\u000a p8130 tp8131 a(g18 Vsign p8132 tp8133 a(g189 V tp8134 a(g343 V= tp8135 a(g189 V tp8136 a(g18 Vsecs p8137 tp8138 a(g189 V tp8139 a(g343 V< tp8140 a(g189 V tp8141 a(g318 V0 tp8142 a(g189 V tp8143 a(g343 V? tp8144 a(g189 V tp8145 a(g343 V- tp8146 a(g318 V1 tp8147 a(g189 V tp8148 a(g202 V: tp8149 a(g189 V tp8150 a(g318 V1 tp8151 a(g189 V\u000a p8152 tp8153 a(g18 Vdays p8154 tp8155 a(g202 V, tp8156 a(g189 V tp8157 a(g18 Vsecs p8158 tp8159 a(g189 V tp8160 a(g343 V= tp8161 a(g189 V tp8162 a(g18 Vsecs p8163 tp8164 a(g343 V. tp8165 a(g18 Vabs p8166 tp8167 a(g343 V. tp8168 a(g18 Vdivmod p8169 tp8170 a(g202 V( tp8171 a(g318 V60 p8172 tp8173 a(g189 V tp8174 a(g343 V* tp8175 a(g189 V tp8176 a(g318 V60 p8177 tp8178 a(g189 V tp8179 a(g343 V* tp8180 a(g189 V tp8181 a(g318 V24 p8182 tp8183 a(g202 V) tp8184 a(g189 V\u000a p8185 tp8186 a(g18 Vhours p8187 tp8188 a(g202 V, tp8189 a(g18 Vsecs p8190 tp8191 a(g189 V tp8192 a(g343 V= tp8193 a(g189 V tp8194 a(g18 Vsecs p8195 tp8196 a(g343 V. tp8197 a(g18 Vabs p8198 tp8199 a(g343 V. tp8200 a(g18 Vdivmod p8201 tp8202 a(g202 V( tp8203 a(g318 V60 p8204 tp8205 a(g189 V tp8206 a(g343 V* tp8207 a(g189 V tp8208 a(g318 V60 p8209 tp8210 a(g202 V) tp8211 a(g189 V\u000a p8212 tp8213 a(g18 Vmins p8214 tp8215 a(g202 V, tp8216 a(g189 V tp8217 a(g18 Vsecs p8218 tp8219 a(g189 V tp8220 a(g343 V= tp8221 a(g189 V tp8222 a(g18 Vsecs p8223 tp8224 a(g343 V. tp8225 a(g18 Vabs p8226 tp8227 a(g343 V. tp8228 a(g18 Vdivmod p8229 tp8230 a(g202 V( tp8231 a(g318 V60 p8232 tp8233 a(g202 V) tp8234 a(g189 V\u000a p8235 tp8236 a(g18 Vrtn p8237 tp8238 a(g189 V tp8239 a(g343 V= tp8240 a(g189 V p8241 tp8242 a(g245 V" tp8243 a(g245 V%3ds p8244 tp8245 a(g245 V" tp8246 a(g189 V tp8247 a(g343 V% tp8248 a(g189 V tp8249 a(g343 V[ tp8250 a(g18 Vsecs p8251 tp8252 a(g189 V p8253 tp8254 a(g343 V* tp8255 a(g189 V tp8256 a(g18 Vsign p8257 tp8258 a(g343 V] tp8259 a(g189 V\u000a p8260 tp8261 a(g18 Vrtn p8262 tp8263 a(g189 V tp8264 a(g343 V<< p8265 tp8266 a(g189 V tp8267 a(g245 V" tp8268 a(g245 V%3dm p8269 tp8270 a(g245 V" tp8271 a(g189 V tp8272 a(g343 V% tp8273 a(g189 V tp8274 a(g343 V[ tp8275 a(g18 Vmins p8276 tp8277 a(g189 V p8278 tp8279 a(g343 V* tp8280 a(g189 V tp8281 a(g18 Vsign p8282 tp8283 a(g343 V] tp8284 a(g189 V tp8285 a(g111 Vif p8286 tp8287 a(g189 V tp8288 a(g18 Vmins p8289 tp8290 a(g189 V p8291 tp8292 a(g343 V!= p8293 tp8294 a(g189 V tp8295 a(g318 V0 tp8296 a(g189 V\u000a p8297 tp8298 a(g18 Vrtn p8299 tp8300 a(g189 V tp8301 a(g343 V<< p8302 tp8303 a(g189 V tp8304 a(g245 V" tp8305 a(g245 V%3dh p8306 tp8307 a(g245 V" tp8308 a(g189 V tp8309 a(g343 V% tp8310 a(g189 V tp8311 a(g343 V[ tp8312 a(g18 Vhours p8313 tp8314 a(g189 V tp8315 a(g343 V* tp8316 a(g189 V tp8317 a(g18 Vsign p8318 tp8319 a(g343 V] tp8320 a(g189 V tp8321 a(g111 Vif p8322 tp8323 a(g189 V tp8324 a(g18 Vhours p8325 tp8326 a(g189 V tp8327 a(g343 V!= p8328 tp8329 a(g189 V tp8330 a(g318 V0 tp8331 a(g189 V\u000a p8332 tp8333 a(g18 Vrtn p8334 tp8335 a(g189 V tp8336 a(g343 V<< p8337 tp8338 a(g189 V tp8339 a(g245 V" tp8340 a(g245 V%3dd p8341 tp8342 a(g245 V" tp8343 a(g189 V tp8344 a(g343 V% tp8345 a(g189 V tp8346 a(g343 V[ tp8347 a(g18 Vdays p8348 tp8349 a(g189 V p8350 tp8351 a(g343 V* tp8352 a(g189 V tp8353 a(g18 Vsign p8354 tp8355 a(g343 V] tp8356 a(g189 V tp8357 a(g111 Vif p8358 tp8359 a(g189 V tp8360 a(g18 Vdays p8361 tp8362 a(g189 V p8363 tp8364 a(g343 V!= p8365 tp8366 a(g189 V tp8367 a(g318 V0 tp8368 a(g189 V \u000a p8369 tp8370 a(g18 Vrtn p8371 tp8372 a(g189 V\u000a p8373 tp8374 a(g111 Vend p8375 tp8376 a(g189 V\u000a tp8377 a(g111 Vend p8378 tp8379 a(g189 V\u000a\u000a p8380 tp8381 a(g76 V$/ p8382 tp8383 a(g189 V tp8384 a(g343 V= tp8385 a(g189 V tp8386 a(g245 V" tp8387 a(g245 V" tp8388 a(g189 V\u000a tp8389 a(g18 Vmail p8390 tp8391 a(g189 V tp8392 a(g343 V= tp8393 a(g189 V tp8394 a(g33 VMailHopDelta p8395 tp8396 a(g343 V. tp8397 a(g18 Vnew p8398 tp8399 a(g202 V( tp8400 a(g33 VARGF p8401 tp8402 a(g343 V. tp8403 a(g18 Vgets p8404 tp8405 a(g202 V) tp8406 a(g343 V. tp8407 a(g18 Vputs_hops p8408 tp8409 a(g189 V\u000a\u000a\u000a p8410 tp8411 a(g7 V# @@PLEAC@@_4.0 p8412 tp8413 a(g189 V\u000a tp8414 a(g18 Vsingle_level p8415 tp8416 a(g189 V tp8417 a(g343 V= tp8418 a(g189 V tp8419 a(g343 V[ tp8420 a(g189 V tp8421 a(g245 V" tp8422 a(g245 Vthis p8423 tp8424 a(g245 V" tp8425 a(g202 V, tp8426 a(g189 V tp8427 a(g245 V" tp8428 a(g245 Vthat p8429 tp8430 a(g245 V" tp8431 a(g202 V, tp8432 a(g189 V tp8433 a(g245 V" tp8434 a(g245 Vthe p8435 tp8436 a(g245 V" tp8437 a(g202 V, tp8438 a(g189 V tp8439 a(g245 V" tp8440 a(g245 Vother p8441 tp8442 a(g245 V" tp8443 a(g189 V tp8444 a(g343 V] tp8445 a(g189 V\u000a\u000a p8446 tp8447 a(g7 V# Ruby directly supports nested arrays p8448 tp8449 a(g189 V\u000a tp8450 a(g18 Vdouble_level p8451 tp8452 a(g189 V tp8453 a(g343 V= tp8454 a(g189 V tp8455 a(g343 V[ tp8456 a(g189 V tp8457 a(g245 V" tp8458 a(g245 Vthis p8459 tp8460 a(g245 V" tp8461 a(g202 V, tp8462 a(g189 V tp8463 a(g245 V" tp8464 a(g245 Vthat p8465 tp8466 a(g245 V" tp8467 a(g202 V, tp8468 a(g189 V tp8469 a(g343 V[ tp8470 a(g189 V tp8471 a(g245 V" tp8472 a(g245 Vthe p8473 tp8474 a(g245 V" tp8475 a(g202 V, tp8476 a(g189 V tp8477 a(g245 V" tp8478 a(g245 Vother p8479 tp8480 a(g245 V" tp8481 a(g189 V tp8482 a(g343 V] tp8483 a(g189 V tp8484 a(g343 V] tp8485 a(g189 V\u000a tp8486 a(g18 Vstill_single_level p8487 tp8488 a(g189 V tp8489 a(g343 V= tp8490 a(g189 V tp8491 a(g343 V[ tp8492 a(g189 V tp8493 a(g245 V" tp8494 a(g245 Vthis p8495 tp8496 a(g245 V" tp8497 a(g202 V, tp8498 a(g189 V tp8499 a(g245 V" tp8500 a(g245 Vthat p8501 tp8502 a(g245 V" tp8503 a(g202 V, tp8504 a(g189 V tp8505 a(g343 V[ tp8506 a(g189 V tp8507 a(g245 V" tp8508 a(g245 Vthe p8509 tp8510 a(g245 V" tp8511 a(g202 V, tp8512 a(g189 V tp8513 a(g245 V" tp8514 a(g245 Vother p8515 tp8516 a(g245 V" tp8517 a(g189 V tp8518 a(g343 V] tp8519 a(g189 V tp8520 a(g343 V] tp8521 a(g343 V. tp8522 a(g18 Vflatten p8523 tp8524 a(g189 V\u000a\u000a\u000a p8525 tp8526 a(g7 V# @@PLEAC@@_4.1 p8527 tp8528 a(g189 V\u000a tp8529 a(g18 Va tp8530 a(g189 V tp8531 a(g343 V= tp8532 a(g189 V tp8533 a(g343 V[ tp8534 a(g189 V tp8535 a(g245 V" tp8536 a(g245 Vquick p8537 tp8538 a(g245 V" tp8539 a(g202 V, tp8540 a(g189 V tp8541 a(g245 V" tp8542 a(g245 Vbrown p8543 tp8544 a(g245 V" tp8545 a(g202 V, tp8546 a(g189 V tp8547 a(g245 V" tp8548 a(g245 Vfox p8549 tp8550 a(g245 V" tp8551 a(g189 V tp8552 a(g343 V] tp8553 a(g189 V\u000a tp8554 a(g18 Va tp8555 a(g189 V tp8556 a(g343 V= tp8557 a(g189 V tp8558 a(g274 V%w( p8559 tp8560 a(g274 VWhy are you teasing me? p8561 tp8562 a(g274 V) tp8563 a(g189 V\u000a\u000a p8564 tp8565 a(g18 Vlines p8566 tp8567 a(g189 V tp8568 a(g343 V= tp8569 a(g189 V tp8570 a(g343 V<< p8571 tp8572 a(g241 V" tp8573 a(g33 VEND_OF_HERE_DOC p8574 tp8575 a(g241 V" tp8576 a(g343 V. tp8577 a(g18 Vgsub p8578 tp8579 a(g202 V( tp8580 a(g229 V/ tp8581 a(g229 V^ tp8582 a(g229 V\u005c tp8583 a(g229 Vs*(.+) p8584 tp8585 a(g229 V/ tp8586 a(g202 V, tp8587 a(g189 V tp8588 a(g271 V'\u005c1' p8589 tp8590 a(g202 V) tp8591 a(g189 V\u000a tp8592 a(g241 V The boy stood on the burning deck,\u000a p8593 tp8594 a(g241 V It was as hot as glass.\u000a p8595 tp8596 a(g33 VEND_OF_HERE_DOC\u000a p8597 tp8598 a(g189 V\u000a tp8599 a(g18 Vbigarray p8600 tp8601 a(g189 V tp8602 a(g343 V= tp8603 a(g189 V tp8604 a(g33 VIO p8605 tp8606 a(g343 V. tp8607 a(g18 Vreadlines p8608 tp8609 a(g202 V( tp8610 a(g245 V" tp8611 a(g245 Vmydatafile p8612 tp8613 a(g245 V" tp8614 a(g202 V) tp8615 a(g343 V. tp8616 a(g18 Vcollect p8617 tp8618 a(g189 V tp8619 a(g202 V{ tp8620 a(g189 V tp8621 a(g343 V| tp8622 a(g18 Vl tp8623 a(g343 V| tp8624 a(g189 V tp8625 a(g18 Vl tp8626 a(g343 V. tp8627 a(g18 Vchomp p8628 tp8629 a(g189 V tp8630 a(g202 V} tp8631 a(g189 V\u000a\u000a p8632 tp8633 a(g57 Vname p8634 tp8635 a(g189 V tp8636 a(g343 V= tp8637 a(g189 V tp8638 a(g245 V" tp8639 a(g245 VGandalf p8640 tp8641 a(g245 V" tp8642 a(g189 V\u000a tp8643 a(g18 Vbanner p8644 tp8645 a(g189 V tp8646 a(g343 V= tp8647 a(g189 V tp8648 a(g274 V%Q( p8649 tp8650 a(g274 VSpeak, p8651 tp8652 a(g233 V#{ p8653 tp8654 a(g57 Vname p8655 tp8656 a(g233 V} tp8657 a(g274 V, and welcome! p8658 tp8659 a(g274 V) tp8660 a(g189 V\u000a\u000a p8661 tp8662 a(g18 Vhost_info p8663 tp8664 a(g189 V p8665 tp8666 a(g343 V= tp8667 a(g189 V tp8668 a(g264 V` tp8669 a(g264 Vhost p8670 tp8671 a(g233 V#{ p8672 tp8673 a(g18 Vhis_host p8674 tp8675 a(g233 V} tp8676 a(g264 V` tp8677 a(g189 V\u000a\u000a p8678 tp8679 a(g274 V%x( p8680 tp8681 a(g274 Vps p8682 tp8683 a(g233 V#{ p8684 tp8685 a(g76 V$$ p8686 tp8687 a(g233 V} tp8688 a(g274 V) tp8689 a(g189 V\u000a\u000a p8690 tp8691 a(g18 Vbanner p8692 tp8693 a(g189 V tp8694 a(g343 V= tp8695 a(g189 V tp8696 a(g271 V'Costs only $4.95' p8697 tp8698 a(g343 V. tp8699 a(g18 Vsplit p8700 tp8701 a(g202 V( tp8702 a(g271 V' ' p8703 tp8704 a(g202 V) tp8705 a(g189 V\u000a\u000a p8706 tp8707 a(g18 Vrax p8708 tp8709 a(g189 V tp8710 a(g343 V= tp8711 a(g189 V tp8712 a(g274 V%w! ( ) < > { } [ ] ! p8713 tp8714 a(g189 V\u000a\u000a\u000a p8715 tp8716 a(g7 V# @@PLEAC@@_4.2 p8717 tp8718 a(g189 V\u000a tp8719 a(g111 Vdef p8720 tp8721 a(g189 V tp8722 a(g21 Vcommify_series p8723 tp8724 a(g202 V( tp8725 a(g18 Varr p8726 tp8727 a(g202 V) tp8728 a(g189 V\u000a p8729 tp8730 a(g111 Vreturn p8731 tp8732 a(g189 V tp8733 a(g271 V'' p8734 tp8735 a(g189 V tp8736 a(g111 Vif p8737 tp8738 a(g189 V tp8739 a(g347 Vnot p8740 tp8741 a(g189 V tp8742 a(g18 Varr p8743 tp8744 a(g189 V\u000a p8745 tp8746 a(g111 Vcase p8747 tp8748 a(g189 V tp8749 a(g18 Varr p8750 tp8751 a(g343 V. tp8752 a(g18 Vsize p8753 tp8754 a(g189 V\u000a p8755 tp8756 a(g111 Vwhen p8757 tp8758 a(g189 V tp8759 a(g318 V0 tp8760 a(g189 V tp8761 a(g111 Vthen p8762 tp8763 a(g189 V tp8764 a(g271 V'' p8765 tp8766 a(g189 V\u000a p8767 tp8768 a(g111 Vwhen p8769 tp8770 a(g189 V tp8771 a(g318 V1 tp8772 a(g189 V tp8773 a(g111 Vthen p8774 tp8775 a(g189 V tp8776 a(g18 Varr p8777 tp8778 a(g343 V[ tp8779 a(g318 V0 tp8780 a(g343 V] tp8781 a(g189 V\u000a p8782 tp8783 a(g111 Vwhen p8784 tp8785 a(g189 V tp8786 a(g318 V2 tp8787 a(g189 V tp8788 a(g111 Vthen p8789 tp8790 a(g189 V tp8791 a(g18 Varr p8792 tp8793 a(g343 V. tp8794 a(g18 Vjoin p8795 tp8796 a(g202 V( tp8797 a(g271 V' and ' p8798 tp8799 a(g202 V) tp8800 a(g189 V\u000a p8801 tp8802 a(g111 Velse p8803 tp8804 a(g189 V tp8805 a(g18 Varr p8806 tp8807 a(g343 V[ tp8808 a(g318 V0 tp8809 a(g343 V. tp8810 a(g18 V. tp8811 a(g343 V- tp8812 a(g318 V2 tp8813 a(g343 V] tp8814 a(g343 V. tp8815 a(g18 Vjoin p8816 tp8817 a(g202 V( tp8818 a(g271 V', ' p8819 tp8820 a(g202 V) tp8821 a(g189 V tp8822 a(g343 V+ tp8823 a(g189 V tp8824 a(g271 V', and ' p8825 tp8826 a(g189 V tp8827 a(g343 V+ tp8828 a(g189 V tp8829 a(g18 Varr p8830 tp8831 a(g343 V[ tp8832 a(g343 V- tp8833 a(g318 V1 tp8834 a(g343 V] tp8835 a(g189 V\u000a p8836 tp8837 a(g111 Vend p8838 tp8839 a(g189 V\u000a tp8840 a(g111 Vend p8841 tp8842 a(g189 V\u000a\u000a p8843 tp8844 a(g18 Varray p8845 tp8846 a(g189 V tp8847 a(g343 V= tp8848 a(g189 V tp8849 a(g343 V[ tp8850 a(g189 V tp8851 a(g245 V" tp8852 a(g245 Vred p8853 tp8854 a(g245 V" tp8855 a(g202 V, tp8856 a(g189 V tp8857 a(g245 V" tp8858 a(g245 Vyellow p8859 tp8860 a(g245 V" tp8861 a(g202 V, tp8862 a(g189 V tp8863 a(g245 V" tp8864 a(g245 Vgreen p8865 tp8866 a(g245 V" tp8867 a(g189 V tp8868 a(g343 V] tp8869 a(g189 V\u000a\u000a p8870 tp8871 a(g57 Vprint p8872 tp8873 a(g189 V tp8874 a(g245 V" tp8875 a(g245 VI have p8876 tp8877 a(g245 V" tp8878 a(g202 V, tp8879 a(g189 V tp8880 a(g18 Varray p8881 tp8882 a(g202 V, tp8883 a(g189 V tp8884 a(g245 V" tp8885 a(g245 V marbles p8886 tp8887 a(g252 V\u005cn p8888 tp8889 a(g245 V" tp8890 a(g189 V\u000a tp8891 a(g7 V# -> I have redyellowgreen marbles p8892 tp8893 a(g189 V\u000a\u000a p8894 tp8895 a(g7 V# But unlike Perl: p8896 tp8897 a(g189 V\u000a tp8898 a(g57 Vprint p8899 tp8900 a(g189 V tp8901 a(g245 V" tp8902 a(g245 VI have p8903 tp8904 a(g233 V#{ p8905 tp8906 a(g18 Varray p8907 tp8908 a(g233 V} tp8909 a(g245 V marbles p8910 tp8911 a(g252 V\u005cn p8912 tp8913 a(g245 V" tp8914 a(g189 V\u000a tp8915 a(g7 V# -> I have redyellowgreen marbles p8916 tp8917 a(g189 V\u000a tp8918 a(g7 V# So, needs: p8919 tp8920 a(g189 V\u000a tp8921 a(g57 Vprint p8922 tp8923 a(g189 V tp8924 a(g245 V" tp8925 a(g245 VI have p8926 tp8927 a(g233 V#{ p8928 tp8929 a(g18 Varray p8930 tp8931 a(g343 V. tp8932 a(g18 Vjoin p8933 tp8934 a(g202 V( tp8935 a(g271 V' ' p8936 tp8937 a(g202 V) tp8938 a(g233 V} tp8939 a(g245 V marbles p8940 tp8941 a(g252 V\u005cn p8942 tp8943 a(g245 V" tp8944 a(g189 V\u000a tp8945 a(g7 V# -> I have red yellow green marbles p8946 tp8947 a(g189 V\u000a\u000a p8948 tp8949 a(g7 V#!/usr/bin/ruby p8950 tp8951 a(g189 V\u000a tp8952 a(g7 V# communify_series - show proper comma insertion in list output p8953 tp8954 a(g189 V\u000a\u000a p8955 tp8956 a(g111 Vdef p8957 tp8958 a(g189 V tp8959 a(g21 Vcommify_series p8960 tp8961 a(g202 V( tp8962 a(g18 Varr p8963 tp8964 a(g202 V) tp8965 a(g189 V\u000a p8966 tp8967 a(g111 Vreturn p8968 tp8969 a(g189 V tp8970 a(g271 V'' p8971 tp8972 a(g189 V tp8973 a(g111 Vif p8974 tp8975 a(g189 V tp8976 a(g347 Vnot p8977 tp8978 a(g189 V tp8979 a(g18 Varr p8980 tp8981 a(g189 V\u000a p8982 tp8983 a(g18 Vsepchar p8984 tp8985 a(g189 V tp8986 a(g343 V= tp8987 a(g189 V tp8988 a(g18 Varr p8989 tp8990 a(g343 V. tp8991 a(g18 Vfind p8992 tp8993 a(g189 V tp8994 a(g202 V{ tp8995 a(g189 V tp8996 a(g343 V| tp8997 a(g57 Vp tp8998 a(g343 V| tp8999 a(g189 V tp9000 a(g57 Vp tp9001 a(g189 V tp9002 a(g343 V=~ p9003 tp9004 a(g189 V tp9005 a(g229 V/ tp9006 a(g229 V, tp9007 a(g229 V/ tp9008 a(g189 V tp9009 a(g202 V} tp9010 a(g189 V tp9011 a(g202 V? tp9012 a(g189 V tp9013 a(g271 V'; ' p9014 tp9015 a(g189 V tp9016 a(g202 V: tp9017 a(g189 V tp9018 a(g271 V', ' p9019 tp9020 a(g189 V\u000a p9021 tp9022 a(g111 Vcase p9023 tp9024 a(g189 V tp9025 a(g18 Varr p9026 tp9027 a(g343 V. tp9028 a(g18 Vsize p9029 tp9030 a(g189 V\u000a p9031 tp9032 a(g111 Vwhen p9033 tp9034 a(g189 V tp9035 a(g318 V0 tp9036 a(g189 V tp9037 a(g111 Vthen p9038 tp9039 a(g189 V tp9040 a(g271 V'' p9041 tp9042 a(g189 V\u000a p9043 tp9044 a(g111 Vwhen p9045 tp9046 a(g189 V tp9047 a(g318 V1 tp9048 a(g189 V tp9049 a(g111 Vthen p9050 tp9051 a(g189 V tp9052 a(g18 Varr p9053 tp9054 a(g343 V[ tp9055 a(g318 V0 tp9056 a(g343 V] tp9057 a(g189 V\u000a p9058 tp9059 a(g111 Vwhen p9060 tp9061 a(g189 V tp9062 a(g318 V2 tp9063 a(g189 V tp9064 a(g111 Vthen p9065 tp9066 a(g189 V tp9067 a(g18 Varr p9068 tp9069 a(g343 V. tp9070 a(g18 Vjoin p9071 tp9072 a(g202 V( tp9073 a(g271 V' and ' p9074 tp9075 a(g202 V) tp9076 a(g189 V\u000a p9077 tp9078 a(g111 Velse p9079 tp9080 a(g189 V tp9081 a(g18 Varr p9082 tp9083 a(g343 V[ tp9084 a(g318 V0 tp9085 a(g343 V. tp9086 a(g18 V. tp9087 a(g343 V- tp9088 a(g318 V2 tp9089 a(g343 V] tp9090 a(g343 V. tp9091 a(g18 Vjoin p9092 tp9093 a(g202 V( tp9094 a(g18 Vsepchar p9095 tp9096 a(g202 V) tp9097 a(g189 V tp9098 a(g343 V+ tp9099 a(g189 V tp9100 a(g18 Vsepchar p9101 tp9102 a(g189 V tp9103 a(g343 V+ tp9104 a(g189 V tp9105 a(g271 V'and ' p9106 tp9107 a(g189 V tp9108 a(g343 V+ tp9109 a(g189 V tp9110 a(g18 Varr p9111 tp9112 a(g343 V[ tp9113 a(g343 V- tp9114 a(g318 V1 tp9115 a(g343 V] tp9116 a(g189 V\u000a p9117 tp9118 a(g111 Vend p9119 tp9120 a(g189 V\u000a tp9121 a(g111 Vend p9122 tp9123 a(g189 V\u000a\u000a p9124 tp9125 a(g18 Vlists p9126 tp9127 a(g189 V tp9128 a(g343 V= tp9129 a(g189 V tp9130 a(g343 V[ tp9131 a(g189 V\u000a p9132 tp9133 a(g343 V[ tp9134 a(g189 V tp9135 a(g271 V'just one thing' p9136 tp9137 a(g189 V tp9138 a(g343 V] tp9139 a(g202 V, tp9140 a(g189 V\u000a p9141 tp9142 a(g274 V%w( p9143 tp9144 a(g274 VMutt Jeff p9145 tp9146 a(g274 V) tp9147 a(g202 V, tp9148 a(g189 V\u000a p9149 tp9150 a(g274 V%w( p9151 tp9152 a(g274 VPeter Paul Mary p9153 tp9154 a(g274 V) tp9155 a(g202 V, tp9156 a(g189 V\u000a p9157 tp9158 a(g343 V[ tp9159 a(g189 V tp9160 a(g271 V'To our parents' p9161 tp9162 a(g202 V, tp9163 a(g189 V tp9164 a(g271 V'Mother Theresa' p9165 tp9166 a(g202 V, tp9167 a(g189 V tp9168 a(g271 V'God' p9169 tp9170 a(g189 V tp9171 a(g343 V] tp9172 a(g202 V, tp9173 a(g189 V\u000a p9174 tp9175 a(g343 V[ tp9176 a(g189 V tp9177 a(g271 V'pastrami' p9178 tp9179 a(g202 V, tp9180 a(g189 V tp9181 a(g271 V'ham and cheese' p9182 tp9183 a(g202 V, tp9184 a(g189 V tp9185 a(g271 V'peanut butter and jelly' p9186 tp9187 a(g202 V, tp9188 a(g189 V tp9189 a(g271 V'tuna' p9190 tp9191 a(g189 V tp9192 a(g343 V] tp9193 a(g202 V, tp9194 a(g189 V\u000a p9195 tp9196 a(g343 V[ tp9197 a(g189 V tp9198 a(g271 V'recycle tired, old phrases' p9199 tp9200 a(g202 V, tp9201 a(g189 V tp9202 a(g271 V'ponder big, happy thoughts' p9203 tp9204 a(g189 V tp9205 a(g343 V] tp9206 a(g202 V, tp9207 a(g189 V\u000a p9208 tp9209 a(g343 V[ tp9210 a(g189 V tp9211 a(g271 V'recycle tired, old phrases' p9212 tp9213 a(g202 V, tp9214 a(g189 V\u000a p9215 tp9216 a(g271 V'ponder big, happy thoughts' p9217 tp9218 a(g202 V, tp9219 a(g189 V\u000a p9220 tp9221 a(g271 V'sleep and dream peacefully' p9222 tp9223 a(g189 V tp9224 a(g343 V] tp9225 a(g202 V, tp9226 a(g189 V\u000a tp9227 a(g343 V] tp9228 a(g189 V\u000a\u000a p9229 tp9230 a(g111 Vfor p9231 tp9232 a(g189 V tp9233 a(g18 Vlist p9234 tp9235 a(g189 V tp9236 a(g111 Vin p9237 tp9238 a(g189 V tp9239 a(g18 Vlists p9240 tp9241 a(g189 V tp9242 a(g111 Vdo p9243 tp9244 a(g189 V\u000a p9245 tp9246 a(g57 Vputs p9247 tp9248 a(g189 V tp9249 a(g245 V" tp9250 a(g245 VThe list is: p9251 tp9252 a(g233 V#{ p9253 tp9254 a(g18 Vcommify_series p9255 tp9256 a(g202 V( tp9257 a(g18 Vlist p9258 tp9259 a(g202 V) tp9260 a(g233 V} tp9261 a(g245 V. tp9262 a(g245 V" tp9263 a(g189 V\u000a tp9264 a(g111 Vend p9265 tp9266 a(g189 V\u000a\u000a\u000a p9267 tp9268 a(g7 V# @@PLEAC@@_4.3 p9269 tp9270 a(g189 V\u000a tp9271 a(g7 V# (note: AFAIK Ruby doesn't allow gory change of Array length) p9272 tp9273 a(g189 V\u000a tp9274 a(g7 V# grow the array by assigning nil to past the end of array p9275 tp9276 a(g189 V\u000a tp9277 a(g18 Vary p9278 tp9279 a(g343 V[ tp9280 a(g18 Vnew_size p9281 tp9282 a(g343 V- tp9283 a(g318 V1 tp9284 a(g343 V] tp9285 a(g189 V tp9286 a(g343 V= tp9287 a(g189 V tp9288 a(g123 Vnil p9289 tp9290 a(g189 V\u000a tp9291 a(g7 V# shrink the array by slicing it down p9292 tp9293 a(g189 V\u000a tp9294 a(g18 Vary p9295 tp9296 a(g343 V. tp9297 a(g18 Vslice! p9298 tp9299 a(g202 V( tp9300 a(g18 Vnew_size p9301 tp9302 a(g343 V. tp9303 a(g18 V. tp9304 a(g343 V- tp9305 a(g318 V1 tp9306 a(g202 V) tp9307 a(g189 V\u000a tp9308 a(g7 V# init the array with given size p9309 tp9310 a(g189 V\u000a tp9311 a(g57 VArray p9312 tp9313 a(g343 V. tp9314 a(g18 Vnew p9315 tp9316 a(g202 V( tp9317 a(g18 Vnumber_of_elems p9318 tp9319 a(g202 V) tp9320 a(g189 V\u000a tp9321 a(g7 V# assign to an element past the original end enlarges the array p9322 tp9323 a(g189 V\u000a tp9324 a(g18 Vary p9325 tp9326 a(g343 V[ tp9327 a(g18 Vindex_new_last_elem p9328 tp9329 a(g343 V] tp9330 a(g189 V tp9331 a(g343 V= tp9332 a(g189 V tp9333 a(g18 Vvalue p9334 tp9335 a(g189 V\u000a\u000a p9336 tp9337 a(g111 Vdef p9338 tp9339 a(g189 V tp9340 a(g21 Vwhat_about_that_array p9341 tp9342 a(g202 V( tp9343 a(g18 Va tp9344 a(g202 V) tp9345 a(g189 V\u000a p9346 tp9347 a(g57 Vprint p9348 tp9349 a(g189 V tp9350 a(g245 V" tp9351 a(g245 VThe array now has p9352 tp9353 a(g245 V" tp9354 a(g202 V, tp9355 a(g189 V tp9356 a(g18 Va tp9357 a(g343 V. tp9358 a(g18 Vsize p9359 tp9360 a(g202 V, tp9361 a(g189 V tp9362 a(g245 V" tp9363 a(g245 V elements. p9364 tp9365 a(g252 V\u005cn p9366 tp9367 a(g245 V" tp9368 a(g189 V\u000a p9369 tp9370 a(g7 V# Index of last element is not really interesting in Ruby p9371 tp9372 a(g189 V\u000a p9373 tp9374 a(g57 Vprint p9375 tp9376 a(g189 V tp9377 a(g245 V" tp9378 a(g245 VElement p9379 tp9380 a(g245 V# tp9381 a(g245 V3 is ` p9382 tp9383 a(g233 V#{ p9384 tp9385 a(g18 Va tp9386 a(g343 V[ tp9387 a(g318 V3 tp9388 a(g343 V] tp9389 a(g233 V} tp9390 a(g245 V'. p9391 tp9392 a(g252 V\u005cn p9393 tp9394 a(g245 V" tp9395 a(g189 V\u000a tp9396 a(g111 Vend p9397 tp9398 a(g189 V\u000a tp9399 a(g18 Vpeople p9400 tp9401 a(g189 V tp9402 a(g343 V= tp9403 a(g189 V tp9404 a(g274 V%w( p9405 tp9406 a(g274 VCrosby Stills Nash Young p9407 tp9408 a(g274 V) tp9409 a(g189 V\u000a tp9410 a(g18 Vwhat_about_that_array p9411 tp9412 a(g202 V( tp9413 a(g18 Vpeople p9414 tp9415 a(g202 V) tp9416 a(g189 V\u000a\u000a\u000a p9417 tp9418 a(g7 V# @@PLEAC@@_4.4 p9419 tp9420 a(g189 V\u000a tp9421 a(g7 V# OO style p9422 tp9423 a(g189 V\u000a tp9424 a(g18 Vbad_users p9425 tp9426 a(g343 V. tp9427 a(g18 Veach p9428 tp9429 a(g189 V tp9430 a(g202 V{ tp9431 a(g189 V tp9432 a(g343 V| tp9433 a(g18 Vuser p9434 tp9435 a(g343 V| tp9436 a(g189 V\u000a p9437 tp9438 a(g18 Vcomplain p9439 tp9440 a(g202 V( tp9441 a(g18 Vuser p9442 tp9443 a(g202 V) tp9444 a(g189 V\u000a tp9445 a(g202 V} tp9446 a(g189 V\u000a tp9447 a(g7 V# or, functional style p9448 tp9449 a(g189 V\u000a tp9450 a(g111 Vfor p9451 tp9452 a(g189 V tp9453 a(g18 Vuser p9454 tp9455 a(g189 V tp9456 a(g111 Vin p9457 tp9458 a(g189 V tp9459 a(g18 Vbad_users p9460 tp9461 a(g189 V\u000a p9462 tp9463 a(g18 Vcomplain p9464 tp9465 a(g202 V( tp9466 a(g18 Vuser p9467 tp9468 a(g202 V) tp9469 a(g189 V\u000a tp9470 a(g111 Vend p9471 tp9472 a(g189 V\u000a\u000a p9473 tp9474 a(g111 Vfor p9475 tp9476 a(g189 V tp9477 a(g18 Vvar p9478 tp9479 a(g189 V tp9480 a(g111 Vin p9481 tp9482 a(g189 V tp9483 a(g33 VENV p9484 tp9485 a(g343 V. tp9486 a(g18 Vkeys p9487 tp9488 a(g343 V. tp9489 a(g18 Vsort p9490 tp9491 a(g189 V\u000a p9492 tp9493 a(g57 Vputs p9494 tp9495 a(g189 V tp9496 a(g245 V" tp9497 a(g233 V#{ p9498 tp9499 a(g18 Vvar p9500 tp9501 a(g233 V} tp9502 a(g245 V= tp9503 a(g233 V#{ p9504 tp9505 a(g33 VENV p9506 tp9507 a(g343 V[ tp9508 a(g18 Vvar p9509 tp9510 a(g343 V] tp9511 a(g233 V} tp9512 a(g245 V" tp9513 a(g189 V\u000a tp9514 a(g111 Vend p9515 tp9516 a(g189 V\u000a\u000a p9517 tp9518 a(g111 Vfor p9519 tp9520 a(g189 V tp9521 a(g18 Vuser p9522 tp9523 a(g189 V tp9524 a(g111 Vin p9525 tp9526 a(g189 V tp9527 a(g18 Vall_users p9528 tp9529 a(g189 V\u000a p9530 tp9531 a(g18 Vdisk_space p9532 tp9533 a(g189 V tp9534 a(g343 V= tp9535 a(g189 V tp9536 a(g18 Vget_usage p9537 tp9538 a(g202 V( tp9539 a(g18 Vuser p9540 tp9541 a(g202 V) tp9542 a(g189 V\u000a p9543 tp9544 a(g111 Vif p9545 tp9546 a(g189 V tp9547 a(g202 V( tp9548 a(g18 Vdisk_space p9549 tp9550 a(g189 V tp9551 a(g343 V> tp9552 a(g189 V tp9553 a(g33 VMAX_QUOTA p9554 tp9555 a(g202 V) tp9556 a(g189 V\u000a p9557 tp9558 a(g18 Vcomplain p9559 tp9560 a(g202 V( tp9561 a(g18 Vuser p9562 tp9563 a(g202 V) tp9564 a(g189 V\u000a p9565 tp9566 a(g111 Vend p9567 tp9568 a(g189 V\u000a tp9569 a(g111 Vend p9570 tp9571 a(g189 V\u000a\u000a p9572 tp9573 a(g111 Vfor p9574 tp9575 a(g189 V tp9576 a(g18 Vl tp9577 a(g189 V tp9578 a(g111 Vin p9579 tp9580 a(g189 V tp9581 a(g33 VIO p9582 tp9583 a(g343 V. tp9584 a(g18 Vpopen p9585 tp9586 a(g202 V( tp9587 a(g245 V" tp9588 a(g245 Vwho p9589 tp9590 a(g245 V" tp9591 a(g202 V) tp9592 a(g343 V. tp9593 a(g18 Vreadlines p9594 tp9595 a(g189 V\u000a p9596 tp9597 a(g57 Vprint p9598 tp9599 a(g189 V tp9600 a(g18 Vl tp9601 a(g189 V tp9602 a(g111 Vif p9603 tp9604 a(g189 V tp9605 a(g18 Vl tp9606 a(g189 V tp9607 a(g343 V=~ p9608 tp9609 a(g189 V tp9610 a(g229 V/ tp9611 a(g229 V^gc p9612 tp9613 a(g229 V/ tp9614 a(g189 V \u000a p9615 tp9616 a(g111 Vend p9617 tp9618 a(g189 V\u000a\u000a p9619 tp9620 a(g7 V# we can mimic the obfuscated Perl way p9621 tp9622 a(g189 V\u000a tp9623 a(g111 Vwhile p9624 tp9625 a(g189 V tp9626 a(g18 Vfh p9627 tp9628 a(g343 V. tp9629 a(g18 Vgets p9630 tp9631 a(g189 V p9632 tp9633 a(g7 V# $_ is set to the line just read p9634 tp9635 a(g189 V\u000a p9636 tp9637 a(g57 Vchomp p9638 tp9639 a(g189 V p9640 tp9641 a(g7 V# $_ has a trailing \u005cn removed, if it had one p9642 tp9643 a(g189 V\u000a p9644 tp9645 a(g57 Vsplit p9646 tp9647 a(g343 V. tp9648 a(g18 Veach p9649 tp9650 a(g189 V tp9651 a(g202 V{ tp9652 a(g189 V tp9653 a(g343 V| tp9654 a(g18 Vw tp9655 a(g343 V| tp9656 a(g189 V p9657 tp9658 a(g7 V# $_ is split on whitespace p9659 tp9660 a(g189 V\u000a p9661 tp9662 a(g7 V# but $_ is not set to each chunk as in Perl p9663 tp9664 a(g189 V\u000a p9665 tp9666 a(g57 Vprint p9667 tp9668 a(g189 V tp9669 a(g18 Vw tp9670 a(g343 V. tp9671 a(g18 Vreverse p9672 tp9673 a(g189 V\u000a p9674 tp9675 a(g202 V} tp9676 a(g189 V\u000a tp9677 a(g111 Vend p9678 tp9679 a(g189 V\u000a tp9680 a(g7 V# ...or use a cleaner way p9681 tp9682 a(g189 V\u000a tp9683 a(g111 Vfor p9684 tp9685 a(g189 V tp9686 a(g18 Vl tp9687 a(g189 V tp9688 a(g111 Vin p9689 tp9690 a(g189 V tp9691 a(g18 Vfh p9692 tp9693 a(g343 V. tp9694 a(g18 Vreadlines p9695 tp9696 a(g189 V\u000a p9697 tp9698 a(g18 Vl tp9699 a(g343 V. tp9700 a(g18 Vchomp p9701 tp9702 a(g343 V. tp9703 a(g18 Vsplit p9704 tp9705 a(g343 V. tp9706 a(g18 Veach p9707 tp9708 a(g189 V tp9709 a(g202 V{ tp9710 a(g189 V tp9711 a(g343 V| tp9712 a(g18 Vw tp9713 a(g343 V| tp9714 a(g189 V tp9715 a(g57 Vprint p9716 tp9717 a(g189 V tp9718 a(g18 Vw tp9719 a(g343 V. tp9720 a(g18 Vreverse p9721 tp9722 a(g189 V tp9723 a(g202 V} tp9724 a(g189 V\u000a tp9725 a(g111 Vend p9726 tp9727 a(g189 V\u000a\u000a p9728 tp9729 a(g7 V# same drawback as in problem 1.4, we can't mutate a Numeric... p9730 tp9731 a(g189 V\u000a tp9732 a(g18 Varray p9733 tp9734 a(g343 V. tp9735 a(g18 Vcollect! p9736 tp9737 a(g189 V tp9738 a(g202 V{ tp9739 a(g189 V tp9740 a(g343 V| tp9741 a(g18 Vv tp9742 a(g343 V| tp9743 a(g189 V tp9744 a(g18 Vv tp9745 a(g189 V tp9746 a(g343 V- tp9747 a(g189 V tp9748 a(g318 V1 tp9749 a(g189 V tp9750 a(g202 V} tp9751 a(g189 V\u000a\u000a p9752 tp9753 a(g18 Va tp9754 a(g189 V tp9755 a(g343 V= tp9756 a(g189 V tp9757 a(g343 V[ tp9758 a(g189 V tp9759 a(g343 V. tp9760 a(g318 V5 tp9761 a(g202 V, tp9762 a(g189 V tp9763 a(g318 V3 tp9764 a(g189 V tp9765 a(g343 V] tp9766 a(g202 V; tp9767 a(g189 V tp9768 a(g18 Vb tp9769 a(g189 V tp9770 a(g343 V= tp9771 a(g189 V tp9772 a(g343 V[ tp9773 a(g189 V tp9774 a(g318 V0 tp9775 a(g202 V, tp9776 a(g189 V tp9777 a(g318 V1 tp9778 a(g189 V tp9779 a(g343 V] tp9780 a(g189 V\u000a tp9781 a(g111 Vfor p9782 tp9783 a(g189 V tp9784 a(g18 Vary p9785 tp9786 a(g189 V tp9787 a(g111 Vin p9788 tp9789 a(g189 V tp9790 a(g343 V[ tp9791 a(g189 V tp9792 a(g18 Va tp9793 a(g202 V, tp9794 a(g189 V tp9795 a(g18 Vb tp9796 a(g189 V tp9797 a(g343 V] tp9798 a(g189 V\u000a p9799 tp9800 a(g18 Vary p9801 tp9802 a(g343 V. tp9803 a(g18 Vcollect! p9804 tp9805 a(g189 V tp9806 a(g202 V{ tp9807 a(g189 V tp9808 a(g343 V| tp9809 a(g18 Vv tp9810 a(g343 V| tp9811 a(g189 V tp9812 a(g18 Vv tp9813 a(g189 V tp9814 a(g343 V* tp9815 a(g189 V tp9816 a(g318 V7 tp9817 a(g189 V tp9818 a(g202 V} tp9819 a(g189 V\u000a tp9820 a(g111 Vend p9821 tp9822 a(g189 V\u000a tp9823 a(g57 Vputs p9824 tp9825 a(g189 V tp9826 a(g245 V" tp9827 a(g233 V#{ p9828 tp9829 a(g18 Va tp9830 a(g343 V. tp9831 a(g18 Vjoin p9832 tp9833 a(g202 V( tp9834 a(g271 V' ' p9835 tp9836 a(g202 V) tp9837 a(g233 V} tp9838 a(g245 V tp9839 a(g233 V#{ p9840 tp9841 a(g18 Vb tp9842 a(g343 V. tp9843 a(g18 Vjoin p9844 tp9845 a(g202 V( tp9846 a(g271 V' ' p9847 tp9848 a(g202 V) tp9849 a(g233 V} tp9850 a(g245 V" tp9851 a(g189 V\u000a\u000a p9852 tp9853 a(g7 V# we can mutate Strings, cool; we need a trick for the scalar p9854 tp9855 a(g189 V\u000a tp9856 a(g111 Vfor p9857 tp9858 a(g189 V tp9859 a(g18 Vary p9860 tp9861 a(g189 V tp9862 a(g111 Vin p9863 tp9864 a(g189 V tp9865 a(g343 V[ tp9866 a(g189 V tp9867 a(g343 V[ tp9868 a(g189 V tp9869 a(g18 Vscalar p9870 tp9871 a(g189 V tp9872 a(g343 V] tp9873 a(g202 V, tp9874 a(g189 V tp9875 a(g18 Varray p9876 tp9877 a(g202 V, tp9878 a(g189 V tp9879 a(g57 Vhash p9880 tp9881 a(g343 V. tp9882 a(g18 Vvalues p9883 tp9884 a(g189 V tp9885 a(g343 V] tp9886 a(g189 V\u000a p9887 tp9888 a(g18 Vary p9889 tp9890 a(g343 V. tp9891 a(g18 Veach p9892 tp9893 a(g189 V tp9894 a(g202 V{ tp9895 a(g189 V tp9896 a(g343 V| tp9897 a(g18 Vv tp9898 a(g343 V| tp9899 a(g189 V tp9900 a(g18 Vv tp9901 a(g343 V. tp9902 a(g18 Vstrip! p9903 tp9904 a(g189 V tp9905 a(g202 V} tp9906 a(g189 V p9907 tp9908 a(g7 V# String#strip rules :) p9909 tp9910 a(g189 V\u000a tp9911 a(g111 Vend p9912 tp9913 a(g189 V\u000a\u000a\u000a p9914 tp9915 a(g7 V# @@PLEAC@@_4.5 p9916 tp9917 a(g189 V\u000a tp9918 a(g7 V# not relevant in Ruby since we have always references p9919 tp9920 a(g189 V\u000a tp9921 a(g111 Vfor p9922 tp9923 a(g189 V tp9924 a(g18 Vitem p9925 tp9926 a(g189 V tp9927 a(g111 Vin p9928 tp9929 a(g189 V tp9930 a(g18 Varray p9931 tp9932 a(g189 V\u000a p9933 tp9934 a(g7 V# do somethingh with item p9935 tp9936 a(g189 V\u000a tp9937 a(g111 Vend p9938 tp9939 a(g189 V\u000a\u000a\u000a p9940 tp9941 a(g7 V# @@PLEAC@@_4.6 p9942 tp9943 a(g189 V\u000a tp9944 a(g18 Vunique p9945 tp9946 a(g189 V tp9947 a(g343 V= tp9948 a(g189 V tp9949 a(g18 Vlist p9950 tp9951 a(g343 V. tp9952 a(g18 Vuniq p9953 tp9954 a(g189 V\u000a\u000a p9955 tp9956 a(g7 V# generate a list of users logged in, removing duplicates p9957 tp9958 a(g189 V\u000a tp9959 a(g18 Vusers p9960 tp9961 a(g189 V tp9962 a(g343 V= tp9963 a(g189 V tp9964 a(g264 V` tp9965 a(g264 Vwho p9966 tp9967 a(g264 V` tp9968 a(g343 V. tp9969 a(g18 Vcollect p9970 tp9971 a(g189 V tp9972 a(g202 V{ tp9973 a(g189 V tp9974 a(g343 V| tp9975 a(g18 Vl tp9976 a(g343 V| tp9977 a(g189 V tp9978 a(g18 Vl tp9979 a(g189 V tp9980 a(g343 V=~ p9981 tp9982 a(g189 V tp9983 a(g229 V/ tp9984 a(g229 V( tp9985 a(g229 V\u005c tp9986 a(g229 Vw+) p9987 tp9988 a(g229 V/ tp9989 a(g202 V; tp9990 a(g189 V tp9991 a(g76 V$1 p9992 tp9993 a(g189 V tp9994 a(g202 V} tp9995 a(g343 V. tp9996 a(g18 Vsort p9997 tp9998 a(g343 V. tp9999 a(g18 Vuniq p10000 tp10001 a(g189 V\u000a tp10002 a(g57 Vputs p10003 tp10004 a(g202 V( tp10005 a(g245 V" tp10006 a(g245 Vusers logged in: p10007 tp10008 a(g233 V#{ p10009 tp10010 a(g18 Vcommify_series p10011 tp10012 a(g202 V( tp10013 a(g18 Vusers p10014 tp10015 a(g202 V) tp10016 a(g233 V} tp10017 a(g245 V" tp10018 a(g202 V) tp10019 a(g189 V p10020 tp10021 a(g7 V# see 4.2 for commify_series p10022 tp10023 a(g189 V\u000a\u000a\u000a p10024 tp10025 a(g7 V# @@PLEAC@@_4.7 p10026 tp10027 a(g189 V\u000a tp10028 a(g18 Va tp10029 a(g189 V tp10030 a(g343 V- tp10031 a(g189 V tp10032 a(g18 Vb tp10033 a(g189 V\u000a tp10034 a(g7 V# [ 1, 1, 2, 2, 3, 3, 3, 4, 5 ] - [ 1, 2, 4 ] -> [3, 5] p10035 tp10036 a(g189 V\u000a\u000a\u000a p10037 tp10038 a(g7 V# @@PLEAC@@_4.8 p10039 tp10040 a(g189 V\u000a tp10041 a(g18 Vunion p10042 tp10043 a(g189 V tp10044 a(g343 V= tp10045 a(g189 V tp10046 a(g18 Va tp10047 a(g189 V tp10048 a(g343 V| tp10049 a(g189 V tp10050 a(g18 Vb tp10051 a(g189 V\u000a tp10052 a(g18 Vintersection p10053 tp10054 a(g189 V tp10055 a(g343 V= tp10056 a(g189 V tp10057 a(g18 Va tp10058 a(g189 V tp10059 a(g343 V& tp10060 a(g189 V tp10061 a(g18 Vb tp10062 a(g189 V\u000a tp10063 a(g18 Vdifference p10064 tp10065 a(g189 V tp10066 a(g343 V= tp10067 a(g189 V tp10068 a(g18 Va tp10069 a(g189 V tp10070 a(g343 V- tp10071 a(g189 V tp10072 a(g18 Vb tp10073 a(g189 V\u000a\u000a\u000a p10074 tp10075 a(g7 V# @@PLEAC@@_4.9 p10076 tp10077 a(g189 V\u000a tp10078 a(g18 Varray1 p10079 tp10080 a(g343 V. tp10081 a(g18 Vconcat p10082 tp10083 a(g202 V( tp10084 a(g18 Varray2 p10085 tp10086 a(g202 V) tp10087 a(g189 V\u000a tp10088 a(g7 V# if you will assign to another object, better use: p10089 tp10090 a(g189 V\u000a tp10091 a(g18 Vnew_ary p10092 tp10093 a(g189 V tp10094 a(g343 V= tp10095 a(g189 V tp10096 a(g18 Varray1 p10097 tp10098 a(g189 V tp10099 a(g343 V+ tp10100 a(g189 V tp10101 a(g18 Varray2 p10102 tp10103 a(g189 V\u000a\u000a p10104 tp10105 a(g18 Vmembers p10106 tp10107 a(g189 V tp10108 a(g343 V= tp10109 a(g189 V tp10110 a(g343 V[ tp10111 a(g189 V tp10112 a(g245 V" tp10113 a(g245 VTime p10114 tp10115 a(g245 V" tp10116 a(g202 V, tp10117 a(g189 V tp10118 a(g245 V" tp10119 a(g245 VFlies p10120 tp10121 a(g245 V" tp10122 a(g189 V tp10123 a(g343 V] tp10124 a(g189 V\u000a tp10125 a(g18 Vinitiates p10126 tp10127 a(g189 V tp10128 a(g343 V= tp10129 a(g189 V p10130 tp10131 a(g343 V[ tp10132 a(g189 V tp10133 a(g245 V" tp10134 a(g245 VAn p10135 tp10136 a(g245 V" tp10137 a(g202 V, tp10138 a(g189 V tp10139 a(g245 V" tp10140 a(g245 VArrow p10141 tp10142 a(g245 V" tp10143 a(g189 V tp10144 a(g343 V] tp10145 a(g189 V\u000a tp10146 a(g18 Vmembers p10147 tp10148 a(g189 V tp10149 a(g343 V+= p10150 tp10151 a(g189 V tp10152 a(g18 Vinitiates p10153 tp10154 a(g189 V\u000a\u000a p10155 tp10156 a(g18 Vmembers p10157 tp10158 a(g189 V tp10159 a(g343 V= tp10160 a(g189 V tp10161 a(g343 V[ tp10162 a(g189 V tp10163 a(g245 V" tp10164 a(g245 VTime p10165 tp10166 a(g245 V" tp10167 a(g202 V, tp10168 a(g189 V tp10169 a(g245 V" tp10170 a(g245 VFlies p10171 tp10172 a(g245 V" tp10173 a(g189 V tp10174 a(g343 V] tp10175 a(g189 V\u000a tp10176 a(g18 Vinitiates p10177 tp10178 a(g189 V tp10179 a(g343 V= tp10180 a(g189 V tp10181 a(g343 V[ tp10182 a(g189 V tp10183 a(g245 V" tp10184 a(g245 VAn p10185 tp10186 a(g245 V" tp10187 a(g202 V, tp10188 a(g189 V tp10189 a(g245 V" tp10190 a(g245 VArrow p10191 tp10192 a(g245 V" tp10193 a(g189 V tp10194 a(g343 V] tp10195 a(g189 V\u000a tp10196 a(g18 Vmembers p10197 tp10198 a(g343 V[ tp10199 a(g318 V2 tp10200 a(g202 V, tp10201 a(g318 V0 tp10202 a(g343 V] tp10203 a(g189 V tp10204 a(g343 V= tp10205 a(g189 V tp10206 a(g343 V[ tp10207 a(g189 V tp10208 a(g245 V" tp10209 a(g245 VLike p10210 tp10211 a(g245 V" tp10212 a(g202 V, tp10213 a(g189 V tp10214 a(g18 Vinitiates p10215 tp10216 a(g189 V tp10217 a(g343 V] tp10218 a(g343 V. tp10219 a(g18 Vflatten p10220 tp10221 a(g189 V\u000a\u000a p10222 tp10223 a(g18 Vmembers p10224 tp10225 a(g343 V[ tp10226 a(g318 V0 tp10227 a(g343 V] tp10228 a(g189 V tp10229 a(g343 V= tp10230 a(g189 V tp10231 a(g245 V" tp10232 a(g245 VFruit p10233 tp10234 a(g245 V" tp10235 a(g189 V\u000a tp10236 a(g18 Vmembers p10237 tp10238 a(g343 V[ tp10239 a(g318 V3 tp10240 a(g202 V, tp10241 a(g318 V2 tp10242 a(g343 V] tp10243 a(g189 V tp10244 a(g343 V= tp10245 a(g189 V tp10246 a(g245 V" tp10247 a(g245 VA tp10248 a(g245 V" tp10249 a(g202 V, tp10250 a(g189 V tp10251 a(g245 V" tp10252 a(g245 VBanana p10253 tp10254 a(g245 V" tp10255 a(g189 V\u000a\u000a\u000a p10256 tp10257 a(g7 V# @@PLEAC@@_4.10 p10258 tp10259 a(g189 V\u000a tp10260 a(g18 Vreversed p10261 tp10262 a(g189 V tp10263 a(g343 V= tp10264 a(g189 V tp10265 a(g18 Vary p10266 tp10267 a(g343 V. tp10268 a(g18 Vreverse p10269 tp10270 a(g189 V\u000a\u000a p10271 tp10272 a(g18 Vary p10273 tp10274 a(g343 V. tp10275 a(g18 Vreverse_each p10276 tp10277 a(g189 V tp10278 a(g202 V{ tp10279 a(g189 V tp10280 a(g343 V| tp10281 a(g18 Ve tp10282 a(g343 V| tp10283 a(g189 V\u000a p10284 tp10285 a(g7 V# do something with e p10286 tp10287 a(g189 V\u000a tp10288 a(g202 V} tp10289 a(g189 V\u000a\u000a p10290 tp10291 a(g18 Vdescending p10292 tp10293 a(g189 V tp10294 a(g343 V= tp10295 a(g189 V tp10296 a(g18 Vary p10297 tp10298 a(g343 V. tp10299 a(g18 Vsort p10300 tp10301 a(g343 V. tp10302 a(g18 Vreverse p10303 tp10304 a(g189 V\u000a tp10305 a(g18 Vdescending p10306 tp10307 a(g189 V tp10308 a(g343 V= tp10309 a(g189 V tp10310 a(g18 Vary p10311 tp10312 a(g343 V. tp10313 a(g18 Vsort p10314 tp10315 a(g189 V tp10316 a(g202 V{ tp10317 a(g189 V tp10318 a(g343 V| tp10319 a(g18 Va tp10320 a(g202 V, tp10321 a(g18 Vb tp10322 a(g343 V| tp10323 a(g189 V tp10324 a(g18 Vb tp10325 a(g189 V tp10326 a(g343 V< tp10327 a(g343 V= tp10328 a(g343 V> tp10329 a(g189 V tp10330 a(g18 Va tp10331 a(g189 V tp10332 a(g202 V} tp10333 a(g189 V\u000a\u000a\u000a p10334 tp10335 a(g7 V# @@PLEAC@@_4.11 p10336 tp10337 a(g189 V\u000a tp10338 a(g7 V# remove n elements from front of ary (shift n) p10339 tp10340 a(g189 V\u000a tp10341 a(g18 Vfront p10342 tp10343 a(g189 V tp10344 a(g343 V= tp10345 a(g189 V tp10346 a(g18 Vary p10347 tp10348 a(g343 V. tp10349 a(g18 Vslice! p10350 tp10351 a(g202 V( tp10352 a(g318 V0 tp10353 a(g202 V, tp10354 a(g189 V tp10355 a(g18 Vn tp10356 a(g202 V) tp10357 a(g189 V\u000a\u000a p10358 tp10359 a(g7 V# remove n elements from the end of ary (pop n) p10360 tp10361 a(g189 V\u000a tp10362 a(g18 Vend_ p10363 tp10364 a(g189 V tp10365 a(g343 V= tp10366 a(g189 V tp10367 a(g18 Vary p10368 tp10369 a(g343 V. tp10370 a(g18 Vslice! p10371 tp10372 a(g202 V( tp10373 a(g343 V- tp10374 a(g18 Vn tp10375 a(g189 V tp10376 a(g343 V. tp10377 a(g18 V. tp10378 a(g189 V tp10379 a(g343 V- tp10380 a(g318 V1 tp10381 a(g202 V) tp10382 a(g189 V\u000a\u000a p10383 tp10384 a(g7 V# let's extend the Array class, to make that useful p10385 tp10386 a(g189 V\u000a tp10387 a(g111 Vclass p10388 tp10389 a(g189 V tp10390 a(g106 VArray p10391 tp10392 a(g189 V\u000a p10393 tp10394 a(g111 Vdef p10395 tp10396 a(g189 V tp10397 a(g21 Vshift2 p10398 tp10399 a(g202 V( tp10400 a(g202 V) tp10401 a(g189 V\u000a p10402 tp10403 a(g18 Vslice! p10404 tp10405 a(g202 V( tp10406 a(g318 V0 tp10407 a(g189 V tp10408 a(g343 V. tp10409 a(g18 V. tp10410 a(g189 V tp10411 a(g318 V1 tp10412 a(g202 V) tp10413 a(g189 V p10414 tp10415 a(g7 V# more symetric with pop2... p10416 tp10417 a(g189 V\u000a p10418 tp10419 a(g111 Vend p10420 tp10421 a(g189 V\u000a p10422 tp10423 a(g111 Vdef p10424 tp10425 a(g189 V tp10426 a(g21 Vpop2 p10427 tp10428 a(g202 V( tp10429 a(g202 V) tp10430 a(g189 V\u000a p10431 tp10432 a(g18 Vslice! p10433 tp10434 a(g202 V( tp10435 a(g343 V- tp10436 a(g318 V2 tp10437 a(g189 V tp10438 a(g343 V. tp10439 a(g18 V. tp10440 a(g189 V tp10441 a(g343 V- tp10442 a(g318 V1 tp10443 a(g202 V) tp10444 a(g189 V\u000a p10445 tp10446 a(g111 Vend p10447 tp10448 a(g189 V\u000a tp10449 a(g111 Vend p10450 tp10451 a(g189 V\u000a\u000a p10452 tp10453 a(g18 Vfriends p10454 tp10455 a(g189 V tp10456 a(g343 V= tp10457 a(g189 V tp10458 a(g274 V%w( p10459 tp10460 a(g274 VPeter Paul Mary Jim Tim p10461 tp10462 a(g274 V) tp10463 a(g189 V\u000a tp10464 a(g18 Vthis p10465 tp10466 a(g202 V, tp10467 a(g189 V tp10468 a(g18 Vthat p10469 tp10470 a(g189 V tp10471 a(g343 V= tp10472 a(g189 V tp10473 a(g18 Vfriends p10474 tp10475 a(g343 V. tp10476 a(g18 Vshift2 p10477 tp10478 a(g189 V\u000a\u000a p10479 tp10480 a(g18 Vbeverages p10481 tp10482 a(g189 V tp10483 a(g343 V= tp10484 a(g189 V tp10485 a(g274 V%w( p10486 tp10487 a(g274 VDew Jolt Cola Sprite Fresca p10488 tp10489 a(g274 V) tp10490 a(g189 V\u000a tp10491 a(g18 Vpair p10492 tp10493 a(g189 V tp10494 a(g343 V= tp10495 a(g189 V tp10496 a(g18 Vbeverages p10497 tp10498 a(g343 V. tp10499 a(g18 Vpop2 p10500 tp10501 a(g189 V\u000a\u000a\u000a p10502 tp10503 a(g7 V# @@PLEAC@@_4.12 p10504 tp10505 a(g189 V\u000a tp10506 a(g7 V# use Enumerable#detect (or the synonym Enumerable#find) p10507 tp10508 a(g189 V\u000a tp10509 a(g18 Vhighest_eng p10510 tp10511 a(g189 V tp10512 a(g343 V= tp10513 a(g189 V tp10514 a(g18 Vemployees p10515 tp10516 a(g343 V. tp10517 a(g18 Vdetect p10518 tp10519 a(g189 V tp10520 a(g202 V{ tp10521 a(g189 V tp10522 a(g343 V| tp10523 a(g18 Vemp p10524 tp10525 a(g343 V| tp10526 a(g189 V tp10527 a(g18 Vemp p10528 tp10529 a(g343 V. tp10530 a(g18 Vcategory p10531 tp10532 a(g189 V tp10533 a(g343 V== p10534 tp10535 a(g189 V tp10536 a(g271 V'engineer' p10537 tp10538 a(g189 V tp10539 a(g202 V} tp10540 a(g189 V\u000a\u000a\u000a p10541 tp10542 a(g7 V# @@PLEAC@@_4.13 p10543 tp10544 a(g189 V\u000a tp10545 a(g7 V# use Enumerable#select (or the synonym Enumerable#find_all) p10546 tp10547 a(g189 V\u000a tp10548 a(g18 Vbigs p10549 tp10550 a(g189 V tp10551 a(g343 V= tp10552 a(g189 V tp10553 a(g18 Vnums p10554 tp10555 a(g343 V. tp10556 a(g18 Vselect p10557 tp10558 a(g189 V tp10559 a(g202 V{ tp10560 a(g189 V tp10561 a(g343 V| tp10562 a(g18 Vi tp10563 a(g343 V| tp10564 a(g189 V tp10565 a(g18 Vi tp10566 a(g189 V tp10567 a(g343 V> tp10568 a(g189 V tp10569 a(g318 V1_000_000 p10570 tp10571 a(g189 V tp10572 a(g202 V} tp10573 a(g189 V\u000a tp10574 a(g18 Vpigs p10575 tp10576 a(g189 V tp10577 a(g343 V= tp10578 a(g189 V tp10579 a(g18 Vusers p10580 tp10581 a(g343 V. tp10582 a(g18 Vkeys p10583 tp10584 a(g343 V. tp10585 a(g18 Vselect p10586 tp10587 a(g189 V tp10588 a(g202 V{ tp10589 a(g189 V tp10590 a(g343 V| tp10591 a(g18 Vk tp10592 a(g343 V| tp10593 a(g189 V tp10594 a(g18 Vusers p10595 tp10596 a(g343 V[ tp10597 a(g18 Vk tp10598 a(g343 V] tp10599 a(g189 V tp10600 a(g343 V> tp10601 a(g189 V tp10602 a(g318 V1 tp10603 a(g18 Ve7 p10604 tp10605 a(g189 V tp10606 a(g202 V} tp10607 a(g189 V\u000a\u000a p10608 tp10609 a(g18 Vmatching p10610 tp10611 a(g189 V tp10612 a(g343 V= tp10613 a(g189 V tp10614 a(g264 V` tp10615 a(g264 Vwho p10616 tp10617 a(g264 V` tp10618 a(g343 V. tp10619 a(g18 Vselect p10620 tp10621 a(g189 V tp10622 a(g202 V{ tp10623 a(g189 V tp10624 a(g343 V| tp10625 a(g18 Vu tp10626 a(g343 V| tp10627 a(g189 V tp10628 a(g18 Vu tp10629 a(g189 V tp10630 a(g343 V=~ p10631 tp10632 a(g189 V tp10633 a(g229 V/ tp10634 a(g229 V^gnat p10635 tp10636 a(g229 V/ tp10637 a(g189 V tp10638 a(g202 V} tp10639 a(g189 V\u000a\u000a p10640 tp10641 a(g18 Vengineers p10642 tp10643 a(g189 V tp10644 a(g343 V= tp10645 a(g189 V tp10646 a(g18 Vemployees p10647 tp10648 a(g343 V. tp10649 a(g18 Vselect p10650 tp10651 a(g189 V tp10652 a(g202 V{ tp10653 a(g189 V tp10654 a(g343 V| tp10655 a(g18 Ve tp10656 a(g343 V| tp10657 a(g189 V tp10658 a(g18 Ve tp10659 a(g343 V. tp10660 a(g18 Vposition p10661 tp10662 a(g189 V tp10663 a(g343 V== p10664 tp10665 a(g189 V tp10666 a(g271 V'Engineer' p10667 tp10668 a(g189 V tp10669 a(g202 V} tp10670 a(g189 V\u000a\u000a p10671 tp10672 a(g18 Vsecondary_assistance p10673 tp10674 a(g189 V tp10675 a(g343 V= tp10676 a(g189 V tp10677 a(g18 Vapplicants p10678 tp10679 a(g343 V. tp10680 a(g18 Vselect p10681 tp10682 a(g189 V tp10683 a(g202 V{ tp10684 a(g189 V tp10685 a(g343 V| tp10686 a(g18 Va tp10687 a(g343 V| tp10688 a(g189 V\u000a p10689 tp10690 a(g18 Va tp10691 a(g343 V. tp10692 a(g18 Vincome p10693 tp10694 a(g189 V tp10695 a(g343 V> tp10696 a(g343 V= tp10697 a(g189 V tp10698 a(g318 V26_000 p10699 tp10700 a(g189 V tp10701 a(g343 V&& p10702 tp10703 a(g189 V tp10704 a(g18 Va tp10705 a(g343 V. tp10706 a(g18 Vincome p10707 tp10708 a(g189 V tp10709 a(g343 V< tp10710 a(g189 V tp10711 a(g318 V30_000 p10712 tp10713 a(g189 V\u000a tp10714 a(g202 V} tp10715 a(g189 V\u000a\u000a\u000a p10716 tp10717 a(g7 V# @@PLEAC@@_4.14 p10718 tp10719 a(g189 V\u000a tp10720 a(g7 V# normally you would have an array of Numeric (Float or p10721 tp10722 a(g189 V\u000a tp10723 a(g7 V# Fixnum or Bignum), so you would use: p10724 tp10725 a(g189 V\u000a tp10726 a(g18 Vsorted p10727 tp10728 a(g189 V tp10729 a(g343 V= tp10730 a(g189 V tp10731 a(g18 Vunsorted p10732 tp10733 a(g343 V. tp10734 a(g18 Vsort p10735 tp10736 a(g189 V\u000a tp10737 a(g7 V# if you have strings representing Integers or Floats p10738 tp10739 a(g189 V\u000a tp10740 a(g7 V# you may specify another sort method: p10741 tp10742 a(g189 V\u000a tp10743 a(g18 Vsorted p10744 tp10745 a(g189 V tp10746 a(g343 V= tp10747 a(g189 V tp10748 a(g18 Vunsorted p10749 tp10750 a(g343 V. tp10751 a(g18 Vsort p10752 tp10753 a(g189 V tp10754 a(g202 V{ tp10755 a(g189 V tp10756 a(g343 V| tp10757 a(g18 Va tp10758 a(g202 V, tp10759 a(g18 Vb tp10760 a(g343 V| tp10761 a(g189 V tp10762 a(g18 Va tp10763 a(g343 V. tp10764 a(g18 Vto_f p10765 tp10766 a(g189 V tp10767 a(g343 V< tp10768 a(g343 V= tp10769 a(g343 V> tp10770 a(g189 V tp10771 a(g18 Vb tp10772 a(g343 V. tp10773 a(g18 Vto_f p10774 tp10775 a(g189 V tp10776 a(g202 V} tp10777 a(g189 V\u000a\u000a p10778 tp10779 a(g7 V# let's use the list of my own PID's p10780 tp10781 a(g189 V\u000a tp10782 a(g264 V` tp10783 a(g264 Vps ux p10784 tp10785 a(g264 V` tp10786 a(g343 V. tp10787 a(g18 Vsplit p10788 tp10789 a(g202 V( tp10790 a(g245 V" tp10791 a(g252 V\u005cn p10792 tp10793 a(g245 V" tp10794 a(g202 V) tp10795 a(g343 V[ tp10796 a(g318 V1 tp10797 a(g343 V. tp10798 a(g18 V. tp10799 a(g343 V- tp10800 a(g318 V1 tp10801 a(g343 V] tp10802 a(g343 V. tp10803 a(g189 V\u000a p10804 tp10805 a(g57 Vselect p10806 tp10807 a(g189 V tp10808 a(g202 V{ tp10809 a(g189 V tp10810 a(g343 V| tp10811 a(g18 Vi tp10812 a(g343 V| tp10813 a(g189 V tp10814 a(g18 Vi tp10815 a(g189 V tp10816 a(g343 V=~ p10817 tp10818 a(g189 V tp10819 a(g229 V/ tp10820 a(g229 V^ tp10821 a(g233 V#{ p10822 tp10823 a(g33 VENV p10824 tp10825 a(g343 V[ tp10826 a(g271 V'USER' p10827 tp10828 a(g343 V] tp10829 a(g233 V} tp10830 a(g229 V/ tp10831 a(g189 V tp10832 a(g202 V} tp10833 a(g343 V. tp10834 a(g189 V\u000a p10835 tp10836 a(g18 Vcollect p10837 tp10838 a(g189 V tp10839 a(g202 V{ tp10840 a(g189 V tp10841 a(g343 V| tp10842 a(g18 Vi tp10843 a(g343 V| tp10844 a(g189 V tp10845 a(g18 Vi tp10846 a(g343 V. tp10847 a(g18 Vsplit p10848 tp10849 a(g343 V[ tp10850 a(g318 V1 tp10851 a(g343 V] tp10852 a(g189 V tp10853 a(g202 V} tp10854 a(g343 V. tp10855 a(g189 V\u000a p10856 tp10857 a(g18 Vsort p10858 tp10859 a(g189 V tp10860 a(g202 V{ tp10861 a(g189 V tp10862 a(g343 V| tp10863 a(g18 Va tp10864 a(g202 V, tp10865 a(g18 Vb tp10866 a(g343 V| tp10867 a(g189 V tp10868 a(g18 Va tp10869 a(g343 V. tp10870 a(g18 Vto_i p10871 tp10872 a(g189 V tp10873 a(g343 V< tp10874 a(g343 V= tp10875 a(g343 V> tp10876 a(g189 V tp10877 a(g18 Vb tp10878 a(g343 V. tp10879 a(g18 Vto_i p10880 tp10881 a(g189 V tp10882 a(g202 V} tp10883 a(g343 V. tp10884 a(g18 Veach p10885 tp10886 a(g189 V tp10887 a(g202 V{ tp10888 a(g189 V tp10889 a(g343 V| tp10890 a(g18 Vi tp10891 a(g343 V| tp10892 a(g189 V tp10893 a(g57 Vputs p10894 tp10895 a(g189 V tp10896 a(g18 Vi tp10897 a(g189 V tp10898 a(g202 V} tp10899 a(g189 V\u000a tp10900 a(g57 Vputs p10901 tp10902 a(g189 V tp10903 a(g245 V" tp10904 a(g245 VSelect a process ID to kill: p10905 tp10906 a(g245 V" tp10907 a(g189 V\u000a tp10908 a(g18 Vpid p10909 tp10910 a(g189 V tp10911 a(g343 V= tp10912 a(g189 V tp10913 a(g57 Vgets p10914 tp10915 a(g343 V. tp10916 a(g18 Vchomp p10917 tp10918 a(g189 V\u000a tp10919 a(g111 Vraise p10920 tp10921 a(g189 V tp10922 a(g245 V" tp10923 a(g245 VExiting ... p10924 tp10925 a(g252 V\u005cn p10926 tp10927 a(g245 V" tp10928 a(g189 V tp10929 a(g111 Vunless p10930 tp10931 a(g189 V tp10932 a(g18 Vpid p10933 tp10934 a(g189 V tp10935 a(g343 V&& p10936 tp10937 a(g189 V tp10938 a(g18 Vpid p10939 tp10940 a(g189 V tp10941 a(g343 V=~ p10942 tp10943 a(g189 V tp10944 a(g229 V/ tp10945 a(g229 V^ tp10946 a(g229 V\u005c tp10947 a(g229 Vd+$ p10948 tp10949 a(g229 V/ tp10950 a(g189 V\u000a tp10951 a(g33 VProcess p10952 tp10953 a(g343 V. tp10954 a(g18 Vkill p10955 tp10956 a(g202 V( tp10957 a(g271 V'TERM' p10958 tp10959 a(g202 V, tp10960 a(g189 V tp10961 a(g18 Vpid p10962 tp10963 a(g343 V. tp10964 a(g18 Vto_i p10965 tp10966 a(g202 V) tp10967 a(g189 V\u000a tp10968 a(g57 Vsleep p10969 tp10970 a(g189 V tp10971 a(g318 V2 tp10972 a(g189 V\u000a tp10973 a(g33 VProcess p10974 tp10975 a(g343 V. tp10976 a(g18 Vkill p10977 tp10978 a(g202 V( tp10979 a(g271 V'KILL' p10980 tp10981 a(g202 V, tp10982 a(g189 V tp10983 a(g18 Vpid p10984 tp10985 a(g343 V. tp10986 a(g18 Vto_i p10987 tp10988 a(g202 V) tp10989 a(g189 V\u000a\u000a p10990 tp10991 a(g18 Vdescending p10992 tp10993 a(g189 V tp10994 a(g343 V= tp10995 a(g189 V tp10996 a(g18 Vunsorted p10997 tp10998 a(g343 V. tp10999 a(g18 Vsort p11000 tp11001 a(g189 V tp11002 a(g202 V{ tp11003 a(g189 V tp11004 a(g343 V| tp11005 a(g18 Va tp11006 a(g202 V, tp11007 a(g18 Vb tp11008 a(g343 V| tp11009 a(g189 V tp11010 a(g18 Vb tp11011 a(g343 V. tp11012 a(g18 Vto_f p11013 tp11014 a(g189 V tp11015 a(g343 V< tp11016 a(g343 V= tp11017 a(g343 V> tp11018 a(g189 V tp11019 a(g18 Va tp11020 a(g343 V. tp11021 a(g18 Vto_f p11022 tp11023 a(g189 V tp11024 a(g202 V} tp11025 a(g189 V\u000a\u000a\u000a p11026 tp11027 a(g7 V# @@PLEAC@@_4.15 p11028 tp11029 a(g189 V\u000a tp11030 a(g18 Vordered p11031 tp11032 a(g189 V tp11033 a(g343 V= tp11034 a(g189 V tp11035 a(g18 Vunordered p11036 tp11037 a(g343 V. tp11038 a(g18 Vsort p11039 tp11040 a(g189 V tp11041 a(g202 V{ tp11042 a(g189 V tp11043 a(g343 V| tp11044 a(g18 Va tp11045 a(g202 V, tp11046 a(g18 Vb tp11047 a(g343 V| tp11048 a(g189 V tp11049 a(g18 Vcompare p11050 tp11051 a(g202 V( tp11052 a(g18 Va tp11053 a(g202 V, tp11054 a(g18 Vb tp11055 a(g202 V) tp11056 a(g189 V tp11057 a(g202 V} tp11058 a(g189 V\u000a\u000a p11059 tp11060 a(g18 Vprecomputed p11061 tp11062 a(g189 V tp11063 a(g343 V= tp11064 a(g189 V tp11065 a(g18 Vunordered p11066 tp11067 a(g343 V. tp11068 a(g18 Vcollect p11069 tp11070 a(g189 V tp11071 a(g202 V{ tp11072 a(g189 V tp11073 a(g343 V| tp11074 a(g18 Ve tp11075 a(g343 V| tp11076 a(g189 V tp11077 a(g343 V[ tp11078 a(g18 Vcompute p11079 tp11080 a(g202 V, tp11081 a(g189 V tp11082 a(g18 Ve tp11083 a(g343 V] tp11084 a(g189 V tp11085 a(g202 V} tp11086 a(g189 V\u000a tp11087 a(g18 Vordered_precomputed p11088 tp11089 a(g189 V tp11090 a(g343 V= tp11091 a(g189 V tp11092 a(g18 Vprecomputed p11093 tp11094 a(g343 V. tp11095 a(g18 Vsort p11096 tp11097 a(g189 V tp11098 a(g202 V{ tp11099 a(g189 V tp11100 a(g343 V| tp11101 a(g18 Va tp11102 a(g202 V, tp11103 a(g18 Vb tp11104 a(g343 V| tp11105 a(g189 V tp11106 a(g18 Va tp11107 a(g343 V[ tp11108 a(g318 V0 tp11109 a(g343 V] tp11110 a(g189 V tp11111 a(g343 V< tp11112 a(g343 V= tp11113 a(g343 V> tp11114 a(g189 V tp11115 a(g18 Vb tp11116 a(g343 V[ tp11117 a(g318 V0 tp11118 a(g343 V] tp11119 a(g189 V tp11120 a(g202 V} tp11121 a(g189 V\u000a tp11122 a(g18 Vordered p11123 tp11124 a(g189 V tp11125 a(g343 V= tp11126 a(g189 V tp11127 a(g18 Vordered_precomputed p11128 tp11129 a(g343 V. tp11130 a(g18 Vcollect p11131 tp11132 a(g189 V tp11133 a(g202 V{ tp11134 a(g189 V tp11135 a(g343 V| tp11136 a(g18 Ve tp11137 a(g343 V| tp11138 a(g189 V tp11139 a(g18 Ve tp11140 a(g343 V[ tp11141 a(g318 V1 tp11142 a(g343 V] tp11143 a(g189 V tp11144 a(g202 V} tp11145 a(g189 V\u000a\u000a p11146 tp11147 a(g18 Vordered p11148 tp11149 a(g189 V tp11150 a(g343 V= tp11151 a(g189 V tp11152 a(g18 Vunordered p11153 tp11154 a(g343 V. tp11155 a(g18 Vcollect p11156 tp11157 a(g189 V tp11158 a(g202 V{ tp11159 a(g189 V tp11160 a(g343 V| tp11161 a(g18 Ve tp11162 a(g343 V| tp11163 a(g189 V tp11164 a(g343 V[ tp11165 a(g18 Vcompute p11166 tp11167 a(g202 V, tp11168 a(g189 V tp11169 a(g18 Ve tp11170 a(g343 V] tp11171 a(g189 V tp11172 a(g202 V} tp11173 a(g343 V. tp11174 a(g189 V\u000a p11175 tp11176 a(g18 Vsort p11177 tp11178 a(g189 V tp11179 a(g202 V{ tp11180 a(g189 V tp11181 a(g343 V| tp11182 a(g18 Va tp11183 a(g202 V, tp11184 a(g18 Vb tp11185 a(g343 V| tp11186 a(g189 V tp11187 a(g18 Va tp11188 a(g343 V[ tp11189 a(g318 V0 tp11190 a(g343 V] tp11191 a(g189 V tp11192 a(g343 V< tp11193 a(g343 V= tp11194 a(g343 V> tp11195 a(g189 V tp11196 a(g18 Vb tp11197 a(g343 V[ tp11198 a(g318 V0 tp11199 a(g343 V] tp11200 a(g189 V tp11201 a(g202 V} tp11202 a(g343 V. tp11203 a(g189 V\u000a p11204 tp11205 a(g18 Vcollect p11206 tp11207 a(g189 V tp11208 a(g202 V{ tp11209 a(g189 V tp11210 a(g343 V| tp11211 a(g18 Ve tp11212 a(g343 V| tp11213 a(g189 V tp11214 a(g18 Ve tp11215 a(g343 V[ tp11216 a(g318 V1 tp11217 a(g343 V] tp11218 a(g189 V tp11219 a(g202 V} tp11220 a(g189 V\u000a\u000a p11221 tp11222 a(g111 Vfor p11223 tp11224 a(g189 V tp11225 a(g18 Vemployee p11226 tp11227 a(g189 V tp11228 a(g111 Vin p11229 tp11230 a(g189 V tp11231 a(g18 Vemployees p11232 tp11233 a(g343 V. tp11234 a(g18 Vsort p11235 tp11236 a(g189 V tp11237 a(g202 V{ tp11238 a(g189 V tp11239 a(g343 V| tp11240 a(g18 Va tp11241 a(g202 V, tp11242 a(g18 Vb tp11243 a(g343 V| tp11244 a(g189 V tp11245 a(g18 Va tp11246 a(g343 V. tp11247 a(g18 Vname p11248 tp11249 a(g189 V tp11250 a(g343 V< tp11251 a(g343 V= tp11252 a(g343 V> tp11253 a(g189 V tp11254 a(g18 Vb tp11255 a(g343 V. tp11256 a(g18 Vname p11257 tp11258 a(g189 V tp11259 a(g202 V} tp11260 a(g189 V\u000a p11261 tp11262 a(g57 Vprint p11263 tp11264 a(g189 V tp11265 a(g18 Vemployee p11266 tp11267 a(g343 V. tp11268 a(g18 Vname p11269 tp11270 a(g202 V, tp11271 a(g189 V tp11272 a(g245 V" tp11273 a(g245 V earns p11274 tp11275 a(g245 V\u005c tp11276 a(g245 V$ p11277 tp11278 a(g245 V" tp11279 a(g202 V, tp11280 a(g189 V tp11281 a(g18 Vemployee p11282 tp11283 a(g343 V. tp11284 a(g18 Vsalary p11285 tp11286 a(g202 V, tp11287 a(g189 V tp11288 a(g245 V" tp11289 a(g252 V\u005cn p11290 tp11291 a(g245 V" tp11292 a(g189 V\u000a tp11293 a(g111 Vend p11294 tp11295 a(g189 V\u000a\u000a p11296 tp11297 a(g7 V# Beware! `0' is true in Ruby. p11298 tp11299 a(g189 V\u000a tp11300 a(g7 V# For chaining comparisons, you may use Numeric#nonzero?, which p11301 tp11302 a(g189 V\u000a tp11303 a(g7 V# returns num if num is not zero, nil otherwise p11304 tp11305 a(g189 V\u000a tp11306 a(g18 Vsorted p11307 tp11308 a(g189 V tp11309 a(g343 V= tp11310 a(g189 V tp11311 a(g18 Vemployees p11312 tp11313 a(g343 V. tp11314 a(g18 Vsort p11315 tp11316 a(g189 V tp11317 a(g202 V{ tp11318 a(g189 V tp11319 a(g343 V| tp11320 a(g18 Va tp11321 a(g202 V, tp11322 a(g18 Vb tp11323 a(g343 V| tp11324 a(g189 V tp11325 a(g202 V( tp11326 a(g18 Va tp11327 a(g343 V. tp11328 a(g18 Vname p11329 tp11330 a(g189 V tp11331 a(g343 V< tp11332 a(g343 V= tp11333 a(g343 V> tp11334 a(g189 V tp11335 a(g18 Vb tp11336 a(g343 V. tp11337 a(g18 Vname p11338 tp11339 a(g202 V) tp11340 a(g343 V. tp11341 a(g18 Vnonzero? p11342 tp11343 a(g189 V tp11344 a(g343 V|| p11345 tp11346 a(g189 V tp11347 a(g18 Vb tp11348 a(g343 V. tp11349 a(g18 Vage p11350 tp11351 a(g189 V tp11352 a(g343 V< tp11353 a(g343 V= tp11354 a(g343 V> tp11355 a(g189 V tp11356 a(g18 Va tp11357 a(g343 V. tp11358 a(g18 Vage p11359 tp11360 a(g189 V tp11361 a(g202 V} tp11362 a(g189 V\u000a\u000a p11363 tp11364 a(g18 Vusers p11365 tp11366 a(g189 V tp11367 a(g343 V= tp11368 a(g189 V tp11369 a(g343 V[ tp11370 a(g343 V] tp11371 a(g189 V\u000a tp11372 a(g7 V# getpwent is not wrapped in Ruby... let's fallback p11373 tp11374 a(g189 V\u000a tp11375 a(g33 VIO p11376 tp11377 a(g343 V. tp11378 a(g18 Vreadlines p11379 tp11380 a(g202 V( tp11381 a(g271 V'/etc/passwd' p11382 tp11383 a(g202 V) tp11384 a(g343 V. tp11385 a(g18 Veach p11386 tp11387 a(g189 V tp11388 a(g202 V{ tp11389 a(g189 V tp11390 a(g343 V| tp11391 a(g18 Vu tp11392 a(g343 V| tp11393 a(g189 V tp11394 a(g18 Vusers p11395 tp11396 a(g189 V tp11397 a(g343 V<< p11398 tp11399 a(g189 V tp11400 a(g18 Vu tp11401 a(g343 V. tp11402 a(g18 Vsplit p11403 tp11404 a(g202 V( tp11405 a(g271 V':' p11406 tp11407 a(g202 V) tp11408 a(g189 V tp11409 a(g202 V} tp11410 a(g189 V\u000a tp11411 a(g18 Vusers p11412 tp11413 a(g343 V. tp11414 a(g18 Vsort! p11415 tp11416 a(g189 V tp11417 a(g202 V{ tp11418 a(g189 V tp11419 a(g343 V| tp11420 a(g18 Va tp11421 a(g202 V, tp11422 a(g18 Vb tp11423 a(g343 V| tp11424 a(g189 V tp11425 a(g18 Va tp11426 a(g343 V[ tp11427 a(g318 V0 tp11428 a(g343 V] tp11429 a(g189 V tp11430 a(g343 V< tp11431 a(g343 V= tp11432 a(g343 V> tp11433 a(g189 V tp11434 a(g18 Vb tp11435 a(g343 V[ tp11436 a(g318 V0 tp11437 a(g343 V] tp11438 a(g189 V tp11439 a(g202 V} tp11440 a(g189 V\u000a tp11441 a(g111 Vfor p11442 tp11443 a(g189 V tp11444 a(g18 Vuser p11445 tp11446 a(g189 V tp11447 a(g111 Vin p11448 tp11449 a(g189 V tp11450 a(g18 Vusers p11451 tp11452 a(g189 V\u000a p11453 tp11454 a(g57 Vputs p11455 tp11456 a(g189 V tp11457 a(g18 Vuser p11458 tp11459 a(g343 V[ tp11460 a(g318 V0 tp11461 a(g343 V] tp11462 a(g189 V\u000a tp11463 a(g111 Vend p11464 tp11465 a(g189 V\u000a\u000a p11466 tp11467 a(g18 Vsorted p11468 tp11469 a(g189 V tp11470 a(g343 V= tp11471 a(g189 V tp11472 a(g18 Vnames p11473 tp11474 a(g343 V. tp11475 a(g18 Vsort p11476 tp11477 a(g189 V tp11478 a(g202 V{ tp11479 a(g189 V tp11480 a(g343 V| tp11481 a(g18 Va tp11482 a(g202 V, tp11483 a(g18 Vb tp11484 a(g343 V| tp11485 a(g189 V tp11486 a(g18 Va tp11487 a(g343 V[ tp11488 a(g318 V1 tp11489 a(g202 V, tp11490 a(g189 V tp11491 a(g318 V1 tp11492 a(g343 V] tp11493 a(g189 V tp11494 a(g343 V< tp11495 a(g343 V= tp11496 a(g343 V> tp11497 a(g189 V tp11498 a(g18 Vb tp11499 a(g343 V[ tp11500 a(g318 V1 tp11501 a(g202 V, tp11502 a(g189 V tp11503 a(g318 V1 tp11504 a(g343 V] tp11505 a(g189 V tp11506 a(g202 V} tp11507 a(g189 V\u000a tp11508 a(g18 Vsorted p11509 tp11510 a(g189 V tp11511 a(g343 V= tp11512 a(g189 V tp11513 a(g18 Vstrings p11514 tp11515 a(g343 V. tp11516 a(g18 Vsort p11517 tp11518 a(g189 V tp11519 a(g202 V{ tp11520 a(g189 V tp11521 a(g343 V| tp11522 a(g18 Va tp11523 a(g202 V, tp11524 a(g18 Vb tp11525 a(g343 V| tp11526 a(g189 V tp11527 a(g18 Va tp11528 a(g343 V. tp11529 a(g18 Vlength p11530 tp11531 a(g189 V tp11532 a(g343 V< tp11533 a(g343 V= tp11534 a(g343 V> tp11535 a(g189 V tp11536 a(g18 Vb tp11537 a(g343 V. tp11538 a(g18 Vlength p11539 tp11540 a(g189 V tp11541 a(g202 V} tp11542 a(g189 V\u000a\u000a p11543 tp11544 a(g7 V# let's show only the compact version p11545 tp11546 a(g189 V\u000a tp11547 a(g18 Vordered p11548 tp11549 a(g189 V tp11550 a(g343 V= tp11551 a(g189 V tp11552 a(g18 Vstrings p11553 tp11554 a(g343 V. tp11555 a(g18 Vcollect p11556 tp11557 a(g189 V tp11558 a(g202 V{ tp11559 a(g189 V tp11560 a(g343 V| tp11561 a(g18 Ve tp11562 a(g343 V| tp11563 a(g189 V tp11564 a(g343 V[ tp11565 a(g18 Ve tp11566 a(g343 V. tp11567 a(g18 Vlength p11568 tp11569 a(g202 V, tp11570 a(g189 V tp11571 a(g18 Ve tp11572 a(g343 V] tp11573 a(g189 V tp11574 a(g202 V} tp11575 a(g343 V. tp11576 a(g189 V\u000a p11577 tp11578 a(g18 Vsort p11579 tp11580 a(g189 V tp11581 a(g202 V{ tp11582 a(g189 V tp11583 a(g343 V| tp11584 a(g18 Va tp11585 a(g202 V, tp11586 a(g18 Vb tp11587 a(g343 V| tp11588 a(g189 V tp11589 a(g18 Va tp11590 a(g343 V[ tp11591 a(g318 V0 tp11592 a(g343 V] tp11593 a(g189 V tp11594 a(g343 V< tp11595 a(g343 V= tp11596 a(g343 V> tp11597 a(g189 V tp11598 a(g18 Vb tp11599 a(g343 V[ tp11600 a(g318 V0 tp11601 a(g343 V] tp11602 a(g189 V tp11603 a(g202 V} tp11604 a(g343 V. tp11605 a(g189 V\u000a p11606 tp11607 a(g18 Vcollect p11608 tp11609 a(g189 V tp11610 a(g202 V{ tp11611 a(g189 V tp11612 a(g343 V| tp11613 a(g18 Ve tp11614 a(g343 V| tp11615 a(g189 V tp11616 a(g18 Ve tp11617 a(g343 V[ tp11618 a(g318 V1 tp11619 a(g343 V] tp11620 a(g189 V tp11621 a(g202 V} tp11622 a(g189 V\u000a\u000a p11623 tp11624 a(g18 Vordered p11625 tp11626 a(g189 V tp11627 a(g343 V= tp11628 a(g189 V tp11629 a(g18 Vstrings p11630 tp11631 a(g343 V. tp11632 a(g18 Vcollect p11633 tp11634 a(g189 V tp11635 a(g202 V{ tp11636 a(g189 V tp11637 a(g343 V| tp11638 a(g18 Ve tp11639 a(g343 V| tp11640 a(g189 V tp11641 a(g343 V[ tp11642 a(g343 V/ tp11643 a(g202 V\u005c tp11644 a(g18 Vd tp11645 a(g343 V+ tp11646 a(g343 V/ tp11647 a(g343 V. tp11648 a(g18 Vmatch p11649 tp11650 a(g202 V( tp11651 a(g18 Ve tp11652 a(g202 V) tp11653 a(g343 V[ tp11654 a(g318 V0 tp11655 a(g343 V] tp11656 a(g343 V. tp11657 a(g18 Vto_i p11658 tp11659 a(g202 V, tp11660 a(g189 V tp11661 a(g18 Ve tp11662 a(g343 V] tp11663 a(g189 V tp11664 a(g202 V} tp11665 a(g343 V. tp11666 a(g189 V\u000a p11667 tp11668 a(g18 Vsort p11669 tp11670 a(g189 V tp11671 a(g202 V{ tp11672 a(g189 V tp11673 a(g343 V| tp11674 a(g18 Va tp11675 a(g202 V, tp11676 a(g18 Vb tp11677 a(g343 V| tp11678 a(g189 V tp11679 a(g18 Va tp11680 a(g343 V[ tp11681 a(g318 V0 tp11682 a(g343 V] tp11683 a(g189 V tp11684 a(g343 V< tp11685 a(g343 V= tp11686 a(g343 V> tp11687 a(g189 V tp11688 a(g18 Vb tp11689 a(g343 V[ tp11690 a(g318 V0 tp11691 a(g343 V] tp11692 a(g189 V tp11693 a(g202 V} tp11694 a(g343 V. tp11695 a(g189 V\u000a p11696 tp11697 a(g18 Vcollect p11698 tp11699 a(g189 V tp11700 a(g202 V{ tp11701 a(g189 V tp11702 a(g343 V| tp11703 a(g18 Ve tp11704 a(g343 V| tp11705 a(g189 V tp11706 a(g18 Ve tp11707 a(g343 V[ tp11708 a(g318 V1 tp11709 a(g343 V] tp11710 a(g189 V tp11711 a(g202 V} tp11712 a(g189 V\u000a\u000a p11713 tp11714 a(g57 Vprint p11715 tp11716 a(g189 V tp11717 a(g264 V` tp11718 a(g264 Vcat /etc/passwd p11719 tp11720 a(g264 V` tp11721 a(g343 V. tp11722 a(g18 Vcollect p11723 tp11724 a(g189 V tp11725 a(g202 V{ tp11726 a(g189 V tp11727 a(g343 V| tp11728 a(g18 Ve tp11729 a(g343 V| tp11730 a(g189 V tp11731 a(g343 V[ tp11732 a(g18 Ve tp11733 a(g202 V, tp11734 a(g189 V tp11735 a(g18 Ve tp11736 a(g343 V. tp11737 a(g18 Vsplit p11738 tp11739 a(g202 V( tp11740 a(g271 V':' p11741 tp11742 a(g202 V) tp11743 a(g343 V. tp11744 a(g18 Vindexes p11745 tp11746 a(g202 V( tp11747 a(g318 V3 tp11748 a(g202 V, tp11749 a(g318 V2 tp11750 a(g202 V, tp11751 a(g318 V0 tp11752 a(g202 V) tp11753 a(g343 V] tp11754 a(g343 V. tp11755 a(g18 Vflatten p11756 tp11757 a(g189 V tp11758 a(g202 V} tp11759 a(g343 V. tp11760 a(g189 V\u000a p11761 tp11762 a(g18 Vsort p11763 tp11764 a(g189 V tp11765 a(g202 V{ tp11766 a(g189 V tp11767 a(g343 V| tp11768 a(g18 Va tp11769 a(g202 V, tp11770 a(g18 Vb tp11771 a(g343 V| tp11772 a(g189 V tp11773 a(g202 V( tp11774 a(g18 Va tp11775 a(g343 V[ tp11776 a(g318 V1 tp11777 a(g343 V] tp11778 a(g189 V tp11779 a(g343 V< tp11780 a(g343 V= tp11781 a(g343 V> tp11782 a(g189 V tp11783 a(g18 Vb tp11784 a(g343 V[ tp11785 a(g318 V1 tp11786 a(g343 V] tp11787 a(g202 V) tp11788 a(g343 V. tp11789 a(g18 Vnonzero? p11790 tp11791 a(g189 V tp11792 a(g343 V|| p11793 tp11794 a(g189 V tp11795 a(g202 V( tp11796 a(g18 Va tp11797 a(g343 V[ tp11798 a(g318 V2 tp11799 a(g343 V] tp11800 a(g189 V tp11801 a(g343 V< tp11802 a(g343 V= tp11803 a(g343 V> tp11804 a(g189 V tp11805 a(g18 Vb tp11806 a(g343 V[ tp11807 a(g318 V2 tp11808 a(g343 V] tp11809 a(g202 V) tp11810 a(g343 V. tp11811 a(g18 Vnonzero? p11812 tp11813 a(g189 V tp11814 a(g343 V|| p11815 tp11816 a(g189 V tp11817 a(g18 Va tp11818 a(g343 V[ tp11819 a(g318 V3 tp11820 a(g343 V] tp11821 a(g189 V tp11822 a(g343 V< tp11823 a(g343 V= tp11824 a(g343 V> tp11825 a(g189 V tp11826 a(g18 Vb tp11827 a(g343 V[ tp11828 a(g318 V3 tp11829 a(g343 V] tp11830 a(g189 V tp11831 a(g202 V} tp11832 a(g343 V. tp11833 a(g189 V\u000a p11834 tp11835 a(g18 Vcollect p11836 tp11837 a(g189 V tp11838 a(g202 V{ tp11839 a(g189 V tp11840 a(g343 V| tp11841 a(g18 Ve tp11842 a(g343 V| tp11843 a(g189 V tp11844 a(g18 Ve tp11845 a(g343 V[ tp11846 a(g318 V0 tp11847 a(g343 V] tp11848 a(g189 V tp11849 a(g202 V} tp11850 a(g189 V\u000a\u000a\u000a p11851 tp11852 a(g7 V# @@PLEAC@@_4.16 p11853 tp11854 a(g189 V\u000a tp11855 a(g18 Vcircular p11856 tp11857 a(g343 V. tp11858 a(g18 Vunshift p11859 tp11860 a(g202 V( tp11861 a(g18 Vcircular p11862 tp11863 a(g343 V. tp11864 a(g18 Vpop p11865 tp11866 a(g202 V) tp11867 a(g189 V p11868 tp11869 a(g7 V# the last shall be first p11870 tp11871 a(g189 V\u000a tp11872 a(g18 Vcircular p11873 tp11874 a(g343 V. tp11875 a(g18 Vpush p11876 tp11877 a(g202 V( tp11878 a(g18 Vcircular p11879 tp11880 a(g343 V. tp11881 a(g18 Vshift p11882 tp11883 a(g202 V) tp11884 a(g189 V p11885 tp11886 a(g7 V# and vice versa p11887 tp11888 a(g189 V\u000a\u000a p11889 tp11890 a(g111 Vdef p11891 tp11892 a(g189 V tp11893 a(g21 Vgrab_and_rotate p11894 tp11895 a(g202 V( tp11896 a(g18 Vl tp11897 a(g202 V) tp11898 a(g189 V\u000a p11899 tp11900 a(g18 Vl tp11901 a(g343 V. tp11902 a(g18 Vpush p11903 tp11904 a(g202 V( tp11905 a(g18 Vret p11906 tp11907 a(g189 V tp11908 a(g343 V= tp11909 a(g189 V tp11910 a(g18 Vl tp11911 a(g343 V. tp11912 a(g18 Vshift p11913 tp11914 a(g202 V) tp11915 a(g189 V\u000a p11916 tp11917 a(g18 Vret p11918 tp11919 a(g189 V\u000a tp11920 a(g111 Vend p11921 tp11922 a(g189 V\u000a\u000a p11923 tp11924 a(g18 Vprocesses p11925 tp11926 a(g189 V tp11927 a(g343 V= tp11928 a(g189 V tp11929 a(g343 V[ tp11930 a(g318 V1 tp11931 a(g202 V, tp11932 a(g189 V tp11933 a(g318 V2 tp11934 a(g202 V, tp11935 a(g189 V tp11936 a(g318 V3 tp11937 a(g202 V, tp11938 a(g189 V tp11939 a(g318 V4 tp11940 a(g202 V, tp11941 a(g189 V tp11942 a(g318 V5 tp11943 a(g343 V] tp11944 a(g189 V\u000a tp11945 a(g111 Vwhile p11946 tp11947 a(g189 V tp11948 a(g202 V( tp11949 a(g318 V1 tp11950 a(g202 V) tp11951 a(g189 V\u000a p11952 tp11953 a(g18 Vprocess p11954 tp11955 a(g189 V tp11956 a(g343 V= tp11957 a(g189 V tp11958 a(g18 Vgrab_and_rotate p11959 tp11960 a(g202 V( tp11961 a(g18 Vprocesses p11962 tp11963 a(g202 V) tp11964 a(g189 V\u000a p11965 tp11966 a(g57 Vputs p11967 tp11968 a(g189 V tp11969 a(g245 V" tp11970 a(g245 VHandling process p11971 tp11972 a(g233 V#{ p11973 tp11974 a(g18 Vprocess p11975 tp11976 a(g233 V} tp11977 a(g245 V" tp11978 a(g189 V\u000a p11979 tp11980 a(g57 Vsleep p11981 tp11982 a(g189 V tp11983 a(g318 V1 tp11984 a(g189 V\u000a tp11985 a(g111 Vend p11986 tp11987 a(g189 V\u000a\u000a\u000a p11988 tp11989 a(g7 V# @@PLEAC@@_4.17 p11990 tp11991 a(g189 V\u000a tp11992 a(g111 Vdef p11993 tp11994 a(g189 V tp11995 a(g21 Vfisher_yates_shuffle p11996 tp11997 a(g202 V( tp11998 a(g18 Va tp11999 a(g202 V) tp12000 a(g189 V\u000a p12001 tp12002 a(g202 V( tp12003 a(g18 Va tp12004 a(g343 V. tp12005 a(g18 Vsize p12006 tp12007 a(g343 V- tp12008 a(g318 V1 tp12009 a(g202 V) tp12010 a(g343 V. tp12011 a(g18 Vdownto p12012 tp12013 a(g202 V( tp12014 a(g318 V1 tp12015 a(g202 V) tp12016 a(g189 V tp12017 a(g202 V{ tp12018 a(g189 V tp12019 a(g343 V| tp12020 a(g18 Vi tp12021 a(g343 V| tp12022 a(g189 V\u000a p12023 tp12024 a(g18 Vj tp12025 a(g189 V tp12026 a(g343 V= tp12027 a(g189 V tp12028 a(g57 Vrand p12029 tp12030 a(g202 V( tp12031 a(g18 Vi tp12032 a(g343 V+ tp12033 a(g318 V1 tp12034 a(g202 V) tp12035 a(g189 V\u000a p12036 tp12037 a(g18 Va tp12038 a(g343 V[ tp12039 a(g18 Vi tp12040 a(g343 V] tp12041 a(g202 V, tp12042 a(g189 V tp12043 a(g18 Va tp12044 a(g343 V[ tp12045 a(g18 Vj tp12046 a(g343 V] tp12047 a(g189 V tp12048 a(g343 V= tp12049 a(g189 V tp12050 a(g18 Va tp12051 a(g343 V[ tp12052 a(g18 Vj tp12053 a(g343 V] tp12054 a(g202 V, tp12055 a(g189 V tp12056 a(g18 Va tp12057 a(g343 V[ tp12058 a(g18 Vi tp12059 a(g343 V] tp12060 a(g189 V tp12061 a(g111 Vif p12062 tp12063 a(g189 V tp12064 a(g18 Vi tp12065 a(g189 V tp12066 a(g343 V!= p12067 tp12068 a(g189 V tp12069 a(g18 Vj tp12070 a(g189 V\u000a p12071 tp12072 a(g202 V} tp12073 a(g189 V\u000a tp12074 a(g111 Vend p12075 tp12076 a(g189 V\u000a\u000a p12077 tp12078 a(g111 Vdef p12079 tp12080 a(g189 V tp12081 a(g21 Vnaive_shuffle p12082 tp12083 a(g202 V( tp12084 a(g18 Va tp12085 a(g202 V) tp12086 a(g189 V\u000a p12087 tp12088 a(g111 Vfor p12089 tp12090 a(g189 V tp12091 a(g18 Vi tp12092 a(g189 V tp12093 a(g111 Vin p12094 tp12095 a(g189 V tp12096 a(g318 V0 tp12097 a(g343 V. tp12098 a(g18 V. tp12099 a(g343 V. tp12100 a(g18 Va tp12101 a(g343 V. tp12102 a(g18 Vsize p12103 tp12104 a(g189 V\u000a p12105 tp12106 a(g18 Vj tp12107 a(g189 V tp12108 a(g343 V= tp12109 a(g189 V tp12110 a(g57 Vrand p12111 tp12112 a(g202 V( tp12113 a(g18 Va tp12114 a(g343 V. tp12115 a(g18 Vsize p12116 tp12117 a(g202 V) tp12118 a(g189 V\u000a p12119 tp12120 a(g18 Va tp12121 a(g343 V[ tp12122 a(g18 Vi tp12123 a(g343 V] tp12124 a(g202 V, tp12125 a(g189 V tp12126 a(g18 Va tp12127 a(g343 V[ tp12128 a(g18 Vj tp12129 a(g343 V] tp12130 a(g189 V tp12131 a(g343 V= tp12132 a(g189 V tp12133 a(g18 Va tp12134 a(g343 V[ tp12135 a(g18 Vj tp12136 a(g343 V] tp12137 a(g202 V, tp12138 a(g189 V tp12139 a(g18 Va tp12140 a(g343 V[ tp12141 a(g18 Vi tp12142 a(g343 V] tp12143 a(g189 V\u000a p12144 tp12145 a(g111 Vend p12146 tp12147 a(g189 V\u000a tp12148 a(g111 Vend p12149 tp12150 a(g189 V\u000a tp12151 a.