-
Notifications
You must be signed in to change notification settings - Fork 0
/
09.rb
1023 lines (1017 loc) · 9.03 KB
/
09.rb
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
data = DATA.each_line.map &:to_i
invalid = data.each_cons(26).find do |*previous, target|
previous.combination(2).all? { |c| c.sum != target }
end.last
puts invalid # 375054920
b, e = 0, 0
while b < data.length do
if data[b..e].sum == invalid
break if e > b # at least two numbers
elsif data[b..e].sum < invalid
e += 1
else
b += 1
end
end
puts data[b..e].minmax.sum # 54142584
__END__
34
15
45
16
30
43
36
21
32
18
14
31
47
41
22
39
9
38
6
7
42
46
4
3
8
10
51
24
45
17
19
28
11
12
23
80
13
15
14
63
16
20
9
32
18
7
79
26
30
21
25
22
31
24
27
29
46
35
44
39
23
28
53
33
60
34
73
55
36
95
107
43
45
48
47
77
92
61
50
74
93
67
51
66
56
57
62
69
200
70
79
87
81
83
114
94
98
95
97
148
101
106
118
107
123
113
108
139
119
195
126
131
162
176
160
343
164
175
177
203
189
296
337
272
232
246
213
241
236
227
234
373
303
351
295
257
291
352
554
363
339
536
366
624
392
402
440
449
445
459
470
468
530
686
566
491
649
831
797
548
657
768
691
731
889
1234
758
1276
794
1459
1016
885
1704
904
927
938
959
1215
1727
2418
3186
1239
1205
1279
1306
1643
1616
1422
1552
1647
3038
1662
1698
2238
2543
1789
1812
1842
1865
2143
2606
4241
3263
2901
5792
3563
4563
4268
3069
6464
2974
3084
3120
3199
3309
5041
3360
3487
6571
3601
4962
3654
4743
4008
4749
5507
5985
10355
5875
6043
6628
6393
6058
6094
8109
6173
6204
8751
14152
6669
9472
7088
12117
12595
11136
7662
8397
18901
14845
10256
12079
11860
13062
11918
14790
12152
20257
12262
24262
32659
12842
12873
13757
14331
23098
14750
26668
16059
17918
18798
18653
23778
22116
22335
22174
44035
24012
25104
24070
25715
24414
47220
25135
28088
41194
26599
27204
32984
29081
30809
32668
33977
64786
43053
37451
40769
49549
46749
44509
51013
58383
53093
49785
67793
53223
51618
55944
62586
62065
56285
74746
83902
66532
59890
73862
66645
78220
81960
80504
120969
125028
91258
94294
95522
150238
202929
103008
101403
118350
104841
107562
112229
118871
157764
161293
126422
138110
126535
203084
140507
174207
171762
162464
174798
279643
213632
185552
189816
196925
204411
206244
221879
208965
248069
245348
219791
238764
245293
252957
264532
264645
419876
368687
315305
302971
357314
334226
337262
360350
389963
486524
547130
605643
401336
484057
484323
491721
780226
590219
458555
517602
498250
567616
517489
529177
888213
637197
618276
640233
660285
859891
671488
821585
1227416
791299
1135447
948466
987732
885393
956805
1096793
950276
1098788
1450110
976044
1015739
1027427
1157722
1046666
1200665
1255473
1503669
1687227
1300518
2003471
1651190
1462787
1612884
1964205
1676692
1905271
1833859
2704119
1835669
1991783
1926320
3799874
2022710
5633733
2043166
2062405
2074093
2302139
2247331
2501183
3856569
2763305
2913402
3075671
3113977
3139479
5136687
3448553
3510551
4014493
3897054
3669528
3761989
3827452
3918103
7566582
5930662
4803322
6419286
4806471
7118081
6027379
5916859
11132574
6562530
17695104
6211858
7090164
6189648
6253456
8647238
10080908
7180079
7911547
7431517
9678848
21213482
7680092
8724574
8721425
9609793
11983401
10720181
13643375
10723330
27776012
16327330
12106507
12401506
12443104
12465314
27403130
21662249
13369727
40772857
16404666
15901504
14611596
17289885
22829837
16401517
17445999
22094301
20827932
33229438
22826688
22703582
30933260
25749882
23124836
24508013
24549611
24571821
30815726
24908418
27076910
33191389
31016262
27981323
30513100
66420827
39231354
45954673
33691402
39526353
40149581
38273931
44920989
43531514
45530270
48874718
45828418
50201746
47632849
49057624
49079834
49121432
90875662
77038947
55058233
72902312
58494423
58997585
61672725
64204502
84761624
71965333
73217755
134575037
110752559
119598182
83194920
88452503
89061784
94587894
93461267
94908252
96754281
96690473
157979379
108077419
104179665
113552656
120670310
114055818
199814343
130459756
123202087
193241449
185816065
166679022
145183088
172256704
181913770
171647423
176656187
179949201
177514287
193444754
188049161
243872397
225368008
219956368
200870138
231279506
212257084
217732321
227608474
316443536
324072225
309018152
253661843
268385175
343335209
311862110
399865178
408005529
343904127
351596624
356605388
367998362
357463488
365563448
381493915
413127222
625737850
625384306
418602459
454531981
439865558
429989405
445340795
375054920
562679995
522047018
565523953
580247285
884521386
784165907
655766237
695500751
700509515
709467575
722168836
714068876
998849744
723026936
740618368
794621137
831729681
793657379
1162892494
1554756617
952036423
1229506702
805044325
1239961932
1647537174
1084727013
1102294303
1411976966
1236013522
1377935073
1351266988
1418527687
1423536451
1962130768
1431636411
1952533638
1437095812
1463645304
2702749136
1534275747
1588278516
1598701704
1745693802
1757080748
1889771338
2838663636
2320740535
1907338628
2855623499
3374107734
2782903399
2338307825
2774803439
2587280510
3340065841
3209339106
3344434440
3177330213
2868732223
4448442938
2900741116
3035797516
2997921051
4746002264
4121556257
3186980220
3355782452
3502774550
4612704247
3797109966
4659048360
4228079163
4245646453
5193931324
4925588335
5515638038
7635423158
5362083949
5774260730
9312748004
5898662167
5866653274
5769473339
5936538632
6256523568
7648501763
6033718567
6184901271
7932982484
6858557002
6542762672
12858570819
7748421003
10655666968
11092593491
14189506052
8473725616
9171234788
10119519659
11414300205
11260746116
11131557288
12441424839
13831644651
11636126613
11668135506
11706011971
11803191906
17197284748
12218619838
14507444183
12576481239
12727663943
13401319674
14291183675
15016488288
26765987291
25321063340
17644960404
21201389559
19290754447
20839370294
20302792076
21251076947
23988410059
22966758087
22767683901
23304262119
24395799449
36935714851
27083925422
27018847618
24021811744
31867235686
26128983617
25304145182
25977800913
27692503349
46817171207
46968353911
35855858582
38896037351
48220237177
45268555360
39593546523
40130124741
44217835034
44018760848
44555339066
67723094268
46988569831
46071946020
47326073863
48417611193
49325956926
51281946095
50150795361
49999612657
51433128799
53821486966
53670304262
100658874093
88895650008
81927804602
74751895933
93951611707
85884607182
84347959775
84148885589
79723671264
88773174100
100810056797
94018373505
147688677767
152092002892
124902691294
172228765157
144102407068
101432741456
99325569583
101281558752
100150408018
131927417259
105103433061
222440573700
137819189851
154475567197
159099855708
178100497296
158900781522
181005230016
260381414460
163872556853
168496845364
341973054149
291791084835
242922622912
193343943088
199475977601
200607128335
337001278818
321766143283
200758311039
201431966770
204429002644
205253841079
232077825277
491476846015
259579000258
515101776114
460988542795
313376348719
318000637230
322773338375
809477483245
332369402217
523531649414
364630867892
361840788452
398597784167
392819920689
517805351363
518758948269
402039095105
720190915039
406685807849
636149687094
405187313683
405860969414
437331666356
607292936184
491656825535
1015188474949
572955348977
822829331247
965775269666
645745750936
729459146224
655142740592
1237996266402
694210190669
1159681336508
835929450523
754660709141
1272466060504
794859015794
956090614625
1361951584039
807226408788
811048283097
898342633384
1012480249867
842518980039
1137402576471
928988491891
1064612174512
1389999458919
1218701099913
1228098089569
1300888491528
1650300805294
1339955941605
1349352931261
1409803449733
1489069206463
1448870899810
1995610787031
1823528532964
1549519724935
1705569042172
2169177992827
1618274691885
1771507471930
1649745388827
1653567263136
1740861613423
1993600666403
1907131154551
2157086581460
3090214544684
2682886866397
2528986581097
2446799189482
2568054031174
2958230633490
2689308872866
4076309147378
3396200361014
4795783586856
4117573756109
4391582564138
3167794416820
3199265113762
3203086988071
5137061974437
3425074735066
4852832376898
3303312651963
3390607002250
3394428876559
3900731820954
4522587247500
5696780997917
4603885770942
6697741528522
4975785770579
5014853220656
5136108062348
7803150884704
6079915875116
5857103289686
8318165872619
6367059530582
7721852361262
6370881404891
6402352101833
6471107068783
6785035878809
6506399640034
6693919654213
7291338823204
10598473349476
11607215131131
7295160697513
7917016124059
8423319068454
14092733766153
11346667175470
14284075654641
9990638991235
10111893832927
10150961283004
17793789875939
16618293472961
11937019164802
16478953363509
12737940935473
13155917283700
14388123192842
19209048004256
13096271756046
12977506708817
24487709530152
14610935778272
15117238722667
14586499520717
24324173884287
22412399420180
15212176821572
16340335192513
18413958059689
24577138511952
23089400541744
22087980447806
20102532824162
22849834768400
22888902218477
24674960100275
27564006229534
24914525873619
25715447644290
25834212691519
26073778464863
28094745431484
38301577363316
27588442487089
28189683530389
36442868016675
29197435298989