Make all scripts able to take a file name, merge parts 1 and 2 of lanternfish in...
authorBrett Parker <iDunno@sommitrealweird.co.uk>
Wed, 8 Dec 2021 23:24:24 +0000 (23:24 +0000)
committerBrett Parker <iDunno@sommitrealweird.co.uk>
Wed, 8 Dec 2021 23:24:24 +0000 (23:24 +0000)
12 files changed:
day01/count.sh
day01/input-twitter.txt [new file with mode: 0644]
day02/input-twitter.txt [new file with mode: 0644]
day02/sub.sh
day03/input-twitter.txt [new file with mode: 0644]
day04/input-twitter.txt [new file with mode: 0644]
day05/input-twitter.txt [new file with mode: 0644]
day06/input-twitter.txt [new file with mode: 0644]
day06/lanternfish.sh
day06/lanternfish2.sh [deleted file]
day07/input-twitter.txt [new file with mode: 0644]
day08/input-twitter.txt [new file with mode: 0644]

index 990433db1ae9f939fb8e4769f126cf6d19903435..86a89b1900fbd7aadce5f281b5f9016b7e815485 100755 (executable)
@@ -9,7 +9,9 @@ cur_window=1
 
 declare -a windows
 
-for num in $(<input.txt); do
+filename="${1:-input.txt}"
+
+for num in $(<"$filename"); do
     cur_line=$((cur_line+1))
     windows[$cur_window]=$num
     if [ $cur_window -gt 1 ]; then
