this repo has no description

ft: commit first 3 days of 2021

+2000
2021/day1.txt
···
+
173
+
178
+
179
+
187
+
196
+
199
+
200
+
201
+
210
+
209
+
210
+
211
+
221
+
223
+
235
+
236
+
237
+
238
+
242
+
249
+
247
+
246
+
256
+
257
+
258
+
257
+
258
+
265
+
293
+
303
+
304
+
317
+
322
+
330
+
336
+
337
+
340
+
339
+
350
+
351
+
352
+
353
+
349
+
353
+
342
+
339
+
341
+
342
+
348
+
349
+
350
+
355
+
362
+
392
+
388
+
393
+
404
+
402
+
401
+
402
+
405
+
410
+
411
+
424
+
425
+
432
+
434
+
433
+
435
+
441
+
420
+
439
+
461
+
463
+
464
+
468
+
469
+
473
+
485
+
494
+
493
+
489
+
490
+
491
+
497
+
490
+
491
+
493
+
519
+
520
+
553
+
554
+
560
+
565
+
574
+
586
+
599
+
600
+
601
+
604
+
578
+
574
+
578
+
597
+
598
+
597
+
607
+
606
+
608
+
616
+
613
+
615
+
618
+
617
+
619
+
626
+
638
+
639
+
650
+
682
+
686
+
693
+
696
+
709
+
715
+
745
+
747
+
750
+
751
+
753
+
760
+
763
+
764
+
772
+
776
+
779
+
791
+
794
+
795
+
800
+
799
+
808
+
814
+
825
+
826
+
831
+
830
+
837
+
853
+
854
+
863
+
872
+
873
+
881
+
885
+
895
+
896
+
897
+
895
+
905
+
909
+
912
+
916
+
921
+
919
+
927
+
929
+
935
+
936
+
937
+
948
+
947
+
948
+
922
+
926
+
932
+
931
+
938
+
958
+
975
+
977
+
982
+
985
+
986
+
987
+
988
+
1007
+
1005
+
1007
+
1008
+
1010
+
1013
+
1015
+
1016
+
1019
+
1025
+
1026
+
1027
+
1029
+
1039
+
1047
+
1054
+
1055
+
1063
+
1066
+
1087
+
1095
+
1096
+
1097
+
1093
+
1114
+
1123
+
1131
+
1137
+
1142
+
1140
+
1154
+
1157
+
1158
+
1159
+
1160
+
1170
+
1174
+
1182
+
1184
+
1191
+
1200
+
1211
+
1214
+
1231
+
1241
+
1250
+
1246
+
1260
+
1287
+
1311
+
1313
+
1318
+
1327
+
1325
+
1324
+
1325
+
1326
+
1339
+
1350
+
1355
+
1358
+
1368
+
1380
+
1422
+
1423
+
1442
+
1466
+
1450
+
1451
+
1457
+
1464
+
1474
+
1490
+
1494
+
1507
+
1508
+
1509
+
1511
+
1524
+
1521
+
1528
+
1529
+
1533
+
1538
+
1542
+
1544
+
1543
+
1560
+
1579
+
1585
+
1589
+
1591
+
1598
+
1599
+
1600
+
1610
+
1614
+
1615
+
1629
+
1624
+
1629
+
1632
+
1627
+
1641
+
1638
+
1639
+
1641
+
1644
+
1645
+
1646
+
1647
+
1659
+
1661
+
1658
+
1661
+
1664
+
1665
+
1669
+
1671
+
1673
+
1674
+
1675
+
1672
+
1677
+
1687
+
1688
+
1696
+
1697
+
1711
+
1715
+
1720
+
1721
+
1724
+
1725
+
1726
+
1731
+
1740
+
1737
+
1746
+
1745
+
1758
+
1760
+
1758
+
1771
+
1777
+
1773
+
1777
+
1778
+
1788
+
1794
+
1804
+
1809
+
1814
+
1837
+
1839
+
1838
+
1837
+
1842
+
1851
+
1857
+
1843
+
1844
+
1845
+
1860
+
1863
+
1888
+
1887
+
1888
+
1889
+
1897
+
1895
+
1903
+
1906
+
1907
+
1913
+
1917
+
1916
+
1917
+
1926
+
1927
+
1935
+
1933
+
1934
+
1939
+
1940
+
1942
+
1944
+
1941
+
1946
+
1967
+
1969
+
1975
+
1976
+
1979
+
1981
+
1982
+
1987
+
1981
+
1982
+
1981
+
1982
+
1992
+
2027
+
2028
+
2029
+
2036
+
2037
+
2038
+
2042
+
2044
+
2048
+
2047
+
2054
+
2055
+
2062
+
2065
+
2066
+
2091
+
2103
+
2093
+
2094
+
2089
+
2091
+
2093
+
2098
+
2108
+
2086
+
2087
+
2118
+
2123
+
2127
+
2132
+
2148
+
2149
+
2147
+
2148
+
2149
+
2150
+
2152
+
2151
+
2152
+
2149
+
2156
+
2167
+
2177
+
2179
+
2180
+
2159
+
2167
+
2158
+
2156
+
2174
+
2169
+
2170
+
2180
+
2183
+
2187
+
2191
+
2192
+
2200
+
2202
+
2206
+
2240
+
2251
+
2247
+
2259
+
2273
+
2274
+
2276
+
2255
+
2256
+
2263
+
2265
+
2269
+
2270
+
2272
+
2273
+
2275
+
2276
+
2281
+
2290
+
2292
+
2293
+
2287
+
2291
+
2289
+
2287
+
2290
+
2306
+
2307
+
2310
+
2315
+
2329
+
2337
+
2370
+
2375
+
2373
+
2376
+
2362
+
2397
+
2400
+
2401
+
2419
+
2429
+
2435
+
2438
+
2450
+
2451
+
2481
+
2482
+
2487
+
2491
+
2492
+
2496
+
2501
+
2502
+
2499
+
2501
+
2467
+
2469
+
2468
+
2470
+
2473
+
2480
+
2481
+
2488
+
2500
+
2506
+
2509
+
2512
+
2513
+
2515
+
2516
+
2512
+
2506
+
2511
+
2513
+
2514
+
2519
+
2547
+
2580
+
2584
+
2585
+
2582
+
2599
+
2600
+
2599
+
2600
+
2599
+
2600
+
2613
+
2612
+
2610
+
2612
+
2608
+
2615
+
2622
+
2610
+
2613
+
2608
+
2619
+
2640
+
2620
+
2612
+
2608
+
2609
+
2625
+
2626
+
2634
+
2638
+
2670
+
2674
+
2675
+
2674
+
2678
+
2685
+
2686
+
2678
+
2692
+
2693
+
2716
+
2718
+
2705
+
2709
+
2713
+
2714
+
2715
+
2722
+
2712
+
2714
+
2719
+
2720
+
2740
+
2741
+
2734
+
2738
+
2764
+
2765
+
2768
+
2773
+
2777
+
2810
+
2789
+
2808
+
2807
+
2813
+
2828
+
2841
+
2853
+
2854
+
2842
+
2843
+
2846
+
2848
+
2860
+
2861
+
2862
+
2864
+
2865
+
2866
+
2880
+
2851
+
2853
+
2858
+
2865
+
2866
+
2873
+
2885
+
2886
+
2887
+
2893
+
2914
+
2916
+
2924
+
2925
+
2927
+
2929
+
2949
+
2967
+
2968
+
2976
+
2965
+
2983
+
2985
+
2984
+
2991
+
2993
+
3007
+
3005
+
3012
+
3015
+
3019
+
3025
+
3030
+
3034
+
3043
+
3044
+
3085
+
3094
+
3124
+
3139
+
3146
+
3147
+
3176
+
3196
+
3199
+
3200
+
3246
+
3251
+
3254
+
3286
+
3280
+
3287
+
3289
+
3288
+
3290
+
3294
+
3306
+
3307
+
3309
+
3312
+
3327
+
3325
+
3334
+
3333
+
3335
+
3357
+
3374
+
3380
+
3392
+
3393
+
3406
+
3416
+
3417
+
3431
+
3418
+
3439
+
3452
+
3468
+
3469
+
3474
+
3490
+
3489
+
3490
+
3491
+
3513
+
3512
+
3513
+
3514
+
3515
+
3516
+
3517
+
3513
+
3514
+
3508
+
3520
+
3522
+
3521
+
3520
+
3531
+
3533
+
3545
+
3546
+
3554
+
3558
+
3559
+
3560
+
3565
+
3578
+
3570
+
3573
+
3574
+
3580
+
3592
+
3593
+
3594
+
3595
+
3596
+
3617
+
3625
+
3624
+
3626
+
3629
+
3635
+
3634
+
3640
+
3661
+
3668
+
3671
+
3674
+
3675
+
3679
+
3688
+
3692
+
3698
+
3700
+
3696
+
3697
+
3701
+
3707
+
3697
+
3699
+
3703
+
3702
+
3700
+
3711
+
3714
+
3715
+
3716
+
3722
+
3741
+
3751
+
3752
+
3759
+
3782
+
3785
+
3786
+
3787
+
3799
+
3807
+
3810
+
3809
+
3816
+
3794
+
3796
+
3800
+
3804
+
3810
+
3812
+
3813
+
3821
+
3822
+
3840
+
3851
+
3866
+
3867
+
3875
+
3895
+
3913
+
3905
+
3917
+
3918
+
3913
+
3921
+
3927
+
3931
+
3936
+
3957
+
3956
+
3958
+
3959
+
3980
+
3979
+
3986
+
3997
+
3988
+
3989
+
3990
+
3994
+
3995
+
3999
+
3993
+
4024
+
4022
+
4018
+
4019
+
4031
+
4032
+
4033
+
4043
+
4045
+
4047
+
4048
+
4058
+
4067
+
4077
+
4069
+
4070
+
4080
+
4087
+
4113
+
4118
+
4123
+
4128
+
4132
+
4144
+
4149
+
4152
+
4131
+
4160
+
4175
+
4176
+
4177
+
4176
+
4179
+
4191
+
4196
+
4201
+
4202
+
4205
+
4214
+
4216
+
4217
+
4210
+
4212
+
4216
+
4217
+
4220
+
4219
+
4220
+
4225
+
4244
+
4245
+
4247
+
4257
+
4249
+
4250
+
4245
+
4246
+
4249
+
4258
+
4259
+
4260
+
4268
+
4245
+
4258
+
4263
+
4275
+
4276
+
4275
+
4265
+
4274
+
4273
+
4274
+
4291
+
4292
+
4298
+
4295
+
4297
+
4283
+
4284
+
4285
+
4293
+
4294
+
4323
+
4325
+
4334
+
4335
+
4337
+
4342
+
4346
+
4349
+
4346
+
4341
+
4342
+
4344
+
4351
+
4352
+
4367
+
4372
+
4378
+
4388
+
4389
+
4396
+
4414
+
4416
+
4419
+
4420
+
4421
+
4423
+
4428
+
4430
+
4456
+
4460
+
4469
+
4468
+
4499
+
4488
+
4491
+
4496
+
4497
+
4500
+
4511
+
4497
+
4498
+
4499
+
4505
+
4508
+
4510
+
4522
+
4523
+
4533
+
4540
+
4553
+
4554
+
4561
+
4562
+
4594
+
4607
+
4617
+
4620
+
4619
+
4620
+
4621
+
4626
+
4640
+
4658
+
4657
+
4658
+
4661
+
4664
+
4665
+
4667
+
4675
+
4686
+
4687
+
4711
+
4714
+
4719
+
4720
+
4736
+
4750
+
4753
+
4761
+
4749
+
4766
+
4775
+
4776
+
4803
+
4804
+
4820
+
4835
+
4836
+
4839
+
4816
+
4818
+
4817
+
4821
+
4855
+
4880
+
4881
+
4887
+
4891
+
4902
+
4906
+
4922
+
4929
+
4934
+
4962
+
4965
+
4976
+
4975
+
4974
+
4977
+
4975
+
4983
+
4985
+
4990
+
4978
+
4971
+
4987
+
4990
+
4991
+
4997
+
4998
+
5001
+
5007
+
5015
+
5017
+
5020
+
5025
+
5026
+
5029
+
5030
+
5032
+
5033
+
5042
+
5043
+
5045
+
5055
+
5056
+
5051
+
5058
+
5060
+
5054
+
5058
+
5053
+
5070
+
5069
+
5070
+
5073
+
5076
+
5083
+
5093
+
5095
+
5101
+
5096
+
5099
+
5100
+
5078
+
5077
+
5078
+
5077
+
5094
+
5098
+
5100
+
5101
+
5082
+
5087
+
5101
+
5095
+
5096
+
5112
+
5124
+
5111
+
5112
+
5113
+
5120
+
5131
+
5132
+
5139
+
5133
+
5137
+
5139
+
5141
+
5143
+
5142
+
5150
+
5131
+
5136
+
5138
+
5137
+
5144
+
5145
+
5152
+
5154
+
5169
+
5170
+
5171
+
5172
+
5174
+
5188
+
5191
+
5202
+
5203
+
5204
+
5197
+
5202
+
5204
+
5209
+
5210
+
5207
+
5206
+
5208
+
5207
+
5209
+
5213
+
5214
+
5215
+
5216
+
5215
+
5221
+
5225
+
5227
+
5224
+
5216
+
5223
+
5217
+
5223
+
5234
+
5235
+
5236
+
5239
+
5245
+
5249
+
5248
+
5270
+
5275
+
5276
+
5280
+
5282
+
5283
+
5285
+
5295
+
5317
+
5316
+
5303
+
5304
+
5307
+
5311
+
5315
+
5319
+
5336
+
5344
+
5348
+
5365
+
5368
+
5373
+
5365
+
5368
+
5381
+
5379
+
5384
+
5398
+
5396
+
5408
+
5439
+
5455
+
5458
+
5453
+
5457
+
5459
+
5467
+
5485
+
5468
+
5469
+
5470
+
5469
+
5476
+
5477
+
5488
+
5504
+
5501
+
5504
+
5508
+
5521
+
5524
+
5526
+
5527
+
5545
+
5543
+
5549
+
5551
+
5552
+
5554
+
5582
+
5591
+
5593
+
5583
+
5584
+
5590
+
5595
+
5596
+
5600
+
5605
+
5610
+
5621
+
5622
+
5633
+
5637
+
5645
+
5647
+
5679
+
5680
+
5681
+
5720
+
5722
+
5724
+
5731
+
5734
+
5746
+
5744
+
5745
+
5751
+
5755
+
5758
+
5759
+
5790
+
5791
+
5796
+
5798
+
5803
+
5806
+
5808
+
5818
+
5820
+
5815
+
5825
+
5827
+
5832
+
5833
+
5839
+
5845
+
5850
+
5846
+
5848
+
5856
+
5858
+
5867
+
5866
+
5872
+
5862
+
5866
+
5872
+
5880
+
5881
+
5882
+
5889
+
5915
+
5938
+
5955
+
5958
+
5959
+
5960
+
5961
+
5962
+
5986
+
5989
+
5992
+
5989
+
6005
+
6004
+
6008
+
6004
+
6006
+
6007
+
6011
+
6012
+
6014
+
6028
+
6046
+
6047
+
6050
+
6052
+
6062
+
6075
+
6076
+
6081
+
6093
+
6099
+
6102
+
6106
+
6109
+
6110
+
6115
+
6116
+
6117
+
6118
+
6122
+
6123
+
6124
+
6136
+
6127
+
6128
+
6131
+
6132
+
6150
+
6151
+
6153
+
6156
+
6159
+
6157
+
6169
+
6178
+
6176
+
6177
+
6197
+
6222
+
6224
+
6252
+
6248
+
6263
+
6262
+
6264
+
6265
+
6282
+
6288
+
6293
+
6297
+
6298
+
6299
+
6303
+
6329
+
6338
+
6349
+
6348
+
6353
+
6372
+
6376
+
6384
+
6385
+
6386
+
6376
+
6381
+
6383
+
6384
+
6396
+
6397
+
6398
+
6401
+
6406
+
6409
+
6411
+
6413
+
6424
+
6428
+
6431
+
6429
+
6439
+
6443
+
6446
+
6449
+
6452
+
6460
+
6445
+
6446
+
6455
+
6454
+
6467
+
6490
+
6499
+
6519
+
6520
+
6525
+
6526
+
6559
+
6560
+
6561
+
6565
+
6566
+
6575
+
6577
+
6578
+
6579
+
6584
+
6585
+
6596
+
6598
+
6599
+
6600
+
6607
+
6606
+
6607
+
6619
+
6620
+
6621
+
6632
+
6635
+
6639
+
6643
+
6644
+
6658
+
6652
+
6653
+
6666
+
6668
+
6665
+
6667
+
6676
+
6680
+
6681
+
6680
+
6683
+
6686
+
6688
+
6691
+
6673
+
6689
+
6690
+
6698
+
6700
+
6701
+
6699
+
6691
+
6688
+
6687
+
6689
+
6687
+
6688
+
6700
+
6718
+
6722
+
6727
+
6739
+
6737
+
6746
+
6758
+
6739
+
6747
+
6749
+
6761
+
6764
+
6769
+
6768
+
6769
+
6773
+
6751
+
6758
+
6761
+
6770
+
6789
+
6774
+
6780
+
6785
+
6820
+
6814
+
6811
+
6812
+
6818
+
6816
+
6817
+
6832
+
6836
+
6841
+
6853
+
6868
+
6869
+
6872
+
6873
+
6875
+
6899
+
6906
+
6915
+
6927
+
6939
+
6942
+
6943
+
6939
+
6942
+
6950
+
6953
+
6961
+
6956
+
6982
+
7020
+
7036
+
7042
+
7055
+
7064
+
7070
+
7085
+
7100
+
7101
+
7102
+
7103
+
7085
+
7099
+
7103
+
7106
+
7117
+
7123
+
7147
+
7151
+
7149
+
7150
+
7154
+
7162
+
7165
+
7166
+
7167
+
7171
+
7181
+
7193
+
7195
+
7196
+
7199
+
7200
+
7180
+
7187
+
7185
+
7180
+
7184
+
7188
+
7191
+
7193
+
7199
+
7201
+
7208
+
7210
+
7211
+
7212
+
7216
+
7217
+
7227
+
7243
+
7261
+
7273
+
7285
+
7293
+
7296
+
7297
+
7300
+
7299
+
7309
+
7311
+
7314
+
7316
+
7336
+
7342
+
7343
+
7354
+
7372
+
7374
+
7378
+
7398
+
7403
+
7407
+
7429
+
7446
+
7448
+
7481
+
7487
+
7486
+
7492
+
7496
+
7497
+
7498
+
7496
+
7497
+
7499
+
7500
+
7499
+
7502
+
7503
+
7509
+
7512
+
7511
+
7510
+
7512
+
7500
+
7502
+
7503
+
7506
+
7513
+
7514
+
7526
+
7527
+
7537
+
7539
+
7538
+
7543
+
7524
+
7533
+
7534
+
7557
+
7567
+
7568
+
7569
+
7561
+
7562
+
7568
+
7569
+
7586
+
7594
+
7598
+
7613
+
7615
+
7618
+
7619
+
7612
+
7625
+
7626
+
7632
+
7633
+
7631
+
7650
+
7664
+
7665
+
7666
+
7674
+
7685
+
7686
+
7700
+
7704
+
7700
+
7682
+
7684
+
7685
+
7686
+
7688
+
7686
+
7682
+
7695
+
7700
+
7701
+
7717
+
7719
+
7717
+
7718
+
7728
+
7732
+
7734
+
7738
+
7739
+
7742
+
7757
+
7758
+
7765
+
7766
+
7763
+
7769
+
7766
+
7771
+
7774
+
7786
+
7790
+
7793
+
7783
+
7789
+
7790
+
7801
+
7822
+
7829
+
7836
+
7837
+
7838
+
7854
+
7855
+
7868
+
7872
+
7876
+
7877
+
7878
+
7880
+
7894
+
7905
+
7907
+
7926
+
7942
+
7948
+
7949
+
7950
+
7951
+
7953
+
7956
+
7967
+
7968
+
7969
+
7986
+
7988
+
7990
+
7989
+
7980
+
7978
+
7980
+
7992
+
7993
+
7990
+
7994
+
7995
+
8000
+
8009
+
8010
+
8012
+
8009
+
8024
+
8026
+
8037
+
8038
+
8029
+
8028
+
8031
+
8033
+
8048
+
8059
+
8057
+
8062
+
8077
+
8078
+
8087
+
8086
+
8094
+
8113
+
8115
+
8124
+
8123
+
8124
+
8125
+
8123
+
8125
+
8126
+
8155
+
8156
+
8154
+
8155
+
8161
+
8162
+
8170
+
8178
+
8179
+
8191
+
8193
+
8196
+
8206
+
8208
+
8200
+
8204
+
8205
+
8217
+
8225
+
8226
+
8240
+
8242
+
8269
+
8281
+
8288
+
8316
+
8341
+
8358
+
8366
+
8364
+
8369
+
8360
+
8361
+
8369
+
8386
+
8387
+
8393
+
8414
+
8408
+
8409
+
8410
+
8411
+
8412
+
8416
+
8423
+
8434
+
8437
+
8436
+
8439
+
8441
+
8437
+
8400
+
8410
+
8411
+
8412
+
8419
+
8414
+
8415
+
8417
+
8419
+
8421
+
8420
+
8404
+
8419
+
8409
+
8412
+
8417
+
8420
+
8427
+
8428
+
8442
+
8449
+
8450
+
8452
+
8453
+
8448
+
8449
+
8444
+
8449
+
8450
+
8448
+
8468
+
8476
+
8475
+
8478
+
8500
+
8501
+
8507
+
8508
+
8532
+
8540
+
8544
+
8542
+
8548
+
8550
+
8554
+
8565
+
8581
+
8598
+
8601
+
8592
+
8595
+
8598
+
8599
+
8600
+
8597
+
8598
+
8602
+
8603
+
8620
+
8623
+
8628
+
8644
+
8620
+
8610
+
8611
+
8614
+
8615
+
8622
+
8633
+
8636
+
8632
+
8640
+
8639
+
8643
+
8646
+
8641
+
8681
+
8682
+
8683
+
8691
+
8693
+
8691
+
8693
+
8705
+
8704
+
8705
+
8711
+
8712
+
8715
+
8716
+
8717
+
8719
+
8720
+
8721
+
8728
+
8729
+
8731
+
8717
+
8725
+
8726
+
8730
+
8734
+
8752
+
8758
+
8761
+
8764
+
8727
+
8759
+
8760
+
8761
+
8762
+
8770
+
8780
+
8782
+
8785
+
8755
+
8758
+
8759
+
8766
+
8769
+
8780
+
8781
+
8785
+
8811
+
8813
+
8818
+
8845
+
8846
+
8864
+
8869
+
8873
+
8875
+
8879
+
8884
+
8886
+
8887
+
8890
+
8891
+
8892
+
8893
+
8900
+
8925
+
8927
+
8929
+
8932
+
8936
+
8919
+
8924
+
8916
+
8923
+
8924
+
8926
+
8937
+
8938
+
8945
+
8948
+
8951
+
8957
+
8960
+
8950
+
8980
+
9004
+
9007
+
9008
+
9009
+
9010
+
9011
+
9012
+
9015
+
9011
+
9008
+
9009
+
9008
+
9018
+
9017
+
9038
+
9047
+
9048
+
9055
+
9061
+
9062
+
9074
+
9075
+
9078
+
9064
+
9081
+
9091
+
9090
+
9103
+
9079
+
9080
+
9105
+
9113
+
9115
+
9116
+
9117
+
9144
+
9148
+
9149
+
9160
+
9163
+
9165
+
9166
+
9167
+
9169
+
9171
+
9173
+
9175
+
9196
+
9201
+
9206
+
9211
+
9216
+
9217
+
9218
+
9224
+
9243
+
9248
+
9238
+
9244
+
9256
+
9260
+
9253
+
9261
+
9263
+
9262
+
9260
+
9267
+
9274
+
9279
+
9298
+
9299
+1000
2021/day2.txt
···
+
forward 9
+
down 9
+
up 4
+
down 5
+
down 6
+
up 6
+
down 7
+
down 1
+
forward 6
+
down 4
+
forward 8
+
up 5
+
forward 9
+
down 1
+
down 4
+
up 4
+
up 5
+
up 4
+
down 1
+
forward 8
+
down 1
+
forward 2
+
forward 8
+
down 9
+
forward 2
+
down 6
+
down 2
+
up 8
+
down 6
+
forward 9
+
forward 7
+
down 6
+
forward 3
+
down 2
+
forward 4
+
down 5
+
up 2
+
down 9
+
down 8
+
up 5
+
forward 5
+
forward 4
+
up 9
+
forward 9
+
down 8
+
forward 8
+
forward 2
+
up 8
+
down 7
+
forward 8
+
down 3
+
forward 6
+
up 9
+
forward 9
+
forward 4
+
forward 9
+
forward 6
+
down 4
+
up 2
+
forward 4
+
up 5
+
up 6
+
forward 9
+
down 3
+
forward 4
+
forward 9
+
down 1
+
forward 1
+
up 6
+
up 4
+
forward 7
+
up 7
+
up 3
+
forward 2
+
forward 8
+
forward 6
+
down 4
+
forward 2
+
forward 3
+
down 7
+
down 5
+
down 8
+
down 5
+
forward 1
+
down 8
+
down 2
+
down 8
+
down 3
+
forward 4
+
forward 8
+
forward 9
+
down 1
+
forward 8
+
down 1
+
down 6
+
down 7
+
down 7
+
forward 5
+
forward 3
+
down 2
+
down 1
+
forward 2
+
forward 1
+
down 6
+
down 4
+
up 5
+
up 9
+
down 4
+
forward 9
+
down 2
+
down 5
+
down 4
+
down 2
+
forward 2
+
forward 4
+
forward 6
+
forward 6
+
forward 3
+
down 6
+
up 5
+
forward 8
+
forward 3
+
down 9
+
down 3
+
forward 4
+
forward 2
+
down 9
+
down 8
+
down 7
+
down 3
+
forward 2
+
down 7
+
down 3
+
down 5
+
forward 6
+
up 9
+
up 8
+
forward 5
+
down 6
+
down 1
+
down 6
+
down 5
+
forward 7
+
down 2
+
forward 8
+
forward 7
+
forward 2
+
forward 8
+
up 6
+
forward 5
+
down 2
+
down 5
+
up 8
+
up 6
+
forward 1
+
down 4
+
up 5
+
up 5
+
up 5
+
forward 4
+
up 1
+
forward 3
+
down 9
+
down 6
+
up 1
+
forward 1
+
forward 2
+
forward 1
+
forward 4
+
forward 6
+
forward 6
+
up 7
+
down 7
+
down 7
+
down 9
+
forward 9
+
down 1
+
down 5
+
down 1
+
down 7
+
down 1
+
up 6
+
forward 2
+
down 4
+
up 3
+
up 2
+
forward 6
+
up 4
+
down 1
+
down 5
+
forward 9
+
up 4
+
up 3
+
forward 3
+
up 7
+
forward 2
+
forward 5
+
down 9
+
forward 7
+
forward 4
+
down 1
+
up 2
+
forward 4
+
up 4
+
down 2
+
forward 4
+
up 5
+
up 1
+
down 9
+
down 3
+
up 6
+
forward 7
+
up 7
+
forward 2
+
down 4
+
up 3
+
up 3
+
forward 4
+
up 5
+
down 3
+
up 8
+
forward 6
+
forward 8
+
down 1
+
down 9
+
down 7
+
forward 7
+
forward 5
+
forward 2
+
up 9
+
forward 3
+
forward 1
+
down 7
+
down 6
+
forward 5
+
up 3
+
forward 6
+
down 4
+
forward 9
+
down 7
+
forward 9
+
down 9
+
down 5
+
down 6
+
down 2
+
down 2
+
down 8
+
down 3
+
down 9
+
forward 5
+
up 6
+
forward 1
+
down 3
+
down 2
+
up 1
+
up 6
+
forward 3
+
down 6
+
down 6
+
up 9
+
up 8
+
forward 2
+
down 7
+
forward 5
+
up 9
+
down 7
+
down 3
+
forward 2
+
forward 2
+
up 9
+
forward 1
+
forward 7
+
down 9
+
forward 6
+
forward 7
+
up 8
+
down 7
+
down 5
+
down 3
+
up 6
+
down 5
+
forward 6
+
down 9
+
down 6
+
up 9
+
down 7
+
forward 2
+
down 5
+
up 4
+
down 4
+
down 8
+
forward 7
+
down 9
+
forward 8
+
forward 6
+
down 7
+
down 1
+
forward 5
+
up 6
+
forward 4
+
up 7
+
up 4
+
up 5
+
forward 9
+
forward 5
+
forward 4
+
down 6
+
down 5
+
forward 2
+
forward 7
+
down 8
+
forward 3
+
up 5
+
down 2
+
up 3
+
forward 4
+
up 5
+
up 2
+
forward 4
+
forward 1
+
forward 1
+
forward 4
+
forward 4
+
down 2
+
forward 1
+
forward 1
+
up 5
+
up 7
+
down 8
+
down 4
+
forward 2
+
forward 2
+
down 3
+
forward 7
+
down 8
+
up 3
+
forward 2
+
down 2
+
forward 3
+
up 2
+
forward 3
+
up 6
+
down 7
+
up 7
+
down 3
+
up 9
+
forward 3
+
forward 7
+
down 7
+
up 9
+
down 6
+
down 2
+
forward 8
+
forward 8
+
up 7
+
down 6
+
forward 2
+
forward 1
+
down 4
+
up 2
+
forward 6
+
up 7
+
down 5
+
up 1
+
forward 3
+
forward 9
+
up 4
+
forward 5
+
forward 8
+
down 3
+
up 5
+
forward 9
+
down 6
+
up 9
+
forward 5
+
down 4
+
down 1
+
down 6
+
up 9
+
up 2
+
forward 5
+
down 1
+
up 3
+
down 5
+
forward 2
+
down 4
+
forward 5
+
down 6
+
down 4
+
down 4
+
forward 1
+
down 7
+
down 2
+
forward 4
+
forward 5
+
up 9
+
down 6
+
down 2
+
forward 7
+
up 8
+
down 9
+
forward 7
+
down 5
+
down 2
+
down 8
+
down 8
+
up 4
+
up 3
+
down 3
+
down 7
+
forward 4
+
forward 6
+
down 4
+
up 7
+
forward 4
+
forward 4
+
forward 1
+
down 3
+
down 2
+
forward 7
+
forward 2
+
up 9
+
down 7
+
up 7
+
forward 2
+
forward 6
+
forward 9
+
down 3
+
forward 7
+
forward 5
+
up 5
+
up 1
+
forward 6
+
forward 4
+
down 2
+
forward 3
+
forward 9
+
down 1
+
forward 6
+
forward 7
+
forward 1
+
up 7
+
up 4
+
forward 7
+
forward 8
+
down 7
+
down 8
+
down 9
+
forward 7
+
down 9
+
up 6
+
down 7
+
up 3
+
down 7
+
forward 4
+
forward 9
+
forward 1
+
down 4
+
forward 1
+
up 4
+
up 4
+
forward 9
+
forward 8
+
up 4
+
down 2
+
forward 4
+
forward 2
+
forward 8
+
down 2
+
up 6
+
down 4
+
forward 6
+
forward 5
+
down 2
+
forward 9
+
down 5
+
forward 5
+
down 3
+
down 2
+
up 9
+
down 3
+
forward 6
+
forward 6
+
up 9
+
down 1
+
forward 4
+
up 3
+
forward 1
+
forward 3
+
forward 3
+
down 6
+
down 2
+
forward 8
+
down 4
+
forward 8
+
forward 8
+
forward 5
+
up 6
+
forward 3
+
down 1
+
down 8
+
forward 3
+
forward 4
+
down 2
+
down 7
+
up 8
+
forward 3
+
forward 8
+
up 2
+
forward 6
+
down 4
+
forward 9
+
forward 5
+
down 1
+
forward 6
+
forward 2
+
down 3
+
up 4
+
down 7
+
down 2
+
up 2
+
forward 7
+
down 6
+
down 2
+
up 5
+
up 5
+
down 9
+
down 7
+
down 3
+
down 1
+
down 9
+
forward 4
+
down 4
+
forward 7
+
forward 8
+
forward 4
+
up 6
+
forward 6
+
forward 9
+
down 2
+
forward 4
+
down 8
+
down 4
+
forward 5
+
forward 2
+
up 4
+
down 3
+
up 8
+
up 1
+
down 1
+
forward 9
+
up 3
+
up 1
+
forward 1
+
forward 7
+
forward 1
+
down 7
+
forward 7
+
forward 7
+
down 7
+
forward 4
+
up 6
+
forward 3
+
down 1
+
up 1
+
up 8
+
forward 5
+
forward 2
+
up 4
+
forward 7
+
down 2
+
down 3
+
down 8
+
up 7
+
up 5
+
forward 8
+
down 5
+
down 3
+
down 9
+
forward 6
+
forward 4
+
down 9
+
up 5
+
forward 3
+
up 7
+
up 9
+
up 1
+
forward 1
+
forward 3
+
forward 1
+
up 8
+
up 4
+
down 1
+
down 8
+
down 3
+
down 1
+
down 1
+
down 9
+
forward 4
+
down 3
+
forward 9
+
forward 2
+
down 1
+
forward 9
+
up 7
+
forward 6
+
up 4
+
forward 8
+
forward 3
+
down 2
+
down 2
+
down 2
+
up 5
+
forward 1
+
up 1
+
forward 7
+
down 1
+
forward 1
+
down 8
+
up 4
+
up 1
+
forward 7
+
down 8
+
down 9
+
forward 2
+
forward 1
+
up 3
+
forward 4
+
up 8
+
forward 5
+
down 2
+
forward 6
+
forward 8
+
up 9
+
forward 2
+
down 7
+
down 4
+
up 3
+
forward 1
+
forward 6
+
forward 9
+
down 1
+
down 8
+
down 1
+
down 2
+
forward 3
+
forward 9
+
forward 2
+
forward 4
+
forward 7
+
forward 3
+
up 8
+
up 9
+
forward 3
+
forward 6
+
down 5
+
up 6
+
down 8
+
forward 5
+
up 4
+
up 9
+
forward 6
+
forward 3
+
up 9
+
forward 8
+
forward 5
+
forward 9
+
forward 7
+
up 6
+
forward 3
+
forward 1
+
up 4
+
forward 9
+
forward 8
+
up 1
+
up 2
+
down 3
+
down 4
+
down 9
+
down 4
+
down 5
+
down 6
+
down 2
+
down 5
+
forward 6
+
forward 4
+
up 2
+
up 7
+
down 5
+
down 9
+
forward 3
+
down 5
+
forward 6
+
down 7
+
forward 1
+
forward 7
+
forward 9
+
forward 7
+
forward 4
+
forward 4
+
up 1
+
up 4
+
down 6
+
up 2
+
up 1
+
down 4
+
forward 2
+
down 4
+
forward 6
+
down 3
+
up 6
+
down 2
+
up 3
+
forward 1
+
forward 9
+
forward 3
+
up 9
+
forward 7
+
forward 5
+
forward 4
+
down 5
+
down 9
+
forward 6
+
forward 7
+
up 1
+
forward 7
+
forward 2
+
forward 2
+
forward 5
+
forward 6
+
down 3
+
down 7
+
down 3
+
down 4
+
down 6
+
down 1
+
forward 2
+
down 8
+
forward 4
+
forward 7
+
up 1
+
down 4
+
down 1
+
down 2
+
down 3
+
up 3
+
forward 9
+
forward 2
+
down 8
+
up 3
+
forward 8
+
forward 7
+
up 8
+
down 8
+
forward 2
+
down 9
+
down 9
+
down 5
+
forward 1
+
forward 3
+
forward 6
+
up 1
+
up 2
+
forward 1
+
down 3
+
up 6
+
forward 2
+
forward 8
+
forward 2
+
down 3
+
forward 8
+
forward 9
+
down 7
+
down 3
+
down 2
+
down 9
+
down 3
+
up 6
+
forward 9
+
forward 5
+
forward 1
+
forward 9
+
down 9
+
up 2
+
down 1
+
up 6
+
forward 6
+
down 3
+
forward 6
+
forward 3
+
forward 5
+
forward 4
+
up 2
+
up 4
+
up 6
+
forward 1
+
forward 6
+
up 6
+
up 4
+
up 7
+
down 8
+
down 5
+
up 1
+
up 1
+
down 5
+
forward 5
+
down 9
+
forward 8
+
down 3
+
up 4
+
down 9
+
down 1
+
forward 2
+
forward 9
+
down 3
+
down 8
+
down 5
+
down 6
+
forward 7
+
forward 1
+
down 9
+
down 7
+
forward 8
+
forward 2
+
up 1
+
up 1
+
forward 7
+
up 1
+
forward 2
+
down 9
+
up 4
+
forward 5
+
down 1
+
up 1
+
down 8
+
down 3
+
up 1
+
down 8
+
down 7
+
down 2
+
forward 9
+
down 5
+
forward 2
+
up 2
+
up 6
+
up 4
+
forward 6
+
up 5
+
forward 5
+
forward 4
+
forward 8
+
down 8
+
down 6
+
down 1
+
down 3
+
down 6
+
forward 8
+
up 1
+
up 5
+
down 4
+
forward 4
+
down 9
+
forward 4
+
up 6
+
down 7
+
forward 4
+
down 3
+
down 4
+
forward 1
+
forward 3
+
down 1
+
down 7
+
up 8
+
down 3
+
down 4
+
down 3
+
forward 3
+
down 8
+
forward 8
+
down 3
+
down 7
+
forward 2
+
up 2
+
forward 7
+
down 9
+
up 7
+
forward 5
+
down 2
+
down 5
+
up 4
+
up 8
+
forward 8
+
forward 9
+
forward 8
+
down 8
+
forward 6
+
forward 9
+
forward 6
+
forward 8
+
forward 6
+
forward 8
+
forward 2
+
down 7
+
down 3
+
forward 7
+
down 4
+
down 5
+
up 1
+
forward 5
+
down 3
+
down 7
+
up 4
+
forward 9
+
down 2
+
down 3
+
forward 1
+
up 6
+
down 1
+
down 9
+
forward 8
+
forward 9
+
forward 2
+
down 6
+
down 4
+
up 3
+
up 8
+
forward 1
+
down 3
+
up 8
+
up 7
+
down 4
+
up 3
+
down 7
+
down 2
+
down 5
+
down 7
+
down 2
+
forward 2
+
down 3
+
up 2
+
forward 8
+
up 1
+
forward 2
+
up 4
+
forward 1
+
forward 8
+
forward 6
+
forward 2
+
down 2
+
forward 5
+
up 4
+
down 9
+
down 7
+
forward 2
+
down 9
+
down 9
+
forward 6
+
down 8
+
down 4
+
down 7
+
down 9
+
forward 7
+
forward 7
+
up 6
+
forward 3
+
forward 5
+
forward 6
+
down 8
+
up 1
+
forward 2
+
up 4
+
up 2
+
down 8
+
down 9
+
down 1
+
down 3
+
forward 7
+
forward 5
+
forward 6
+
up 6
+
down 7
+
up 8
+
up 1
+
forward 8
+
down 5
+
up 1
+
down 2
+
down 5
+
forward 6
+
down 4
+
forward 5
+
down 4
+
forward 3
+
down 5
+
up 4
+
up 7
+
forward 2
+
up 2
+
down 8
+
forward 6
+1000
2021/day3.txt
···
+
011110111101
+
110010010001
+
111011111111
+
110011010100
+
111100000011
+
010101001001
+
010101000010
+
100111101000
+
110110101110
+
001001101000
+
101100100110
+
101001100110
+
101110000110
+
011111111100
+
110010000101
+
000011111001
+
101000110001
+
100111011101
+
011011011011
+
111100000100
+
010100101100
+
110010000110
+
101000001101
+
010100110011
+
111101101100
+
100101000011
+
101000100111
+
111010010000
+
011111000110
+
110100101010
+
011010000000
+
101110100111
+
010000001000
+
001111001010
+
001011101011
+
100001110010
+
001100100100
+
111110011110
+
000011101011
+
101100111011
+
000000101011
+
101000000100
+
001000101011
+
110101000111
+
011010111011
+
100011101011
+
110101011000
+
001110110010
+
100011101110
+
001101011001
+
000101100100
+
010000101100
+
100010001100
+
100101001010
+
011010110001
+
111001110110
+
111101111101
+
000010011000
+
110100111000
+
011010000100
+
000000010110
+
100000001001
+
110101101001
+
111010100001
+
101011110000
+
110100101111
+
010000010110
+
111010110100
+
011110010110
+
001100001111
+
001110001110
+
111001110101
+
010111000110
+
101111001101
+
010011010011
+
000001110101
+
101100010001
+
111101110011
+
101000010101
+
100110011001
+
010101011101
+
111111101110
+
010011010010
+
110000101111
+
100101111001
+
011110100110
+
111100110000
+
100000111000
+
011010011111
+
101001101110
+
110001110111
+
101011001111
+
010101110010
+
000110001100
+
101110011011
+
000111111100
+
001001011110
+
010000100101
+
110110111101
+
001000011001
+
011011110101
+
100000001011
+
010110000011
+
110011001100
+
110000110010
+
111000110111
+
110000001000
+
011110101001
+
001111101010
+
001111000111
+
100010100010
+
001001010100
+
001101101001
+
000011000011
+
101010101101
+
101101011000
+
000010001000
+
011101110101
+
000001011110
+
001000101001
+
000110000000
+
100010111011
+
001111111111
+
001101110101
+
001101100100
+
101000011110
+
010001010101
+
111011010000
+
000011011101
+
101101001010
+
010000110001
+
111110011000
+
110011100111
+
000110111100
+
010110001101
+
010100010100
+
101010100001
+
011010111001
+
010001100100
+
010100111011
+
010010010111
+
011100011011
+
101110110111
+
011111101000
+
101110001101
+
001001100111
+
101100101010
+
100001010101
+
100101000101
+
101000000011
+
110000101110
+
001000111000
+
011100000000
+
101100111110
+
000100101001
+
010100111111
+
000101110000
+
101111100010
+
110011101110
+
011001000100
+
111001001000
+
000001111010
+
100100010011
+
101010101001
+
010110010000
+
110011110111
+
101000010000
+
100000101010
+
110010011010
+
001001001111
+
001011011000
+
011101100110
+
100101101010
+
110010111100
+
110000100100
+
010010001100
+
010011010101
+
110011000010
+
101111110010
+
001011010001
+
001011001010
+
100000001010
+
000110010010
+
000111101111
+
110011101100
+
110100110010
+
100100010100
+
010001100010
+
001101101111
+
111110110001
+
111101000101
+
000101101111
+
000100110100
+
001000111011
+
011000111000
+
101000011001
+
110110110000
+
111111111010
+
000000001010
+
000010101010
+
001000001001
+
101001100101
+
001001000101
+
101111110111
+
101101001100
+
001110111011
+
101000111101
+
010100000000
+
110011011011
+
000110100001
+
100110111010
+
000011100001
+
010000010111
+
110111011100
+
111100001011
+
001111011001
+
000011011100
+
111110011011
+
010110000010
+
001000010100
+
011110011110
+
111100001101
+
110011100101
+
011111110000
+
100111011010
+
000000111011
+
111111001010
+
010100111100
+
000101111000
+
110010011111
+
110111101001
+
100011000001
+
111001100010
+
100101000001
+
010111111101
+
110010110001
+
001101001001
+
100101101001
+
011000110101
+
101110011001
+
101111101010
+
100111010001
+
011100111000
+
001100000111
+
001110011110
+
010010000101
+
010010110001
+
111010001101
+
000010110001
+
010110101110
+
011111111000
+
100000101001
+
111101011101
+
000001010100
+
000011001011
+
110000011100
+
000011001110
+
110101010110
+
011000110011
+
000111111000
+
100000110000
+
001010101010
+
001001101001
+
011101011011
+
100011110000
+
111011011000
+
111101110100
+
000001010110
+
100011110100
+
101101000010
+
000011011011
+
101011110110
+
100001101011
+
010111100000
+
000011000010
+
000111001111
+
011001100100
+
110110010010
+
000011110111
+
101001001011
+
010110110101
+
001100000110
+
000111101110
+
110011010011
+
101001010010
+
010011110100
+
110101011010
+
101100101011
+
101110010110
+
010000000011
+
010001101001
+
101010011110
+
010101100001
+
100100000110
+
000010010111
+
101100101110
+
000111000001
+
110100111111
+
010011100000
+
011101110000
+
011111011110
+
101011011110
+
100011110010
+
001100011100
+
011010010111
+
101010011001
+
110100100110
+
001011100111
+
001001101110
+
010001001000
+
101111100100
+
101011010001
+
100101100001
+
010000101001
+
000100000011
+
101011101000
+
000001100101
+
110001101111
+
001110000111
+
010010000110
+
101001101101
+
100110011000
+
100110000110
+
000000110010
+
000111100001
+
001000101110
+
110000000111
+
110011101111
+
101110010010
+
110010001110
+
101111011010
+
000001000000
+
110010100111
+
100111010111
+
001100101111
+
001110111001
+
111100011100
+
011000010100
+
100101101101
+
100001001110
+
111110100011
+
101111001000
+
010111000100
+
110001110010
+
001110101111
+
101000000111
+
010001010111
+
000000000111
+
010001111100
+
011100000110
+
010100010000
+
101000010001
+
101110000100
+
111111110001
+
110000001101
+
111001111111
+
000100011111
+
111001101000
+
001011111111
+
110100001011
+
111011000001
+
001111101101
+
101011110100
+
101010110010
+
101111110011
+
011100100100
+
001101011110
+
000100001011
+
100001011101
+
101000010110
+
001011110111
+
110101000101
+
011011011110
+
001010000001
+
000111000010
+
100101001001
+
000001110010
+
110100010011
+
111100101101
+
100111011001
+
000110101111
+
101010000100
+
011101011000
+
001110000010
+
001000111101
+
110000011000
+
010010010110
+
100101011000
+
000010010100
+
110001101010
+
101010000110
+
111111010010
+
001111001000
+
110100101001
+
010001000001
+
001111110010
+
110001011011
+
111100000001
+
011011110111
+
111001001111
+
110010000100
+
100101111011
+
001000111001
+
111010001010
+
101100100100
+
101000111110
+
000100101110
+
111000101001
+
001001010110
+
100100101101
+
111111011100
+
111001110011
+
011111001100
+
101010101100
+
000011010001
+
110111001110
+
010100000111
+
110011100000
+
101001000010
+
000111101001
+
010100011111
+
011101001001
+
100110010010
+
100110101010
+
010001110010
+
011101000101
+
001111100010
+
011010111111
+
110110001110
+
010010010000
+
101100110011
+
111111011101
+
000011000101
+
100000111100
+
111101010011
+
100111010011
+
110010011011
+
000011111100
+
011110011000
+
101100000101
+
111110000011
+
100100001011
+
000010011001
+
111000011101
+
111000110101
+
110010100010
+
101001010100
+
010001110011
+
001101001011
+
010000101111
+
111011100000
+
000110000111
+
000011100000
+
000101011101
+
000101100001
+
011100100000
+
011100001011
+
011110111011
+
111110010010
+
111000010110
+
000110001110
+
111100011001
+
010110000110
+
000001010111
+
100001111001
+
100111100001
+
011000111011
+
111111101001
+
001000000001
+
001101100011
+
111101010100
+
001101110001
+
110100111011
+
000111011010
+
000111110100
+
010100000011
+
010001110101
+
101100000011
+
110011111000
+
010010101001
+
101111011100
+
101101101101
+
111110000100
+
001011000000
+
010100001110
+
001001011011
+
011000011101
+
110111110101
+
101010010111
+
110101000010
+
111111000000
+
101010101110
+
101100110101
+
100110001011
+
011010110010
+
000010110010
+
000101001001
+
000011110011
+
101010111111
+
011000101101
+
111001100101
+
000110101001
+
110100000001
+
110010000001
+
111011011110
+
101110110101
+
000001111001
+
100100011011
+
011111111001
+
100111101110
+
101010010011
+
000010110000
+
011110111010
+
000011110100
+
101010010001
+
110000011001
+
100100110010
+
100110100110
+
110000110001
+
100111010100
+
000111011100
+
110001000100
+
011000010010
+
101111111110
+
011100011100
+
000001001110
+
111101101000
+
110011001011
+
010001000110
+
000111000000
+
000001001001
+
100100011100
+
101111011101
+
000111001001
+
010001011111
+
001100100101
+
011101000100
+
011001110101
+
100111100110
+
010110000100
+
111011100011
+
110000011010
+
011000101111
+
100010100011
+
111101001111
+
000111010110
+
011001110000
+
101101011011
+
010011000111
+
110001101100
+
000100001110
+
110101111000
+
111100001110
+
100101011110
+
111011101110
+
110010101111
+
110111101101
+
110100011001
+
000111111111
+
011001101110
+
001100010000
+
110011110000
+
011010110101
+
011110111100
+
100001110000
+
110101101110
+
000010001100
+
011001101100
+
100000110110
+
100111110111
+
101110001100
+
010101000011
+
110001110001
+
011001011001
+
011001111001
+
111010011001
+
110011011010
+
001011011110
+
111000000100
+
101110111001
+
110000111010
+
101010110101
+
110001011111
+
011001011111
+
101110010101
+
010110110111
+
010101100101
+
010111111000
+
010000011101
+
100111010000
+
100001111101
+
001101111010
+
001000000011
+
010110111011
+
010001110111
+
000011001000
+
110001111010
+
111101001001
+
110000000100
+
111100001000
+
111010000110
+
000100011110
+
110101101011
+
001011110100
+
011101011001
+
110101010100
+
110010011001
+
100101001111
+
100110110100
+
000101001101
+
001011101110
+
101000001010
+
001100101010
+
100010011011
+
100011100001
+
000101011111
+
111001100110
+
101110101011
+
111101111100
+
001000001010
+
001100010100
+
111010100111
+
000101110001
+
001010100001
+
001111110110
+
110110101000
+
110110000110
+
011110111110
+
100111110001
+
011000001110
+
110101010011
+
010110001110
+
111110010001
+
100101111000
+
001111100101
+
110011001010
+
111101010010
+
111111000011
+
001100101011
+
100001101100
+
100001110110
+
110000000001
+
000101001011
+
111111110111
+
000100010000
+
101010110011
+
111001101011
+
010111100010
+
001000011011
+
010010110011
+
001010111101
+
010011011011
+
011110000001
+
010101011111
+
001011101100
+
010000010000
+
111001100111
+
111001010011
+
111000111010
+
001100011110
+
010111011101
+
010110000111
+
010101100010
+
011110011100
+
100101000111
+
011010000111
+
000101010111
+
100101001100
+
011010110011
+
011000011110
+
010011110101
+
111000101111
+
111010101111
+
101111010110
+
100100101000
+
101011111100
+
100001001000
+
000100010101
+
001001100000
+
110100100001
+
100011110001
+
101110110110
+
110011000100
+
011001000101
+
111001110111
+
111011010110
+
101110110010
+
100110111001
+
110101011011
+
110110000011
+
000111101101
+
100011010010
+
111000100101
+
010001100000
+
010011111001
+
010101010101
+
110011110101
+
100000100110
+
110010101000
+
000100110101
+
010010110111
+
111000001001
+
001011111011
+
010000111001
+
111011001110
+
011101110110
+
010001111001
+
111001111110
+
101010101111
+
101111111101
+
110011101010
+
010011000110
+
101001111010
+
101110000101
+
000010000110
+
111110000111
+
001010111011
+
010110011111
+
001011101101
+
011101011110
+
000010000010
+
101011010011
+
011100011000
+
111000100011
+
011111011111
+
110000001010
+
000100000100
+
101010111101
+
110000111000
+
001100110000
+
111111011010
+
110100110000
+
000000000000
+
101001000000
+
110010110101
+
011011001100
+
101101101110
+
010110100011
+
101111000000
+
111011100101
+
110100100010
+
010111000001
+
110110011000
+
011101111110
+
000010110110
+
111000000011
+
001101110010
+
100000110011
+
000110000011
+
100111110000
+
011110110011
+
111010101010
+
010010001011
+
101111000110
+
001010000011
+
101111010000
+
011000111001
+
001001111101
+
010100011001
+
000000010011
+
001111001001
+
011000010000
+
011001111111
+
100010101001
+
010000100011
+
111111101101
+
011011001000
+
011001010011
+
111011011001
+
010001110110
+
110010110000
+
000000000011
+
110110000000
+
011101001101
+
011010000101
+
101011100110
+
001101010010
+
100000000100
+
100100010001
+
100110011111
+
111100001010
+
001100011111
+
000100000110
+
011011010010
+
011010001100
+
011111101011
+
011010101001
+
110111000110
+
110000110110
+
011110110000
+
010011011101
+
010011100100
+
000110111001
+
111011111001
+
101111010010
+
011000111100
+
101111111010
+
110011000001
+
000100011000
+
110101110100
+
011001101010
+
100011011101
+
001011110011
+
110010111110
+
000110001101
+
111011101001
+
100110100001
+
101011011010
+
001000101010
+
101011100111
+
110110000001
+
100100000010
+
101100010011
+
111001010101
+
011100000101
+
100010111100
+
010110100010
+
100100110001
+
100111001001
+
011101010010
+
101101111000
+
111100100111
+
111011001000
+
100111011111
+
111001100001
+
010001111011
+
011110100100
+
111111010101
+
101011111110
+
110101101100
+
000100101111
+
011110001000
+
101101001110
+
001111111010
+
110011100110
+
110110011100
+
111111100000
+
000000010001
+
100100001101
+
101000101110
+
100001011010
+
100011000100
+
110011110110
+
000000110100
+
010110001010
+
101000110000
+
110110001001
+
000001000101
+
011111100111
+
000011110101
+
101111010101
+
010101001111
+
110111001111
+
101001110010
+
011001010111
+
101000101010
+
100100000111
+
100011001011
+
110010000000
+
001000110001
+
100010001101
+
010001000010
+
101101111111
+
111001001011
+
101001011100
+
000100111100
+
110000000101
+
101010011101
+
000101000111
+
111000101100
+
001100000100
+
010010100101
+
011010100010
+
111000100110
+
001001111010
+
101001001111
+
011000100011
+
011000001100
+
011110101111
+
111011111110
+
101001001010
+
010000001111
+
000000000101
+
000111001010
+
100001000111
+
111101010001
+
010011001111
+
001110010000
+
101101001001
+
000110110111
+
001101011011
+
111100100010
+
101010001000
+
001001101100
+
011110001101
+
000101000011
+
111101100111
+
100110000010
+
111010100101
+
011010011110
+
000000101000
+
001011001000
+
001001011010
+
011100000100
+
000011010101
+
111110011100
+
001101110110
+
100011101111
+
011001110010
+
011100100111
+
010101001100
+
000101010000
+
101001101001
+
100101110111
+
101101100110
+
000101100010
+
111011000011
+
010010010011
+
000111111110
+
010101100011
+
000001010010
+
111100110010
+
101011001010
+
010110011110
+
011001101111
+
011100001010
+
001111001100
+
000110100011
+
101011101010
+
011111111110
+
100011011011
+
101010011111
+
010001110001
+
100010101101
+
010101010011
+
100001010001
+
111010011000
+
011110100010
+
001111000101
+
111101101010
+
011110100000
+
111110001101
+
110010010100
+
000001010011
+
000100101100
+
111000111111
+
011111000011
+
010000011001
+
000110001011
+
111100101110
+
001000110101
+
001011111100
+
001111010001
+
101000100101
+
000101001100
+
000110101010
+
010010011111
+
111101001000
+
101110110011
+
111100100110
+
101010101011
+
101010101010
+
100000111001
+
000101000001
+
100010010101
+
011000101000
+
100100001111
+
110111100011
+
101100000000
+
001011110001
+
110011001111
+
000001000011
+
001100111011
+
101100010000
+
001111000001
+
111100000101
+
101010111011
+
011111110010
+
011111010001
+
101011010100
+
000111111011
+
110000100110
+
110111110000
+
100101101110
+
001011000001
+
101100001101
+
011100010010
+
000110100110
+
010101110111
+
111100101011
+
101101001101
+
011011111110
+
011100011001
+
110010011100
+
000001011100
+
101110100110
+
010001011100
+
011111001010
+
100111100101
+
111111000010
+246
2021/solutions.livemd
···
+
<!-- vim: syntax=markdown -->
+
<!-- livebook:{"persist_outputs":true} -->
+
+
# Advent of Code 2021
+
+
## Setup
+
+
```elixir
+
Mix.install([])
+
```
+
+
```output
+
:ok
+
```
+
+
## Day 1
+
+
### Load input
+
+
```elixir
+
stream =
+
File.stream!("day1.txt")
+
|> Stream.map(&String.to_integer(String.trim(&1)))
+
```
+
+
```output
+
#Stream<[
+
enum: %File.Stream{
+
line_or_bytes: :line,
+
modes: [:raw, :read_ahead, :binary],
+
path: "day1.txt",
+
raw: true
+
},
+
funs: [#Function<47.58486609/1 in Stream.map/2>]
+
]>
+
```
+
+
### Task 1
+
+
<!-- livebook:{"break_markdown":true} -->
+
+
Compute count of consecutive increases
+
+
```elixir
+
stream
+
|> Stream.chunk_every(2, 1, :discard)
+
|> Enum.count(fn [a, b] -> a < b end)
+
```
+
+
```output
+
1688
+
```
+
+
### Task 2
+
+
<!-- livebook:{"break_markdown":true} -->
+
+
Compute count of consecutive increases of sums of trigrams.
+
+
However we can notice, that if we have list like:
+
+
$$
+
[a, b, c, d]
+
$$
+
+
Then when we want to compare consecutive trigrams then we compare:
+
+
$$
+
a + b + c < b + c + d \\
+
a < d
+
$$
+
+
So we can traverse each 4 elements and then just compare first and last one
+
instead of summing and then traversing it again.
+
+
```elixir
+
stream
+
|> Stream.chunk_every(4, 1, :discard)
+
|> Enum.count(fn [a, _, _, b] -> a < b end)
+
```
+
+
```output
+
1728
+
```
+
+
## Day 2
+
+
### Load input
+
+
We do parsing there, as it will help us with the latter tasks. Pattern matching
+
is the simplest approach there, as input is in form of:
+
+
```
+
forward 10
+
up 20
+
down 30
+
```
+
+
We need to `trim/1` input to make sure that the last newline will not interrupt
+
`String.to_integer/1` calls.
+
+
```elixir
+
stream =
+
File.stream!("day2.txt")
+
|> Stream.map(fn input ->
+
case String.trim(input) do
+
"forward " <> n -> {:forward, String.to_integer(n)}
+
"up " <> n -> {:up, String.to_integer(n)}
+
"down " <> n -> {:down, String.to_integer(n)}
+
end
+
end)
+
```
+
+
```output
+
#Stream<[
+
enum: %File.Stream{
+
line_or_bytes: :line,
+
modes: [:raw, :read_ahead, :binary],
+
path: "day2.txt",
+
raw: true
+
},
+
funs: [#Function<47.58486609/1 in Stream.map/2>]
+
]>
+
```
+
+
### Task 1
+
+
```elixir
+
{h, d} =
+
stream
+
|> Enum.reduce({0, 0}, fn
+
{:forward, n}, {h, d} -> {h + n, d}
+
{:up, n}, {h, d} -> {h, d - n}
+
{:down, n}, {h, d} -> {h, d + n}
+
end)
+
+
h * d
+
```
+
+
```output
+
1499229
+
```
+
+
### Task 2
+
+
```elixir
+
{h, d, _} =
+
stream
+
|> Enum.reduce({0, 0, 0}, fn
+
{:forward, n}, {h, d, a} -> {h + n, d + a * n, a}
+
{:up, n}, {h, d, a} -> {h, d, a - n}
+
{:down, n}, {h, d, a} -> {h, d, a + n}
+
end)
+
+
h * d
+
```
+
+
```output
+
1340836560
+
```
+
+
## Day 3
+
+
### Input
+
+
```elixir
+
stream =
+
File.stream!("day3.txt")
+
|> Enum.map(&String.trim/1)
+
|> Enum.map(&String.to_charlist/1)
+
+
defmodule Day3 do
+
def count(list) do
+
Enum.reduce(list, List.duplicate(0, 12), fn input, acc ->
+
for {value, counter} <- Enum.zip(input, acc) do
+
case value do
+
?1 -> counter + 1
+
?0 -> counter
+
end
+
end
+
end)
+
end
+
end
+
```
+
+
```output
+
{:module, Day3, <<70, 79, 82, 49, 0, 0, 7, ...>>, {:count, 1}}
+
```
+
+
### Task 1
+
+
```elixir
+
half = div(length(stream), 2)
+
+
{a, b} =
+
stream
+
|> Day3.count()
+
|> Enum.reduce({0, 0}, fn elem, {a, b} ->
+
if elem > half do
+
{a * 2 + 1, b * 2}
+
else
+
{a * 2, b * 2 + 1}
+
end
+
end)
+
+
a * b
+
```
+
+
```output
+
3847100
+
```
+
+
### Task 2
+
+
```elixir
+
defmodule Day3.Task2 do
+
def reduce(list, cb), do: reduce(list, 0, cb)
+
+
defp reduce([elem], _, _), do: elem
+
+
defp reduce(list, at, cb) do
+
counts = Day3.count(list)
+
+
half = div(length(list), 2)
+
count = Enum.at(counts, at)
+
+
bit =
+
cond do
+
count == half and cb.(count + 1, half) -> ?1
+
count != half and cb.(count, half) -> ?1
+
true -> ?0
+
end
+
+
reduce(Enum.filter(list, &(Enum.at(&1, at) == bit)), at + 1, cb)
+
end
+
end
+
+
co2 = List.to_integer(Day3.Task2.reduce(stream, &</2), 2)
+
o2 = List.to_integer(Day3.Task2.reduce(stream, &>/2), 2)
+
+
co2 * o2
+
```
+
+
```output
+
4105235
+
```