-
Notifications
You must be signed in to change notification settings - Fork 0
/
day9.js
1042 lines (1038 loc) · 9.73 KB
/
day9.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
function findError(preamble, numberList) {
let index = preamble-1, error = false;
while (!error) {
error = true;
index++;
let i=0, j=1;
checkThisIndex:
for (i=0; i<preamble-1; i++) {
for (j=i+1; j<preamble; j++) {
if ( numberList[index-preamble+i]+numberList[index-preamble+j]
===numberList[index] ) {
error = false;
break checkThisIndex;
}
};
};
if (index>numberList.length) {console.log("End of List"); break;}
}
return numberList[index];
}
function findEncryptionWeakness(sum, numberList) {
let sumAttempt = 0, index = 0, increment = 0, set = [];
while (sumAttempt != sum) {
sumAttempt = 0, increment = 0, set = [];
while (sumAttempt < sum) {
sumAttempt += numberList[index+increment];
set.push(numberList[index+increment]);
increment++;
}
index++;
}
return Math.min(...set)+Math.max(...set);
}
function interpretInput(rawInput) {
return rawInput.split("\n").map(number=>parseInt(number));
}
input = `1
15
32
16
6
20
25
30
38
31
48
47
19
23
39
50
41
4
27
12
21
24
26
43
2
3
5
7
8
9
6
72
10
20
11
13
14
30
25
23
15
16
17
18
19
22
21
12
32
24
28
26
27
35
29
31
33
34
36
37
38
42
39
30
40
43
41
47
46
44
50
49
45
75
51
53
57
56
81
59
83
70
64
72
67
91
69
71
73
84
85
92
89
90
93
96
94
98
123
104
120
154
115
126
141
133
131
157
139
287
238
209
144
158
175
185
179
182
183
187
190
192
286
289
264
257
241
256
259
466
270
275
283
324
462
302
323
331
333
362
361
372
365
370
377
524
475
497
498
521
844
500
515
529
545
553
558
585
1013
887
1210
654
995
694
735
876
872
894
747
906
1060
972
1607
998
1268
1247
1292
1199
1074
1239
1111
1768
1696
1348
1389
1401
1429
1611
1441
1870
1619
1641
1653
1745
1878
1970
3279
2072
5024
2273
2185
2310
2313
3424
3307
2459
3052
3349
2737
2790
4155
4732
4720
3311
3623
4898
6214
3398
3715
5534
4042
4257
4345
4458
4495
7033
6618
4772
5196
8673
6994
5527
8940
9525
6832
6934
8838
10016
6709
7021
7113
7440
14107
11805
9238
16380
8602
9230
8953
9267
13639
14200
11706
15536
13541
15961
13766
21313
13643
15859
13730
16678
13822
14134
14461
16042
16393
17555
17832
17840
17869
18183
29175
30215
25126
45853
25247
25349
27184
27271
27373
33414
27777
27465
27552
27864
34576
32330
28595
30503
43079
35395
35387
35672
60798
58540
43309
50373
57588
50475
50596
52518
55017
54455
54838
54925
58280
55242
70943
55416
56459
125868
59098
85983
73582
70782
71059
85862
98234
100969
172028
109293
105891
101071
105434
159351
125514
109380
109697
109763
176673
251382
156765
111875
115557
144364
144960
129880
141841
144641
270262
223748
184096
199203
202040
211325
206505
250255
210768
274244
219077
219143
253744
340648
221638
355132
227432
286482
271721
245437
348957
274840
366279
449458
721179
383299
386136
394864
996019
408545
417273
605387
429845
440715
505625
464580
627130
576770
449070
467075
472869
499153
517158
520277
735093
623797
660976
885289
778163
791844
769435
781000
803409
849260
825818
990027
870560
947003
948223
931655
966228
916145
1025840
1404797
1090872
972022
1486794
1289712
2351800
1464385
1603981
1430411
1547598
2396858
1550435
1673969
3641512
1974063
2115530
1956255
1920245
2495821
2498658
1847800
1882373
2007017
1888167
3735967
2261734
3963043
2402433
2720123
4199600
2894796
2980846
3098033
4217989
3556342
4452076
3224404
3562136
3770540
3730173
3895184
3768045
3802618
4290600
3854817
3889390
5992829
8306893
5690785
8712952
7692008
5122556
6748891
6450296
5875642
6078879
9846924
8346960
9554965
16595815
6786540
6954577
9458830
7498218
7532791
13567650
7570663
7657435
7744207
12529175
9011946
10813341
12077133
14134502
14525240
12865419
14698784
11954521
12325938
12662182
13033456
22890474
13741117
20406389
26211635
14284758
14452795
21951013
15031009
15103454
18384004
15228098
15401642
16756153
27486251
15690279
24988120
27896428
52474371
24280459
30918377
24616703
24987977
25359394
25695638
38392850
28025875
42115547
30134463
39644152
29512856
29483804
30259107
30505096
30629740
31091921
69127956
60113544
60764203
39970738
40306982
58030891
48897162
49268436
54129559
49604680
60575725
50347371
56787559
53721513
57509679
98873116
79860227
70229845
80977111
83642415
59742911
80852467
61134836
79526902
97480417
121159449
116901103
80277720
96758297
89204144
140102627
129128663
102989949
99952051
113464424
133989786
111231192
110509072
238060552
153872260
139603138
120877747
129972756
140020631
168731046
141412556
237778850
326982994
196710348
169481864
218332807
228132295
177036017
330700134
189156195
202942000
240359855
210461123
211183243
399652348
456393359
240481828
308751677
549032941
317056648
458692662
358353438
269993387
414814867
345767063
310894420
346517881
458814635
358638059
366192212
628346825
986700263
487930437
399617318
705155940
549233505
421644366
450942951
451665071
510475215
598835266
625808325
578745064
580887807
587050035
615760450
616511268
628631446
962140286
939241245
762559491
712710093
724830271
758255377
1139106661
1059708720
909574803
938873388
821261684
873309437
872587317
902608022
961418166
1030410135
1089220279
1337000441
1194505514
1202810485
1299760128
1203561303
1232271718
1341341539
1353461717
1919335785
1487389762
1437540364
1470965470
1483085648
1693849001
1694571121
1848448191
2958355232
1723869706
2173069565
1745896754
1775195339
1991828301
2164228651
3613184786
2283725793
2406371788
2397315999
3183437118
2557023020
3262585101
2573613257
2694803256
4311816949
3462793771
3994563384
3228982402
3165536591
3176934649
4860107712
3418440827
3469766460
3521092093
3715698007
3737725055
3767023640
4058921132
4447954444
4561544650
4681041792
5574250648
4803687787
5659901100
5130636277
5251826276
10463588887
8803233050
8597832767
6342471240
6394518993
6405917051
6647423229
6583977418
7185464467
6888207287
6939532920
10401392372
10340942892
18999225139
7504748695
9426924740
8506875576
9251642231
9242586442
9484729579
9934324064
10055514063
16807309423
12989894469
13334051913
13053340280
12736990233
12748388291
13579983460
12800436044
13231400647
13472184705
20170933567
16372936866
13827740207
16191175151
25675904730
16756390926
16011624271
18441199640
17749462018
22483042878
18494228673
18727316021
19419053643
22734760108
34452823911
31527752065
25485378524
25548824335
31464306254
25537426277
25979788938
35483706947
36476778039
49213768272
27299924912
29839364478
30018915358
35197590566
37221544694
42305215261
36243690691
45850988749
36190661658
37168515661
37913282316
38146369664
41462076129
42153813751
48220138632
51022804801
51034202859
51086250612
63201333632
51517215215
52837351189
74103943974
114235536491
57318840270
79375358445
59858279836
67932197674
87337755628
92516430836
72434352349
112017226290
73359177319
143550633695
74337031322
75081797977
79608445793
83615889880
115566020103
90373952383
99242943433
123951567564
136927286063
103923601801
104354566404
212009084040
186354257612
178027545775
130678017589
129753192619
127790477510
261643435655
140366550023
360886379088
220127145002
162808304732
147696208641
165455750360
153945477115
149418829299
390036629815
169982398176
228306133968
189616895816
194297554184
203166545234
232145043914
208278168205
324481711406
234107759023
257543670129
258468495099
293486322321
277449401260
268157027533
275486686151
313151959001
288062758664
297115037940
471323572767
319401227475
301641685756
467097436116
404090157199
478653231385
364279952360
442385927228
383914450000
392783441050
485727569465
411444713439
559185355885
465821838334
621042913231
890097944824
516012165228
723491384674
703315677475
641729353620
581308986534
563549444815
585177796604
944475069719
1426807062149
788004607199
871436672435
945588938894
1025007194219
908795606278
2011984858753
748194402360
2477806697087
776697891050
804228154489
1430622028320
1406110110052
1047130824868
981834003562
1079561610043
1097321151762
1101189961832
1144858431349
1345045031095
1148727241419
1525784056253
1311743847175
1675664826924
1524892293410
1992719763762
1619631074795
2149273185584
1552422556849
1580926045539
1656990008638
1730028405922
2493772272514
1758531894612
1786062158051
1851358979357
2028964828430
2599553381717
2446234992927
2242179583111
2176882761805
2697280988198
3106710101792
3516090563973
2460471088594
3255812462175
2931374921970
3470990054152
4113403347309
3077314850259
3172053631644
3209412565487
3133348602388
3282450962771
3237916054177
6103428553614
3488560300534
5375528185499
4874163750003
5618288624571
4093538562468
6240058704180
5173554505081
4623117754732
9385879516385
6169290976147
9106848925105
5391846010564
6959550354686
5537785938853
6008689772229
6210663452647
8709839570497
10882853522232
8856204678748
9412112335824
9998645940231
8864088486033
12138655641519
18249968002418
8716656317200
7582098863002
14787640521323
8967702312471
9711827187039
15136993288618
9796672259813
10160903693585
10014963765296
10929631949417
11546475711082
11400535782793
11602509463211
11748449391500
13590788635231
14718529342726
14920503023144
16291938433499
16298755180202
16438303541750
16446187349035
16549801175473
24948544214908
17293926050041
17378771122815
17597062628298
26346473435286
18679529499510
41266976458430
19957575953398
27894447896710
19811636025109
20175867458881
28194636740535
22330167732210
25339238026731
32737058721952
23350958854711
29042375441541
34035366170048