diff --git a/day01/input-twitter.txt b/day01/input-twitter.txt
new file mode 100644 (file)
index 0000000..013e712
--- /dev/null
@@ -0,0 +1,2000 @@
+176
+184
+196
+199
+204
+206
+219
+215
+216
+217
+218
+230
+231
+214
+210
+189
+174
+170
+162
+167
+173
+182
+177
+179
+180
+182
+198
+201
+200
+207
+203
+213
+231
+222
+223
+224
+209
+217
+228
+236
+243
+241
+260
+262
+258
+260
+254
+270
+271
+278
+264
+263
+262
+260
+261
+234
+229
+233
+208
+210
+211
+210
+206
+207
+209
+199
+201
+218
+210
+206
+207
+218
+221
+229
+233
+234
+235
+246
+253
+254
+260
+259
+253
+254
+275
+277
+295
+296
+299
+333
+334
+336
+337
+339
+347
+374
+369
+371
+376
+371
+374
+375
+371
+374
+381
+383
+384
+395
+396
+400
+395
+397
+399
+389
+396
+390
+404
+411
+412
+428
+424
+433
+431
+437
+473
+489
+486
+488
+479
+480
+484
+474
+475
+471
+492
+493
+501
+512
+509
+506
+519
+523
+522
+521
+535
+548
+531
+519
+523
+522
+516
+512
+522
+547
+581
+582
+580
+579
+580
+600
+595
+592
+587
+588
+591
+592
+583
+586
+584
+597
+610
+592
+581
+583
+578
+575
+582
+579
+587
+594
+592
+593
+599
+605
+609
+610
+609
+601
+604
+608
+609
+613
+614
+612
+614
+626
+627
+636
+656
+652
+655
+656
+678
+680
+686
+687
+654
+663
+669
+664
+668
+647
+652
+659
+653
+654
+656
+637
+638
+621
+620
+621
+609
+604
+612
+616
+612
+617
+614
+610
+607
+608
+613
+617
+624
+625
+622
+604
+606
+610
+609
+607
+605
+618
+622
+635
+636
+640
+667
+668
+664
+674
+675
+682
+694
+698
+704
+717
+723
+724
+699
+695
+693
+674
+670
+683
+685
+683
+676
+675
+678
+677
+675
+657
+670
+675
+673
+658
+660
+673
+685
+675
+676
+677
+671
+689
+688
+690
+691
+692
+709
+713
+712
+715
+739
+731
+734
+762
+764
+746
+728
+729
+727
+730
+745
+773
+781
+787
+806
+807
+808
+815
+822
+837
+844
+842
+841
+850
+853
+838
+841
+845
+846
+844
+849
+846
+847
+859
+851
+854
+857
+873
+882
+892
+896
+883
+896
+895
+886
+879
+878
+877
+878
+881
+891
+898
+913
+914
+920
+922
+928
+929
+915
+917
+918
+913
+926
+929
+937
+939
+940
+936
+938
+939
+948
+946
+951
+950
+918
+917
+924
+917
+918
+921
+919
+917
+929
+950
+985
+988
+991
+996
+1002
+995
+990
+999
+989
+990
+991
+992
+991
+992
+993
+991
+994
+996
+997
+989
+993
+975
+973
+972
+973
+971
+969
+976
+983
+980
+987
+1003
+1002
+1000
+993
+994
+993
+972
+970
+991
+988
+989
+993
+996
+1002
+1003
+1008
+1007
+1014
+1015
+1022
+1012
+1029
+1030
+1029
+1030
+1025
+1026
+1010
+1006
+1008
+1006
+1012
+1015
+1029
+1067
+1102
+1107
+1108
+1103
+1108
+1103
+1120
+1119
+1118
+1119
+1118
+1119
+1132
+1137
+1148
+1150
+1153
+1166
+1169
+1199
+1205
+1208
+1216
+1210
+1217
+1216
+1217
+1218
+1198
+1199
+1197
+1198
+1193
+1202
+1241
+1242
+1239
+1241
+1238
+1233
+1234
+1235
+1237
+1228
+1229
+1235
+1218
+1236
+1237
+1208
+1246
+1251
+1246
+1248
+1242
+1241
+1243
+1231
+1226
+1224
+1221
+1220
+1224
+1219
+1227
+1214
+1237
+1261
+1271
+1268
+1292
+1304
+1303
+1312
+1287
+1286
+1292
+1295
+1297
+1304
+1311
+1312
+1309
+1314
+1307
+1316
+1320
+1319
+1316
+1333
+1332
+1316
+1315
+1320
+1321
+1335
+1355
+1353
+1356
+1325
+1333
+1335
+1339
+1360
+1361
+1362
+1364
+1361
+1363
+1362
+1363
+1364
+1392
+1397
+1398
+1405
+1406
+1408
+1406
+1394
+1391
+1407
+1413
+1415
+1413
+1419
+1422
+1416
+1422
+1421
+1431
+1433
+1437
+1439
+1443
+1446
+1449
+1439
+1444
+1452
+1460
+1468
+1469
+1486
+1500
+1507
+1513
+1512
+1511
+1531
+1532
+1541
+1550
+1557
+1561
+1557
+1560
+1563
+1564
+1565
+1588
+1589
+1592
+1591
+1593
+1598
+1603
+1590
+1604
+1608
+1610
+1623
+1598
+1592
+1601
+1598
+1600
+1601
+1599
+1609
+1607
+1608
+1613
+1605
+1601
+1605
+1610
+1611
+1609
+1608
+1615
+1620
+1629
+1628
+1641
+1632
+1630
+1635
+1634
+1629
+1630
+1632
+1630
+1641
+1661
+1655
+1657
+1653
+1619
+1629
+1607
+1600
+1603
+1591
+1596
+1599
+1601
+1582
+1591
+1593
+1596
+1597
+1600
+1596
+1597
+1603
+1624
+1630
+1628
+1626
+1628
+1631
+1628
+1629
+1625
+1627
+1620
+1613
+1614
+1638
+1637
+1626
+1624
+1623
+1621
+1620
+1621
+1598
+1610
+1611
+1622
+1629
+1646
+1655
+1677
+1678
+1679
+1699
+1702
+1715
+1710
+1722
+1719
+1715
+1716
+1724
+1735
+1734
+1727
+1743
+1748
+1745
+1742
+1755
+1754
+1734
+1738
+1729
+1732
+1733
+1726
+1723
+1744
+1745
+1746
+1748
+1778
+1777
+1780
+1792
+1798
+1799
+1800
+1793
+1794
+1797
+1802
+1796
+1800
+1820
+1823
+1824
+1823
+1828
+1827
+1824
+1847
+1842
+1846
+1847
+1844
+1833
+1826
+1834
+1839
+1846
+1854
+1842
+1845
+1860
+1874
+1869
+1871
+1869
+1870
+1874
+1875
+1891
+1893
+1894
+1886
+1885
+1853
+1871
+1868
+1866
+1875
+1885
+1882
+1883
+1879
+1884
+1893
+1918
+1919
+1932
+1933
+1930
+1949
+1952
+1949
+1945
+1944
+1930
+1950
+1952
+1951
+1981
+1980
+1992
+1993
+1981
+1979
+2007
+1989
+1987
+1996
+2006
+2012
+2028
+2037
+2041
+2039
+2046
+2047
+2055
+2058
+2079
+2086
+2087
+2088
+2079
+2080
+2079
+2082
+2089
+2092
+2097
+2113
+2115
+2119
+2109
+2111
+2110
+2108
+2100
+2099
+2107
+2103
+2104
+2115
+2110
+2116
+2117
+2113
+2120
+2128
+2129
+2115
+2114
+2125
+2148
+2145
+2147
+2160
+2159
+2162
+2155
+2161
+2162
+2160
+2162
+2149
+2150
+2152
+2170
+2171
+2172
+2171
+2186
+2187
+2186
+2188
+2196
+2185
+2195
+2196
+2200
+2197
+2195
+2190
+2191
+2189
+2199
+2200
+2208
+2204
+2203
+2209
+2231
+2234
+2247
+2245
+2277
+2279
+2281
+2282
+2279
+2294
+2296
+2304
+2287
+2294
+2293
+2297
+2311
+2339
+2343
+2344
+2323
+2360
+2369
+2371
+2372
+2373
+2372
+2384
+2383
+2390
+2412
+2419
+2421
+2432
+2428
+2427
+2449
+2459
+2456
+2457
+2459
+2469
+2472
+2474
+2472
+2475
+2487
+2479
+2481
+2482
+2481
+2502
+2492
+2493
+2496
+2522
+2529
+2550
+2551
+2549
+2547
+2546
+2551
+2553
+2555
+2552
+2547
+2536
+2534
+2518
+2517
+2513
+2511
+2495
+2508
+2500
+2501
+2514
+2524
+2551
+2552
+2561
+2563
+2571
+2573
+2565
+2559
+2564
+2565
+2568
+2570
+2556
+2546
+2552
+2554
+2581
+2574
+2573
+2572
+2575
+2577
+2578
+2579
+2580
+2579
+2589
+2586
+2587
+2611
+2615
+2614
+2618
+2619
+2618
+2626
+2630
+2623
+2627
+2628
+2627
+2628
+2657
+2658
+2672
+2673
+2685
+2668
+2658
+2660
+2668
+2669
+2671
+2673
+2669
+2668
+2675
+2668
+2669
+2652
+2672
+2675
+2678
+2677
+2699
+2700
+2701
+2712
+2710
+2712
+2711
+2710
+2721
+2722
+2727
+2731
+2733
+2731
+2734
+2738
+2751
+2745
+2744
+2750
+2765
+2767
+2773
+2771
+2770
+2773
+2778
+2782
+2792
+2796
+2794
+2806
+2807
+2820
+2823
+2836
+2834
+2827
+2826
+2830
+2828
+2829
+2831
+2838
+2845
+2846
+2863
+2860
+2862
+2861
+2862
+2863
+2864
+2871
+2873
+2874
+2875
+2893
+2892
+2893
+2898
+2924
+2942
+2956
+2950
+2952
+2990
+2993
+2994
+3001
+3017
+3022
+3017
+3016
+3017
+3012
+3018
+3019
+3018
+3048
+3058
+3059
+3062
+3072
+3073
+3071
+3072
+3065
+3093
+3094
+3095
+3094
+3100
+3101
+3084
+3085
+3079
+3077
+3099
+3100
+3117
+3118
+3121
+3122
+3137
+3108
+3110
+3109
+3108
+3113
+3102
+3103
+3119
+3122
+3126
+3132
+3137
+3132
+3152
+3153
+3163
+3164
+3176
+3175
+3181
+3190
+3191
+3198
+3195
+3177
+3178
+3177
+3183
+3202
+3203
+3192
+3184
+3185
+3191
+3196
+3195
+3173
+3183
+3182
+3184
+3185
+3193
+3210
+3208
+3207
+3214
+3221
+3234
+3233
+3263
+3284
+3283
+3284
+3270
+3259
+3268
+3253
+3259
+3246
+3251
+3246
+3251
+3256
+3249
+3251
+3261
+3260
+3259
+3267
+3277
+3273
+3282
+3286
+3284
+3285
+3288
+3295
+3270
+3269
+3277
+3276
+3281
+3280
+3292
+3293
+3301
+3306
+3335
+3336
+3310
+3309
+3312
+3318
+3324
+3340
+3368
+3371
+3369
+3370
+3368
+3367
+3386
+3388
+3416
+3420
+3423
+3433
+3427
+3438
+3457
+3469
+3474
+3479
+3489
+3507
+3471
+3468
+3480
+3486
+3490
+3493
+3495
+3496
+3495
+3479
+3480
+3485
+3490
+3489
+3491
+3488
+3494
+3493
+3515
+3517
+3526
+3519
+3520
+3525
+3515
+3516
+3517
+3508
+3510
+3512
+3515
+3536
+3535
+3530
+3540
+3542
+3550
+3530
+3550
+3553
+3537
+3536
+3542
+3547
+3544
+3562
+3561
+3551
+3546
+3547
+3562
+3561
+3586
+3593
+3582
+3586
+3589
+3600
+3604
+3605
+3607
+3608
+3613
+3624
+3626
+3652
+3668
+3669
+3666
+3674
+3677
+3668
+3671
+3673
+3675
+3657
+3666
+3655
+3658
+3662
+3659
+3660
+3657
+3655
+3662
+3657
+3660
+3661
+3664
+3675
+3677
+3661
+3663
+3669
+3645
+3646
+3644
+3645
+3666
+3677
+3685
+3686
+3689
+3697
+3694
+3703
+3672
+3676
+3675
+3706
+3726
+3742
+3744
+3765
+3792
+3793
+3802
+3805
+3813
+3816
+3817
+3826
+3827
+3828
+3830
+3826
+3825
+3824
+3816
+3821
+3820
+3821
+3825
+3846
+3848
+3847
+3846
+3849
+3854
+3844
+3860
+3859
+3861
+3863
+3848
+3845
+3846
+3853
+3851
+3850
+3863
+3865
+3885
+3912
+3913
+3914
+3913
+3901
+3897
+3927
+3928
+3927
+3929
+3931
+3925
+3912
+3915
+3919
+3920
+3896
+3900
+3904
+3909
+3919
+3922
+3923
+3925
+3944
+3938
+3937
+3936
+3944
+3943
+3942
+3955
+3944
+3945
+3948
+3946
+3939
+3955
+3957
+3951
+3950
+3954
+3966
+3974
+3987
+3991
+3987
+3985
+3981
+3983
+3986
+3996
+4002
+4012
+4031
+4030
+4031
+4034
+4018
+4020
+4007
+4009
+4019
+4006
+4011
+4018
+4022
+4012
+4014
+4012
+4013
+4031
+4046
+4051
+4054
+4065
+4070
+4074
+4080
+4081
+4080
+4051
+4058
+4056
+4054
+4049
+4054
+4048
+4065
+4078
+4082
+4086
+4099
+4100
+4106
+4126
+4118
+4145
+4141
+4142
+4153
+4168
+4176
+4168
+4167
+4171
+4172
+4173
+4137
+4154
+4150
+4134
+4137
+4138
+4137
+4148
+4151
+4129
+4131
+4130
+4132
+4129
+4155
+4156
+4157
+4162
+4179
+4185
+4187
+4186
+4177
+4167
+4174
+4178
+4176
+4174
+4177
+4180
+4192
+4206
+4212
+4192
+4201
+4193
+4213
+4194
+4201
+4181
+4184
+4181
+4192
+4195
+4205
+4209
+4199
+4201
+4200
+4201
+4219
+4218
+4220
+4221
+4235
+4236
+4229
+4235
+4233
+4234
+4240
+4239
+4211
+4216
+4223
+4210
+4224
+4225
+4223
+4224
+4223
+4233
+4232
+4240
+4248
+4240
+4241
+4246
+4247
+4244
+4245
+4246
+4256
+4261
+4274
+4268
+4288
+4289
+4290
+4301
+4299
+4303
+4304
+4303
+4297
+4299
+4288
+4296
+4293
+4296
+4295
+4302
+4303
+4319
+4313
+4315
+4320
+4322
+4326
+4328
+4337
+4338
+4351
+4370
+4381
+4388
+4413
+4418
+4417
+4416
+4415
+4436
+4440
+4441
+4464
+4461
+4468
+4469
+4471
+4480
+4496
+4495
+4496
+4497
+4494
+4461
+4462
+4461
+4462
+4461
+4457
+4466
+4467
+4468
+4469
+4491
+4497
+4510
+4500
+4485
+4497
+4508
+4506
+4500
+4501
+4514
+4516
+4517
+4516
+4543
+4549
+4529
+4523
+4522
+4540
+4539
+4540
+4543
+4545
+4530
+4532
+4531
+4533
+4535
+4511
+4517
+4520
+4521
+4523
+4517
+4525
+4526
+4538
+4566
+4567
+4564
+4575
+4577
+4576
+4574
+4580
+4594
+4595
+4596
+4621
+4622
+4629
+4632
+4641
+4642
+4658
+4659
+4660
+4685
+4687
+4708
+4727
+4735
+4739
+4745
+4744
+4753
+4755
+4757
+4759
+4782
+4785
+4777
+4783
+4786
+4789
+4794
+4802
+4803
+4833
+4849
+4857
+4865
+4866
+4872
+4869
+4876
+4874
+4877
+4899
+4900
+4901
+4893
+4892
+4904
+4907
+4900
+4907
+4908
+4903
+4890
+4895
+4896
+4876
+4880
+4888
+4889
+4894
+4893
+4924
+4927
+4922
+4893
+4901
+4891
+4908
+4916
+4915
+4920
+4931
+4954
+4943
+4953
+4954
+4959
+4949
+4952
+4936
+4935
+4916
+4922
+4923
+4922
+4928
+4929
+4930
+4927
+4923
+4926
+4924
+4931
+4935
+4955
+4966
+4987
+4988
+4990
+4992
+4991
+4999
+5001
+5006
+5007
+5021
+5034
+5047
+5050
+5055
+5091
+5096
+5101
+5100
+5105
+5108
+5117
+5114
+5127
+5129
+5127
+5153
+5152
+5154
+5155
+5156
+5142
+5154
+5180
+5177
+5183
+5184
+5201
+5204
+5205
+5222
+5212
+5217
+5222
+5251
+5278
+5277
+5302
+5319
+5326
+5333
+5327
+5321
+5337
+5361
+5362
+5368
+5369
+5366
+5368
+5385
+5383
+5384
+5393
+5403
+5427
+5428
+5429
+5428
+5459
+5442
+5441
+5433
+5436
+5428
+5429
+5428
+5427
+5433
+5418
+5419
+5421
+5425
+5426
+5435
+5441
+5445
+5442
+5446
+5454
+5458
+5454
+5456
+5452
+5423
+5426
+5425
+5418
+5417
+5420
+5425
+5420
+5438
+5447
+5450
+5451
+5453
+5450
+5453
+5449
+5457
+5464
+5455
+5460
+5443
+5439
+5425
+5423
+5434
+5438
+5437
+5412
+5408
+5405
+5407
+5420
+5426
+5452
+5459
+5460
+5490
+5498
+5508
+5528
+5531
+5516
+5517
+5512
+5524
+5529
+5511
+5525
+5527
+5538
+5539
+5546
+5550
+5549
+5552
+5554
+5559
+5551
+5552
+5556
+5559
+5579
+5584
+5590
+5593
+5592
+5595
+5604
+5600
+5586
+5591
+5572
+5571
+5583
+5584
+5578
+5579
+5580
+5579
+5570
+5571
+5574
+5577
+5583
+5584
+5569
+5586
+5582
+5561
+5550
+5554
+5544
+5550
+5529
+5538
+5551
+5569
+5570
+5584
+5588
+5596
diff --git a/day02/input-twitter.txt b/day02/input-twitter.txt
new file mode 100644 (file)
index 0000000..26e4fc2
--- /dev/null
@@ -0,0 +1,1000 @@
+forward 4
+down 7
+down 4
+forward 2
+down 4
+down 9
+down 1
+forward 1
+down 4
+up 5
+forward 5
+down 3
+forward 5
+forward 6
+down 5
+down 3
+forward 8
+up 7
+forward 1
+forward 5
+forward 7
+up 2
+up 7
+down 1
+down 6
+forward 7
+forward 6
+down 7
+up 9
+down 8
+down 3
+down 1
+down 4
+down 3
+forward 7
+down 1
+forward 6
+down 3
+forward 3
+down 6
+forward 5
+down 7
+up 5
+forward 7
+forward 9
+up 1
+forward 5
+down 5
+down 2
+forward 1
+up 7
+down 8
+down 2
+forward 8
+forward 1
+up 1
+up 5
+forward 9
+up 9
+down 5
+down 5
+forward 6
+forward 1
+down 1
+down 3
+up 6
+up 9
+down 6
+down 1
+forward 1
+down 8
+down 3
+down 8
+up 6
+forward 2
+up 8
+down 2
+down 6
+forward 1
+down 2
+down 1
+down 5
+down 8
+forward 8
+down 8
+down 2
+up 1
+up 3
+forward 1
+down 6
+up 5
+forward 5
+up 7
+forward 3
+forward 3
+down 9
+forward 1
+forward 7
+down 1
+down 1
+down 3
+forward 4
+down 4
+forward 2
+up 8
+forward 2
+down 4
+down 2
+up 1
+forward 6
+forward 6
+down 9
+forward 5
+down 3
+forward 5
+down 6
+down 9
+forward 9
+up 6
+down 8
+up 5
+up 2
+forward 5
+down 4
+forward 8
+up 1
+forward 2
+down 9
+down 4
+up 7
+down 1
+down 6
+down 7
+down 7
+down 2
+down 2
+up 7
+down 1
+up 7
+up 4
+forward 9
+down 6
+up 3
+down 5
+forward 8
+up 4
+forward 5
+forward 8
+forward 4
+forward 7
+forward 2
+down 3
+up 4
+forward 7
+forward 3
+down 7
+up 4
+forward 8
+forward 9
+forward 9
+up 6
+up 5
+forward 7
+down 7
+up 5
+down 9
+down 8
+forward 5
+forward 2
+down 1
+down 2
+down 9
+up 5
+down 3
+down 8
+up 6
+forward 9
+down 9
+up 3
+up 9
+forward 3
+forward 9
+down 5
+up 3
+down 6
+forward 5
+down 6
+down 9
+forward 3
+down 7
+down 5
+down 9
+forward 8
+down 8
+forward 8
+forward 2
+up 6
+down 9
+down 7
+down 4
+down 2
+down 9
+forward 7
+up 1
+forward 6
+forward 7
+down 3
+down 5
+down 3
+forward 4
+down 9
+forward 2
+down 1
+forward 4
+up 9
+down 8
+down 9
+forward 5
+up 2
+down 7
+down 2
+down 7
+forward 8
+up 8
+forward 9
+up 8
+down 3
+down 8
+forward 2
+up 7
+forward 4
+up 8
+forward 6
+forward 6
+forward 4
+forward 3
+down 4
+up 7
+down 8
+forward 1
+forward 9
+forward 8
+forward 8
+down 6
+down 6
+down 4
+down 8
+forward 9
+down 8
+down 4
+forward 2
+forward 7
+down 4
+up 1
+down 4
+down 5
+up 5
+up 9
+down 5
+up 5
+forward 2
+down 8
+forward 7
+forward 2
+up 4
+forward 8
+up 7
+down 5
+forward 5
+down 5
+down 6
+down 7
+forward 1
+down 8
+up 8
+up 9
+up 6
+forward 2
+forward 7
+forward 4
+down 6
+up 4
+up 3
+down 3
+forward 7
+up 9
+down 9
+up 5
+forward 1
+up 7
+down 7
+down 7
+up 8
+down 3
+forward 6
+down 6
+down 7
+down 2
+forward 5
+up 8
+up 5
+up 1
+down 5
+forward 9
+forward 9
+forward 2
+forward 6
+up 8
+forward 8
+down 1
+forward 6
+up 7
+up 3
+forward 3
+up 5
+down 8
+forward 2
+down 5
+down 5
+forward 8
+forward 8
+forward 6
+up 7
+up 1
+forward 1
+down 7
+down 1
+up 9
+forward 7
+up 6
+down 2
+down 5
+forward 1
+down 1
+up 1
+forward 7
+forward 7
+forward 1
+up 2
+forward 2
+down 9
+down 8
+forward 9
+forward 8
+up 9
+down 1
+down 3
+up 1
+down 3
+up 9
+down 7
+up 6
+down 1
+down 2
+down 2
+down 4
+forward 4
+forward 3
+down 7
+forward 9
+forward 1
+down 2
+down 2
+down 4
+down 7
+up 7
+forward 6
+forward 2
+down 6
+down 3
+down 3
+down 8
+up 8
+forward 6
+down 8
+down 3
+forward 7
+down 4
+down 4
+up 1
+up 8
+forward 5
+forward 6
+down 8
+down 9
+up 7
+forward 2
+forward 4
+down 4
+forward 6
+forward 5
+down 4
+up 5
+down 5
+forward 1
+down 2
+up 9
+forward 9
+forward 6
+forward 8
+down 2
+down 9
+up 1
+forward 6
+down 3
+forward 6
+forward 7
+down 9
+forward 1
+forward 1
+forward 5
+up 5
+up 6
+forward 8
+forward 6
+forward 6
+forward 8
+down 6
+down 8
+forward 5
+forward 7
+forward 3
+forward 3
+up 5
+forward 8
+up 3
+forward 6
+forward 4
+forward 3
+up 8
+down 1
+down 3
+down 7
+up 8
+forward 5
+down 9
+up 7
+down 2
+down 4
+down 5
+down 2
+up 3
+down 4
+down 4
+forward 4
+forward 6
+up 4
+forward 5
+forward 3
+up 2
+up 3
+down 4
+down 7
+forward 7
+forward 2
+down 2
+forward 5
+up 4
+forward 2
+down 8
+up 5
+up 6
+forward 2
+forward 3
+up 3
+down 2
+forward 7
+down 6
+forward 3
+forward 6
+up 9
+forward 7
+up 1
+forward 1
+forward 2
+down 3
+forward 9
+down 1
+up 5
+up 7
+up 8
+down 5
+up 4
+down 9
+forward 4
+up 8
+forward 3
+forward 7
+down 7
+down 9
+down 5
+up 4
+down 2
+up 5
+down 4
+forward 3
+down 7
+up 5
+forward 9
+forward 9
+forward 7
+up 5
+forward 7
+up 3
+forward 8
+down 1
+down 5
+up 5
+forward 4
+forward 9
+forward 9
+up 5
+down 9
+up 7
+up 3
+forward 5
+down 4
+down 7
+forward 9
+down 9
+up 3
+forward 4
+forward 7
+down 9
+forward 2
+down 2
+forward 1
+down 2
+up 7
+down 6
+forward 9
+forward 1
+down 5
+forward 9
+forward 7
+up 4
+forward 9
+forward 7
+up 4
+down 1
+down 3
+down 3
+down 1
+down 9
+forward 3
+forward 5
+forward 2
+down 1
+forward 9
+down 6
+up 6
+down 7
+down 1
+down 1
+up 1
+up 8
+down 6
+down 3
+down 9
+forward 3
+forward 9
+down 4
+forward 6
+forward 7
+down 3
+forward 5
+up 8
+up 6
+forward 3
+forward 2
+down 6
+up 7
+forward 3
+forward 1
+down 8
+down 1
+forward 1
+forward 2
+up 7
+down 3
+forward 9
+forward 6
+up 8
+forward 3
+down 3
+down 9
+down 3
+down 6
+down 6
+down 2
+forward 8
+down 3
+forward 2
+up 8
+forward 5
+up 6
+down 7
+down 4
+down 2
+up 9
+down 4
+down 9
+down 4
+down 9
+forward 2
+down 5
+down 5
+forward 7
+up 2
+forward 5
+forward 1
+down 4
+forward 6
+forward 9
+down 1
+down 2
+down 6
+forward 5
+up 9
+up 1
+up 9
+up 4
+down 1
+up 3
+down 5
+forward 4
+forward 3
+forward 1
+down 9
+down 9
+down 6
+forward 4
+forward 4
+forward 1
+down 9
+down 8
+down 7
+forward 2
+forward 7
+forward 1
+down 7
+forward 8
+forward 7
+up 4
+down 4
+forward 8
+forward 6
+down 6
+forward 9
+down 2
+forward 7
+forward 1
+down 5
+down 5
+down 3
+down 7
+forward 9
+down 2
+forward 3
+forward 6
+up 4
+up 9
+forward 6
+up 8
+up 2
+forward 9
+forward 3
+forward 9
+down 4
+down 8
+down 1
+down 1
+forward 4
+up 3
+forward 1
+forward 5
+down 5
+down 6
+down 7
+forward 5
+down 3
+up 9
+forward 5
+down 4
+up 9
+forward 1
+down 3
+down 5
+forward 2
+down 7
+up 7
+down 2
+forward 2
+down 2
+down 4
+down 3
+forward 6
+down 7
+down 2
+down 1
+forward 7
+forward 9
+forward 8
+up 8
+forward 5
+down 8
+forward 9
+forward 9
+up 5
+forward 9
+up 8
+up 6
+up 5
+up 3
+down 2
+down 8
+down 4
+up 3
+down 4
+up 8
+down 3
+up 1
+down 4
+down 7
+down 4
+up 7
+down 3
+up 3
+up 8
+forward 3
+down 2
+forward 7
+up 9
+forward 2
+down 1
+down 1
+forward 2
+forward 9
+up 6
+forward 3
+forward 2
+down 1
+down 3
+down 6
+forward 7
+down 4
+forward 2
+down 6
+up 3
+up 5
+forward 6
+up 7
+down 5
+up 5
+forward 5
+down 6
+forward 7
+up 2
+forward 3
+forward 4
+forward 9
+down 4
+down 5
+up 7
+up 1
+down 1
+down 5
+forward 4
+down 2
+down 8
+down 6
+down 3
+down 1
+down 9
+forward 5
+forward 7
+down 5
+forward 7
+down 6
+up 8
+up 9
+down 4
+forward 7
+up 1
+up 5
+down 8
+forward 5
+up 8
+forward 1
+forward 7
+forward 5
+forward 8
+forward 8
+up 1
+down 4
+up 6
+down 1
+down 4
+up 9
+forward 4
+forward 1
+forward 5
+up 7
+forward 5
+forward 7
+up 3
+up 6
+up 3
+forward 4
+down 5
+down 4
+down 2
+down 4
+forward 7
+down 5
+forward 9
+forward 2
+down 3
+up 7
+forward 9
+forward 3
+down 9
+up 8
+forward 1
+forward 3
+up 8
+down 3
+up 9
+down 4
+forward 6
+forward 8
+down 4
+forward 9
+up 1
+forward 3
+forward 1
+up 3
+down 3
+forward 1
+forward 2
+forward 8
+up 3
+down 9
+forward 1
+up 1
+forward 2
+down 4
+forward 7
+up 9
+forward 2
+down 6
+down 8
+up 1
+forward 1
+forward 7
+down 8
+forward 7
+up 9
+up 5
+down 6
+down 2
+down 9
+down 9
+down 7
+down 4
+forward 4
+up 2
+up 8
+forward 5
+down 9
+down 7
+forward 3
+forward 1
+down 3
+down 1
+forward 5
+up 2
+up 9
+up 2
+forward 4
+forward 3
+forward 8
+up 9
+up 6
+up 3
+forward 7
+forward 8
+forward 8
+forward 1
+forward 1
+forward 2
+down 2
+down 7
+forward 4
+up 2
+down 4
+forward 5
+down 3
+forward 1
+down 3
+up 2
+forward 9
+forward 7
+forward 5
+forward 1
+forward 6
+forward 9
+up 3
+down 8
+down 8
+forward 3
+up 4
+up 1
+down 4
+forward 8
+up 9
+down 4
+down 5
+forward 1
+forward 7
+up 2
+down 2
+down 2
+down 1
+up 6
+forward 7
+forward 7
+down 7
+down 8
+forward 1
+forward 8
+down 3
+up 5
+up 9
+down 2
+down 9
+forward 3
+up 8
+up 9
+up 3
+up 3
+forward 9
+up 6
+up 7
+down 6
+down 8
+forward 4
+down 8
+forward 4
+forward 9
+down 9
+forward 4
+up 6
+up 5
+down 2
+forward 6
+down 2
+up 2
+up 4
+forward 4
+forward 6
+down 7
+up 4
+down 8
+forward 1
+down 5
+forward 4
+down 3
+forward 3
+down 5
+forward 7
+down 8
+up 7
+down 7
+forward 1
+forward 6
+up 7
+up 8
+up 2
+forward 1
+forward 1
+down 5
+down 9
+forward 7
+forward 5
+down 7
+up 1
+forward 6
+forward 6
+down 6
+forward 1
+down 1
+down 2
+down 4
+forward 5
+up 7
+up 7
+forward 6
+down 1
+forward 7
index b8040aa88129a3942fdf1275e4637a7cdbd36a48..2140d4eac3668ff7b611a6e0b536e7d3b7042622 100755 (executable)
@@ -1,6 +1,8 @@
 #!/bin/bash
 
