Fixes / changes to re-run against the google login data
authorBrett Parker <iDunno@sommitrealweird.co.uk>
Wed, 8 Dec 2021 00:05:06 +0000 (00:05 +0000)
committerBrett Parker <iDunno@sommitrealweird.co.uk>
Wed, 8 Dec 2021 00:05:06 +0000 (00:05 +0000)
day01/get_fuel_required.sh [changed mode: 0644->0755]
day01/input-google.txt [new file with mode: 0644]
day02/computer.sh [changed mode: 0644->0755]
day02/input-google.txt [new file with mode: 0644]
day03/input-google.txt [new file with mode: 0644]
day03/wires.sh [changed mode: 0644->0755]
day03/wires_2.sh [changed mode: 0644->0755]
day04/get_valid_passwords.sh [changed mode: 0644->0755]
day04/input-google.txt [new file with mode: 0644]
day04/input.txt [new file with mode: 0644]
day04/invalid.txt [deleted file]

old mode 100644 (file)
new mode 100755 (executable)
index 18e19d5..9bb4d4b
@@ -1,6 +1,8 @@
 #!/bin/bash
 
 #!/bin/bash
 
-exec 3<input.txt
+filename=${1:-input.txt}
+
+exec 3<"$filename"
 
 fuel_total=0
 fuel_and_extra=0
 
 fuel_total=0
 fuel_and_extra=0
diff --git a/day01/input-google.txt b/day01/input-google.txt
new file mode 100644 (file)
index 0000000..154bf89
--- /dev/null
@@ -0,0 +1,100 @@
+81157
+80969
+113477
+81295
+70537
+90130
+123804
+94276
+139327
+123719
+107814
+122142
+61204
+135309
+62810
+85750
+132568
+76450
+122948
+124649
+102644
+80055
+60517
+125884
+125708
+99051
+137158
+100450
+55239
+66758
+123848
+88711
+113047
+125528
+59285
+103978
+93047
+98038
+143019
+92031
+54353
+115597
+105629
+80411
+134966
+135473
+77357
+65776
+71096
+66926
+97853
+80349
+141914
+127221
+102492
+143587
+111493
+84711
+59826
+135652
+103334
+138211
+65088
+82244
+95011
+78760
+56691
+62070
+146134
+81650
+76904
+98838
+89629
+59950
+50390
+78616
+99731
+53831
+81273
+103980
+58485
+137684
+142457
+111050
+141916
+55567
+141945
+100794
+136425
+77911
+137114
+77450
+132048
+143066
+136805
+114135
+61565
+67286
+85512
+137493
old mode 100644 (file)
new mode 100755 (executable)
index d240dc6..fdb0c57
@@ -1,6 +1,8 @@
 #!/bin/bash
 
 #!/bin/bash
 
-exec 3<input.txt
+filename=${1:-input.txt}
+
+exec 3<"$filename"
 
 OLDIFS=$IFS
 IFS="," read -u 3 -a orig_data
 
 OLDIFS=$IFS
 IFS="," read -u 3 -a orig_data
