summaryrefslogtreecommitdiff
path: root/tests/examplefiles/hexdump_od
diff options
context:
space:
mode:
Diffstat (limited to 'tests/examplefiles/hexdump_od')
-rw-r--r--tests/examplefiles/hexdump_od310
1 files changed, 310 insertions, 0 deletions
diff --git a/tests/examplefiles/hexdump_od b/tests/examplefiles/hexdump_od
new file mode 100644
index 00000000..a407aef0
--- /dev/null
+++ b/tests/examplefiles/hexdump_od
@@ -0,0 +1,310 @@
+0000000 2f 2f 20 43 72 65 61 74 65 64 20 62 79 20 4c 69 >// Created by Li<
+0000020 6f 6e 65 6c 6c 6f 20 4c 75 6e 65 73 75 20 61 6e >onello Lunesu an<
+0000040 64 20 70 6c 61 63 65 64 20 69 6e 20 74 68 65 20 >d placed in the <
+0000060 70 75 62 6c 69 63 20 64 6f 6d 61 69 6e 2e 0a 2f >public domain../<
+0000100 2f 20 54 68 69 73 20 66 69 6c 65 20 68 61 73 20 >/ This file has <
+0000120 62 65 65 6e 20 6d 6f 64 69 66 69 65 64 20 66 72 >been modified fr<
+0000140 6f 6d 20 69 74 73 20 6f 72 69 67 69 6e 61 6c 20 >om its original <
+0000160 76 65 72 73 69 6f 6e 2e 0a 2f 2f 20 49 74 20 68 >version..// It h<
+0000200 61 73 20 62 65 65 6e 20 66 6f 72 6d 61 74 74 65 >as been formatte<
+0000220 64 20 74 6f 20 66 69 74 20 79 6f 75 72 20 73 63 >d to fit your sc<
+0000240 72 65 65 6e 2e 0a 6d 6f 64 75 6c 65 20 70 68 6f >reen..module pho<
+0000260 6e 65 6e 6f 3b 20 20 20 20 20 2f 2f 20 6f 70 74 >neno; // opt<
+0000300 69 6f 6e 61 6c 0a 69 6d 70 6f 72 74 20 73 74 64 >ional.import std<
+0000320 2e 73 74 64 69 6f 3b 20 20 20 2f 2f 20 77 72 69 >.stdio; // wri<
+0000340 74 65 66 6c 6e 20 20 20 20 20 0a 69 6d 70 6f 72 >tefln .impor<
+0000360 74 20 73 74 64 2e 63 74 79 70 65 3b 20 20 20 2f >t std.ctype; /<
+0000400 2f 20 69 73 64 69 67 69 74 20 20 20 20 20 0a 69 >/ isdigit .i<
+0000420 6d 70 6f 72 74 20 73 74 64 2e 73 74 72 65 61 6d >mport std.stream<
+0000440 3b 20 20 2f 2f 20 42 75 66 66 65 72 65 64 46 69 >; // BufferedFi<
+0000460 6c 65 0a 0a 2f 2f 20 4a 75 73 74 20 66 6f 72 20 >le..// Just for <
+0000500 72 65 61 64 61 62 69 6c 69 74 79 20 28 69 6d 61 >readability (ima<
+0000520 67 69 6e 65 20 63 68 61 72 5b 5d 5b 5d 5b 63 68 >gine char[][][ch<
+0000540 61 72 5b 5d 5d 29 20 20 20 20 0a 61 6c 69 61 73 >ar[]]) .alias<
+0000560 20 63 68 61 72 5b 5d 20 73 74 72 69 6e 67 3b 0a > char[] string;.<
+0000600 61 6c 69 61 73 20 73 74 72 69 6e 67 5b 5d 20 73 >alias string[] s<
+0000620 74 72 69 6e 67 61 72 72 61 79 3b 0a 0a 2f 2f 2f >tringarray;..///<
+0000640 20 53 74 72 69 70 73 20 6e 6f 6e 2d 64 69 67 69 > Strips non-digi<
+0000660 74 20 63 68 61 72 61 63 74 65 72 73 20 66 72 6f >t characters fro<
+0000700 6d 20 74 68 65 20 73 74 72 69 6e 67 20 28 43 4f >m the string (CO<
+0000720 57 29 0a 73 74 72 69 6e 67 20 73 74 72 69 70 4e >W).string stripN<
+0000740 6f 6e 44 69 67 69 74 28 20 69 6e 20 73 74 72 69 >onDigit( in stri<
+0000760 6e 67 20 6c 69 6e 65 20 29 20 0a 7b 0a 20 20 20 >ng line ) .{. <
+0001000 20 73 74 72 69 6e 67 20 72 65 74 3b 0a 20 20 20 > string ret;. <
+0001020 20 66 6f 72 65 61 63 68 28 75 69 6e 74 20 69 2c > foreach(uint i,<
+0001040 20 63 3b 20 6c 69 6e 65 29 20 7b 0a 20 20 20 20 > c; line) {. <
+0001060 20 20 20 20 2f 2f 20 45 72 72 6f 72 3a 20 73 74 > // Error: st<
+0001100 64 2e 63 74 79 70 65 2e 69 73 64 69 67 69 74 20 >d.ctype.isdigit <
+0001120 61 74 20 43 3a 5c 64 6d 64 5c 73 72 63 5c 70 68 >at C:\dmd\src\ph<
+0001140 6f 62 6f 73 5c 73 74 64 5c 63 74 79 70 65 2e 64 >obos\std\ctype.d<
+0001160 28 33 37 29 20 0a 20 20 20 20 20 20 20 20 2f 2f >(37) . //<
+0001200 20 63 6f 6e 66 6c 69 63 74 73 20 77 69 74 68 20 > conflicts with <
+0001220 73 74 64 2e 73 74 72 65 61 6d 2e 69 73 64 69 67 >std.stream.isdig<
+0001240 69 74 20 61 74 20 43 3a 5c 64 6d 64 5c 73 72 63 >it at C:\dmd\src<
+0001260 5c 70 68 6f 62 6f 73 5c 73 74 64 5c 73 74 72 65 >\phobos\std\stre<
+0001300 61 6d 2e 64 28 32 39 32 34 29 0a 20 20 20 20 20 >am.d(2924). <
+0001320 20 20 20 69 66 20 28 21 73 74 64 2e 63 74 79 70 > if (!std.ctyp<
+0001340 65 2e 69 73 64 69 67 69 74 28 63 29 29 20 7b 0a >e.isdigit(c)) {.<
+0001360 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 > if (<
+0001400 21 72 65 74 29 0a 20 20 20 20 20 20 20 20 20 20 >!ret). <
+0001420 20 20 20 20 20 20 72 65 74 20 3d 20 6c 69 6e 65 > ret = line<
+0001440 5b 30 2e 2e 69 5d 3b 20 20 20 20 0a 20 20 20 20 >[0..i]; . <
+0001460 20 20 20 20 7d 20 20 20 20 0a 20 20 20 20 20 20 > } . <
+0001500 20 20 65 6c 73 65 20 69 66 20 28 72 65 74 29 0a > else if (ret).<
+0001520 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 20 > ret <
+0001540 7e 3d 20 63 3b 20 20 20 20 0a 20 20 20 20 7d 20 >~= c; . } <
+0001560 20 20 20 0a 20 20 20 20 72 65 74 75 72 6e 20 72 > . return r<
+0001600 65 74 3f 72 65 74 3a 6c 69 6e 65 3b 0a 7d 0a 0a >et?ret:line;.}..<
+0001620 75 6e 69 74 74 65 73 74 20 7b 0a 20 20 20 20 61 >unittest {. a<
+0001640 73 73 65 72 74 28 20 73 74 72 69 70 4e 6f 6e 44 >ssert( stripNonD<
+0001660 69 67 69 74 28 22 61 73 64 66 22 29 20 3d 3d 20 >igit("asdf") == <
+0001700 22 22 20 20 29 3b 0a 20 20 20 20 61 73 73 65 72 >"" );. asser<
+0001720 74 28 20 73 74 72 69 70 4e 6f 6e 44 69 67 69 74 >t( stripNonDigit<
+0001740 28 22 5c 27 31 33 2d 3d 32 20 34 6b 6f 70 22 29 >("\'13-=2 4kop")<
+0001760 20 3d 3d 20 20 22 31 33 32 34 22 20 20 29 3b 0a > == "1324" );.<
+0002000 7d 0a 0a 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 >}../// Converts <
+0002020 61 20 77 6f 72 64 20 69 6e 74 6f 20 61 20 6e 75 >a word into a nu<
+0002040 6d 62 65 72 2c 20 69 67 6e 6f 72 69 6e 67 20 61 >mber, ignoring a<
+0002060 6c 6c 20 6e 6f 6e 20 61 6c 70 68 61 20 63 68 61 >ll non alpha cha<
+0002100 72 61 63 74 65 72 73 20 20 0a 73 74 72 69 6e 67 >racters .string<
+0002120 20 77 6f 72 64 54 6f 4e 75 6d 28 20 69 6e 20 73 > wordToNum( in s<
+0002140 74 72 69 6e 67 20 77 6f 72 64 20 29 0a 7b 0a 2f >tring word ).{./<
+0002160 2f 20 74 72 61 6e 73 6c 61 74 69 6f 6e 20 74 61 >/ translation ta<
+0002200 62 6c 65 20 66 6f 72 20 74 68 65 20 74 61 73 6b >ble for the task<
+0002220 20 61 74 20 68 61 6e 64 0a 63 6f 6e 73 74 20 63 > at hand.const c<
+0002240 68 61 72 5b 32 35 36 5d 20 54 52 41 4e 53 4c 41 >har[256] TRANSLA<
+0002260 54 45 20 3d 20 20 20 20 0a 20 20 20 20 22 20 20 >TE = . " <
+0002300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 > <
+0002320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 20 > " <
+0002340 20 2f 2f 20 30 20 20 20 0a 20 20 20 20 22 20 20 > // 0 . " <
+0002360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 30 31 > 01<
+0002400 32 33 34 35 36 37 38 39 20 20 20 20 20 20 22 20 >23456789 " <
+0002420 20 2f 2f 20 33 32 20 20 20 20 20 0a 20 20 20 20 > // 32 . <
+0002440 22 20 35 37 36 33 30 34 39 39 36 31 37 38 35 31 >" 57630499617851<
+0002460 38 38 31 32 33 34 37 36 32 32 33 39 20 20 20 20 >881234762239 <
+0002500 20 22 20 20 2f 2f 20 36 34 20 20 20 0a 20 20 20 > " // 64 . <
+0002520 20 22 20 35 37 36 33 30 34 39 39 36 31 37 38 35 > " 5763049961785<
+0002540 31 38 38 31 32 33 34 37 36 32 32 33 39 20 20 20 >1881234762239 <
+0002560 20 20 22 0a 20 20 20 20 22 20 20 20 20 20 20 20 > ". " <
+0002600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 > <
+0002620 20 20 20 20 20 20 20 20 20 22 0a 20 20 20 20 22 > ". "<
+0002640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 > <
+*
+0002700 22 0a 20 20 20 20 22 20 20 20 20 20 20 20 20 20 >". " <
+0002720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 > <
+0002740 20 20 20 20 20 20 20 22 20 20 20 20 0a 20 20 20 > " . <
+0002760 20 22 20 20 20 20 20 20 20 20 20 20 20 20 20 20 > " <
+0003000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 > <
+0003020 20 20 22 3b 0a 20 20 20 20 73 74 72 69 6e 67 20 > ";. string <
+0003040 72 65 74 3b 0a 20 20 20 20 66 6f 72 65 61 63 68 >ret;. foreach<
+0003060 28 63 3b 20 63 61 73 74 28 75 62 79 74 65 5b 5d >(c; cast(ubyte[]<
+0003100 29 77 6f 72 64 29 0a 20 20 20 20 20 20 20 20 69 >)word). i<
+0003120 66 20 28 54 52 41 4e 53 4c 41 54 45 5b 63 5d 20 >f (TRANSLATE[c] <
+0003140 21 3d 20 27 20 27 29 0a 20 20 20 20 20 20 20 20 >!= ' '). <
+0003160 20 20 20 20 72 65 74 20 7e 3d 20 54 52 41 4e 53 > ret ~= TRANS<
+0003200 4c 41 54 45 5b 63 5d 3b 0a 20 20 20 20 72 65 74 >LATE[c];. ret<
+0003220 75 72 6e 20 72 65 74 3b 0a 7d 0a 0a 75 6e 69 74 >urn ret;.}..unit<
+0003240 74 65 73 74 20 7b 0a 20 2f 2f 20 54 65 73 74 20 >test {. // Test <
+0003260 77 6f 72 64 54 6f 4e 75 6d 20 75 73 69 6e 67 20 >wordToNum using <
+0003300 74 68 65 20 74 61 62 6c 65 20 66 72 6f 6d 20 74 >the table from t<
+0003320 68 65 20 74 61 73 6b 20 64 65 73 63 72 69 70 74 >he task descript<
+0003340 69 6f 6e 2e 0a 20 61 73 73 65 72 74 28 20 22 30 >ion.. assert( "0<
+0003360 31 31 31 32 32 32 33 33 33 34 34 35 35 36 36 36 >1112223334455666<
+0003400 37 37 37 38 38 38 39 39 39 22 20 3d 3d 0a 20 20 >777888999" ==. <
+0003420 20 77 6f 72 64 54 6f 4e 75 6d 28 22 45 20 7c 20 > wordToNum("E | <
+0003440 4a 20 4e 20 51 20 7c 20 52 20 57 20 58 20 7c 20 >J N Q | R W X | <
+0003460 44 20 53 20 59 20 7c 20 46 20 54 20 7c 20 41 20 >D S Y | F T | A <
+0003500 4d 20 7c 20 43 20 49 20 56 20 7c 20 42 20 4b 20 >M | C I V | B K <
+0003520 55 20 7c 20 4c 20 4f 20 50 20 7c 20 47 20 48 20 >U | L O P | G H <
+0003540 5a 22 29 29 3b 0a 20 61 73 73 65 72 74 28 20 22 >Z"));. assert( "<
+0003560 30 31 31 31 32 32 32 33 33 33 34 34 35 35 36 36 >0111222333445566<
+0003600 36 37 37 37 38 38 38 39 39 39 22 20 3d 3d 20 0a >6777888999" == .<
+0003620 20 20 20 77 6f 72 64 54 6f 4e 75 6d 28 22 65 20 > wordToNum("e <
+0003640 7c 20 6a 20 6e 20 71 20 7c 20 72 20 77 20 78 20 >| j n q | r w x <
+0003660 7c 20 64 20 73 20 79 20 7c 20 66 20 74 20 7c 20 >| d s y | f t | <
+0003700 61 20 6d 20 7c 20 63 20 69 20 76 20 7c 20 62 20 >a m | c i v | b <
+0003720 6b 20 75 20 7c 20 6c 20 6f 20 70 20 7c 20 67 20 >k u | l o p | g <
+0003740 68 20 7a 22 29 29 3b 0a 20 61 73 73 65 72 74 28 >h z"));. assert(<
+0003760 20 22 30 31 32 33 34 35 36 37 38 39 22 20 3d 3d > "0123456789" ==<
+0004000 20 0a 20 20 20 77 6f 72 64 54 6f 4e 75 6d 28 22 > . wordToNum("<
+0004020 30 20 7c 20 20 20 31 20 20 20 7c 20 20 20 32 20 >0 | 1 | 2 <
+0004040 20 20 7c 20 20 20 33 20 20 20 7c 20 20 34 20 20 > | 3 | 4 <
+0004060 7c 20 20 35 20 20 7c 20 20 20 36 20 20 20 7c 20 >| 5 | 6 | <
+0004100 20 20 37 20 20 20 7c 20 20 20 38 20 20 20 7c 20 > 7 | 8 | <
+0004120 20 20 39 22 29 29 3b 0a 7d 0a 0a 76 6f 69 64 20 > 9"));.}..void <
+0004140 6d 61 69 6e 28 20 73 74 72 69 6e 67 5b 5d 20 61 >main( string[] a<
+0004160 72 67 73 20 29 0a 7b 0a 20 20 20 20 2f 2f 20 54 >rgs ).{. // T<
+0004200 68 69 73 20 61 73 73 6f 63 69 61 74 69 76 65 20 >his associative <
+0004220 61 72 72 61 79 20 6d 61 70 73 20 61 20 6e 75 6d >array maps a num<
+0004240 62 65 72 20 74 6f 20 61 6e 20 61 72 72 61 79 20 >ber to an array <
+0004260 6f 66 20 77 6f 72 64 73 2e 20 20 20 20 0a 20 20 >of words. . <
+0004300 20 20 73 74 72 69 6e 67 61 72 72 61 79 5b 73 74 > stringarray[st<
+0004320 72 69 6e 67 5d 20 20 20 20 6e 75 6d 32 77 6f 72 >ring] num2wor<
+0004340 64 73 3b 0a 0a 20 20 20 20 66 6f 72 65 61 63 68 >ds;.. foreach<
+0004360 28 73 74 72 69 6e 67 20 77 6f 72 64 3b 20 6e 65 >(string word; ne<
+0004400 77 20 42 75 66 66 65 72 65 64 46 69 6c 65 28 22 >w BufferedFile("<
+0004420 64 69 63 74 69 6f 6e 61 72 79 2e 74 78 74 22 20 >dictionary.txt" <
+0004440 29 20 29 0a 20 20 20 20 20 20 20 20 6e 75 6d 32 >) ). num2<
+0004460 77 6f 72 64 73 5b 20 77 6f 72 64 54 6f 4e 75 6d >words[ wordToNum<
+0004500 28 77 6f 72 64 29 20 5d 20 7e 3d 20 77 6f 72 64 >(word) ] ~= word<
+0004520 2e 64 75 70 3b 20 20 20 20 20 20 20 20 2f 2f 20 >.dup; // <
+0004540 6d 75 73 74 20 64 75 70 0a 0a 20 20 20 20 2f 2f >must dup.. //<
+0004560 2f 20 46 69 6e 64 73 20 61 6c 6c 20 61 6c 74 65 >/ Finds all alte<
+0004600 72 6e 61 74 69 76 65 73 20 66 6f 72 20 74 68 65 >rnatives for the<
+0004620 20 67 69 76 65 6e 20 6e 75 6d 62 65 72 0a 20 20 > given number. <
+0004640 20 20 2f 2f 2f 20 28 73 68 6f 75 6c 64 20 68 61 > /// (should ha<
+0004660 76 65 20 62 65 65 6e 20 73 74 72 69 70 70 65 64 >ve been stripped<
+0004700 20 66 72 6f 6d 20 6e 6f 6e 2d 64 69 67 69 74 20 > from non-digit <
+0004720 63 68 61 72 61 63 74 65 72 73 29 0a 20 20 20 20 >characters). <
+0004740 73 74 72 69 6e 67 61 72 72 61 79 20 5f 46 69 6e >stringarray _Fin<
+0004760 64 57 6f 72 64 73 28 20 73 74 72 69 6e 67 20 6e >dWords( string n<
+0005000 75 6d 62 65 72 73 2c 20 62 6f 6f 6c 20 64 69 67 >umbers, bool dig<
+0005020 69 74 6f 6b 20 29 0a 20 20 20 20 69 6e 20 7b 0a >itok ). in {.<
+0005040 20 20 20 20 20 20 20 20 61 73 73 65 72 74 28 6e > assert(n<
+0005060 75 6d 62 65 72 73 2e 6c 65 6e 67 74 68 20 3e 20 >umbers.length > <
+0005100 20 30 29 3b 20 20 20 20 0a 20 20 20 20 7d 20 20 > 0); . } <
+0005120 20 20 0a 20 20 20 20 6f 75 74 28 72 65 73 75 6c > . out(resul<
+0005140 74 29 20 7b 0a 20 20 20 20 20 20 20 20 66 6f 72 >t) {. for<
+0005160 65 61 63 68 20 28 61 3b 20 72 65 73 75 6c 74 29 >each (a; result)<
+0005200 0a 20 20 20 20 20 20 20 20 20 20 20 20 61 73 73 >. ass<
+0005220 65 72 74 28 20 77 6f 72 64 54 6f 4e 75 6d 28 61 >ert( wordToNum(a<
+0005240 29 20 3d 3d 20 6e 75 6d 62 65 72 73 20 29 3b 0a >) == numbers );.<
+0005260 20 20 20 20 7d 20 20 20 20 0a 20 20 20 20 62 6f > } . bo<
+0005300 64 79 20 7b 0a 20 20 20 20 20 20 20 20 73 74 72 >dy {. str<
+0005320 69 6e 67 61 72 72 61 79 20 72 65 74 3b 0a 20 20 >ingarray ret;. <
+0005340 20 20 20 20 20 20 62 6f 6f 6c 20 66 6f 75 6e 64 > bool found<
+0005360 77 6f 72 64 20 3d 20 66 61 6c 73 65 3b 0a 20 20 >word = false;. <
+0005400 20 20 20 20 20 20 66 6f 72 20 28 75 69 6e 74 20 > for (uint <
+0005420 74 3d 31 3b 20 74 3c 3d 6e 75 6d 62 65 72 73 2e >t=1; t<=numbers.<
+0005440 6c 65 6e 67 74 68 3b 20 2b 2b 74 29 20 7b 0a 20 >length; ++t) {. <
+0005460 20 20 20 20 20 20 20 20 20 20 20 61 75 74 6f 20 > auto <
+0005500 61 6c 74 65 72 6e 61 74 69 76 65 73 20 3d 20 6e >alternatives = n<
+0005520 75 6d 62 65 72 73 5b 30 2e 2e 74 5d 20 69 6e 20 >umbers[0..t] in <
+0005540 6e 75 6d 32 77 6f 72 64 73 3b 0a 20 20 20 20 20 >num2words;. <
+0005560 20 20 20 20 20 20 20 69 66 20 28 21 61 6c 74 65 > if (!alte<
+0005600 72 6e 61 74 69 76 65 73 29 0a 20 20 20 20 20 20 >rnatives). <
+0005620 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e > contin<
+0005640 75 65 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 >ue;. <
+0005660 66 6f 75 6e 64 77 6f 72 64 20 3d 20 74 72 75 65 >foundword = true<
+0005700 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 >;. if<
+0005720 20 28 6e 75 6d 62 65 72 73 2e 6c 65 6e 67 74 68 > (numbers.length<
+0005740 20 3e 20 20 74 29 20 7b 0a 20 20 20 20 20 20 20 > > t) {. <
+0005760 20 20 20 20 20 20 20 20 20 2f 2f 20 43 6f 6d 62 > // Comb<
+0006000 69 6e 65 20 61 6c 6c 20 63 75 72 72 65 6e 74 20 >ine all current <
+0006020 61 6c 74 65 72 6e 61 74 69 76 65 73 20 77 69 74 >alternatives wit<
+0006040 68 20 61 6c 6c 20 61 6c 74 65 72 6e 61 74 69 76 >h all alternativ<
+0006060 65 73 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 >es . <
+0006100 20 20 20 20 20 20 20 20 2f 2f 20 6f 66 20 74 68 > // of th<
+0006120 65 20 72 65 73 74 20 28 6e 65 78 74 20 70 69 65 >e rest (next pie<
+0006140 63 65 20 63 61 6e 20 73 74 61 72 74 20 77 69 74 >ce can start wit<
+0006160 68 20 61 20 64 69 67 69 74 29 20 20 20 20 20 20 >h a digit) <
+0006200 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 > . <
+0006220 20 20 20 20 20 20 20 20 20 66 6f 72 65 61 63 68 > foreach<
+0006240 20 28 61 32 3b 20 5f 46 69 6e 64 57 6f 72 64 73 > (a2; _FindWords<
+0006260 28 20 6e 75 6d 62 65 72 73 5b 74 2e 2e 24 5d 2c >( numbers[t..$],<
+0006300 20 74 72 75 65 20 20 20 20 20 29 20 29 0a 20 20 > true ) ). <
+0006320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 > <
+0006340 20 20 66 6f 72 65 61 63 68 28 61 31 3b 20 2a 61 > foreach(a1; *a<
+0006360 6c 74 65 72 6e 61 74 69 76 65 73 29 0a 20 20 20 >lternatives). <
+0006400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 > <
+0006420 20 20 20 20 72 65 74 20 7e 3d 20 61 31 20 7e 20 > ret ~= a1 ~ <
+0006440 22 20 22 20 7e 20 61 32 3b 0a 20 20 20 20 20 20 >" " ~ a2;. <
+0006460 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 > }. <
+0006500 20 20 20 20 65 6c 73 65 20 20 20 20 0a 20 20 20 > else . <
+0006520 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 > ret<
+0006540 20 7e 3d 20 2a 61 6c 74 65 72 6e 61 74 69 76 65 > ~= *alternative<
+0006560 73 3b 20 20 20 20 2f 2f 20 61 70 70 65 6e 64 20 >s; // append <
+0006600 74 68 65 73 65 20 61 6c 74 65 72 6e 61 74 69 76 >these alternativ<
+0006620 65 73 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 >es. }. <
+0006640 20 20 20 20 20 2f 2f 20 54 72 79 20 74 6f 20 6b > // Try to k<
+0006660 65 65 70 20 31 20 64 69 67 69 74 2c 20 6f 6e 6c >eep 1 digit, onl<
+0006700 79 20 69 66 20 77 65 27 72 65 20 61 6c 6c 6f 77 >y if we're allow<
+0006720 65 64 20 61 6e 64 20 6e 6f 20 6f 74 68 65 72 0a >ed and no other.<
+0006740 20 20 20 20 20 20 20 20 2f 2f 20 61 6c 74 65 72 > // alter<
+0006760 6e 61 74 69 76 65 73 20 77 65 72 65 20 66 6f 75 >natives were fou<
+0007000 6e 64 0a 20 20 20 20 20 20 20 20 2f 2f 20 54 65 >nd. // Te<
+0007020 73 74 69 6e 67 20 22 72 65 74 2e 6c 65 6e 67 74 >sting "ret.lengt<
+0007040 68 22 20 6d 61 6b 65 73 20 6d 6f 72 65 20 73 65 >h" makes more se<
+0007060 6e 73 65 20 74 68 61 6e 20 74 65 73 74 69 6e 67 >nse than testing<
+0007100 20 22 66 6f 75 6e 64 77 6f 72 64 22 2c 0a 20 20 > "foundword",. <
+0007120 20 20 20 20 20 20 2f 2f 20 62 75 74 20 74 68 65 > // but the<
+0007140 20 6f 74 68 65 72 20 69 6d 70 6c 65 6d 65 6e 74 > other implement<
+0007160 61 74 69 6f 6e 73 20 73 65 65 6d 20 74 6f 20 64 >ations seem to d<
+0007200 6f 20 6a 75 73 74 20 74 68 69 73 2e 0a 20 20 20 >o just this.. <
+0007220 20 20 20 20 20 69 66 20 28 64 69 67 69 74 6f 6b > if (digitok<
+0007240 20 26 26 20 21 66 6f 75 6e 64 77 6f 72 64 29 20 > && !foundword) <
+0007260 7b 20 2f 2f 72 65 74 2e 6c 65 6e 67 74 68 20 3d >{ //ret.length =<
+0007300 3d 20 30 20 20 0a 20 20 20 20 20 20 20 20 20 20 >= 0 . <
+0007320 20 20 69 66 28 6e 75 6d 62 65 72 73 2e 6c 65 6e > if(numbers.len<
+0007340 67 74 68 20 3e 20 20 31 29 20 7b 0a 20 20 20 20 >gth > 1) {. <
+0007360 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43 > // C<
+0007400 6f 6d 62 69 6e 65 20 31 20 64 69 67 69 74 20 77 >ombine 1 digit w<
+0007420 69 74 68 20 61 6c 6c 20 61 6c 74 65 6e 61 74 69 >ith all altenati<
+0007440 76 65 73 20 66 72 6f 6d 20 74 68 65 20 72 65 73 >ves from the res<
+0007460 74 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 20 >t . <
+0007500 20 20 20 20 20 20 2f 2f 20 28 6e 65 78 74 20 70 > // (next p<
+0007520 69 65 63 65 20 63 61 6e 20 6e 6f 74 20 73 74 61 >iece can not sta<
+0007540 72 74 20 77 69 74 68 20 61 20 64 69 67 69 74 29 >rt with a digit)<
+0007560 20 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 > . <
+0007600 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 65 61 > forea<
+0007620 63 68 20 28 61 3b 20 5f 46 69 6e 64 57 6f 72 64 >ch (a; _FindWord<
+0007640 73 28 20 6e 75 6d 62 65 72 73 5b 31 2e 2e 24 5d >s( numbers[1..$]<
+0007660 2c 20 66 61 6c 73 65 20 29 20 29 0a 20 20 20 20 >, false ) ). <
+0007700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 > <
+0007720 72 65 74 20 7e 3d 20 6e 75 6d 62 65 72 73 5b 30 >ret ~= numbers[0<
+0007740 2e 2e 31 5d 20 7e 20 22 20 22 20 7e 20 61 3b 0a >..1] ~ " " ~ a;.<
+0007760 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 20 20 > } <
+0010000 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6c > . el<
+0010020 73 65 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 >se . <
+0010040 20 20 20 20 20 20 20 72 65 74 20 7e 3d 20 6e 75 > ret ~= nu<
+0010060 6d 62 65 72 73 5b 30 2e 2e 31 5d 3b 20 20 20 20 >mbers[0..1]; <
+0010100 2f 2f 20 6a 75 73 74 20 61 70 70 65 6e 64 20 74 >// just append t<
+0010120 68 69 73 20 64 69 67 69 74 20 20 20 20 20 20 20 >his digit <
+0010140 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 7d > . }<
+0010160 20 20 20 20 0a 20 20 20 20 20 20 20 20 72 65 74 > . ret<
+0010200 75 72 6e 20 72 65 74 3b 0a 20 20 20 20 7d 0a 0a >urn ret;. }..<
+0010220 20 20 20 20 2f 2f 2f 20 28 54 68 69 73 20 66 75 > /// (This fu<
+0010240 6e 63 74 69 6f 6e 20 77 61 73 20 69 6e 6c 69 6e >nction was inlin<
+0010260 65 64 20 69 6e 20 74 68 65 20 6f 72 69 67 69 6e >ed in the origin<
+0010300 61 6c 20 70 72 6f 67 72 61 6d 29 20 0a 20 20 20 >al program) . <
+0010320 20 2f 2f 2f 20 46 69 6e 64 73 20 61 6c 6c 20 61 > /// Finds all a<
+0010340 6c 74 65 72 6e 61 74 69 76 65 73 20 66 6f 72 20 >lternatives for <
+0010360 74 68 65 20 67 69 76 65 6e 20 70 68 6f 6e 65 20 >the given phone <
+0010400 6e 75 6d 62 65 72 20 0a 20 20 20 20 2f 2f 2f 20 >number . /// <
+0010420 52 65 74 75 72 6e 73 3a 20 61 72 72 61 79 20 6f >Returns: array o<
+0010440 66 20 73 74 72 69 6e 67 73 20 0a 20 20 20 20 73 >f strings . s<
+0010460 74 72 69 6e 67 61 72 72 61 79 20 46 69 6e 64 57 >tringarray FindW<
+0010500 6f 72 64 73 28 20 73 74 72 69 6e 67 20 70 68 6f >ords( string pho<
+0010520 6e 65 5f 6e 75 6d 62 65 72 20 29 0a 20 20 20 20 >ne_number ). <
+0010540 7b 0a 20 20 20 20 20 20 20 20 69 66 20 28 21 70 >{. if (!p<
+0010560 68 6f 6e 65 5f 6e 75 6d 62 65 72 2e 6c 65 6e 67 >hone_number.leng<
+0010600 74 68 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 >th). <
+0010620 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0a 20 20 20 >return null;. <
+0010640 20 20 20 20 20 2f 2f 20 53 74 72 69 70 20 74 68 > // Strip th<
+0010660 65 20 6e 6f 6e 2d 64 69 67 69 74 20 63 68 61 72 >e non-digit char<
+0010700 61 63 74 65 72 73 20 66 72 6f 6d 20 74 68 65 20 >acters from the <
+0010720 70 68 6f 6e 65 20 6e 75 6d 62 65 72 2c 20 61 6e >phone number, an<
+0010740 64 0a 20 20 20 20 20 20 20 20 2f 2f 20 70 61 73 >d. // pas<
+0010760 73 20 69 74 20 74 6f 20 74 68 65 20 72 65 63 75 >s it to the recu<
+0011000 72 73 69 76 65 20 66 75 6e 63 74 69 6f 6e 20 28 >rsive function (<
+0011020 6c 65 61 64 69 6e 67 20 64 69 67 69 74 20 69 73 >leading digit is<
+0011040 20 61 6c 6c 6f 77 65 64 29 0a 20 20 20 20 20 20 > allowed). <
+0011060 20 20 72 65 74 75 72 6e 20 5f 46 69 6e 64 57 6f > return _FindWo<
+0011100 72 64 73 28 20 73 74 72 69 70 4e 6f 6e 44 69 67 >rds( stripNonDig<
+0011120 69 74 28 70 68 6f 6e 65 5f 6e 75 6d 62 65 72 29 >it(phone_number)<
+0011140 2c 20 74 72 75 65 20 29 3b 20 20 20 20 0a 20 20 >, true ); . <
+0011160 20 20 7d 20 20 20 20 0a 20 20 20 20 0a 20 20 20 > } . . <
+0011200 20 2f 2f 20 52 65 61 64 20 74 68 65 20 70 68 6f > // Read the pho<
+0011220 6e 65 20 6e 75 6d 62 65 72 73 20 20 20 20 20 0a >ne numbers .<
+0011240 20 20 20 20 66 6f 72 65 61 63 68 28 73 74 72 69 > foreach(stri<
+0011260 6e 67 20 70 68 6f 6e 65 3b 20 6e 65 77 20 42 75 >ng phone; new Bu<
+0011300 66 66 65 72 65 64 46 69 6c 65 28 22 69 6e 70 75 >fferedFile("inpu<
+0011320 74 2e 74 78 74 22 20 20 20 29 20 29 0a 20 20 20 >t.txt" ) ). <
+0011340 20 20 20 20 20 66 6f 72 65 61 63 68 28 61 6c 74 > foreach(alt<
+0011360 65 72 6e 61 74 69 76 65 3b 20 46 69 6e 64 57 6f >ernative; FindWo<
+0011400 72 64 73 28 20 70 68 6f 6e 65 20 29 20 29 0a 20 >rds( phone ) ). <
+0011420 20 20 20 20 20 20 20 20 20 20 20 77 72 69 74 65 > write<
+0011440 66 6c 6e 28 70 68 6f 6e 65 2c 20 22 3a 20 22 2c >fln(phone, ": ",<
+0011460 20 61 6c 74 65 72 6e 61 74 69 76 65 20 29 3b 0a > alternative );.<
+0011500 7d 0a 0a >}..<
+0011503