-exec 3<input.txt
+filename="${1:-input.txt}"
+
+exec 3<"$filename"
 depth=0
 horizontal=0
 aim=0
diff --git a/day03/input-twitter.txt b/day03/input-twitter.txt
new file mode 100644 (file)
index 0000000..c95ddb3
--- /dev/null
@@ -0,0 +1,1000 @@
+010100110111
+101001010000
+101011110010
+100100011101
+101000011000
+110011011110
+111010010100
+001111100000
+111101100001
+100010101110
+101101110101
+010010101110
+111001110100
+000101111000
+111101111100
+000010001100
+101010111101
+001010011011
+001101101101
+000000110100
+001100101011
+110110110010
+001110000011
+011001111001
+110100110011
+011000110001
+111100100010
+101011000000
+011101000111
+011111000111
+111011001110
+011111010100
+001110110001
+010110110001
+100111011011
+100110100100
+110010111000
+101111001100
+101111111001
+000001000110
+100010010110
+110111100101
+001001010101
+001110001011
+101111001011
+111011110010
+101001001100
+101010100001
+000000111101
+100000000111
+111010111101
+000110110111
+100100101111
+110101100101
+011010110010
+110100001110
+001011011010
+010101010101
+011110000100
+010000000010
+010111010111
+011010011100
+101101001011
+000111100101
+101111001000
+000100010000
+111000011111
+100001010101
+011101111110
+001111011110
+001100111111
+000011000100
+001011101010
+001011010111
+101001001110
+010101011001
+110101001011
+011110011110
+001000110010
+011101110001
+101110000000
+000001100111
+110111000011
+001001111010
+100100000000
+000000011101
+111110111011
+101001111100
+110110100010
+101011011000
+000111100010
+011000110100
+111100100100
+010010100000
+111101001011
+111001000000
+001001000001
+010010100001
+110110001100
+001101100001
+011110010110
+100111011101
+001001110110
+001001100011
+011001111010
+110110010111
+110100111010
+111110011100
+100000100111
+010001101101
+110100110101
+101111101001
+100110010000
+100011001111
+101111001010
+001110111001
+111101001101
+001010111101
+010010011010
+100101101111
+100000011110
+011111010001
+000010001101
+010100101100
+001010001100
+100111011100
+011110000000
+100000011111
+000010010100
+000001001101
+011111011111
+100101001101
+000100010110
+011011111100
+000111000011
+010100101011
+011000101111
+001001100111
+110111110100
+111101111011
+110011010101
+100111111111
+010100010000
+001111110101
+010011010001
+101000111111
+000001110100
+010010010000
+100010000101
+110111100111
+001011111101
+101100101101
+001010110100
+000100110001
+111101110110
+111110101110
+100011100110
+011001001010
+001000010111
+010001110110
+011110000010
+101010101111
+110100100100
+010001100101
+001011111110
+100111100000
+111101000010
+101101011110
+101100111100
+001110011100
+110110100101
+000110111010
+011001010111
+010001000011
+100010010111
+000110110000
+001000010101
+010011010010
+110000100010
+010000101110
+010110111000
+011101001000
+011110000111
+100110100011
+110011001001
+001110000111
+000001101110
+001000100110
+011101111000
+101100000101
+110001100000
+101000100101
+110101110101
+111000101111
+101000101001
+101000100000
+101011010110
+000010111100
+011101101000
+000110101001
+000110110110
+100111001011
+100010001101
+101111000111
+100100111000
+100100111100
+000000100010
+100110000111
+101110001100
+110010010010
+100110010011
+100100000011
+000001011111
+110100100000
+000000111100
+110110010001
+001101111110
+010011010011
+001000111110
+100010010100
+000111110101
+111111101001
+100110001110
+101011011101
+110100100010
+010100001000
+100111101001
+010111010001
+001110101000
+100111101111
+100010101011
+101111100111
+111001100110
+111100110101
+001101001111
+111011011111
+011011100110
+101111011000
+100110110001
+100010011101
+000111010101
+101101011100
+111010100100
+001101000100
+101111100101
+010110001010
+111101010000
+100111110100
+100000000011
+010001111110
+011010001110
+110100010100
+010100111100
+011001101100
+110101001001
+000011100111
+011000000000
+110001000011
+101011001101
+001010110000
+010000011010
+101110101010
+001010011111
+011101000101
+110011101010
+101110001110
+100111110000
+100100010100
+010011101000
+100110000110
+111100010011
+011101101011
+100110010100
+011011100001
+011111100110
+111100101111
+000111101001
+100101011101
+010101001110
+110011110011
+111011011100
+101001101111
+100001010111
+110010111001
+011011101011
+111110001010
+000010111110
+011010000101
+011011000111
+110000000101
+010110111011
+010110110000
+011000110110
+100101001000
+000111110001
+011110000101
+001000010000
+011011000011
+100101100011
+010000100000
+100010011000
+001011100001
+000110100010
+011000111010
+100011001011
+101111111010
+001100110101
+101100111111
+010011100111
+001110110010
+000100100110
+010100010001
+100100011011
+110110100100
+100011011001
+110001000110
+110110100000
+101110001010
+000100101010
+000000100110
+110110111110
+011000111101
+001101111000
+110001100001
+101011011100
+101100001000
+100000111011
+011110010100
+010000101111
+100011100101
+100111010100
+000011010110
+111010110011
+010101000001
+001101010100
+010001010011
+100011000101
+011100011111
+100101100010
+011111011100
+011010010000
+011011011110
+101000000100
+110111111100
+100111110011
+110100010010
+100100011111
+000100001101
+001101100010
+000001010110
+110110010010
+001110000110
+101100110101
+111000110011
+111110111111
+001000111000
+010101111010
+010011101010
+010010100100
+000101001011
+010011011010
+100110111011
+100011110111
+111001001011
+011000000111
+000101101101
+001000011100
+110111111010
+011010101001
+110000010101
+011001110010
+001001001011
+111010110110
+101010000110
+110111010011
+101110011010
+011111110101
+010100110011
+010000100111
+010100001011
+011111010110
+110011111110
+100100111101
+000100111001
+011011101111
+111010001101
+100000110101
+110000000010
+111110101011
+011000010110
+001011101100
+010001110011
+111010111010
+100010011110
+001100000011
+000101110000
+111011101111
+111000000111
+100101011100
+010111000010
+010010111010
+001111111100
+101001000000
+000010111111
+001110011000
+111110011110
+101101000110
+101110100110
+100011011100
+101100000001
+111001111011
+101010101000
+010111101110
+000010100101
+100010111000
+101111000100
+000010011101
+011000111011
+010110011011
+010101100010
+100101010111
+011010101110
+110011011011
+110100101011
+110110111100
+000101110011
+011001110101
+111000100100
+101010000001
+110111100011
+100001000110
+001101011111
+101010000101
+011111111000
+000111011110
+100001111101
+011010010010
+101010011100
+101110101100
+000001010100
+101010100110
+001100101010
+101110100100
+100100111001
+110010100111
+000100001110
+111001110101
+110000101110
+000010011000
+010001110010
+000100010011
+011110100001
+001010111010
+010010111001
+010001001011
+101101001110
+011001000110
+110110011001
+110111000000
+011010111001
+001000010001
+010110011100
+000111110010
+101110000010
+000101001100
+110010111101
+001101010000
+010010011001
+010000010111
+011110011100
+111000100011
+110101011000
+101100100010
+111111100110
+010011111110
+111110000100
+100010100100
+101110111100
+110000010010
+011010000110
+000101100101
+001011001000
+111000110001
+000010001011
+111000010000
+100000101000
+001101011101
+101000101100
+010100111010
+101100000110
+001111010011
+011111110011
+101000100010
+111000001111
+111000111010
+001110000101
+110001010011
+011101011010
+101001000101
+111111001110
+111110110101
+110001110100
+101101010101
+000100011111
+101100100110
+000111011000
+101010110001
+000100110110
+101101110111
+100011101000
+010011110101
+110101111001
+110001110011
+000100111100
+010011010110
+101100000100
+011011101000
+101110000100
+100100010110
+111011100100
+011010110000
+100111011010
+110100011010
+101111111111
+110110011100
+110011100101
+100001111100
+111101100110
+110010001010
+010001001101
+101110100001
+111101001100
+110101000100
+011001110000
+010110100011
+111111000001
+110010100000
+101100110000
+110000000000
+001101110111
+001100001000
+001101101000
+101100100011
+001001011011
+011011101110
+010011111000
+110100111000
+011001101010
+111011111010
+100011111010
+001011011110
+111101100101
+100011100100
+101110101000
+000111110110
+100111010001
+110000011100
+111111111110
+110100010101
+101001110011
+000010001110
+000010001001
+110000110000
+001001000110
+110111110000
+010101010010
+111101110001
+110101101101
+010111000111
+111010110111
+001011011011
+001001100001
+101000101110
+101100110010
+100100100100
+011110111001
+011100000110
+100110110111
+111010001110
+110111111011
+011010111000
+011101100001
+011110001111
+110101011011
+000000001111
+101000001110
+111010101110
+001100001110
+010111000101
+111100111110
+001110101110
+011101111010
+011100001111
+000000000101
+111111000100
+000110010101
+001101000010
+111001111100
+101100010100
+001011001001
+010110000010
+010001101000
+001111101111
+011011011011
+111110000001
+100111011000
+011000000110
+100111101110
+101100000000
+101011000100
+111000011101
+100001101001
+100001101000
+011110001001
+110110011011
+011100010111
+000100111000
+000110000001
+000111001100
+000111111010
+110110000001
+000010011010
+100000101001
+101110001011
+100010110101
+110011010000
+111101111111
+100101011110
+101110011111
+111111011111
+011010010110
+010100101010
+001010100001
+000000110110
+110000111101
+010101101011
+110100100001
+011110001110
+111001010011
+001000001000
+000011111110
+111000100110
+100100101000
+011011000110
+111001100011
+111100101000
+110001100010
+011000000001
+111101010010
+001011000100
+010100110110
+000001111101
+001010000011
+010010100110
+100000011101
+101011010011
+000111110000
+101001001011
+100000001000
+010000111100
+000100101011
+011101010000
+101101010010
+100010011001
+001101100101
+101010010100
+111011111001
+101000010001
+001111000000
+011001000010
+100101010110
+000100001100
+010000101000
+110001111111
+000101010111
+110100101110
+111100110001
+101011000001
+101100101110
+110000101100
+101100111110
+111000010110
+010110101110
+001010100110
+110011010010
+111001100000
+100100100001
+000011011001
+111011011110
+011110000011
+101000100001
+101010010001
+101001100001
+100011001010
+100000000110
+010000100001
+001011011001
+110111010100
+111001000111
+111111110010
+101010100101
+100110001011
+010110011001
+110001111110
+100100000111
+110001110111
+101110010101
+010010111000
+000000011001
+101110000011
+100001010000
+001100001011
+111111001100
+111010010010
+010011100001
+100001111000
+000010000110
+010100011100
+101111101010
+100110010101
+101001101001
+100110101001
+001001011100
+001100011101
+001100011001
+000100100100
+100011010100
+000100001011
+111101100011
+011010001011
+111000101101
+101000010000
+010110001111
+111100010110
+000111111101
+100100111011
+101011000010
+011001100010
+101111011100
+101001110101
+101111101100
+110101001111
+111101100000
+101110011011
+100101110000
+001100111110
+010010101010
+001100100100
+001010101100
+001101100111
+110010011100
+010000001001
+011011110001
+100101110001
+101111100100
+110101101000
+110000100000
+101010011101
+111000010011
+100001010100
+000101101010
+101111001001
+000110101101
+101011010111
+000001001100
+100100111110
+000010111011
+000100000100
+100100001110
+011010000001
+010101110011
+111101101101
+101110101111
+100010100011
+110001011101
+110001011011
+100011110011
+111000011011
+110101110010
+000110010100
+101000001010
+011001011010
+111000001101
+101001101101
+111001000001
+000100000110
+110000000110
+010011001110
+011101000001
+010000101101
+010011011001
+010101001111
+011110110001
+100111110001
+101111011101
+111001000010
+111111111000
+001011101011
+001010100111
+111110111101
+011111011101
+000100111101
+010010000101
+001111101011
+110010100100
+110001011001
+010111111000
+100100101110
+110111011101
+100100000110
+111111011011
+101101111001
+111011010001
+000000011100
+011011101001
+100010111101
+110111000110
+001100110010
+111100111100
+111111000010
+100111010111
+100011001100
+110101011100
+001111001100
+101010000010
+110011010111
+110011010001
+001110110110
+000011011100
+001011001011
+100000000001
+110000100011
+011011110011
+100101100100
+011100100011
+100001110111
+011101001001
+011101100011
+011001001101
+011001000100
+010111001111
+100001001111
+101001100000
+110010001011
+010101011100
+011110110010
+111010000110
+000010100100
+110111000111
+001011010110
+010001000100
+110100010111
+010101100110
+010011101111
+101000001000
+011011001011
+100001000001
+101111110011
+100110110011
+100011100000
+101101000010
+000101011000
+111101110010
+110111010110
+101110000110
+110010110001
+000001101111
+110101101111
+000010111010
+100010010001
+111010011001
+011110011011
+000110101010
+010100001111
+010111011000
+000011110100
+010001010101
+110111011001
+010001111001
+111010111111
+010010010001
+010001100011
+111110001001
+101000010111
+001101110101
+111011000000
+001100110100
+000110001001
+110111101001
+010100110000
+101110111110
+100000000010
+110011010011
+010101100101
+110100110001
+100010100010
+101111111000
+111111100100
+011100001101
+000000100001
+100110100110
+010100100011
+000000001000
+101010110100
+100010001111
+111000001011
+010101000111
+001111110001
+000000111011
+111111101100
+001110110000
+011110111011
+001110100011
+100110000010
+010110110011
+001001101110
+110011101110
+111001100010
+111100010000
+000001010111
+001110001100
+110000101000
+100101111010
+001011001110
+100111101100
+111001101100
+110111110010
+101000110100
+100011100011
+100000100101
+100001111011
+011110101001
+000111000100
+010111100001
+111111010001
+100100001100
+111111010111
+001101111101
+000110001101
+010110000001
+111011010110
+011110110110
+011111001001
+001101011010
+010101110101
+110001100100
+101101011101
+011011010110
+001011001101
+101110110101
+001101010010
+101010001101
+100111000000
+110110101100
+001011111000
+000100111011
+000111110111
+101000111100
+110000110011
+000001000011
+000111111110
+001010010010
+100000111001
+010101111100
+001100010100
+010101110111
+110101010010
+000001001111
+101101111100
+011110111101
+111001010001
+000100101101
+011100100100
+110101000111
+011111100011
+110001001101
+100001100111
+101101100111
+000100110000
+101001100010
+001101101111
+100011000100
+011100101111
+011001100100
+011010011110
+010011001010
+011110101000
+111101111010
+110001010100
+000110010001
+001111011011
+110000111011
+000001111001
+010011001100
+100110101011
+111011001011
+001100110011
+010010011101
+100011110000
+110011110111
diff --git a/day04/input-twitter.txt b/day04/input-twitter.txt
new file mode 100644 (file)
index 0000000..bf720cd
--- /dev/null
@@ -0,0 +1,601 @@
+42,44,71,26,70,92,77,45,6,18,79,54,31,34,64,32,16,55,81,11,90,10,21,87,0,84,8,23,1,12,60,20,57,68,61,82,49,59,22,2,63,33,50,39,28,30,88,41,69,72,98,73,7,65,53,35,96,67,36,4,51,75,24,86,97,85,66,29,74,40,93,58,9,62,95,91,80,99,14,19,43,37,27,56,94,25,83,48,17,38,78,15,52,76,5,13,46,89,47,3
+
+48 69 68 49 13
+25 14 30 74 89
+16 38 19 24 29
+56 97 50 65 79
+57 52  5 27 76
+
+65 69 73 60 66
+79 23 95 32 56
+36 51 26  1 28
+76  9  3 71 77
+41 15 61 68 14
+
+77 86 11 96 50
+64 35 76 14  5
+31 20 53 84 66
+83 40  1 28 79
+15 74 92 65 39
+
+20 55 65 13 48
+ 1  3 98 78 29
+58 45 39 18 34
+43 26 83 33 50
+84 15 62 71 88
+
+ 0 10  3 19 47
+51 43 62 11 70
+38 59 56 81 55
+77 36 39 91 74
+23 14 67 12 80
+
+36 18 47 14 60
+33 96 84 44 72
+ 1 37 74 93 80
+50 95 59 90 27
+63 53 65 41 78
+
+31  4 85 55 74
+65 73  2 52  0
+99 82 83 25 81
+70 75 90 91 89
+44 15 53 67 39
+
+11 39 36 37 32
+84 19 58 34 48
+ 3 69 81 41 59
+86  2 56 47 90
+31 12 17 14 40
+
+28 13 34 45 37
+83 55 61 80 92
+77 33 44 40 31
+54 25 71 56 93
+60 70 20 65  9
+
+82 60 11 40 90
+ 0 75 86 55 58
+24  9 72 89 56
+54 16 22 70 57
+64 39 31 33  5
+
+56 24 42 76 29
+ 0 60 12 84 73
+72 81 99 15 70
+88 90 80 26 65
+61 47 19  7 17
+
+28 64 80  3 41
+32  0 22 18 97
+87 94  1 52 83
+37 29 14  5 82
+73 58 56 88 49
+
+70 23 43 81 66
+27 14 38  8 13
+26 17  6 67 83
+91 96 37 39 18
+19 25 77 98 53
+
+33 12 42  4 44
+88 99 61 27 43
+68 13 38 57 87
+59 20  2 90 40
+80 64 77 94 21
+
+47 29 58 72 24
+26 66 42 68 36
+34 80 76 94 59
+61 41 64 44 50
+ 2 28 20  9 17
+
+88  3 36 39  0
+83 54 86  9 92
+14 82 34 62 73
+63 95 78 23 55
+24 41 47  2 58
+
+78 85 93 38 30
+41  0 29 39 40
+28 76 98 60 96
+26 94 35  1 82
+66 56 31 64 45
+
+30 15 12 44 24
+32 49 99 76  8
+64 56 43 42 19
+62 83 33 48 54
+89 74 72  3 91
+
+76 48 51 11 16
+67 78 71 62 58
+56 29 74  5 17
+ 9 81 65 12 39
+19 24  1 13 30
+
+72 96 63  4 62
+71 47  9 56 90
+12 86 52 10  3
+49 83 73  7 87
+85 64 48 81 32
+
+28 72 38 47 63
+37 14 13 51 27
+ 8 82 46 86 55
+22 18 59 81 10
+77 21 58 24 25
+
+92 49 67 19 85
+45 50 41 79 84
+ 4  0 75 17 53
+91 23 28 82  6
+60 37 18 13 69
+
+ 1 27 74 89  4
+29  9 78 48 54
+10 38 13 40 49
+71 73 79 77 17
+25 22 91 20  2
+
+94 40 75 63 10
+89 81 32 72 73
+ 8 65 68 62 58
+76 97 57 34 66
+ 0 82 14 90 11
+
+30 89 82 29 85
+41 78 91 73 14
+66 98 21 23 16
+63 65 99 10 58
+67 51 17 11 19
+
+37 74 52 31 28
+48 14 13 72 59
+45 30 46  7  9
+89 77 16 33 81
+62  4 15  5 96
+
+72 63 77 57 86
+ 8 65 11 44 69
+78 52 14 84 80
+36 42 30 59 33
+46 10 92 19 26
+
+13 65 92  1  5
+71 54 28 33 98
+42 94 30 35 78
+57 85 25 60  7
+43 80 48 97 27
+
+29 64 61 99 74
+94 68 72 36 51
+11 83 21 96 86
+56 53 25 48 92
+60 15 19 50 76
+
+12 61 89 99 30
+84 50 34 74 55
+26 72 36 86  3
+ 4 79  6  8 40
+ 5 83 82 66 44
+
+40 93 61 20 50
+90  7 60 38 16
+22 52  3 92  5
+32  0 57 58 30
+68 28 81 46 54
+
+86 72 55 48 24
+21  3 25 22 20
+16 64 97 77 68
+66  2  9 47 30
+36 87 67 23  0
+
+18 54 51 38 44
+73 50 68 59 61
+45  0  5 80 19
+79 65 66 30 15
+26 74 23 99 95
+
+75  9 34 74 86
+53 14 25 61 31
+17 60 10 32 93
+47 33  0 77 68
+38 45  4 55 39
+
+32 81 21 11 31
+30 56  3 25 18
+80 96 20 65 71
+41 67 22 97 10
+93 68 17 13  1
+
+54 42 23  8 83
+87 63 36 95 81
+40 14 13  6 18
+44 16 89 59 69
+17 10 73 76  5
+
+36 69  2 13 74
+17  7  9 42 54
+79 21  5 19 66
+68 22  4 85 25
+63 23 10 75 87
+
+27 61 41 78  4
+77 76 82 85 17
+74  0 54 63 34
+ 6 56  1 16 89
+ 8 12 36 59 81
+
+37 22  9 36 19
+79 61 78 96 91
+41 11 42  8 24
+85 84 35 47 31
+50 16 62 53 21
+
+93 61 14 78 75
+51 88  3 54 37
+57 36 23 77 91
+72 47 39 65 35
+ 2 58 86 81 27
+
+ 0 34 82 13 53
+ 5 88 42 11 45
+26 81 28 46 24
+67 71 95  6  9
+69 97 41 15  7
+
+92 25 31 62 35
+83 72 54 61 41
+28 51 45 79  3
+16 38 52 58  2
+37  7 36 21 22
+
+92 33 21 47 89
+14 40 23 82 59
+42 73  4 94 72
+67 63 16  8 75
+70 43 48 81 13
+
+63 99 85 39 15
+58 68 62 50 24
+25 60 26  5 94
+ 8 53 75 46 61
+66  3 16 47 42
+
+21 89 33 61 12
+36 83 76 80 24
+93 95  4  0  7
+91 43 17 14 64
+84 71 45 44  5
+
+23 74 19 40 42
+83 75 15 12 21
+ 4 11 90 51 53
+ 1 77 54 62 82
+28  5 46 52 79
+
+73 60 22  3 71
+53 67 30 58 15
+59 89 40 21 31
+13 42 84 97 10
+81  6 70 88 52
+
+91 26 38 80 79
+46 24 66 53 93
+25  2 58 59 63
+65 78 36  7  1
+83 72 50 39 21
+
+31 22 32 36 79
+97 60 62 43 96
+ 7 15 71 89 87
+76 95 10 19 48
+68 69 29 24 56
+
+25 40 47 50 31
+15 13 45 66 30
+12 67 95  3 48
+43 61 60 75 59
+16 69 98  6 88
+
+10 80 15 17 23
+87 52 56 51 22
+43 58 96 63 27
+29 13 33 66 25
+16 97 88 90 77
+
+ 5 11 90  8 18
+51 42 73 25 85
+69 94 79 53 32
+72 23 57 15  3
+78 28 47 37 35
+
+80 81 44 53 14
+36 71 35 83 30
+94 40  2 99 97
+16 48 85 76 20
+56 25 89 88 39
+
+34 54  9 36 44
+14 19  0 64 40
+25 78 74 18 13
+82 10  6 92 95
+84  8 75 98 45
+
+95  8 27 29 89
+33 79 88 59 24
+ 4 28 35 72 97
+22 77 85 94 76
+46 43 68 65 67
+
+42 13  3 20 43
+12 98 31 69  4
+56 67 25 89 71
+16 29 33  1 36
+27 80  0 47  5
+
+62 66 86 63 70
+44 27  5 78 85
+49 40 58 61 89
+37 43 36 68 28
+22  7 35 52 57
+
+73 62 90 75 81
+31 94 77 44 14
+18  9 10 93 17
+89 39 63 66 53
+42 88 59 36  2
+
+54 52 76 79 61
+95 39  3 41 63
+74 97 38  0 15
+ 6 23 11 10 83
+46 67 96 77 29
+
+ 0 76  9 84 52
+45 27 29 56 85
+89 63 77 49 65
+ 4 13 78 33 37
+64  7  1 94 12
+
+16 32 78 73 90
+ 2 48 57 75 23
+95 27 33 12 51
+69 26 17 42 61
+67 89 74 44 15
+
+47 90  5 76 96
+71 24  9 69 16
+64 23 98 66 81
+29 34 63 72 22
+41 17 45 87 57
+
+48 45 87 14  1
+86 28  6 62 46
+27 92 11 49 94
+ 0 90 10 70 20
+ 2 59 88 96 33
+
+16 29 68  4 82
+56 67  2 69 25
+94 47 61 51 32
+70 31 21 43 42
+76 60 17 59 92
+
+18  6 87 56 61
+89 53  5 47 69
+93 57 78 41 82
+27 24 51 99 29
+42 74 28 75 97
+
+21 62 60 86 85
+24 35  1 29  2
+89 15 72 70 39
+99 79 87 93 34
+53 71 10 20 50
+
+76 55 18 28 33
+37 14 64  7  0
+13 60 54 62  5
+61  3 99 56 10
+30 86 47 24 39
+
+24 96 18 55 52
+79 73 91 14 88
+42 37 12 64 21
+45 51 33 34  3
+ 8 77 47 40 16
+
+55 54 98 85 97
+80 21 27 15 36
+ 1 26  7 70 44
+48 25 59  0 38
+ 5 58 18  3 12
+
+76 78 79 92 88
+ 7 80 57 68 28
+27 16  8 10 62
+32 98 64 60 39
+52  4 85 48 35
+
+94 64 19 67 12
+49 61 77 89 31
+80 11 18 26 83
+21 76 66 85 91
+60 88 28 86 69
+
+88 27 52 28 89
+ 3  5 15 78 97
+79 34  7 42 80
+14 83 90 68 65
+35 13 58 71 17
+
+90 10  0 30 69
+64 75 61 62 97
+ 3 29 40 58 57
+98 48  5 37 23
+70 12  6 36  7
+
+27 87 59 84 83
+19 91 24 32 78
+62 14 58 18 68
+37  1 99 44 94
+71 23 54  8 74
+
+12 78  7 55 59
+81 87 69 49 22
+79 99 84 58 65
+40 42 85 74 91
+61 39 51 88 36
+
+ 2  9 62 76 11
+87 36 72 80 96
+28 16  7 17 39
+68 33  5 71 92
+41 22 70  4 52
+
+49  1 23 37 60
+72 79  2 40 13
+31 47 59 48 33
+96 80 62  3 12
+34 89 75 18 95
+
+34 72  3 78 60
+57 51 47 26  7
+ 2 50 82  4 56
+81 95 22 42 73
+25 37 97 65  6
+
+86 23 17 39 53
+ 6 49 66 32 30
+71 40 64 11  8
+82 60 18 13 68
+12  7 42 52 72
+
+16  0 88 84 98
+42 92 19 89  2
+51 26  1 33 10
+40 87 32 17 27
+ 7 68 35 50 11
+
+39 52 56 23 75
+66 64 26 10 53
+46 25 60 48 28
+61 27 98 40 59
+65 95 85 13 62
+
+74 32 72 43 23
+26 90 83 68 82
+48 60 39 17 54
+51 36 37 85 88
+99 81 69 50 93
+
+16 71  3 29 81
+18 97 17 20 48
+95 38 61 87 98
+52 76  8 42 36
+45  4 78 55 89
+
+64 18 54 39 77
+36 66 98 88 38
+49 50 74 69 65
+71  3 93 34 82
+23 26 92 15 33
+
+18 99 45 69  8
+32 75 47  2 91
+41 55 90  5  3
+93 11 84 78 56
+80 57 51 50 74
+
+90  0 19 53 11
+69 50 47 16 26
+ 5 32 73 51 14
+84 37 34  7 56
+68 10 74 29 62
+
+42 80  7 72 35
+ 1 50 15  0 49
+43 19 41 26 48
+65  2 36 17 20
+85 32  5 75 30
+
+ 8 80 72  1 81
+90 69 48 36 23
+55 16 35 41  5
+71 12 59 29 79
+60 92 53 73 96
+
+45 55 75 77  6
+ 1 91 76  5 39
+54 65 61 34  8
+27 59 47 85 44
+66 29 36 80 60
+
+82 75 32 29 14
+41 21 20 68 89
+80 64 56 33 31
+13 12 55 81  7
+36 78  4 24 50
+
+55 28 90 35 22
+77 92 56 16 47
+48  4 67 95 37
+63 80 36 12 44
+88 58 10 68 84
+
+ 7 88 53 55 60
+81 99 91 28 70
+75  8  0 40 84
+17 24 30 71 56
+78 20 83 29 74
+
+10 16 11  5 38
+72 77 37 68 81
+78 13 45 89 46
+90 49 18 53 42
+71  0 28 26 75
+
+36 73 23 44  7
+ 1 96 17 11 42
+77 54 68 80 79
+85 56 28 58 52
+57  2 43 18 61
+
+ 9 18 29 44 61
+13 80 57 95 47
+ 2 15 72 50 65
+77 12 42 64 36
+49 67 31  6 90
+
+99 74  9 64 59
+17 87 86  5 28
+44 41 82 53 45
+95 51 98 50 94
+22 37 46 25  4
+
+46 54 82 17 77
+88 63 50 65 64
+ 5 19 39 21 11
+57 58 20  6 40
+99 37 66 70 95
+
+30 68 11 29 13
+ 1 69  0  9 93
+33 57 23 50 71
+ 8 77  6 25 45
+34 12 60  7 28
+
+91 53 88 47 40
+77 92 87 37 84
+89 95 78 21 39
+65 20 54 94 85
+45 74 30 49 11
+
+ 3 58 90 93 96
+53 66 24 43 32
+62 84 19 82 22
+13 89 20 97  1
+15 91 51 68 49
diff --git a/day05/input-twitter.txt b/day05/input-twitter.txt
new file mode 100644 (file)
index 0000000..7e1d816
--- /dev/null
@@ -0,0 +1,500 @@
+561,579 -> 965,175
+735,73 -> 316,73
+981,566 -> 981,11
+631,588 -> 631,910
+919,964 -> 70,115
+122,463 -> 261,602
+502,248 -> 774,248
+636,797 -> 797,958
+444,815 -> 444,554
+734,97 -> 734,210
+871,692 -> 368,692
+842,261 -> 606,261
+332,43 -> 206,43
+371,220 -> 18,573
+594,782 -> 127,782
+952,953 -> 72,73
+13,143 -> 755,885
+827,741 -> 827,168
+65,84 -> 839,858
+299,598 -> 299,588
+478,76 -> 607,76
+656,748 -> 61,153
+566,447 -> 857,447
+497,19 -> 310,206
+354,721 -> 538,721
+124,17 -> 124,339
+105,595 -> 843,595
+686,902 -> 919,669
+683,183 -> 776,183
+415,45 -> 415,942
+16,852 -> 843,25
+945,954 -> 23,32
+935,174 -> 485,624
+712,297 -> 792,297
+495,90 -> 497,90
+836,259 -> 836,988
+12,59 -> 916,963
+72,648 -> 72,185
+625,400 -> 507,282
+809,206 -> 809,538
+472,909 -> 472,213
+847,162 -> 189,162
+178,233 -> 178,777
+404,276 -> 404,516
+943,178 -> 400,721
+882,429 -> 882,920
+12,976 -> 900,88
+33,53 -> 958,53
+104,37 -> 609,542
+207,736 -> 800,143
+331,454 -> 331,715
+956,52 -> 26,982
+189,544 -> 189,368
+194,258 -> 451,258
+75,383 -> 75,642
+770,861 -> 915,716
+300,330 -> 300,683
+649,175 -> 344,175
+948,25 -> 42,931
+245,313 -> 748,816
+677,126 -> 677,204
+507,948 -> 507,88
+343,229 -> 343,677
+946,933 -> 472,459
+830,403 -> 830,660
+626,651 -> 626,213
+828,932 -> 828,487
+792,101 -> 216,101
+870,111 -> 50,931
+770,464 -> 290,944
+264,700 -> 941,23
+894,846 -> 630,846
+19,40 -> 957,978
+911,425 -> 393,425
+26,594 -> 26,475
+754,287 -> 754,302
+105,483 -> 807,483
+25,902 -> 684,243
+300,164 -> 532,396
+79,346 -> 79,423
+649,234 -> 649,331
+113,115 -> 962,964
+251,50 -> 531,330
+908,177 -> 908,817
+905,106 -> 905,570
+958,55 -> 41,972
+985,984 -> 62,61
+794,802 -> 328,802
+984,273 -> 370,887
+271,758 -> 237,792
+443,534 -> 835,926
+367,762 -> 367,521
+527,737 -> 717,737
+89,921 -> 89,299
+521,279 -> 108,279
+810,344 -> 760,394
+292,944 -> 292,941
+265,471 -> 265,949
+923,378 -> 415,886
+125,656 -> 434,656
+51,460 -> 51,542
+297,178 -> 297,587
+432,122 -> 241,122
+916,855 -> 451,390
+48,838 -> 636,838
+802,659 -> 784,641
+316,961 -> 417,961
+342,675 -> 568,675
+345,60 -> 352,60
+495,595 -> 284,806
+111,975 -> 815,271
+315,239 -> 315,333
+14,16 -> 930,932
+380,373 -> 380,346
+212,141 -> 212,691
+415,555 -> 651,319
+497,565 -> 96,164
+902,451 -> 735,451
+118,751 -> 521,751
+923,680 -> 613,370
+641,897 -> 233,489
+804,447 -> 259,447
+556,751 -> 968,751
+409,638 -> 409,65
+512,50 -> 432,130
+28,25 -> 988,985
+563,888 -> 563,502
+912,691 -> 950,691
+592,934 -> 592,433
+465,886 -> 408,886
+928,547 -> 671,290
+486,953 -> 496,943
+942,943 -> 42,43
+672,759 -> 266,759
+587,195 -> 763,371
+95,354 -> 687,946
+890,280 -> 734,124
+945,906 -> 945,168
+306,952 -> 306,257
+143,160 -> 810,827
+988,407 -> 167,407
+274,472 -> 817,472
+252,113 -> 430,291
+294,767 -> 176,767
+456,142 -> 423,142
+908,107 -> 176,839
+255,278 -> 447,86
+100,44 -> 969,913
+899,184 -> 899,986
+872,877 -> 47,52
+122,786 -> 228,786
+132,777 -> 312,777
+242,86 -> 36,86
+726,671 -> 690,635
+386,859 -> 790,455
+468,62 -> 636,62
+920,869 -> 920,790
+610,66 -> 633,43
+428,962 -> 428,717
+935,881 -> 278,224
+314,204 -> 458,204
+906,515 -> 712,515
+332,223 -> 744,223
+707,802 -> 842,802
+775,36 -> 946,207
+906,206 -> 142,970
+534,312 -> 534,622
+26,687 -> 26,417
+758,258 -> 688,188
+830,591 -> 830,286
+856,182 -> 924,182
+78,755 -> 78,880
+157,726 -> 157,904
+316,30 -> 752,30
+958,977 -> 10,29
+831,813 -> 284,813
+472,843 -> 989,326
+133,99 -> 133,537
+161,540 -> 846,540
+176,739 -> 78,739
+28,33 -> 969,974
+65,160 -> 879,974
+355,943 -> 355,685
+893,512 -> 225,512
+789,565 -> 789,81
+253,832 -> 943,832
+372,716 -> 372,605
+781,293 -> 702,293
+469,497 -> 469,149
+692,499 -> 933,258
+477,548 -> 477,849
+131,894 -> 131,483
+934,765 -> 13,765
+830,55 -> 436,449
+615,496 -> 531,412
+78,634 -> 78,115
+205,586 -> 205,661
+871,742 -> 871,590
+218,223 -> 218,741
+56,897 -> 872,81
+30,886 -> 728,188
+369,877 -> 369,963
+202,55 -> 930,783
+251,131 -> 251,749
+498,313 -> 498,126
+688,876 -> 188,876
+147,968 -> 607,508
+400,693 -> 235,693
+206,853 -> 206,211
+401,158 -> 187,158
+35,957 -> 973,19
+517,822 -> 517,282
+836,492 -> 433,895
+751,114 -> 100,114
+80,359 -> 710,359
+302,871 -> 812,871
+853,159 -> 853,548
+351,663 -> 451,763
+895,260 -> 307,848
+369,455 -> 812,455
+936,594 -> 393,51
+55,696 -> 972,696
+422,804 -> 192,804
+110,893 -> 120,883
+747,645 -> 747,181
+636,344 -> 636,88
+15,949 -> 543,421
+985,948 -> 51,14
+164,435 -> 164,27
+30,966 -> 965,31
+600,472 -> 985,472
+119,161 -> 91,161
+180,521 -> 180,802
+98,70 -> 449,70
+157,190 -> 613,190
+816,501 -> 338,23
+387,219 -> 387,75
+115,579 -> 115,734
+26,153 -> 26,450
+733,783 -> 462,783
+19,893 -> 759,893
+646,726 -> 286,726
+631,139 -> 631,664
+490,668 -> 490,231
+282,958 -> 282,816
+338,55 -> 898,55
+891,420 -> 443,420
+222,917 -> 222,759
+302,430 -> 465,430
+946,49 -> 946,753
+101,971 -> 879,193
+329,122 -> 888,122
+524,714 -> 154,344
+89,769 -> 552,306
+749,680 -> 749,536
+161,510 -> 161,317
+143,608 -> 543,608
+677,526 -> 658,526
+348,956 -> 512,956
+851,973 -> 358,480
+850,247 -> 56,247
+284,274 -> 381,274
+855,944 -> 101,190
+338,102 -> 467,102
+225,875 -> 225,303
+120,944 -> 945,119
+485,386 -> 305,386
+321,866 -> 627,866
+44,207 -> 44,244
+514,763 -> 514,578
+617,930 -> 617,371
+963,838 -> 451,326
+813,904 -> 174,265
+901,983 -> 512,594
+979,929 -> 527,477
+533,383 -> 59,857
+871,724 -> 828,767
+174,133 -> 174,75
+686,911 -> 15,911
+361,406 -> 440,327
+759,284 -> 275,284
+231,431 -> 203,431
+759,673 -> 839,673
+914,897 -> 914,937
+598,643 -> 598,722
+697,297 -> 697,55
+735,918 -> 735,81
+375,538 -> 375,403
+868,86 -> 170,784
+390,142 -> 390,553
+569,564 -> 569,800
+514,276 -> 717,73
+756,768 -> 182,768
+349,428 -> 349,364
+370,386 -> 370,621
+191,224 -> 191,447
+672,983 -> 209,983
+281,854 -> 872,854
+898,959 -> 898,207
+961,597 -> 561,197
+965,837 -> 338,210
+120,675 -> 914,675
+401,661 -> 401,167
+706,536 -> 706,598
+856,337 -> 283,910
+980,535 -> 156,535
+941,888 -> 179,126
+585,47 -> 933,395
+481,435 -> 481,818
+989,978 -> 45,34
+693,332 -> 693,528
+863,605 -> 507,961
+586,429 -> 252,429
+37,61 -> 962,986
+952,26 -> 16,962
+926,492 -> 863,492
+661,110 -> 279,110
+524,879 -> 176,879
+298,424 -> 858,984
+498,627 -> 498,963
+468,608 -> 256,820
+61,491 -> 472,491
+38,922 -> 938,22
+361,938 -> 361,46
+567,981 -> 567,973
+399,575 -> 902,72
+618,740 -> 818,540
+79,115 -> 929,965
+612,972 -> 612,698
+217,626 -> 474,369
+961,593 -> 961,70
+287,450 -> 287,676
+703,45 -> 871,45
+756,778 -> 410,778
+960,970 -> 42,52
+254,513 -> 554,813
+620,339 -> 601,320
+650,344 -> 650,33
+597,349 -> 597,491
+761,106 -> 891,236
+323,846 -> 883,846
+678,190 -> 134,190
+400,848 -> 400,271
+198,68 -> 463,68
+522,805 -> 522,445
+979,134 -> 719,134
+584,493 -> 584,471
+635,10 -> 635,768
+867,795 -> 31,795
+157,824 -> 939,42
+354,381 -> 653,381
+45,628 -> 45,860
+959,870 -> 808,719
+587,810 -> 291,810
+248,34 -> 83,199
+656,505 -> 656,388
+966,90 -> 966,934
+957,834 -> 267,144
+690,367 -> 447,367
+153,948 -> 153,510
+467,260 -> 467,332
+69,43 -> 931,905
+913,92 -> 913,827
+226,504 -> 226,615
+21,737 -> 21,819
+391,289 -> 391,341
+566,639 -> 723,639
+160,824 -> 167,824
+77,69 -> 379,371
+756,864 -> 756,960
+315,569 -> 927,569
+964,864 -> 964,167
+136,277 -> 136,184
+524,450 -> 898,450
+971,903 -> 222,903
+962,958 -> 70,66
+525,570 -> 45,90
+164,352 -> 164,433
+703,61 -> 668,61
+289,136 -> 768,136
+50,65 -> 861,876
+676,199 -> 676,411
+294,370 -> 56,132
+299,840 -> 620,840
+845,776 -> 845,66
+61,18 -> 909,866
+738,670 -> 738,438
+974,618 -> 974,169
+669,800 -> 607,800
+935,427 -> 537,427
+441,898 -> 441,462
+490,768 -> 490,239
+275,788 -> 947,116
+650,412 -> 493,255
+382,89 -> 950,89
+865,194 -> 865,266
+977,677 -> 459,677
+128,18 -> 985,875
+199,646 -> 199,611
+666,149 -> 666,504
+129,539 -> 129,266
+332,364 -> 332,211
+619,132 -> 619,580
+426,69 -> 426,236
+123,334 -> 22,334
+792,57 -> 449,57
+33,976 -> 987,22
+221,614 -> 809,614
+245,379 -> 280,379
+895,238 -> 895,500
+957,423 -> 119,423
+917,50 -> 346,621
+183,263 -> 708,263
+452,174 -> 452,216
+404,681 -> 287,798
+931,54 -> 474,54
+815,264 -> 151,928
+736,507 -> 295,66
+200,160 -> 901,861
+709,975 -> 100,366
+126,468 -> 393,201
+822,627 -> 287,92
+101,285 -> 176,285
+250,581 -> 250,799
+257,446 -> 257,927
+436,423 -> 640,219
+468,229 -> 987,748
+394,245 -> 501,245
+37,931 -> 684,931
+123,54 -> 123,453
+75,364 -> 758,364
+256,62 -> 143,62
+933,299 -> 933,410
+313,887 -> 313,34
+453,833 -> 457,833
+614,87 -> 614,816
+48,113 -> 48,646
+977,571 -> 977,967
+982,989 -> 32,39
+773,749 -> 239,215
+983,989 -> 218,224
+885,606 -> 169,606
+63,53 -> 63,29
+96,870 -> 820,870
+544,895 -> 389,740
+61,246 -> 296,246
+812,82 -> 53,841
+749,399 -> 749,935
+882,168 -> 274,168
+566,673 -> 499,606
+572,558 -> 806,792
+923,79 -> 923,844
+875,416 -> 875,112
+393,18 -> 393,149
+389,844 -> 147,844
+207,157 -> 207,949
+467,644 -> 728,644
+36,29 -> 587,29
+448,370 -> 448,247
+43,283 -> 43,122
+709,837 -> 709,265
+294,273 -> 98,273
+625,869 -> 26,270
+156,26 -> 145,26
+393,544 -> 393,456
+708,536 -> 64,536
+324,519 -> 324,950
+138,788 -> 533,788
+117,818 -> 254,681
+953,766 -> 306,119
+669,325 -> 669,940
+421,416 -> 715,416
+886,101 -> 886,371
+786,656 -> 786,169
+123,641 -> 622,142
+658,504 -> 985,177
+440,505 -> 74,139
+300,616 -> 300,473
+265,729 -> 983,11
+501,396 -> 274,396
+877,123 -> 113,887
+544,78 -> 544,604
+287,944 -> 287,391
+766,854 -> 97,185
+959,49 -> 127,881
+715,727 -> 715,647
+339,557 -> 339,610
+19,133 -> 87,133
+872,94 -> 932,94
+966,935 -> 95,64
+137,942 -> 918,161
+162,718 -> 598,282
+256,18 -> 256,47
+597,658 -> 314,941
+817,685 -> 137,685
+20,14 -> 988,982
+970,916 -> 100,46
+672,152 -> 672,842
+468,825 -> 468,911
+673,731 -> 267,325
diff --git a/day06/input-twitter.txt b/day06/input-twitter.txt
new file mode 100644 (file)
index 0000000..ac8320d
--- /dev/null
@@ -0,0 +1 @@
+2,5,5,3,2,2,5,1,4,5,2,1,5,5,1,2,3,3,4,1,4,1,4,4,2,1,5,5,3,5,4,3,4,1,5,4,1,5,5,5,4,3,1,2,1,5,1,4,4,1,4,1,3,1,1,1,3,1,1,2,1,3,1,1,1,2,3,5,5,3,2,3,3,2,2,1,3,1,3,1,5,5,1,2,3,2,1,1,2,1,2,1,2,2,1,3,5,4,3,3,2,2,3,1,4,2,2,1,3,4,5,4,2,5,4,1,2,1,3,5,3,3,5,4,1,1,5,2,4,4,1,2,2,5,5,3,1,2,4,3,3,1,4,2,5,1,5,1,2,1,1,1,1,3,5,5,1,5,5,1,2,2,1,2,1,2,1,2,1,4,5,1,2,4,3,3,3,1,5,3,2,2,1,4,2,4,2,3,2,5,1,5,1,1,1,3,1,1,3,5,4,2,5,3,2,2,1,4,5,1,3,2,5,1,2,1,4,1,5,5,1,2,2,1,2,4,5,3,3,1,4,4,3,1,4,2,4,4,3,4,1,4,5,3,1,4,2,2,3,4,4,4,1,4,3,1,3,4,5,1,5,4,4,4,5,5,5,2,1,3,4,3,2,5,3,1,3,2,2,3,1,4,5,3,5,5,3,2,3,1,2,5,2,1,3,1,1,1,5,1
index 3050832c18aa82f27d8289f5baa34164d2edfd6f..c81682ce3ed9bbeb4683e006fc408f87c9fc683e 100755 (executable)
@@ -7,6 +7,9 @@ declare -a fish
 
 filename="${1:-example.txt}"
 