diff --git a/day02/input-google.txt b/day02/input-google.txt
new file mode 100644 (file)
index 0000000..480e46a
--- /dev/null
@@ -0,0 +1 @@
+1,0,0,3,1,1,2,3,1,3,4,3,1,5,0,3,2,9,1,19,1,19,5,23,1,23,5,27,2,27,10,31,1,31,9,35,1,35,5,39,1,6,39,43,2,9,43,47,1,5,47,51,2,6,51,55,1,5,55,59,2,10,59,63,1,63,6,67,2,67,6,71,2,10,71,75,1,6,75,79,2,79,9,83,1,83,5,87,1,87,9,91,1,91,9,95,1,10,95,99,1,99,13,103,2,6,103,107,1,107,5,111,1,6,111,115,1,9,115,119,1,119,9,123,2,123,10,127,1,6,127,131,2,131,13,135,1,13,135,139,1,9,139,143,1,9,143,147,1,147,13,151,1,151,9,155,1,155,13,159,1,6,159,163,1,13,163,167,1,2,167,171,1,171,13,0,99,2,0,14,0
diff --git a/day03/input-google.txt b/day03/input-google.txt
new file mode 100644 (file)
index 0000000..2db8eb4
--- /dev/null
@@ -0,0 +1,2 @@
+R999,U626,R854,D200,R696,D464,R54,D246,L359,U57,R994,D813,L889,U238,L165,U970,L773,D904,L693,U512,R126,D421,R732,D441,R453,D349,R874,D931,R103,D794,R934,U326,L433,D593,L984,U376,R947,U479,R533,U418,R117,D395,L553,D647,R931,D665,L176,U591,L346,D199,L855,D324,L474,U251,R492,D567,L97,D936,L683,U192,R198,U706,L339,U66,R726,D102,R274,U351,R653,D602,L695,U921,R890,D654,R981,U351,R15,U672,R856,D319,R102,D234,R248,U169,L863,U375,L412,U75,L511,U298,L303,U448,R445,U638,L351,D312,R768,D303,L999,D409,L746,U266,L16,U415,L951,D763,L976,U342,L505,U770,L228,D396,L992,U3,R243,D794,L496,U611,R587,U772,L306,D119,L470,D490,L336,U518,L734,D654,L150,U581,L874,U691,L243,U94,L9,D582,L402,U563,R468,U96,L311,D10,R232,U762,R630,D1,L674,U685,R240,D907,R394,U703,L64,U397,L810,D272,L996,D954,R797,U789,R790,D526,R103,D367,R143,D41,L539,D735,R51,D172,L33,U241,R814,D981,R748,D699,L716,U647,L381,D351,L381,D121,L52,U601,R515,U713,L404,U45,R362,U670,L235,U102,R373,U966,L362,U218,R280,U951,R371,U378,L10,U670,R958,D423,L740,U888,R235,U899,L387,U167,R392,D19,L330,D916,R766,D471,L708,D83,R749,D696,L50,D159,R828,U479,L980,D613,L182,D875,L307,U472,L317,U999,R435,D364,R737,U550,L233,U190,L501,U610,R433,U470,L801,U52,L393,D596,L378,U220,L967,D807,R357,D179,L731,D54,L804,D865,L994,D151,L181,U239,R794,D378,L487,U408,R817,U809,R678,D599,L564,U480,R525,D189,L641,D771,L514,U72,L248,D334,L859,D318,R590,D571,R453,U732,R911,U632,R992,D80,R490,D234,L710,U816,L585,U180,L399,D238,L103,U605,R993,D539,R330
+L996,U383,L962,U100,L836,D913,R621,U739,R976,D397,L262,D151,L12,U341,R970,U123,L713,U730,L52,D223,L190,D81,R484,D777,R374,U755,R640,D522,R603,D815,R647,U279,R810,U942,R314,D19,L938,U335,R890,U578,R273,U338,R186,D271,L230,U90,R512,U672,R666,D328,L970,U17,R368,D302,L678,D508,L481,U12,L783,D409,L315,D579,L517,D729,R961,D602,R253,D746,R418,D972,R195,D270,L46,D128,L124,U875,R632,D788,L576,U695,R159,U704,R599,D597,R28,D703,L18,D879,L417,U633,L56,U302,R289,U916,R820,D55,R213,U712,R250,D265,L935,D171,L680,U738,L361,D939,R547,D606,L255,U880,R968,U255,R902,D624,L251,U452,L412,D60,L996,D140,L971,U196,R796,D761,L54,U54,L98,D758,L521,U578,L861,U365,L901,D495,L234,D124,L121,D329,L38,U481,L491,D938,L840,D311,L993,D954,R654,U925,L528,D891,L994,D681,L879,D476,L933,U515,L292,U626,R348,D963,L145,U230,L114,D11,R651,D929,R318,D672,R125,D827,L590,U338,L755,D925,L577,D52,R131,D465,R657,D288,R22,D363,R162,D545,L904,D457,R987,D389,L566,D931,L773,D53,R162,U271,L475,U666,L594,U733,R279,D847,R359,U320,R450,D704,L698,D173,R35,D267,L165,D66,L301,U879,R862,U991,R613,D489,L326,D393,R915,U718,R667,U998,R554,U199,R300,U693,R753,U938,R444,U12,L844,D912,R297,D668,R366,U710,L821,U384,R609,D493,R233,U898,R407,U683,R122,U790,L1,U834,L76,U572,R220,U752,L728,D85,L306,D805,R282,U507,R414,D687,L577,U174,L211,U308,L15,U483,R741,D828,L588,D192,L409,D605,L931,U260,L239,D424,L846,U429,L632,U122,L266,D544,R248,U188,R465,U721,R621,U3,L884,U361,L322,U504,R999,U381,R327,U555,L467,D849,R748,U175,R356
old mode 100644 (file)
new mode 100755 (executable)
index b94ef0b..2c00afd
@@ -15,8 +15,10 @@ set -e
 #wire_1=(R98 U47 R26 D63 R33 U87 L62 D20 R33 U53 R51)
 #wire_2=(U98 R91 D20 R16 D67 R40 U7 R15 U6 R7)
 
 #wire_1=(R98 U47 R26 D63 R33 U87 L62 D20 R33 U53 R51)
 #wire_2=(U98 R91 D20 R16 D67 R40 U7 R15 U6 R7)
 
