Repository URL to install this package:
|
Version:
2.5.0 ▾
|
]q (cpygments.token
_TokenType
qX CommentqX Singleqq
qq}q(X subtypesqcbuiltins
set
q ]q
qRqX parentq
hh
q
qq}q(hh ]q(hhX Preprocqq
qq}q(hh ]q
qRqh
hubhhX Multiqq
qq}q(hh ]q
q!Rq"h
hubhhX Hashbangq#q$
q%q&}q'(hh ]q(
q)Rq*h
hubhhhX
SingleLineq+q,
q-q.}q/(hh ]q0
q1Rq2h
hubhhX Docq3q4
q5q6}q7(hh ]q8
q9Rq:h
hubhhX Directiveq;q<
q=q>}q?(hh ]q@
qARqBh
hubhhX MultilineqCqD
qEqF}qG(hh ]qH
qIRqJh
hubhhX
SinglelineqKqL
qMqN}qO(hh ]qP
qQRqRh
hubhhX PreprocFileqSqT
qUqV}qW(hh ]qX
qYRqZh
hubhhX Specialq[q\
q]q^}q_(hh ]q`
qaRqbh
hube
qcRqdh
h)
qeqf}qg(hh ]qh(hX Escapeqi
qj
qkql}qm(hh ]qn
qoRqph
hfubhX Operatorqq
qr
qsqt}qu(hh ]qv(hhqX DBSqwqx
qyqz}q{(hh ]q|
q}Rq~h
htubhhqX Wordqq
qq}q(hh ]q
q
Rqh
htube
qRqh
hfhhhwhzubhX Nameq
q
qq}q(hh ]q(hhX Tagqq
qq}q(hh ]q
qRqh
hubhhX Entityqq
qq}q(hh ]qhhhhwq
qq}q (hh ]q¡
q¢Rq£h
huba
q¤Rq¥h
hhwhubhhX Exceptionq¦q§
q¨q©}qª(hh ]q«
q¬Rqh
hubhhX Decoratorq®q¯
q°q±}q²(hh ]q³
q´Rqµh
hubhhX Classq¶q·
q¸q¹}qº(hh ]q»(hhh¶hwq¼
q½q¾}q¿(hh ]qqÁRqÂh
h¹ubhhh¶X StartqÇqąqŁqÆ}qÇ(hh ]qȅqÉRqÊh
h¹ube
qËRqÌh
hhÃhÆhwh¾ubhhX Variableq͆q΅qρqÐ}qÑ(hh ]qÒ(hhhÍX AnonymousqӇqԅqՁqÖ}q×(hh ]qqÙRqÚh
hÐubhhhÍh¶qۅq܁qÝ}qÞ(hh ]q߅qàRqáh
hÐubhhhÍX Magicqâqã
qäqå}qæ(hh ]qç
qèRqéh
hÐubhhhÍX Globalqêqë
qìqí}qî(hh ]qï
qðRqñh
hÐubhhhÍX Instanceqòqó
qôqõ}qö(hh ]q÷
qøRqùh
hÐube
qúRqûh
hh¶hÝhêhíhòhõhâhåhÓhÖubhhX Attributeqüqý
qþqÿ}r (hh ]r hhhüh͇r
r r }r (hh ]r
r Rr h
hÿuba
r Rr
h
hhÍj ubhhX Namespacer r
r
r }r (hh ]r
r Rr h
hubhhX Propertyr r
r r }r (hh ]r
r Rr h
hubhhX Symbolr r
r r }r (hh ]r
r! Rr" h
hubhhX Classesr# r$
r% r& }r' (hh ]r(
r) Rr* h
hubhhX Pseudor+ r,
r- r. }r/ (hh ]r0
r1 Rr2 h
hubhhX Labelr3 r4
r5 r6 }r7 (hh ]r8
r9 Rr: h
hubhhhqr;
r< r= }r> (hh ]r?
r@ RrA h
hubhhX BuiltinrB rC
rD rE }rF (hh ]rG (hhjB j+ rH
rI rJ }rK (hh ]rL
rM RrN h
jE ubhhjB X TyperO rP
rQ rR }rS (hh ]rT
rU RrV h
jE ube
rW RrX h
hj+ jJ jO jR ubhhX FieldrY rZ
r[ r\ }r] (hh ]r^
r_ Rr` h
hubhhX Otherra rb
rc rd }re (hh ]rf hhja X Memberrg rh
ri rj }rk (hh ]rl
rm Rrn h
jd uba
ro Rrp h
hjg jj ubhhX Functionrq rr
rs rt }ru (hh ]rv hhjq hârw
rx ry }rz (hh ]r{
r| Rr} h
jt uba
r~ Rr h
hhâjy ubhhjO r
r r }r (hh ]r
r
Rr h
hubhhX Constantr r
r r }r (hh ]r
r Rr h
hube
r Rr h
hfhühÿjB jE h¶h¹j j h®h±hhh¦h©jq jt j j j3 j6 j j ja jd hhhÍhÐjY j\ j j j+ j. hqj= j# j& jO j ubhX Literalr
r
r r }r (hh ]r (hj ja r
r r }r (hh ]r
r Rr h
j ubhj X Charr r
r r¡ }r¢ (hh ]r£
r¤ Rr¥ h
j ubhj X Dater¦ r§
r¨ r© }rª (hh ]r«
r¬ Rr h
j ubhj X Scalarr® r¯
r° r± }r² (hh ]r³ hj j® X Plainr´ rµ
r¶ r· }r¸ (hh ]r¹
rº Rr» h
j± uba
r¼ Rr½ h
j j´ j· ubhj X Stringr¾ r¿
rÀ rÁ }r (hh ]rà (hj j¾ X InterpolrÄ rÅ
rÆ rÇ }rÈ (hh ]rÉ
rÊ RrË h
jÁ ubhj j¾ X DelimeterrÌ rÍ
rÎ rÏ }rÐ (hh ]rÑ
rÒ RrÓ h
jÁ ubhj j¾ j rÔ
rÕ rÖ }r× (hh ]rØ
rÙ RrÚ h
jÁ ubhj j¾ j rÛ
rÜ rÝ }rÞ (hh ]rß
rà Rrá h
jÁ ubhj j¾ hrâ
rã rä }rå (hh ]ræ
rç Rrè h
jÁ ubhj j¾ ja ré
rê rë }rì (hh ]rí
rî Rrï h
jÁ ubhj j¾ X Backtickrð rñ
rò ró }rô (hh ]rõ
rö Rr÷ h
jÁ ubhj j¾ hirø
rù rú }rû (hh ]rü
rý Rrþ h
jÁ ubhj j¾ X Regexrÿ r
r r }r (hh ]r
r Rr h
jÁ ubhj j¾ X Momentr r
r r
}r (hh ]r
r
Rr h
jÁ ubhj j¾ X Booleanr r
r r }r (hh ]r
r Rr h
jÁ ubhj j¾ X Characterr r
r r }r (hh ]r
r Rr h
jÁ ubhj j¾ X Delimiterr r
r! r" }r# (hh ]r$
r% Rr& h
jÁ ubhj j¾ h3r'
r( r) }r* (hh ]r+
r, Rr- h
jÁ ubhj j¾ hr.
r/ r0 }r1 (hh ]r2
r3 Rr4 h
jÁ ubhj j¾ X Affixr5 r6
r7 r8 }r9 (hh ]r:
r; Rr< h
jÁ ubhj j¾ X Heredocr= r>
r? r@ }rA (hh ]rB
rC RrD h
jÁ ubhj j¾ X DoublerE rF
rG rH }rI (hh ]rJ
rK RrL h
jÁ ubhj j¾ X InterprM rN
rO rP }rQ (hh ]rR
rS RrT h
jÁ ubhj j¾ X AtomrU rV
rW rX }rY (hh ]rZ
r[ Rr\ h
jÁ ube
r] Rr^ h
j j5 j8 jð jó j jÖ j j" h3j) jE jH hijú j= j@ jÄ jÇ ja jë jÿ j hjä j jÝ j j j j
jM jP j j jÌ jÏ jU jX hj0 ubhj X Numberr_ r`
ra rb }rc (hh ]rd (hj j_ X Floatre rf
rg rh }ri (hh ]rj
rk Rrl h
jb ubhj j_ X Decrm rn
ro rp }rq (hh ]rr
rs Rrt h
jb ubhj j_ X Radixru rv
rw rx }ry (hh ]rz
r{ Rr| h
jb ubhj j_ X Octr} r~
r r }r (hh ]r
r Rr h
jb ubhj j_ X Binr
r
r r }r (hh ]r
r Rr h
jb ubhj j_ hür
r r }r (hh ]r
r Rr h
jb ubhj j_ X Hexr r
r r }r (hh ]r
r Rr h
jb ubhj j_ X Integerr r
r r }r (hh ]r¡ h(j j_ j X Longr¢ tr£
r¤ r¥ }r¦ (hh ]r§
r¨ Rr© h
j uba
rª Rr« h
jb j¢ j¥ ubhj j_ X Decimalr¬ r
r® r¯ }r° (hh ]r±
r² Rr³ h
jb ube
r´ Rrµ h
j j
j je jh j j j j j} j ju jx hüj j¬ j¯ jm jp ube
r¶ Rr· h
hfj¾ jÁ j_ jb j¦ j© j® j± ja j j j¡ ubhX Genericr¸
r¹
rº r» }r¼ (hh ]r½ (hj¸ X Errorr¾ r¿
rÀ rÁ }r (hh ]rÃ
rÄ RrÅ h
j» ubhj¸ X
SubheadingrÆ rÇ
rÈ rÉ }rÊ (hh ]rË
rÌ RrÍ h
j» ubhj¸ X TracebackrÎ rÏ
rÐ rÑ }rÒ (hh ]rÓ
rÔ RrÕ h
j» ubhj¸ X OutputrÖ r×
rØ rÙ }rÚ (hh ]rÛ
rÜ RrÝ h
j» ubhj¸ X PromptrÞ rß
rà rá }râ (hh ]rã
rä Rrå h
j» ubhj¸ X Deletedræ rç
rè ré }rê (hh ]rë
rì Rrí h
j» ubhj¸ X Insertedrî rï
rð rñ }rò (hh ]ró
rô Rrõ h
j» ubhj¸ X Headingrö r÷
rø rù }rú (hh ]rû
rü Rrý h
j» ubhj¸ X Strongrþ rÿ
r r }r (hh ]r
r Rr h
j» ubhj¸ X Emphr r
r r }r
(hh ]r
r Rr
h
j» ube
r Rr h
hfjæ jé j j j¾ jÁ jö jù jî jñ jÖ jÙ jÞ já jþ j jÆ jÉ jÎ jÑ ubhj¾
r
r r }r (hh ]r
r Rr h
hfubhX Keywordr
r
r r }r (hh ]r (hj hr
r r }r (hh ]r!
r" Rr# h
j ubhj j r$
r% r& }r' (hh ]r(
r) Rr* h
j ubhj jO r+
r, r- }r. (hh ]r/
r0 Rr1 h
j ubhj X PreProcr2 r3
r4 r5 }r6 (hh ]r7
r8 Rr9 h
j ubhj X Controlr: r;
r< r= }r> (hh ]r?
r@ RrA h
j ubhj j rB
rC rD }rE (hh ]rF
rG RrH h
j ubhj j rI
rJ rK }rL (hh ]rM
rN RrO h
j ubhj j+ rP
rQ rR }rS (hh ]rT
rU RrV h
j ubhj X DeclarationrW rX
rY rZ }r[ (hh ]r\
r] Rr^ h
j ubhj X Reservedr_ r`
ra rb }rc (hh ]rd
re Rrf h
j ube
rg Rrh h
hfj jD jW jZ j jK j+ jR j_ jb jO j- j: j= j j& j2 j5 hj ubhja
ri
rj rk }rl (hh ]rm
rn Rro h
hfubhX Textrp
rq
rr rs }rt (hh ]ru (hjp X Rootrv rw
rx ry }rz (hh ]r{
r| Rr} h
js ubhjp j r~
r r }r (hh ]r
r Rr h
js ubhjp X Ragr
r
r r }r (hh ]r
r Rr h
js ubhjp X
Whitespacer r
r r }r (hh ]r
r Rr h
js ubhjp X Beerr r
r r }r (hh ]r
r Rr h
js ubhjp X Punctuationr r
r r }r¡ (hh ]r¢
r£ Rr¤ h
js ube
r¥ Rr¦ h
hfj j j j j j jv jy j j j
j ubhhj
r§
r¨ r© }rª (hh ]r« hj X Indicatorr¬ r
r® r¯ }r° (hh ]r±
r² Rr³ h
j© uba
r´ Rrµ h
hfj¬ j¯ ube
r¶ Rr· jp js hihlj¾ j ja jk j j hhj j j j© hqhthhj¸ j» X Tokenr¸ hfj¾ jÁ j_ jb ubh#h&hChFhhhShVhhh[h^h;h>h+h.h3h6hhhKhNububX? // Created by Lionello Lunesu and placed in the public domain.
r¹ rº hX: // This file has been modified from its original version.
r» r¼ hX- // It has been formatted to fit your screen.
r½ r¾ j X moduler¿ rÀ js X rÁ r hX phonenorà rÄ j© X ;rÅ rÆ js X rÇ rÈ hX // optional
rÉ rÊ j X importrË rÌ js jÁ rÍ hX stdrÎ rÏ j© X .rÐ rÑ hX stdiorÒ rÓ j© jÅ rÔ js X rÕ rÖ hX // writefln
r× rØ j X importrÙ rÚ js jÁ rÛ hX stdrÜ rÝ j© jÐ rÞ hX ctyperß rà j© jÅ rá js X râ rã hX // isdigit
rä rå j X importræ rç js jÁ rè hX stdré rê j© jÐ rë hX streamrì rí j© jÅ rî js X rï rð hX // BufferedFile
rñ rò js X
ró rô hX7 // Just for readability (imagine char[][][char[]])
rõ rö j X aliasr÷ rø js jÁ rù j- X charrú rû j© X [rü rý j© X ]rþ rÿ js jÁ r jE X stringr r j© jÅ r js jó r j X aliasr r js jÁ r jE X stringr r j© jü r
j© jþ r js jÁ r hX stringarrayr
r j© jÅ r js jó r js jó r hX6 /// Strips non-digit characters from the string (COW)
r r jE X stringr r js jÁ r hX
stripNonDigitr r j© X (r r js jÁ r j X inr r js jÁ r jE X stringr r js jÁ r! hX liner" r# js jÁ r$ j© X )r% r& js X
r' r( j© X {r) r* js jó r+ js X r, r- jE X stringr. r/ js jÁ r0 hX retr1 r2 j© jÅ r3 js jó r4 js X r5 r6 j X foreachr7 r8 j© j r9 j- X uintr: r; js jÁ r< hX ir= r> j© X ,r? r@ js jÁ rA hX crB rC j© jÅ rD js jÁ rE hX linerF rG j© j% rH js jÁ rI j© j) rJ js jó rK js X rL rM hXB // Error: std.ctype.isdigit at C:\dmd\src\phobos\std\ctype.d(37)
rN rO js X rP rQ hXM // conflicts with std.stream.isdigit at C:\dmd\src\phobos\std\stream.d(2924)
rR rS js X rT rU j X ifrV rW js jÁ rX j© j rY j© X !rZ r[ hX stdr\ r] j© jÐ r^ hX ctyper_ r` j© jÐ ra hX isdigitrb rc j© j rd hjB re j© j% rf j© j% rg js jÁ rh j© j) ri js jó rj js X rk rl j X ifrm rn js jÁ ro j© j rp j© jZ rq hX retrr rs j© j% rt js jó ru js X rv rw hX retrx ry js jÁ rz j© X =r{ r| js jÁ r} hX liner~ r j© jü r jh X 0.r r j© jÐ r hj= r j© jþ r
j© jÅ r js X
r r j© X }r r js X
r r j X elser r js jÁ r j X ifr r js jÁ r j© j r hX retr r j© j% r js jó r js X r r hX retr r js jÁ r j© X ~=r r js jÁ r hjB r j© jÅ r¡ js X
r¢ r£ j© j r¤ js X
r¥ r¦ j X returnr§ r¨ js jÁ r© hX retrª r« j© X ?r¬ r hX retr® r¯ j© X :r° r± hX liner² r³ j© jÅ r´ js jó rµ j© j r¶ js jó r· js jó r¸ j X unittestr¹ rº js jÁ r» j© j) r¼ js jó r½ js X r¾ r¿ j X assertrÀ rÁ j© j r js jÁ rà hX
stripNonDigitrÄ rÅ j© j rÆ jÁ X "asdf"rÇ rÈ j© j% rÉ js jÁ rÊ j© X ==rË rÌ js jÁ rÍ jÁ X ""rÎ rÏ js X rÐ rÑ j© j% rÒ j© jÅ rÓ js jó rÔ js X rÕ rÖ j X assertr× rØ j© j rÙ js jÁ rÚ hX
stripNonDigitrÛ rÜ j© j rÝ jÁ X "\'13-=2 4kop"rÞ rß j© j% rà js jÁ rá j© X ==râ rã js X rä rå jÁ X "1324"ræ rç js X rè ré j© j% rê j© jÅ rë js jó rì j© j rí js jó rî js jó rï hXG /// Converts a word into a number, ignoring all non alpha characters
rð rñ jE X stringrò ró js jÁ rô hX wordToNumrõ rö j© j r÷ js jÁ rø j X inrù rú js jÁ rû jE X stringrü rý js jÁ rþ hX wordrÿ r js jÁ r j© j% r js jó r j© j) r js jó r hX* // translation table for the task at hand
r r j X constr r js jÁ r
j- X charr r j© jü r
j X 256r r j© jþ r js jÁ r hX TRANSLATEr r js jÁ r j© j{ r js X
r r jÁ X" " "r r js X r r hX // 0
r r js X r r jÁ X" " 0123456789 "r r! js X r" r# hX // 32
r$ r% js X r& r' jÁ X" " 57630499617851881234762239 "r( r) js X r* r+ hX // 64
r, r- js X r. r/ jÁ X" " 57630499617851881234762239 "r0 r1 js jó r2 js X r3 r4 jÁ X" " "r5 r6 js jó r7 js X r8 r9 jÁ X" " "r: r; js jó r< js X r= r> jÁ X" " "r? r@ js X
rA rB jÁ X" " "rC rD j© jÅ rE js jó rF js X rG rH jE X stringrI rJ js jÁ rK hX retrL rM j© jÅ rN js jó rO js X rP rQ j X foreachrR rS j© j rT hjB rU j© jÅ rV js jÁ rW j X castrX rY j© j rZ j- X ubyter[ r\ j© jü r] j© jþ r^ j© j% r_ hX wordr` ra j© j% rb js jó rc js X rd re j X ifrf rg js jÁ rh j© j ri hX TRANSLATErj rk j© jü rl hjB rm j© jþ rn js jÁ ro j© X !=rp rq js jÁ rr jÖ X ' 'rs rt j© j% ru js jó rv js X rw rx hX retry rz js jÁ r{ j© X ~=r| r} js jÁ r~ hX TRANSLATEr r j© jü r hjB r j© jþ r j© jÅ r js jó r
js X r r j X returnr r js jÁ r hX retr r j© jÅ r js jó r j© j r js jó r js jó r j X unittestr r js jÁ r j© j) r js jó r js jÁ r hX= // Test wordToNum using the table from the task description.
r r js jÁ r j X assertr r j© j r js jÁ r jÁ X "01112223334455666777888999"r r js jÁ r¡ j© X ==r¢ r£ js jó r¤ js X r¥ r¦ hX wordToNumr§ r¨ j© j r© jÁ XG "E | J N Q | R W X | D S Y | F T | A M | C I V | B K U | L O P | G H Z"rª r« j© j% r¬ j© j% r j© jÅ r® js jó r¯ js jÁ r° j X assertr± r² j© j r³ js jÁ r´ jÁ X "01112223334455666777888999"rµ r¶ js jÁ r· j© X ==r¸ r¹ js X
rº r» hX wordToNumr¼ r½ j© j r¾ jÁ XG "e | j n q | r w x | d s y | f t | a m | c i v | b k u | l o p | g h z"r¿ rÀ j© j% rÁ j© j% r j© jÅ rà js jó rÄ js jÁ rÅ j X assertrÆ rÇ j© j rÈ js jÁ rÉ jÁ X "0123456789"rÊ rË js jÁ rÌ j© X ==rÍ rÎ js X
rÏ rÐ hX wordToNumrÑ rÒ j© j rÓ jÁ XE "0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9"rÔ rÕ j© j% rÖ j© j% r× j© jÅ rØ js jó rÙ j© j rÚ js jó rÛ js jó rÜ j- X voidrÝ rÞ js jÁ rß hX mainrà rá j© j râ js jÁ rã jE X stringrä rå j© jü ræ j© jþ rç js jÁ rè hX argsré rê js jÁ rë j© j% rì js jó rí j© j) rî js jó rï js X rð rñ hXB // This associative array maps a number to an array of words.
rò ró js X rô rõ hX stringarrayrö r÷ j© jü rø jE X stringrù rú j© jþ rû js X rü rý hX num2wordsrþ rÿ j© jÅ r js jó r js jó r js X r r j X foreachr r j© j r jE X stringr r js jÁ r
hX wordr r j© jÅ r
js jÁ r j X newr r js jÁ r hX BufferedFiler r j© j r jÁ X "dictionary.txt"r r js jÁ r j© j% r js jÁ r j© j% r js jó r js X r r hX num2wordsr r j© jü r js jÁ r! hX wordToNumr" r# j© j r$ hX wordr% r& j© j% r' js jÁ r( j© jþ r) js jÁ r* j© X ~=r+ r, js jÁ r- hX wordr. r/ j© jÐ r0 hX dupr1 r2 j© jÅ r3 js X r4 r5 hX // must dup
r6 r7 js jó r8 js X r9 r: hX0 /// Finds all alternatives for the given number
r; r< js X r= r> hX: /// (should have been stripped from non-digit characters)
r? r@ js X rA rB hX stringarrayrC rD js jÁ rE hX
_FindWordsrF rG j© j rH js jÁ rI jE X stringrJ rK js jÁ rL hX numbersrM rN j© j? rO js jÁ rP j- X boolrQ rR js jÁ rS hX digitokrT rU js jÁ rV j© j% rW js jó rX js X rY rZ j X inr[ r\ js jÁ r] j© j) r^ js jó r_ js X r` ra j X assertrb rc j© j rd hX numbersre rf j© jÐ rg hX lengthrh ri js jÁ rj j© X >rk rl js X rm rn j X 0ro rp j© j% rq j© jÅ rr js X
rs rt j© j ru js X
rv rw j X outrx ry j© j rz hX resultr{ r| j© j% r} js jÁ r~ j© j) r js jó r js X r r j X foreachr r js jÁ r
j© j r hX ar r j© jÅ r js jÁ r hX resultr r j© j% r js jó r js X r r j X assertr r j© j r js jÁ r hX wordToNumr r j© j r hj r j© j% r js jÁ r j© X ==r r js jÁ r hX numbersr r js jÁ r j© j% r¡ j© jÅ r¢ js jó r£ js X r¤ r¥ j© j r¦ js X
r§ r¨ j X bodyr© rª js jÁ r« j© j) r¬ js jó r js X r® r¯ hX stringarrayr° r± js jÁ r² hX retr³ r´ j© jÅ rµ js jó r¶ js X r· r¸ j- X boolr¹ rº js jÁ r» hX foundwordr¼ r½ js jÁ r¾ j© j{ r¿ js jÁ rÀ jD X falserÁ r j© jÅ rà js jó rÄ js X rÅ rÆ j X forrÇ rÈ js jÁ rÉ j© j rÊ j- X uintrË rÌ js jÁ rÍ hX trÎ rÏ j© j{ rÐ j X 1rÑ rÒ j© jÅ rÓ js jÁ rÔ hjÎ rÕ j© X <=rÖ r× hX numbersrØ rÙ j© jÐ rÚ hX lengthrÛ rÜ j© jÅ rÝ js jÁ rÞ j© X ++rß rà hjÎ rá j© j% râ js jÁ rã j© j) rä js jó rå js X ræ rç j X autorè ré js jÁ rê hX alternativesrë rì js jÁ rí j© j{ rî js jÁ rï hX numbersrð rñ j© jü rò jh X 0.ró rô j© jÐ rõ hjÎ rö j© jþ r÷ js jÁ rø j X inrù rú js jÁ rû hX num2wordsrü rý j© jÅ rþ js jó rÿ js X r r j X ifr r js jÁ r j© j r j© jZ r hX alternativesr r j© j% r js jó r
js X r r j X continuer
r j© jÅ r js jó r js X r r hX foundwordr r js jÁ r j© j{ r js jÁ r jD X truer r j© jÅ r js jó r js X r r j X ifr r js jÁ r j© j r! hX numbersr" r# j© jÐ r$ hX lengthr% r& js jÁ r' j© jk r( js X r) r* hjÎ r+ j© j% r, js jÁ r- j© j) r. js jó r/ js X r0 r1 hX? // Combine all current alternatives with all alternatives
r2 r3 js X r4 r5 hXA // of the rest (next piece can start with a digit)
r6 r7 js X r8 r9 j X foreachr: r; js jÁ r< j© j r= hX a2r> r? j© jÅ r@ js jÁ rA hX
_FindWordsrB rC j© j rD js jÁ rE hX numbersrF rG j© jü rH hjÎ rI j© X ..rJ rK j© X $rL rM j© jþ rN j© j? rO js jÁ rP jD X truerQ rR js X rS rT j© j% rU js jÁ rV j© j% rW js jó rX js X rY rZ j X foreachr[ r\ j© j r] hX a1r^ r_ j© jÅ r` js jÁ ra j© X *rb rc hX alternativesrd re j© j% rf js jó rg js X rh ri hX retrj rk js jÁ rl j© X ~=rm rn js jÁ ro hX a1rp rq js jÁ rr j© X ~rs rt js jÁ ru jÁ X " "rv rw js jÁ rx j© js ry js jÁ rz hX a2r{ r| j© jÅ r} js jó r~ js X r r j© j r js jó r js X r r j X elser
r js X
r r hX retr r js jÁ r j© X ~=r r js jÁ r j© jb r hX alternativesr r j© jÅ r js X r r hX // append these alternatives
r r js X r r j© j r js jó r js X r r hX; // Try to keep 1 digit, only if we're allowed and no other
r r js X r r hX // alternatives were found
r¡ r¢ js X r£ r¤ hXC // Testing "ret.length" makes more sense than testing "foundword",
r¥ r¦ js X r§ r¨ hX7 // but the other implementations seem to do just this.
r© rª js X r« r¬ j X ifr r® js jÁ r¯ j© j r° hX digitokr± r² js jÁ r³ j© X &&r´ rµ js jÁ r¶ j© jZ r· hX foundwordr¸ r¹ j© j% rº js jÁ r» j© j) r¼ js jÁ r½ hX //ret.length == 0
r¾ r¿ js X rÀ rÁ j X ifr rà j© j rÄ hX numbersrÅ rÆ j© jÐ rÇ hX lengthrÈ rÉ js jÁ rÊ j© jk rË js X rÌ rÍ j jÑ rÎ j© j% rÏ js jÁ rÐ j© j) rÑ js jó rÒ js X rÓ rÔ hX: // Combine 1 digit with all altenatives from the rest
rÕ rÖ js X r× rØ hX5 // (next piece can not start with a digit)
rÙ rÚ js X rÛ rÜ j X foreachrÝ rÞ js jÁ rß j© j rà hj rá j© jÅ râ js jÁ rã hX
_FindWordsrä rå j© j ræ js jÁ rç hX numbersrè ré j© jü rê jh X 1.rë rì j© jÐ rí j© jL rî j© jþ rï j© j? rð js jÁ rñ jD X falserò ró js jÁ rô j© j% rõ js jÁ rö j© j% r÷ js jó rø js X rù rú hX retrû rü js jÁ rý j© X ~=rþ rÿ js jÁ r hX numbersr r j© jü r jh X 0.r r jh X .1r r j© jþ r js jÁ r j© js r
js jÁ r jÁ X " "r r
js jÁ r j© js r js jÁ r hj r j© jÅ r js jó r js X r r j© j r js X
r r j X elser r js X
r r hX retr r js jÁ r j© X ~=r r! js jÁ r" hX numbersr# r$ j© jü r% jh X 0.r& r' jh X .1r( r) j© jþ r* j© jÅ r+ js X r, r- hX' // just append this digit
r. r/ js X r0 r1 j© j r2 js X
r3 r4 j X returnr5 r6 js jÁ r7 hX retr8 r9 j© jÅ r: js jó r; js X r< r= j© j r> js jó r? js jó r@ js X rA rB hX9 /// (This function was inlined in the original program)
rC rD js X rE rF hX7 /// Finds all alternatives for the given phone number
rG rH js X rI rJ hX /// Returns: array of strings
rK rL js X rM rN hX stringarrayrO rP js jÁ rQ hX FindWordsrR rS j© j rT js jÁ rU jE X stringrV rW js jÁ rX hX phone_numberrY rZ js jÁ r[ j© j% r\ js jó r] js X r^ r_ j© j) r` js jó ra js X rb rc j X ifrd re js jÁ rf j© j rg j© jZ rh hX phone_numberri rj j© jÐ rk hX lengthrl rm j© j% rn js jó ro js X rp rq j X returnrr rs js jÁ rt jD X nullru rv j© jÅ rw js jó rx js X ry rz hX= // Strip the non-digit characters from the phone number, and
r{ r| js X r} r~ hX@ // pass it to the recursive function (leading digit is allowed)
r r js X r r j X returnr r js jÁ r
hX
_FindWordsr r j© j r js jÁ r hX
stripNonDigitr r j© j r hX phone_numberr r j© j% r j© j? r js jÁ r jD X truer r js jÁ r j© j% r j© jÅ r js X
r r j© j r js X
r r hX // Read the phone numbers
r r js X r r j X foreachr r¡ j© j r¢ jE X stringr£ r¤ js jÁ r¥ hX phoner¦ r§ j© jÅ r¨ js jÁ r© j X newrª r« js jÁ r¬ hX BufferedFiler r® j© j r¯ jÁ X "input.txt"r° r± js X r² r³ j© j% r´ js jÁ rµ j© j% r¶ js jó r· js X r¸ r¹ j X foreachrº r» j© j r¼ hX alternativer½ r¾ j© jÅ r¿ js jÁ rÀ hX FindWordsrÁ r j© j rà js jÁ rÄ hX phonerÅ rÆ js jÁ rÇ j© j% rÈ js jÁ rÉ j© j% rÊ js jó rË js X rÌ rÍ hX writeflnrÎ rÏ j© j rÐ hX phonerÑ rÒ j© j? rÓ js jÁ rÔ jÁ X ": "rÕ rÖ j© j? r× js jÁ rØ hX alternativerÙ rÚ js jÁ rÛ j© j% rÜ j© jÅ rÝ js jó rÞ j© j rß js jó rà e.