+iter_1=80
+iter_2=256
+
 exec 3<"$filename"
 
 OLDIFS="$IFS"
@@ -14,16 +17,34 @@ IFS=","
 read -u 3 -a fish
 IFS="$OLDIFS"
 
-for (( d=1; d<=80; d++ )); do
-    start_fish_count=${#fish[@]}
-    for (( i=0; i<$start_fish_count; i++ )); do
-        if [ ${fish[$i]} -eq 0 ]; then
-            fish+=(8)
-            fish[$i]=6
-        else
-            ((fish[$i]-=1)) || fish[$i]=0
-        fi
+buckets=(0 0 0 0 0 0 0 0 0)
+
+get_count() {
+    local count=0
+
+    for (( i=0; i<=8; i++ )); do
+        ((count+=${buckets[$i]}))
     done
+
+    echo "$count"
+}
+
+for f in "${fish[@]}"; do
+    ((buckets[$f]+=1))
+done
+
+for (( d=1; d<=$iter_2; d++ )); do
+    orig_zeros=${buckets[0]}
+    for (( i=1; i<=8; i++ )); do
+        temp=${buckets[$i]}
+        ((buckets[$((i-1))]+=$temp)) || true
+        buckets[$i]=0
+    done
+    ((buckets[8]+=$orig_zeros)) || true
+    ((buckets[6]+=$orig_zeros)) || true
+    ((buckets[0]-=$orig_zeros)) || buckets[0]=0
+
+    [ $d -eq $iter_1 ] && echo "After $iter_1 days there are $(get_count) fish"
 done
 
-echo "After 80 days there are ${#fish[@]} fish"
+echo "After $iter_2 days there are $(get_count) fish"
diff --git a/day06/lanternfish2.sh b/day06/lanternfish2.sh
deleted file mode 100755 (executable)
index 924ac46..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/bin/bash
-
-set -u
-set -e
-
-declare -a fish
-
-filename="${1:-example.txt}"
-
-exec 3<"$filename"
-
-OLDIFS="$IFS"
-IFS=","
-read -u 3 -a fish
-IFS="$OLDIFS"
-
-buckets=(0 0 0 0 0 0 0 0 0)
-
-for f in "${fish[@]}"; do
-    ((buckets[$f]+=1))
-done
-
-for (( d=1; d<=256; d++ )); do
-    orig_zeros=${buckets[0]}
-    for (( i=1; i<=8; i++ )); do
-        temp=${buckets[$i]}
-        ((buckets[$((i-1))]+=$temp)) || true
-        buckets[$i]=0
-    done
-    ((buckets[8]+=$orig_zeros)) || true
-    ((buckets[6]+=$orig_zeros)) || true
-    ((buckets[0]-=$orig_zeros)) || buckets[0]=0
-done
-
-count=0
-for (( i=0; i<=8; i++ )); do
-    ((count+=${buckets[$i]}))
-done
-
-echo "After 256 days there are $count fish"
diff --git a/day07/input-twitter.txt b/day07/input-twitter.txt
new file mode 100644 (file)
index 0000000..5f760b0
--- /dev/null
@@ -0,0 +1 @@
+1101,1,29,67,1102,0,1,65,1008,65,35,66,1005,66,28,1,67,65,20,4,0,1001,65,1,65,1106,0,8,99,35,67,101,99,105,32,110,39,101,115,116,32,112,97,115,32,117,110,101,32,105,110,116,99,111,100,101,32,112,114,111,103,114,97,109,10,334,7,6,1172,110,184,1322,1248,516,0,259,331,1291,51,753,878,27,664,859,391,41,43,317,884,529,168,502,1236,908,1203,676,349,117,268,364,668,256,216,435,296,568,298,600,53,775,3,782,387,305,1648,254,1477,488,234,349,1410,55,456,202,394,29,578,400,188,1172,306,375,320,561,167,1078,643,279,339,12,1004,290,26,49,359,139,218,129,139,742,239,290,471,1899,1446,1046,657,895,90,196,467,1105,723,269,638,72,363,199,704,769,658,124,1001,1160,1150,806,154,407,238,155,499,1170,779,156,1041,728,124,349,397,916,24,1079,1275,222,1852,180,24,126,475,228,464,5,133,130,1119,108,895,396,1285,670,52,107,714,58,1143,714,144,1193,1754,157,802,1,1000,1001,1116,823,256,746,16,281,341,1363,233,26,46,474,91,1035,422,681,6,316,1564,31,162,194,116,904,1223,192,1552,74,1282,398,776,343,187,45,193,1311,111,161,27,660,1283,124,215,331,158,35,65,852,290,1199,285,555,630,309,375,8,301,32,706,74,722,303,474,857,12,211,54,391,171,66,1373,931,1272,294,619,470,75,195,40,386,98,127,332,183,741,1502,383,714,148,213,1053,130,491,66,1010,820,48,867,1462,901,866,1110,171,1095,147,206,1220,1242,839,1187,90,918,399,262,821,52,159,3,750,1464,1772,128,43,888,225,488,1257,281,597,321,281,1240,821,205,384,66,331,23,241,327,348,122,218,867,114,246,19,698,59,1218,28,61,238,135,773,64,54,401,297,1148,465,159,1339,45,650,702,861,0,340,5,129,80,171,55,135,1021,1420,22,330,199,0,288,1318,725,147,233,586,1530,268,512,19,94,497,389,530,1852,102,1175,38,1053,551,971,65,1254,32,409,756,531,2,758,678,351,9,788,590,176,1367,389,495,1608,489,75,341,198,68,27,3,109,635,457,381,571,978,16,359,1474,668,80,133,1337,608,1087,96,690,9,375,1012,1016,173,71,1482,64,1334,231,439,670,1092,1327,1637,1971,174,174,367,594,827,1497,296,128,13,348,780,1682,202,1060,191,1602,83,1437,91,519,601,242,179,70,158,84,220,869,1363,1119,648,185,162,961,281,479,621,13,1303,208,1117,373,141,995,584,82,994,1032,899,654,762,606,532,1108,277,89,515,422,696,275,1693,93,864,146,56,352,182,439,6,331,39,83,23,1880,724,87,59,129,889,9,1598,57,215,876,25,837,323,403,1229,761,34,1014,7,65,3,238,588,327,1307,1069,1272,166,162,1613,92,169,16,19,272,613,1069,861,452,1070,330,667,660,49,1178,183,600,1038,290,857,1505,1029,146,504,284,175,73,485,909,615,251,176,843,394,934,1056,71,290,199,258,67,4,404,912,10,1564,807,865,6,550,1022,506,988,195,480,13,981,18,220,156,341,491,220,326,480,1251,235,200,1398,179,196,187,316,1299,997,504,104,189,419,347,458,172,48,744,88,56,183,233,337,1107,475,337,54,753,49,33,612,301,157,73,261,1122,304,352,264,265,879,13,96,1153,262,40,653,196,326,1523,394,79,297,10,1326,21,411,789,553,4,712,123,392,286,671,141,28,168,544,9,537,490,396,1210,1800,354,228,35,1217,784,223,551,290,386,106,152,309,2,777,558,813,380,184,187,629,841,233,1027,823,1104,205,1528,981,197,674,517,1537,512,175,1117,730,397,803,1380,216,611,142,85,680,35,22,598,1530,44,236,265,358,1227,1189,1831,886,107,314,325,219,724,619,862,0,146,1358,172,94,53,225,648,152,583,666,927,99,394,150,113,959,528,1233,65,1408,181,114,38,550,282,742,936,1278,748,178,344,180,375,1003,97,623,98,309,248,277,902,466,1298,878,804,2,697,509,809,847,133,1215,573,1497,255,99,58,605,841,849,22,120,409,339,937,1333,943,823,1146,435,454,264,26,25,848,225,139,208,1125,12,242,241,2,382,258,579,5,1194,402,1069,874,1302,191,307,313,643,1080,505,1032,1099,267,160,821,520,55,30,362,77,270,648,177,805,977,464,872,326,1176,102,47,1254,92,217,399,184,283,770,282,1488,456,691,508,243,856,112,294,948,938,27,91,262,549,165,985,21,968,380,143,118,365,1562,318,610,1167,112,750,279,212,710,331,1022,1143,1566,17,357,672,1391,877,1051,105,21,219,1392,78,857,223,676,350,117,82,703,460,1332,129,235,25,133,195,474,791,223,170,1482,139,63,967,286,73,343,230,551,1035,44,1428,1589,542,592,7
diff --git a/day08/input-twitter.txt b/day08/input-twitter.txt
new file mode 100644 (file)
index 0000000..da96389
--- /dev/null
@@ -0,0 +1,200 @@
+fbead dcabe bcega gfbecd ecd dgac cd bedcag agebcfd fcagbe | ced cgbefad gbcaef cd
+bdef fbgeadc gabfc fadegb adefg abe be decagf dacgbe begfa | dbfe gaecdf fbgae agfbe
+gad cgdfab ag edacgb agbfedc facdb dcebaf adfbg agfc gbdef | dga gacfebd adbgcf adgbce
+cebadf gadcf egabfd ecabdfg gfcbd dacef geac ag afg fgdaec | aegc gdeabfc fgedac eacg
+ceafb gcbfea eacgdf cegb eag bgfda eg fdaegcb ebagf adebcf | eg adgfb ge ceabf
+gcdfeab bfdcga gdacf fe fae bdefga eafdgc fecd efagc aecgb | dcef fea cgfda gbcae
+gbdce cfdbg efbd gbaedcf dge gfcead bcgae de bgacdf befdcg | gde fcbadg egdafc dbaefcg
+adgecf agecdb dfcag cea dafgebc egbfc fdea ea agbfdc caefg | gcdfae aefcbdg fdgebac eac
+dgcea acfged eagfc abdec dcg gd efcgdb adfebcg bceagf adfg | dfag dgebcaf dfbcage dgc
+aedgbf dgfabec aefb edbgf gabdc ea gedfbc cgdefa dea baedg | ae ea eadbgfc fdabge
+afgbde agbef df fda caegfb efdb fgdbeca fcdgab agedf cgead | fad df fd bedgcfa
+bacdge gdecbaf bdfcge fabec dc dec cfbed gedbf dcgf agbefd | bcedf fgbed bcafe cfbedag
+gbcafd bcd db begdc gedcfb bgdfeac cgdef dbfe gceab adecgf | dbc bd ebgdc bgcfda
+ebafgd dcafeb ag gfadb aegb agd edbaf adcefg gcdabfe gdfcb | bgafd ga ga ag
+gcbfda acd facdb aecbgf gafcb ad agbfced bacdge efdcb agdf | gbdeacf ad bgedca dcbagfe
+gfae dae ea ecabfd edbgc aegdc cgfdae fcadgb facbedg gdfca | dfeagbc cdeabf dea ea
+egafb ec dcegafb fcdag bcef cae cdgbae egbcfa abfdeg eafcg | bfacedg ace eca afgdc
+bfgadc fabgd fcgb gecadf adceb gc cgd dabcg gadfcbe eadfbg | gbcf cebda cgd cg
+abfdg dgabe cgbead efdb abfgced gefbda daf cfadeg cbgaf df | gfadb egbda bgdea bcadgef
+aebcf agdbf adgbfce agbfec egcf acg bgacde cgbaf dfeabc cg | aefdbgc gc efadbc gc
+bacdfe baefc edacb abcdg bafdge cgfbdea de cfebga cfde bde | ecfd bde cfbea fagebc
+cefd cf afbegcd gfdcab adegfc baegf dgcea fcg cgebad gfeca | gdeafc fc decbgaf gedca
+dgcae eadgbc eafdgcb ad badg deabcf gefdbc ade bdceg fcega | ade acedfgb acegfdb becfda
+bfadecg cfadge bcgfd bceagf deabfg edg edca ecafg cfedg ed | cead deacfg ged gbfaedc
+egafd dfbgcae bdf bfade dgbcfe bagf beacd fgbdae cefgda fb | fb gabf bfd cefagd
+afedbcg eadcgf gebdcf agdfb ceagf baecfg de gaefd cead egd | bdeagfc ecda agbfd dgafce
+bcde bc fgdceb bfc faecdbg adgfb cdfgb fbegca dgafce fdegc | cdgfbe fcgde cfb fcedg
+bgacd cbf fceda fb gacbdf cadfb bdagce fegcbad beacfg fbgd | ecafbgd bfdg gcbdefa eacdbg
+dgbec afecgdb fbgce dbgcaf becdfa bagcf efb ecfabg geaf fe | fegacbd ef fcbge abgfc
+cedfg cgfaedb fgcdea gacdf gcae begdaf cdbaf fbcdeg ag gad | gcfebd cadfeg adfcb afcbd
+edgcfba cdafb agd cbegfa dfagc acefg cgdbae dg dgceaf egfd | fgecba gad aebgcfd agfcd
+afecdg bce gdeca cfdgbe bgca cfabegd daecb bfeda gabcde bc | bgca bec gabc bc
+fgbdc gad ad eabdcgf gdfeac ebdfag baegfc gadfb ebad begaf | ebda dfabg adg bdae
+bgec dbfga degfc eb deabfc fcdage bfe gfbced gfedb gfdcabe | bcge begc efb bcgdef
+efbga bfeacg dg dfg afdce eafbgd adbg fdbcgae fcdebg eafdg | dbag fdg fgd gbad
+cdabe agcbdef fgaed dbcgea fbce bfacdg fb faebd dbf fadcbe | bcgfda bf fb fb
+cdafbe cbdagf fcgade fbage fbdae fdbca ed efd adfgceb bcde | ed adcbf bgdcfea ecbd
+fgab gfacbd gfdcb fgdecb eagbdcf bdacg ag gad edgcfa eacdb | gcfdba fgdace cdegbfa agbdc
+egcaf gdecbf beacg cfba dgfeabc abfgec baegd bc ecfagd ecb | bcaf cbaf gdecbf ebc
+agfce cgedfb gbdfe daf da febgda cgfaedb adgb dgefa ecabdf | bdfceg dgab adf gadb
+begadf deg aecfgb aebgd aebfg ceadgfb fead ed dbcga egdcbf | ged fcgeab gdaeb de
+ad debcf deabgc acegbfd daef febcda cgebdf bcafd cda bfcga | acfgb cbdaeg gecadb acd
+fadbeg bagdcf bcda fceag cfd bdgfa dabgefc cd bdcgfe afgcd | acbefdg dc gfcea bcda
+fcbge bg cgdeaf bdegcf beg bfeca gbdc agdefcb gcdef bgefda | egb bgdfaec bg feacbdg
+gcfabed dae geaf afdgc dfbcag cgadef dcebg defbac edagc ae | cdgae ae eadfcb egaf
+ceabf fabcge cgfe gecabdf dgafcb bagcf edfagb ef cdeab feb | acbgf fabecg bfe badefg
+adg bdfaeg bacd gcebd cgadbe da caedg egfca bfgdace fdbecg | dcab cgeda agd ad
+cbdafge ecbg fabec caefgb cb abefd fcdega bac adbcfg efcga | cb gcbe bac dbgeafc
+gfcbad fbc cf ebgaf acdbe decbfa dcbeag cdfe efgbdac fbaec | aebcgdf bfc dcaebfg edfbacg
+dgcf bfaedg bdf cdagbef cbead df cebfg gdcfeb fbdce gabecf | fd begcf df df
+bc egcb efabdc cfb gefdba cbfgade gbdef fdcga gfbcd gbdecf | cfagd ecbdaf cbf dbfcae
+bc cbe cfega gbecaf fdcega dbefa cbgdfea efacb cdbega gfbc | dgceabf ebc bce fcgb
+cf gfcdea fdage gfc dgcfe debcg fcbdag gefdba afec cgfdbae | deagbf eacdgf dgcbefa dfgec
+cdgfbae bc ecabd cfabdg dfageb cfeda debga abc begdac egbc | bc cb acb adegbc
+fd caegfd fed acfegdb bcfed cbadfe abfd bcaedg egcfb eabcd | dcabegf cbgdfea bfda cadbe
+dbgac ebd faebdg afbcdg efcbg aedc dbgeca dcafgeb gcedb ed | aced edgbc ebd ed
+fea dfbga bcedf fgadbce ea aebg bgfaed gdafec dbefa bdgcaf | abdef gdcafb dgbaf ebfad
+eac afdecb dbegca acdfb dbacfge ea bcfea ebgfc fade fadcgb | fcbad ebcfa edcgba dacbf
+agfdbc adcbg fdgc cdfeagb bgd eadbc edfagb dg abcfg bfaecg | cdfg dg gbeacfd bdg
+fdbag gafcbe agfdcb bfc cdgf bdagef cfbda bdeac bcfedag cf | bdeca adfegb cbfad cf
+agfdce ecd cbeadg ce bdagc ecagfbd bcegd abce bfedg gcbfda | cde cdbgaef ceadfg eabc
+cgbda bceag bcgfde gdb dcabf dg badefgc gdae adbcge cabgfe | adcgb egdbca dgbfaec gdb
+baefc gecfb bfadc dabcge cdbfage aeb ea bgafce ebdgfc efag | bfgdaec gcdebfa dbecgf dagcbe
+bgdcfe cafdg cad acegf fgcadb fdcbg faedbc da gbecfda dabg | acd faecg afcdg fdbgc
+gedbcf gef cfaedbg egbc ge gfcaed dcbfea fgbad dgbfe fecbd | eg gfe gcbe bcge
+fca cbfge faceg fbeadg gdefa ac adcfbeg ceda cdbgaf dgaefc | gfabcd afc degabf fac
+dacfb edbag ce abdfgc dcfe ebcda gecfab befacgd feadbc aec | cea dabcegf cea badfcg
+edabgcf eadcgf dbgecf dgeca dcbaf adcfg fgd gf faeg decbga | bfcdeg dgfca edcafbg dcafbeg
+abegcf bedaf fc ebadgc cbf fbcagd baecg befac defgacb cgef | ecbaf fbcdage cf bfc
+acg bafgdc afegb bfacd bgeacfd fgdc cg aecdbf gdaebc cbafg | afdcb cbfgda acg abdfc
+ca ace afcb afebcg ecfbg dabeg gfacde gbace cfgabde cdbfge | acbf cfegb gebad bacf
+dgfcba fabcd cgbfae dbaegcf eadcf dagbc edbcag gbfd fb bfc | ebagdc fb edfgabc gadcb
+gdaec dfgb dcgbefa bde ebadg cbfage cabfed efagb db bdgafe | bd abegf dbe deb
+caebfg bf bgead dgecab bdaf bgdafe fbe dfgbeac bfged fgedc | cbgeda efdbg edacgbf feb
+begca fbaedgc adbfgc adbecg bcaefg af afb cdbfe feag beafc | fadgcbe af bgdfcea af
+dceab be gcbdaf ebc abfe bdfac cdbafe cagdfbe gbfced dgcae | acfgbed eb afbe eabf
+fegdbc acfdb afgce badecf badg ebgafdc gd cgadf gdf dcabfg | agcfd fbdac gfd egbafdc
+beagd fbcg gbecfad gc bacge adbefc aecfb acgdfe gfbcea egc | gc efacbgd agdeb cfbg
+adcebf fgebadc ga ega bdga edafb egadf bcgeaf dcefg afdbge | abdg dbag edcfg fbegadc
+fe efd egfbdac dcagf cgaebd cbfe gdceb dfegc efagbd fdegcb | ef gdaceb befcgd gdcfbe
+badf bfg dafgebc gdabe edfbg bgfeac bf bdagef dbaegc fecgd | gacfbe bdagef cgaebd adfb
+efdabg bedac fb cgedab cefgdab fcdga adfcb cbfe dfb ecfabd | bfd bfec debafc acbfd
+cbdag fa bdfacg dgfac defbag cbaf gecbda agf dbegafc fgcde | gdcef cdbag gaf gcfde
+cfagd fbagcde cb efdabc dgaefb cfbe adgbec bdc acfbd edfba | befc cfbe efbc bcd
+bdcgfe acdbeg ac caed gdfba dagbc abc gbfcea ecbdg gbcdaef | aced dgbce cab gafdb
+bgfd fecdgab eadcf acbged gd acfgdb cafegb cdgfa cgd cfgba | fdgb gecadb gd gdc
+dbcfa gcebda becg dgeac dbe egadcf gdefab fgaecbd eb acdeb | bed cgbe ebd efbgdca
+ebfd cgfdea fbdagec afbce bfdeac geacb fb dfabgc fbc dacef | fcb abcdef cfb fb
+gceab bgef gbdca abdecf efacg ecbagf ebc cgdeaf eb gdfbcea | ebc fdcbgea eb fcedbag
+cdfeg de edg dbcgaf defbcg cbfgd gfcdabe bdef gdebca efagc | bfacegd fdceagb fbed gcebfad
+fecbdg fcagebd adbgfc ceba gecad dgfea egdcba dac gcedb ca | cdabgf edfacgb acbgde febacdg
+gefacd febcga fdg gcfdb ebcgf cgdba gdcefb fd bfedgac bedf | bdagfce gfd bfdcge geacdfb
+bacgfd ec cgbafe adbgfec acfbe fbeda eac ecgdba acbfg fceg | dcgaeb fcdgabe aec afdbe
+egcd dfeca efagd fdcgae egf ecbdagf eabdfc fecabg dfagb ge | feacd eg gcde feg
+begaf dcfegb dbcge gadcbef fc cdabfe fgdc decbga cfb becgf | bfc fc cdebg cgfd
+cfbdgea fdg efbdc fgdecb gd gbeaf agdfcb cedg adfebc gfdbe | cfdbe afgcdb dfcebga dgec
+fdebgc egba dcaebfg abfgcd ba bda gdceb cefda degcba edcba | dba bdafegc decba bad
+cgeb bdgcfa dfgcb efcdg ge abfged efdac eabdcfg ecdfgb gef | cedfg eg fcade eg
+eabdcg gceb ec ecfadg baecd daebcgf afdeb badgc bafdcg ace | bcdgeaf ec cebadfg ce
+ebdf cagfeb efcda ecbdag ecdbfa aebdc cgdfa eaf caefgbd ef | eaf dcbea acgdbe dfcbega
+gdbfa gfaeb cafbgd adb cedbgaf faecdg edfbca bd dcgb gcadf | db bcdg dgfba dbgc
+fbcdga cea gbcaef decgb gcdfa eafd afcdge adgec ea dbceagf | eac egbcdfa ae dfea
+beagcd egcbd gbae eagcdf gdcefb cbade fabgdce ae fbcda ace | bage cae ace ageb
+bacgf bdgac dcebfg eacgbd fdgbcea gfdbea dc aced bdc dbega | bcd cd bagde bafcg
+gfabdc be gcedba fecabgd edcaf egbf fcabg cgbaef abcef bea | acegdfb fdbcga eb becaf
+dgfbec bdecga dfgca fd aedcgfb adgec adef fcd fgcab fcegda | cbfgeda cdf df fdae
+cgfbe faceg bacegf dfgbe aefcdg abdcef cb gdbefac bfc gbca | cdgefab bc cbfead cgaefd
+gefdcab ebcg fcb bfdce afedb fedgc bedfcg dcafgb degfca cb | bc bc dbfecga cb
+efagc cagfde fb bfe begfa gbead badcgfe bgfeac fbca fdgbec | eacfbg efb feb bf
+gebdca af afb afbed bcafgd fabgde fbedc afge dgbae eacdbfg | agdfebc af abegcdf baf
+egbad cfedbg gb dbg cfdaeg bdeaf dgabefc cdbega cgdea cabg | efdab fedab gb gcba
+adfcb defca cabg gdefab afbdg bdgfec gbcedaf dbc gdacbf bc | dfeac bdc cbd gabc
+db ebcda ebgfac fcdea becga ebgadcf bdc cfedbg agdb bdgeca | fecda bd agbd db
+bagcef begdafc fbga fceab afcged ecagf deacgb acb ba bcefd | cfbedga abc deabgfc bca
+cbf gdbcae abdgc fb dagbcf gabf cdfea cabdf dabegfc fbgcde | cbf fb dgabce fbc
+dfbgec fcbeg fbeag afdecb fcdbga cegd dfbcg efc ce adebgcf | egdc acegbdf agfbcd cbgfe
+abgce gdec ce faebg agcbd bfcadg acefdbg defcab egcdab cea | gdfabc ce agefdbc ec
+acedg gbc geab ebdfc bg cbedg dacebg gdcaef fabgecd dagbcf | cgb bg adecg acged
+cfebad fbgda edg ceag agebd aedgcfb eg ecbfdg cgabde cebda | cbafegd gdacebf cega eg
+eacdf ea eadb cfgde cabfde bdfgac gacebf afe fbcda gcbafde | bagcfe fae adfcbg cadbf
+abd fgcaebd dbfgc gdeac fbedag ceba bcgad deacgb ab adcfge | dba bcea ab cfagbed
+afg bgfce af dcfa acbdge bacfg agbfde dgcfab dgbac defagcb | dfgcab cfgbad afg dceagb
+gdacbf ebgacf edbagc ae agcbf aefg acfbe fgbcead bcefd cea | eca adgfcb eca eafg
+fcbae bea bcdaf cadfbg fbgec ae eafd dacfeb bagcdef cbagde | fecbg cgedbaf gdcfba bae
+baefg daebgc bdgeacf gaecb efb feca abfecg fadgb edcbgf fe | bfgdeca gcbea acedgbf ef
+cd fdaecbg cdbga befacg fbdag decb dca gfcead dacebg gebac | edbc feabcg gcefdba adc
+agdebf daeg eadbfc gef dgbfec eg dbeaf afgeb fedbcga gcbfa | eg eg edgfbc efabd
+facd cabfgd fab geadbfc af gcbad egcdab becfg beafgd acfbg | fa acdfbge gdcaebf dbacg
+bcgfda gbeaf cfgba fae bace cfabge cfdgae gedbf ea dgcfbae | ae ea fcagb eafdcbg
+dbe gdcb ecafd edcgfba acedb gebdfa bagdce fegcba bd gbace | bd feacbdg bd gedbfa
+cabgde fagecb efb adfbg acebdf fecd afbdcge cdbae bedfa fe | cfabge fe dfabg bfdea
+bacg dafcg cdgfaeb fbcgda baefdg gda dabcef gfced cfadb ag | bgac dcfge egcbdfa dabfcge
+bdc gdac ecdagbf geacfb defcbg fabde cafbg bcfad cd cadbgf | acbdgfe fegcabd dafbc dcgbefa
+cedbf ebdgcf degc dcfgbae aebfg dfg bedgf gd aebcfd dbgfca | dbfcage cdebf dg dg
+edcfb ad cgad adgbfc agcfb agfebc bdacf cafgedb daf dgaebf | afcdgeb fda fda bfagecd
+agcbfde gadbcf bdfcge defgc dc afdge dcg gabfec ecbd bfgec | gcedf bcfeadg cdeb eafdg
+afdebg efa afbdc ecag egcfd debgcf ea fgebadc fdeagc defca | aef afdbceg ea dgeafc
+cgdfb fg ecdbf fbeacd bgdaef bcadg ecfgdab dgbfce gfec gfd | gf gf gfce febdc
+bgcde fedgc cgf gabcfd gdbefc defga fcbe cdabegf fc acbdge | bcfe efbc fc efdcgb
+cagb ab gdaecf cgeabd edabg fcdabe edbfcga bfedg cgdea eab | gadce gdefb abgc fedcba
+ecdafg feg bcgfad egbfa afbgc ecgfdab gaefcb eg afdeb becg | ge bgfdca eg fegadc
+fe adefg egdac cbagdef dcfeag adecfb dbfag edbgca gfce efd | fe efgc cabegd fe
+geab fgbaec gce adefc gcafdb agcef abgcf cdgebaf gcedbf ge | gabe cfega fbdceg eg
+eac dgefca cfgdba gdfeabc eadf gcfbe adfcg gcfae gacbed ae | agcdfeb ecbfg gedabc ae
+ec cdagb cegdab dagbcf cbaed ebgc ecd abedf fadcge cebdafg | ecd gacfdb becg ec
+abfge ce cgfdae cbed fecab fbdca egfacbd efc acgdbf cebdaf | dgface efc ec ec
+gbc gcdbf gb eabdfc egfb agdcf egbcda gcdfeab dgefcb fcedb | bgef gecbfd gb bgfdce
+ecgab gecabf cb gfbc abc afgeb daecg fcedab fcagbde efdbag | bdecagf gbfea ebgcaf cb
+ecdgb ab adgb dbecga fgbcde cadgfbe aeb eacgbf cabed eacdf | abdg cbedg gdabce cdbeg
+bgc dgeb bg fcbge befcgd ebcdfa cbfgda efcag cebfd fagbcde | gdeb fcgadeb bfecd cdagbef
+edbcfga cedbga bagfd eabc dgbfce eb gceadf egb agdec gbade | cfgead gefdcab bdcgae cbae
+bafcge edfg abegd deabcfg dfbagc abcde dg bdg gbdaef febga | bdg fdeg dg cafbdg
+cgfdba gec gdeafbc cfgead ce fbegd cdae facdg afcbeg edfcg | cbgfea cfgadeb gdabfce egcdaf
+cbfgad bceagd dbf cdbfae ebdcf cdegfab cbaed gcedf bf aefb | aefb dcfbage bedfcga fb
+cgd bcdafe dacbegf adecb dbfeg bacg gedbc gc fcegad agbdce | cdg fbdge ecdgb eadgfbc
+gfdabe cfbga ceab eaf gefcab gcaef ea efcdg dgafcb abfdegc | ea cafbdeg fgcab acgfe
+dfg gdfbe gf ceagdf aefdb fcbg begdc cgbdef cabged becgafd | fdbgce eadbf cgedb fbcg
+fdeba ecdfa badgef ebagf abegdc dgfb bd febgca agfedbc abd | bd bfega bedgca cbaegf
+bafcdg cegb acfbg feagd fdacbge be bfegac abe bdcaef afebg | be bfecdga defcgba be
+bafgdc dbfag gfecdb cbf cf bfadge acgfb cgfdbae bgeca cadf | cf bfgcde gdaefbc cfb
+gcdbaf cgbedaf ad ebfagc daef dbafec caedb bgcde bfeca abd | ebdagcf dfea fcaedb cbfgad
+ceagfd eadfb fdeag dcgfe gea ag dagcbe fcegbd fbdaceg fcga | gfca fcga dcgefb gfcaebd
+cdfbge dcafe df fcd badce gdaf agcfe ecagbdf eafbcg fgcdea | gdfa fcd eabfcg fd
+ad bgdfae eagfd fedcg dagb gdeabcf dea bgcefa abgef fdbaec | afbge eacfbdg bgecfa fabge
+adfbceg edcgf gcabd egfcbd ecbf cebgd cefdga be deb fedgab | fecgd gcdef ecfdbga daecfg
+gdfeac afedc agdbcfe ae begcfa edfbc bfcgda dgea efa cafdg | abdcfge edag edfbc cfdga
+cbdeg geafbc fd gfacdb fgdce fecgad feda dfg aedbcfg gcafe | fdecg fade fade cadefbg
+af bcfeg gbcfda cgabfe ecgfa abef cgdae beagdfc gaf gebcfd | gdfecb afegbdc gfa gaf
+bgafcd becfag cbdeag bagdc eb bdegc adbe cdfebag gbe egfcd | edbgac adgbc bge cefgba
+dfcebg cgdaef ga fcbgd dgabfc debaf acgb agfbd defbacg gad | bagc bdeaf bfgdc abcg
+ebgfac agfdceb cdbga dafc cfabg dc gebda dcfbeg dbc gafcbd | gfbdca fdac gdfabec bagfcde
+egbac efabgc efagcdb abedg ead da dbac bedcga cegdaf gdfeb | dabcfeg gcfeda adbc ade
+acgbfe eafdg dbea bfgea dgbcaf cedbagf dfgabe cdgfe gda da | gfebdac agd dgaef dga
+edbgf ced bcdeaf cdgeaf bcfgade fbcad eabc cdgfba ec febdc | dcbef faedgc edc begfd
+ca bedcaf cbaedgf edabf cab dfbca bdfgc cfea daegcb gbafde | ac cdfabe bcgdf gdfceab
+bdef gecbfd gbdcf cbaegf cgbda dfc gdefacb fcaegd fd gebcf | cfd dcf df fegdcab
+bf adfgce dcbea cfb gfdaceb cedfbg cfedb fcedg acdgbf gefb | fb bgfe gebf dacbegf
+defc edfba eadbg feb fbagcde ef dafcb gbfdca egcfab aecfdb | ecdf ef fcbgae fced
+acdbe aegb cdabfge ebdcg fcabd ea gebdca bfcgde gcefda aed | ea ebcgd dbcegfa dea
+dbcfe bfcda cabfedg aefc cdfabg bgedc ebdfac edf fe efdbga | efca face fe cefa
+egdab bgfd gdeabcf eadbc abg bg bacefg fgade cadgef afbgde | bfcaegd dbafge abedg geabd
+ebc egbfdc degc ebcagf gbcfd acbdfg ec fcdeb abdcgef abfde | egdc gcdfb bcgdf ce
+dbfaecg bd bcegdf cfabg dcba abfdg fbeagc fdb cbdfga efgad | bgaefc efadg gbcafe bfd
+gacef dcaegb egadc efcbadg eaf caefdg defc fe afgebd agcbf | cedag dfce cedfgba aef
+gafcbed gdcef bcefad daecf adc daefb cbaf egacdb bgadef ac | dbceafg ebfcad bdacfe dca
+ecbfa fae afgbc cdeafg dcfeb efgcab ae beag gbadecf acfbdg | bagfdc ae feabc edcgfa
+egfac gebaf ac cfab gca gcdef cagedb bfecag fagdbe gacfebd | gcbaedf geacbdf gafcebd cgefba
+fbdgec efbcag acbedgf bac befcg adfbec fgca ca bagce gebad | egcbf ca cfgabde abc
+edafg cabe fcaed ce faegdcb dcefgb fec fdagcb cbdaf cbfaed | acbdef cef ce eacbfdg
+efbcgd ebdgc egacf gebadc gba dabe fagcbde gbcae ab gfcbad | aebd aedb bead cdbfgae
+becag cbdf cebda fgdbea bdgafce ecfda abd adefcb acgdef bd | adbfegc eadgbfc dcegafb bfdc
+gfcadb fega acbeg fgcab ebcda ebcdfg ge ebcfga gabfdec ebg | beg fgedbac eagf eagdfcb
+gecf cbf cbfga egfbac cbgaefd dgcbae fc aebcg befdca bfadg | cbf bgfca fbc fcb
+cedfg adbgef cb bcd cgebd dageb cbegad ceab bgfaecd cabfdg | gbced bc dgefc bc
+egba bdcfg fbe acegf ebcfg eacbfg eb fdebac dgeacf dcgbaef | efgacd bef ebcgf fbe
+agfcbd bafcedg dce bgdfce efbac dgfe begdca de gdfcb dbefc | ced ebgcafd ed bgdaec
+decfa cgbdae bdfce dgcbe bdfg bgdefc fbe bf bfgcae ebcgdaf | fb gabcef efcdb gdcebf
+fbecga efcbg bafgd ac dcgeab eacf bafcg gfdbace gbcefd acb | bfecga efgbdac fbegc faec
+ab ecbagdf fbagec cfedb eagbdc acb agdb ecgda acedb gacfde | acdbfeg dgab abc dgbfcea
+gfdbc begdcf bfedg acgfed cd fcd febgda cfgab cadbgef ebdc | ebcd gdefab ebdc ebafdcg