+filename=${1:-input.txt}
+
 # read in data from file instead
 # read in data from file instead
-exec 3<input.txt
+exec 3<"$filename"
 IFS="," read -u 3 -a wire_1
 IFS="," read -u 3 -a wire_2
 
 IFS="," read -u 3 -a wire_1
 IFS="," read -u 3 -a wire_2
 
old mode 100644 (file)
new mode 100755 (executable)
index 1e86e0c..d4cba38
@@ -15,8 +15,10 @@ set -e
 #wire_1=(R98 U47 R26 D63 R33 U87 L62 D20 R33 U53 R51)
 #wire_2=(U98 R91 D20 R16 D67 R40 U7 R15 U6 R7)
 
 #wire_1=(R98 U47 R26 D63 R33 U87 L62 D20 R33 U53 R51)
 #wire_2=(U98 R91 D20 R16 D67 R40 U7 R15 U6 R7)
 
+filename=${1:-input.txt}
+
 # read in data from file instead
 # read in data from file instead
-exec 3<input.txt
+exec 3<"$filename"
 IFS="," read -u 3 -a wire_1
 IFS="," read -u 3 -a wire_2
 
 IFS="," read -u 3 -a wire_1
 IFS="," read -u 3 -a wire_2
 
old mode 100644 (file)
new mode 100755 (executable)
index 9dd1562..7410186
@@ -1,12 +1,16 @@
 #!/bin/bash
 
 #!/bin/bash
 
-start_password=254032
-end_password=789860
+filename=${1:-input.txt}
+exec 3<"${filename}"
+
+read -u 3 line
+
+start_password=${line%-*}
+end_password=${line#*-}
 
 check_valid_1() {
     cur_password=$1
     last_val=${cur_password:0:1}
 
 check_valid_1() {
     cur_password=$1
     last_val=${cur_password:0:1}
-    val=$last_val
     got_dupe=0
     if [ $cur_password -ge $start_password ] && [ $cur_password -le $end_password ]; then
         for (( a=1; a<${#cur_password}; a++ )); do
     got_dupe=0
     if [ $cur_password -ge $start_password ] && [ $cur_password -le $end_password ]; then
         for (( a=1; a<${#cur_password}; a++ )); do
@@ -78,6 +82,11 @@ get_next() {
         val=${temp_password:$a:1}
         if [ $val -lt $last_val ]; then
             val=$last_val
         val=${temp_password:$a:1}
         if [ $val -lt $last_val ]; then
             val=$last_val
+            for (( b=$a; b<${#temp_password}; b++ )); do
+                new_password+=$val
+            done
+            echo "$new_password"
+            return 0
         fi
         new_password+=$val
         last_val=$val
         fi
         new_password+=$val
         last_val=$val
@@ -90,18 +99,20 @@ cur_password=$start_password
 valid_passwords=0
 valid_passwords_2=0
 while [ $cur_password -le $end_password ]; do
 valid_passwords=0
 valid_passwords_2=0
 while [ $cur_password -le $end_password ]; do
-    echo -n "$cur_password: "
+    #echo -n "$cur_password: "
     if ( check_valid_1 $cur_password ); then
     if ( check_valid_1 $cur_password ); then
-        echo -n valid
+        #echo -n valid
         valid_passwords=$((valid_passwords+1))
         if ( check_valid_2 $cur_password ); then
         valid_passwords=$((valid_passwords+1))
         if ( check_valid_2 $cur_password ); then
-            echo " valid"
+            #echo " valid"
             valid_passwords_2=$((valid_passwords_2+1))
         else
             valid_passwords_2=$((valid_passwords_2+1))
         else
-            echo " invalid"
+            #echo " invalid"
+            true
         fi
     else
         fi
     else
-        echo invalid
+        #echo invalid
+        true
     fi
     cur_password=$(get_next $cur_password)
 done
     fi
     cur_password=$(get_next $cur_password)
 done
diff --git a/day04/input-google.txt b/day04/input-google.txt
new file mode 100644 (file)
index 0000000..cab06a4
--- /dev/null
@@ -0,0 +1,2 @@
+236491-713787
+
diff --git a/day04/input.txt b/day04/input.txt
new file mode 100644 (file)
index 0000000..ab71854
--- /dev/null
@@ -0,0 +1,2 @@
+254032-789860
+
diff --git a/day04/invalid.txt b/day04/invalid.txt
deleted file mode 100644 (file)
index 158d340..0000000
+++ /dev/null
@@ -1,758 +0,0 @@
-255555: valid invalid
-255556: valid invalid
-255557: valid invalid
-255558: valid invalid
-255559: valid invalid
-255566: valid invalid
-255567: valid invalid
-255568: valid invalid
-255569: valid invalid
-255577: valid invalid
-255578: valid invalid
-255579: valid invalid
-255588: valid invalid
-255589: valid invalid
-255599: valid invalid
-255666: valid invalid
-255667: valid invalid
-255668: valid invalid
-255669: valid invalid
-255678: valid invalid
-255679: valid invalid
-255689: valid invalid
-255777: valid invalid
-255778: valid invalid
-255779: valid invalid
-255789: valid invalid
-255888: valid invalid
-255889: valid invalid
-255999: valid invalid
-256667: valid invalid
-256668: valid invalid
-256669: valid invalid
-256678: valid invalid
-256679: valid invalid
-256689: valid invalid
-256777: valid invalid
-256778: valid invalid
-256779: valid invalid
-256888: valid invalid
-256889: valid invalid
-256999: valid invalid
-257778: valid invalid
-257779: valid invalid
-257789: valid invalid
-257888: valid invalid
-257889: valid invalid
-257999: valid invalid
-258889: valid invalid
-258999: valid invalid
-266666: valid invalid
-266667: valid invalid
-266668: valid invalid
-266669: valid invalid
-266677: valid invalid
-266678: valid invalid
-266679: valid invalid
-266688: valid invalid
-266689: valid invalid
-266699: valid invalid
-266777: valid invalid
-266778: valid invalid
-266779: valid invalid
-266789: valid invalid
-266888: valid invalid
-266889: valid invalid
-266999: valid invalid
-267778: valid invalid
-267779: valid invalid
-267789: valid invalid
-267888: valid invalid
-267889: valid invalid
-267999: valid invalid
-268889: valid invalid
-268999: valid invalid
-277777: valid invalid
-277778: valid invalid
-277779: valid invalid
-277788: valid invalid
-277789: valid invalid
-277799: valid invalid
-277888: valid invalid
-277889: valid invalid
-277999: valid invalid
-278889: valid invalid
-278999: valid invalid
-288888: valid invalid
-288889: valid invalid
-288899: valid invalid
-288999: valid invalid
-299999: valid invalid
-333334: valid invalid
-333335: valid invalid
-333336: valid invalid
-333337: valid invalid
-333338: valid invalid
-333339: valid invalid
-333345: valid invalid
-333346: valid invalid
-333347: valid invalid
-333348: valid invalid
-333349: valid invalid
-333356: valid invalid
-333357: valid invalid
-333358: valid invalid
-333359: valid invalid
-333367: valid invalid
-333368: valid invalid
-333369: valid invalid
-333378: valid invalid
-333379: valid invalid
-333389: valid invalid
-333444: valid invalid
-333445: valid invalid
-333446: valid invalid
-333447: valid invalid
-333448: valid invalid
-333449: valid invalid
-333455: valid invalid
-333456: valid invalid
-333457: valid invalid
-333458: valid invalid
-333459: valid invalid
-333466: valid invalid
-333467: valid invalid
-333468: valid invalid
-333469: valid invalid
-333477: valid invalid
-333478: valid invalid
-333479: valid invalid
-333488: valid invalid
-333489: valid invalid
-333499: valid invalid
-333555: valid invalid
-333556: valid invalid
-333557: valid invalid
-333558: valid invalid
-333559: valid invalid
-333566: valid invalid
-333567: valid invalid
-333568: valid invalid
-333569: valid invalid
-333577: valid invalid
-333578: valid invalid
-333579: valid invalid
-333588: valid invalid
-333589: valid invalid
-333599: valid invalid
-333666: valid invalid
-333667: valid invalid
-333668: valid invalid
-333669: valid invalid
-333677: valid invalid
-333678: valid invalid
-333679: valid invalid
-333688: valid invalid
-333689: valid invalid
-333699: valid invalid
-333777: valid invalid
-333778: valid invalid
-333779: valid invalid
-333788: valid invalid
-333789: valid invalid
-333799: valid invalid
-333888: valid invalid
-333889: valid invalid
-333899: valid invalid
-333999: valid invalid
-334445: valid invalid
-334446: valid invalid
-334447: valid invalid
-334448: valid invalid
-334449: valid invalid
-334456: valid invalid
-334457: valid invalid
-334458: valid invalid
-334459: valid invalid
-334467: valid invalid
-334468: valid invalid
-334469: valid invalid
-334478: valid invalid
-334479: valid invalid
-334489: valid invalid
-334555: valid invalid
-334556: valid invalid
-334557: valid invalid
-334558: valid invalid
-334559: valid invalid
-334567: valid invalid
-334568: valid invalid
-334569: valid invalid
-334578: valid invalid
-334579: valid invalid
-334589: valid invalid
-334666: valid invalid
-334667: valid invalid
-334668: valid invalid
-334669: valid invalid
-334678: valid invalid
-334679: valid invalid
-334689: valid invalid
-334777: valid invalid
-334778: valid invalid
-334779: valid invalid
-334789: valid invalid
-334888: valid invalid
-334889: valid invalid
-334999: valid invalid
-335556: valid invalid
-335557: valid invalid
-335558: valid invalid
-335559: valid invalid
-335567: valid invalid
-335568: valid invalid
-335569: valid invalid
-335578: valid invalid
-335579: valid invalid
-335589: valid invalid
-335666: valid invalid
-335667: valid invalid
-335668: valid invalid
-335669: valid invalid
-335678: valid invalid
-335679: valid invalid
-335689: valid invalid
-335777: valid invalid
-335778: valid invalid
-335779: valid invalid
-335789: valid invalid
-335888: valid invalid
-335889: valid invalid
-335999: valid invalid
-336667: valid invalid
-336668: valid invalid
-336669: valid invalid
-336678: valid invalid
-336679: valid invalid
-336689: valid invalid
-336777: valid invalid
-336778: valid invalid
-336779: valid invalid
-336789: valid invalid
-336888: valid invalid
-336889: valid invalid
-336999: valid invalid
-337778: valid invalid
-337779: valid invalid
-337789: valid invalid
-337888: valid invalid
-337889: valid invalid
-337999: valid invalid
-338889: valid invalid
-338999: valid invalid
-344444: valid invalid
-344445: valid invalid
-344446: valid invalid
-344447: valid invalid
-344448: valid invalid
-344449: valid invalid
-344455: valid invalid
-344456: valid invalid
-344457: valid invalid
-344458: valid invalid
-344459: valid invalid
-344466: valid invalid
-344467: valid invalid
-344468: valid invalid
-344469: valid invalid
-344477: valid invalid
-344478: valid invalid
-344479: valid invalid
-344488: valid invalid
-344489: valid invalid
-344499: valid invalid
-344555: valid invalid
-344556: valid invalid
-344557: valid invalid
-344558: valid invalid
-344559: valid invalid
-344567: valid invalid
-344568: valid invalid
-344569: valid invalid
-344578: valid invalid
-344579: valid invalid
-344589: valid invalid
-344666: valid invalid
-344667: valid invalid
-344668: valid invalid
-344669: valid invalid
-344678: valid invalid
-344679: valid invalid
-344689: valid invalid
-344777: valid invalid
-344778: valid invalid
-344779: valid invalid
-344789: valid invalid
-344888: valid invalid
-344889: valid invalid
-344999: valid invalid
-345556: valid invalid
-345557: valid invalid
-345558: valid invalid
-345559: valid invalid
-345567: valid invalid
-345568: valid invalid
-345569: valid invalid
-345578: valid invalid
-345579: valid invalid
-345589: valid invalid
-345666: valid invalid
-345667: valid invalid
-345668: valid invalid
-345669: valid invalid
-345777: valid invalid
-345778: valid invalid
-345779: valid invalid
-345888: valid invalid
-345889: valid invalid
-345999: valid invalid
-346667: valid invalid
-346668: valid invalid
-346669: valid invalid
-346678: valid invalid
-346679: valid invalid
-346689: valid invalid
-346777: valid invalid
-346778: valid invalid
-346779: valid invalid
-346888: valid invalid
-346889: valid invalid
-346999: valid invalid
-347778: valid invalid
-347779: valid invalid
-347789: valid invalid
-347888: valid invalid
-347889: valid invalid
-347999: valid invalid
-348889: valid invalid
-348999: valid invalid
-355555: valid invalid
-355556: valid invalid
-355557: valid invalid
-355558: valid invalid
-355559: valid invalid
-355566: valid invalid
-355567: valid invalid
-355568: valid invalid
-355569: valid invalid
-355577: valid invalid
-355578: valid invalid
-355579: valid invalid
-355588: valid invalid
-355589: valid invalid
-355599: valid invalid
-355666: valid invalid
-355667: valid invalid
-355668: valid invalid
-355669: valid invalid
-355678: valid invalid
-355679: valid invalid
-355689: valid invalid
-355777: valid invalid
-355778: valid invalid
-355779: valid invalid
-355789: valid invalid
-355888: valid invalid
-355889: valid invalid
-355999: valid invalid
-356667: valid invalid
-356668: valid invalid
-356669: valid invalid
-356678: valid invalid
-356679: valid invalid
-356689: valid invalid
-356777: valid invalid
-356778: valid invalid
-356779: valid invalid
-356888: valid invalid
-356889: valid invalid
-356999: valid invalid
-357778: valid invalid
-357779: valid invalid
-357789: valid invalid
-357888: valid invalid
-357889: valid invalid
-357999: valid invalid
-358889: valid invalid
-358999: valid invalid
-366666: valid invalid
-366667: valid invalid
-366668: valid invalid
-366669: valid invalid
-366677: valid invalid
-366678: valid invalid
-366679: valid invalid
-366688: valid invalid
-366689: valid invalid
-366699: valid invalid
-366777: valid invalid
-366778: valid invalid
-366779: valid invalid
-366789: valid invalid
-366888: valid invalid
-366889: valid invalid
-366999: valid invalid
-367778: valid invalid
-367779: valid invalid
-367789: valid invalid
-367888: valid invalid
-367889: valid invalid
-367999: valid invalid
-368889: valid invalid
-368999: valid invalid
-377777: valid invalid
-377778: valid invalid
-377779: valid invalid
-377788: valid invalid
-377789: valid invalid
-377799: valid invalid
-377888: valid invalid
-377889: valid invalid
-377999: valid invalid
-378889: valid invalid
-378999: valid invalid
-388888: valid invalid
-388889: valid invalid
-388899: valid invalid
-388999: valid invalid
-399999: valid invalid
-444445: valid invalid
-444446: valid invalid
-444447: valid invalid
-444448: valid invalid
-444449: valid invalid
-444456: valid invalid
-444457: valid invalid
-444458: valid invalid
-444459: valid invalid
-444467: valid invalid
-444468: valid invalid
-444469: valid invalid
-444478: valid invalid
-444479: valid invalid
-444489: valid invalid
-444555: valid invalid
-444556: valid invalid
-444557: valid invalid
-444558: valid invalid
-444559: valid invalid
-444566: valid invalid
-444567: valid invalid
-444568: valid invalid
-444569: valid invalid
-444577: valid invalid
-444578: valid invalid
-444579: valid invalid
-444588: valid invalid
-444589: valid invalid
-444599: valid invalid
-444666: valid invalid
-444667: valid invalid
-444668: valid invalid
-444669: valid invalid
-444677: valid invalid
-444678: valid invalid
-444679: valid invalid
-444688: valid invalid
-444689: valid invalid
-444699: valid invalid
-444777: valid invalid
-444778: valid invalid
-444779: valid invalid
-444788: valid invalid
-444789: valid invalid
-444799: valid invalid
-444888: valid invalid
-444889: valid invalid
-444899: valid invalid
-444999: valid invalid
-445556: valid invalid
-445557: valid invalid
-445558: valid invalid
-445559: valid invalid
-445567: valid invalid
-445568: valid invalid
-445569: valid invalid
-445578: valid invalid
-445579: valid invalid
-445589: valid invalid
-445666: valid invalid
-445667: valid invalid
-445668: valid invalid
-445669: valid invalid
-445678: valid invalid
-445679: valid invalid
-445689: valid invalid
-445777: valid invalid
-445778: valid invalid
-445779: valid invalid
-445789: valid invalid
-445888: valid invalid
-445889: valid invalid
-445999: valid invalid
-446667: valid invalid
-446668: valid invalid
-446669: valid invalid
-446678: valid invalid
-446679: valid invalid
-446689: valid invalid
-446777: valid invalid
-446778: valid invalid
-446779: valid invalid
-446789: valid invalid
-446888: valid invalid
-446889: valid invalid
-446999: valid invalid
-447778: valid invalid
-447779: valid invalid
-447789: valid invalid
-447888: valid invalid
-447889: valid invalid
-447999: valid invalid
-448889: valid invalid
-448999: valid invalid
-455555: valid invalid
-455556: valid invalid
-455557: valid invalid
-455558: valid invalid
-455559: valid invalid
-455566: valid invalid
-455567: valid invalid
-455568: valid invalid
-455569: valid invalid
-455577: valid invalid
-455578: valid invalid
-455579: valid invalid
-455588: valid invalid
-455589: valid invalid
-455599: valid invalid
-455666: valid invalid
-455667: valid invalid
-455668: valid invalid
-455669: valid invalid
-455678: valid invalid
-455679: valid invalid
-455689: valid invalid
-455777: valid invalid
-455778: valid invalid
-455779: valid invalid
-455789: valid invalid
-455888: valid invalid
-455889: valid invalid
-455999: valid invalid
-456667: valid invalid
-456668: valid invalid
-456669: valid invalid
-456678: valid invalid
-456679: valid invalid
-456689: valid invalid
-456777: valid invalid
-456778: valid invalid
-456779: valid invalid
-456888: valid invalid
-456889: valid invalid
-456999: valid invalid
-457778: valid invalid
-457779: valid invalid
-457789: valid invalid
-457888: valid invalid
-457889: valid invalid
-457999: valid invalid
-458889: valid invalid
-458999: valid invalid
-466666: valid invalid
-466667: valid invalid
-466668: valid invalid
-466669: valid invalid
-466677: valid invalid
-466678: valid invalid
-466679: valid invalid
-466688: valid invalid
-466689: valid invalid
-466699: valid invalid
-466777: valid invalid
-466778: valid invalid
-466779: valid invalid
-466789: valid invalid
-466888: valid invalid
-466889: valid invalid
-466999: valid invalid
-467778: valid invalid
-467779: valid invalid
-467789: valid invalid
-467888: valid invalid
-467889: valid invalid
-467999: valid invalid
-468889: valid invalid
-468999: valid invalid
-477777: valid invalid
-477778: valid invalid
-477779: valid invalid
-477788: valid invalid
-477789: valid invalid
-477799: valid invalid
-477888: valid invalid
-477889: valid invalid
-477999: valid invalid
-478889: valid invalid
-478999: valid invalid
-488888: valid invalid
-488889: valid invalid
-488899: valid invalid
-488999: valid invalid
-499999: valid invalid
-555556: valid invalid
-555557: valid invalid
-555558: valid invalid
-555559: valid invalid
-555567: valid invalid
-555568: valid invalid
-555569: valid invalid
-555578: valid invalid
-555579: valid invalid
-555589: valid invalid
-555666: valid invalid
-555667: valid invalid
-555668: valid invalid
-555669: valid invalid
-555677: valid invalid
-555678: valid invalid
-555679: valid invalid
-555688: valid invalid
-555689: valid invalid
-555699: valid invalid
-555777: valid invalid
-555778: valid invalid
-555779: valid invalid
-555788: valid invalid
-555789: valid invalid
-555799: valid invalid
-555888: valid invalid
-555889: valid invalid
-555899: valid invalid
-555999: valid invalid
-556667: valid invalid
-556668: valid invalid
-556669: valid invalid
-556678: valid invalid
-556679: valid invalid
-556689: valid invalid
-556777: valid invalid
-556778: valid invalid
-556779: valid invalid
-556789: valid invalid
-556888: valid invalid
-556889: valid invalid
-556999: valid invalid
-557778: valid invalid
-557779: valid invalid
-557789: valid invalid
-557888: valid invalid
-557889: valid invalid
-557999: valid invalid
-558889: valid invalid
-558999: valid invalid
-566666: valid invalid
-566667: valid invalid
-566668: valid invalid
-566669: valid invalid
-566677: valid invalid
-566678: valid invalid
-566679: valid invalid
-566688: valid invalid
-566689: valid invalid
-566699: valid invalid
-566777: valid invalid
-566778: valid invalid
-566779: valid invalid
-566789: valid invalid
-566888: valid invalid
-566889: valid invalid
-566999: valid invalid
-567778: valid invalid
-567779: valid invalid
-567789: valid invalid
-567888: valid invalid
-567889: valid invalid
-567999: valid invalid
-568889: valid invalid
-568999: valid invalid
-577777: valid invalid
-577778: valid invalid
-577779: valid invalid
-577788: valid invalid
-577789: valid invalid
-577799: valid invalid
-577888: valid invalid
-577889: valid invalid
-577999: valid invalid
-578889: valid invalid
-578999: valid invalid
-588888: valid invalid
-588889: valid invalid
-588899: valid invalid
-588999: valid invalid
-599999: valid invalid
-666667: valid invalid
-666668: valid invalid
-666669: valid invalid
-666678: valid invalid
-666679: valid invalid
-666689: valid invalid
-666777: valid invalid
-666778: valid invalid
-666779: valid invalid
-666788: valid invalid
-666789: valid invalid
-666799: valid invalid
-666888: valid invalid
-666889: valid invalid
-666899: valid invalid
-666999: valid invalid
-667778: valid invalid
-667779: valid invalid
-667789: valid invalid
-667888: valid invalid
-667889: valid invalid
-667999: valid invalid
-668889: valid invalid
-668999: valid invalid
-677777: valid invalid
-677778: valid invalid
-677779: valid invalid
-677788: valid invalid
-677789: valid invalid
-677799: valid invalid
-677888: valid invalid
-677889: valid invalid
-677999: valid invalid
-678889: valid invalid
-678999: valid invalid
-688888: valid invalid
-688889: valid invalid
-688899: valid invalid
-688999: valid invalid
-699999: valid invalid
-777778: valid invalid
-777779: valid invalid
-777789: valid invalid
-777888: valid invalid
-777889: valid invalid
-777899: valid invalid
-777999: valid invalid
-778889: valid invalid
-778999: valid invalid
-788888: valid invalid
-788889: valid invalid
-788899: valid invalid
-788999: valid invalid