Added day 14
This commit is contained in:
parent
8c24b10fa4
commit
e3d1d56d4c
|
@ -0,0 +1,545 @@
|
|||
mask = X00000000000110011100XXX011110111011
|
||||
mem[41579] = 225076
|
||||
mem[14806] = 26208185
|
||||
mem[47659] = 176531392
|
||||
mem[27723] = 186971157
|
||||
mem[35129] = 3483636
|
||||
mem[27142] = 4246
|
||||
mask = 01101X10101011000101X1X0XXX101111110
|
||||
mem[16685] = 392461
|
||||
mem[65343] = 13662482
|
||||
mem[53292] = 736
|
||||
mem[6830] = 382342975
|
||||
mem[12777] = 19983424
|
||||
mem[19592] = 679514970
|
||||
mem[8776] = 122013
|
||||
mask = 011X110100011100111001X1000XX011001X
|
||||
mem[29076] = 305532
|
||||
mem[30139] = 135337
|
||||
mask = 0100X00X1010110X0X010010010001000001
|
||||
mem[32307] = 2921
|
||||
mem[29478] = 15201
|
||||
mask = 1X101101001111111XX1XX1X00X100111X11
|
||||
mem[35018] = 63654376
|
||||
mem[13977] = 22331
|
||||
mem[7078] = 27879686
|
||||
mem[36409] = 1248
|
||||
mem[29098] = 1049
|
||||
mask = 010X0001001X111011001011X000X100X010
|
||||
mem[37355] = 3525
|
||||
mem[37012] = 16715
|
||||
mem[2023] = 7212969
|
||||
mem[31805] = 455891
|
||||
mem[34394] = 411403104
|
||||
mem[5056] = 14954425
|
||||
mem[55325] = 17658
|
||||
mask = 01101XX01010X100010XXX011110111X0010
|
||||
mem[60619] = 889
|
||||
mem[65362] = 145345
|
||||
mem[53540] = 2298570
|
||||
mem[62434] = 542
|
||||
mem[12457] = 1279
|
||||
mem[5456] = 4090
|
||||
mask = 01001X01100010101111X000X01X0X01X001
|
||||
mem[27104] = 3012
|
||||
mem[9008] = 75
|
||||
mem[31688] = 60
|
||||
mask = XX01X00000XX110011100X0X010110XX1100
|
||||
mem[25251] = 7374
|
||||
mem[63139] = 27875755
|
||||
mem[42967] = 8204614
|
||||
mem[61987] = 396
|
||||
mem[30866] = 691
|
||||
mask = 1001000X00X0110X1110001000100101XX00
|
||||
mem[40705] = 21726765
|
||||
mem[7454] = 22726
|
||||
mem[46834] = 68819
|
||||
mem[7078] = 643555271
|
||||
mem[48619] = 34299689
|
||||
mem[42749] = 27406055
|
||||
mem[32511] = 54957378
|
||||
mask = 0X0110010011X1X0110000001010000100X0
|
||||
mem[5752] = 957
|
||||
mem[58252] = 463561556
|
||||
mask = 0X1X1X010011110X111001X00001000XX0X0
|
||||
mem[63353] = 14516
|
||||
mem[15823] = 2060
|
||||
mem[30126] = 102554
|
||||
mem[30621] = 17543629
|
||||
mem[35116] = 76250
|
||||
mem[10236] = 11446819
|
||||
mem[16660] = 2541872
|
||||
mask = 1X01X00000101100X1X01111100101100000
|
||||
mem[48609] = 312842
|
||||
mem[2909] = 17774
|
||||
mem[19872] = 5613
|
||||
mem[9985] = 6539455
|
||||
mem[63287] = 312743
|
||||
mem[40351] = 16889429
|
||||
mask = 0111001001111110XXXX0XXXX11100010011
|
||||
mem[61065] = 14018
|
||||
mem[1689] = 301351825
|
||||
mem[31135] = 568
|
||||
mask = X10000100010X000111001X0X0010010X00X
|
||||
mem[29969] = 7096617
|
||||
mem[19809] = 862281685
|
||||
mem[30350] = 1871
|
||||
mem[31001] = 93711152
|
||||
mem[13233] = 33263717
|
||||
mem[42482] = 579908
|
||||
mask = 01X10X0X00X11100110100011X0X0X0X001X
|
||||
mem[41248] = 7946615
|
||||
mem[1829] = 1576
|
||||
mem[907] = 21637953
|
||||
mem[3566] = 2883
|
||||
mem[29687] = 19408
|
||||
mem[15657] = 972
|
||||
mask = 010100X10001110010X110X01X0111X01010
|
||||
mem[53292] = 609
|
||||
mem[55550] = 8115727
|
||||
mem[834] = 617
|
||||
mem[53708] = 498838597
|
||||
mem[39044] = 309
|
||||
mem[17842] = 5862
|
||||
mask = 0100X00010X011X01110X0XX0110000X1101
|
||||
mem[32511] = 50674184
|
||||
mem[41256] = 996258
|
||||
mem[47199] = 1837
|
||||
mask = 1101001XXX1X111X10X00X000X011101X101
|
||||
mem[9292] = 623250
|
||||
mem[45902] = 258279925
|
||||
mem[20440] = 172992884
|
||||
mem[31688] = 65210
|
||||
mem[2288] = 66034927
|
||||
mask = 01100101X110X01X11X01100001000X11001
|
||||
mem[58893] = 2144468
|
||||
mem[5048] = 750616856
|
||||
mask = 010110X1001111001100XX0011100101X0X0
|
||||
mem[9150] = 4201416
|
||||
mem[33664] = 15504
|
||||
mem[7218] = 18606957
|
||||
mask = 01X1100X0X00110011X0101101111X0X1111
|
||||
mem[8003] = 1403
|
||||
mem[64683] = 16052434
|
||||
mem[17299] = 43327
|
||||
mem[13505] = 961
|
||||
mem[48609] = 709578
|
||||
mem[11582] = 855
|
||||
mem[42822] = 3983
|
||||
mask = 01101001X01X11X011XX0111110110000101
|
||||
mem[30603] = 24703071
|
||||
mem[3805] = 775231
|
||||
mem[30098] = 230279
|
||||
mem[46351] = 5983
|
||||
mem[6689] = 3542
|
||||
mem[26816] = 121693
|
||||
mask = 1X00X0101010010011X1XX0110110011X0X1
|
||||
mem[16838] = 192956313
|
||||
mem[60531] = 24171693
|
||||
mem[22819] = 38459
|
||||
mem[26453] = 6160088
|
||||
mask = 1X010X000000110X1110100001X0100100X0
|
||||
mem[43837] = 22192131
|
||||
mem[10090] = 21946
|
||||
mask = 01X111000X011100111XX100001100100000
|
||||
mem[4306] = 56171106
|
||||
mem[50905] = 3399
|
||||
mem[36168] = 121097
|
||||
mask = 1X010000XXX111001X100X100100X0X001X1
|
||||
mem[31394] = 121478
|
||||
mem[4906] = 139929
|
||||
mem[36356] = 1924
|
||||
mask = 1010X010001011X011X011XX11011110X111
|
||||
mem[11864] = 29928714
|
||||
mem[30866] = 45934
|
||||
mem[19873] = 370711
|
||||
mask = 0101100000X10110111110X0XXX1XX110X01
|
||||
mem[51120] = 65808488
|
||||
mem[22318] = 10244125
|
||||
mem[26453] = 13126923
|
||||
mem[64961] = 3880
|
||||
mask = X01011X1001111X1X11XX100010X00111100
|
||||
mem[62778] = 126882
|
||||
mem[59733] = 1267462
|
||||
mem[13740] = 435
|
||||
mem[3400] = 8477
|
||||
mem[4133] = 116701
|
||||
mem[30619] = 231703
|
||||
mask = 01000X011010101011110X1000110XX0110X
|
||||
mem[45164] = 25402465
|
||||
mem[9309] = 77050566
|
||||
mem[29909] = 706
|
||||
mem[27758] = 1319
|
||||
mem[6150] = 106196666
|
||||
mask = 01X11X0X00X111001110X1XX0001X001001X
|
||||
mem[14255] = 13708852
|
||||
mem[513] = 3790644
|
||||
mem[28804] = 395377671
|
||||
mem[57953] = 72417
|
||||
mem[28725] = 1201
|
||||
mem[11750] = 233
|
||||
mask = X10100X100111110110X00001X1011010X11
|
||||
mem[49595] = 24812
|
||||
mem[64152] = 9382
|
||||
mem[12122] = 2319571
|
||||
mem[42088] = 482
|
||||
mask = 1X000XX010100100111100X001110X1000XX
|
||||
mem[13636] = 524153304
|
||||
mem[36450] = 352968
|
||||
mem[6260] = 4407821
|
||||
mask = 0111000X000101X01XX100X1X1001110X010
|
||||
mem[7218] = 94415
|
||||
mem[29864] = 5120026
|
||||
mem[53070] = 6612
|
||||
mem[36573] = 8326010
|
||||
mem[1987] = 5992534
|
||||
mem[9798] = 11713
|
||||
mask = 110000X01010X100111100X01011000XX10X
|
||||
mem[26267] = 61334
|
||||
mem[29687] = 520585578
|
||||
mem[11781] = 66211489
|
||||
mask = X001X000000111001110X011001X1X100011
|
||||
mem[2023] = 805
|
||||
mem[7673] = 1711
|
||||
mem[9374] = 7545
|
||||
mem[45925] = 33575
|
||||
mask = 010X000X10101X000011XXX00X1000000000
|
||||
mem[30922] = 12722836
|
||||
mem[61189] = 510395
|
||||
mem[26267] = 38479500
|
||||
mask = X0101X0100X11X1110X11110000000X01011
|
||||
mem[55014] = 27563943
|
||||
mem[46994] = 497673195
|
||||
mem[43529] = 80791407
|
||||
mem[65052] = 454391739
|
||||
mem[30577] = 304
|
||||
mask = 0X01000110011X00X10110111100X0X10010
|
||||
mem[45248] = 7792707
|
||||
mem[6927] = 12193
|
||||
mem[60386] = 3927747
|
||||
mem[39315] = 4161237
|
||||
mask = X001X01000X01100111010101X111X1X0010
|
||||
mem[15099] = 17870434
|
||||
mem[60] = 32347
|
||||
mem[6193] = 412046876
|
||||
mem[61561] = 142217182
|
||||
mem[25826] = 2073043
|
||||
mem[61322] = 14525
|
||||
mask = X1X100X0X11111X01XX000000101000X1X01
|
||||
mem[4794] = 233038
|
||||
mem[29193] = 23211308
|
||||
mem[26267] = 10247786
|
||||
mem[44728] = 384574
|
||||
mem[57840] = 471
|
||||
mem[23517] = 507429935
|
||||
mem[8408] = 251968
|
||||
mask = X1000X010010110X11X100101X1X1101X100
|
||||
mem[14979] = 52721
|
||||
mem[14121] = 12422
|
||||
mem[65343] = 653
|
||||
mem[513] = 23189896
|
||||
mask = 1101X0X0010X110010100111101000X00XX0
|
||||
mem[21511] = 30489818
|
||||
mem[63139] = 13245573
|
||||
mem[64852] = 762
|
||||
mask = XX01100000011100111X11X00100110X0111
|
||||
mem[59229] = 47739
|
||||
mem[49595] = 31185
|
||||
mem[9374] = 11755159
|
||||
mem[42415] = 206175
|
||||
mask = X1X010X01010X10001X1010100X1X1X10X10
|
||||
mem[65383] = 54664
|
||||
mem[17412] = 6631
|
||||
mem[55994] = 373011
|
||||
mem[53672] = 26530655
|
||||
mem[7974] = 1007816675
|
||||
mask = 1100X010X01X1000111001X100011011000X
|
||||
mem[4896] = 38031019
|
||||
mem[754] = 2287
|
||||
mem[30181] = 50259322
|
||||
mask = 1X010XX00XX111001X10X110100X10000100
|
||||
mem[32551] = 7983378
|
||||
mem[7438] = 31324924
|
||||
mask = 0101X0000010X100111000X0X1X110X01110
|
||||
mem[25209] = 48369038
|
||||
mem[50393] = 576369
|
||||
mem[40859] = 3812
|
||||
mem[56386] = 569373625
|
||||
mem[63105] = 8734731
|
||||
mask = 10101XX0001011X01110XX001X010110XX0X
|
||||
mem[34042] = 19350728
|
||||
mem[32063] = 255940784
|
||||
mem[33476] = 53404
|
||||
mem[35243] = 209057823
|
||||
mem[4983] = 377086
|
||||
mem[4794] = 16200733
|
||||
mask = 01X01000101X110001010X11X01X00000101
|
||||
mem[19467] = 14126078
|
||||
mem[29699] = 830
|
||||
mask = 010110X000X1X110111XX1001111X0X10XX1
|
||||
mem[43026] = 13471405
|
||||
mem[4984] = 1882
|
||||
mem[18947] = 15001421
|
||||
mask = XX011001X0XXXX001X1101X0000100001010
|
||||
mem[55787] = 737
|
||||
mem[1563] = 2538
|
||||
mem[59758] = 28003877
|
||||
mask = 100X000X000X110X1X101100001011X1X011
|
||||
mem[25696] = 172112
|
||||
mem[12279] = 113288
|
||||
mem[24031] = 37612590
|
||||
mask = 11XX00X00010110011100101X11010100111
|
||||
mem[46130] = 1530
|
||||
mem[12542] = 795
|
||||
mask = 110X00011X01111001X00X1100100010XX10
|
||||
mem[27592] = 128275
|
||||
mem[27809] = 132195912
|
||||
mem[24738] = 199737
|
||||
mem[19162] = 15356
|
||||
mask = 010001010X10X10X1111000010001101X000
|
||||
mem[8268] = 377409380
|
||||
mem[10236] = 540166
|
||||
mem[38723] = 139937
|
||||
mem[60530] = 7895799
|
||||
mem[21813] = 6275543
|
||||
mem[8917] = 50534988
|
||||
mem[50461] = 251351
|
||||
mask = 0110X1011XX01X1011X0X1010X11X000X000
|
||||
mem[37937] = 2706
|
||||
mem[53672] = 23428
|
||||
mem[16637] = 43775004
|
||||
mem[13789] = 23884648
|
||||
mask = 1X0X00X0001011001110000101X1X1X0X0X1
|
||||
mem[55787] = 960988
|
||||
mem[29687] = 510439
|
||||
mem[63862] = 122580
|
||||
mem[30126] = 1488
|
||||
mem[44826] = 3558
|
||||
mask = XX00001010X011001X110X0X11XX10000X00
|
||||
mem[5760] = 209762
|
||||
mem[27142] = 2968
|
||||
mem[19789] = 269
|
||||
mem[634] = 9949
|
||||
mask = 01X0X00010101100X1X101XX01110X0X011X
|
||||
mem[24659] = 304
|
||||
mem[28725] = 7064540
|
||||
mem[23533] = 396592131
|
||||
mem[42715] = 129702313
|
||||
mask = 1X0X0000X0X0110011101X10011X1110000X
|
||||
mem[31688] = 698304069
|
||||
mem[28880] = 1648
|
||||
mem[1915] = 1894
|
||||
mem[50253] = 3317783
|
||||
mask = 0101X00100X1110011XX00X00X00X00XX010
|
||||
mem[7930] = 49938921
|
||||
mem[45686] = 376
|
||||
mem[44994] = 394081142
|
||||
mem[25475] = 1655
|
||||
mem[11478] = 704
|
||||
mem[34150] = 4147579
|
||||
mask = X10X00X0011X11001X100100011100000011
|
||||
mem[13838] = 9047
|
||||
mem[64712] = 7762
|
||||
mem[63477] = 6690357
|
||||
mem[38863] = 7288
|
||||
mask = 01000000101011000X11011XX111000X01X1
|
||||
mem[20533] = 10736847
|
||||
mem[40924] = 430217452
|
||||
mem[64360] = 2426851
|
||||
mem[58115] = 12071761
|
||||
mem[30126] = 26562102
|
||||
mem[6672] = 154543
|
||||
mem[4382] = 10121
|
||||
mask = 01X110X00X1X11101X10X110011100X00011
|
||||
mem[20472] = 194
|
||||
mem[35111] = 708430742
|
||||
mem[2674] = 44
|
||||
mem[39452] = 614
|
||||
mem[19219] = 110991746
|
||||
mask = 01X10X010001X1001XX1X00000X00X000110
|
||||
mem[38888] = 996404203
|
||||
mem[13988] = 2030
|
||||
mem[29687] = 833197
|
||||
mask = X0010000X00X11X001X000X001011XX1X001
|
||||
mem[19041] = 26558
|
||||
mem[57953] = 30524
|
||||
mem[58714] = 3716054
|
||||
mem[12930] = 83910
|
||||
mask = 1101100X0X111X001X10XX1101011X100000
|
||||
mem[45686] = 3647
|
||||
mem[33541] = 36310663
|
||||
mem[17979] = 6056054
|
||||
mem[10534] = 16345
|
||||
mem[47111] = 232953370
|
||||
mem[25533] = 27557895
|
||||
mem[58098] = 1560064
|
||||
mask = 100X0000X0X011XX11X001000101111X0000
|
||||
mem[26199] = 246090059
|
||||
mem[18199] = 88594470
|
||||
mem[29909] = 16759
|
||||
mem[64360] = 634531
|
||||
mask = 0101XXX10011110XX1100011000X001101X0
|
||||
mem[16673] = 22927535
|
||||
mem[12390] = 62487
|
||||
mem[60131] = 719
|
||||
mem[20196] = 175993
|
||||
mem[34150] = 25943355
|
||||
mem[9914] = 48537509
|
||||
mem[41065] = 46726
|
||||
mask = 0101000100X11100XX01000X101001000000
|
||||
mem[61353] = 192
|
||||
mem[30126] = 122504373
|
||||
mem[43978] = 112475
|
||||
mem[54606] = 262832639
|
||||
mask = 110000X01XX0010X1111011010XX01110100
|
||||
mem[38654] = 5670
|
||||
mem[19246] = 3500
|
||||
mem[3280] = 780682
|
||||
mem[25841] = 3675082
|
||||
mem[10090] = 939
|
||||
mem[30577] = 19385
|
||||
mask = 1101X000001X11XX1110010101101X101X01
|
||||
mem[30181] = 467224373
|
||||
mem[64712] = 19540
|
||||
mem[9150] = 110790020
|
||||
mem[58763] = 649
|
||||
mem[61987] = 31515335
|
||||
mem[36168] = 40664
|
||||
mask = 011001X1X10010X01X1X0X010100X101X1X1
|
||||
mem[50341] = 249123925
|
||||
mem[57809] = 1245764
|
||||
mem[1000] = 6880
|
||||
mem[62447] = 9704635
|
||||
mem[57040] = 22401
|
||||
mem[36847] = 1403
|
||||
mask = 1XX0X01000101XX0111001X00101110XX101
|
||||
mem[44459] = 1909253
|
||||
mem[28804] = 13248
|
||||
mask = 11000000X010X1001110111XX0100X101000
|
||||
mem[44826] = 1584
|
||||
mem[8549] = 20390300
|
||||
mem[8024] = 83478929
|
||||
mem[26411] = 1612730
|
||||
mem[27809] = 3340355
|
||||
mask = 0101100X00X111X0111XX100X010000100X1
|
||||
mem[43026] = 246196988
|
||||
mem[3889] = 148865
|
||||
mem[43538] = 168294874
|
||||
mem[37181] = 2452
|
||||
mem[13074] = 203182
|
||||
mask = 100100100101110011X0XX10X101101XX100
|
||||
mem[47655] = 2283
|
||||
mem[43365] = 51654102
|
||||
mem[20448] = 1899
|
||||
mem[46501] = 866
|
||||
mem[39220] = 8179259
|
||||
mask = 01100101111X11XX1X00X100000X0110XX00
|
||||
mem[4063] = 25905
|
||||
mem[56197] = 7616
|
||||
mem[22101] = 96196611
|
||||
mask = XX011100X001110X1110XX000X1010000010
|
||||
mem[38766] = 317650050
|
||||
mem[275] = 1077
|
||||
mem[47272] = 3545
|
||||
mem[17513] = 428
|
||||
mem[31209] = 10901538
|
||||
mem[60020] = 8191405
|
||||
mask = 100X0000X0001100X110XXX00001110X000X
|
||||
mem[3889] = 240406519
|
||||
mem[58283] = 105792011
|
||||
mem[2023] = 11451400
|
||||
mem[42056] = 500252
|
||||
mask = 0101100100X11X00110100X001001X0000X0
|
||||
mem[51566] = 18992
|
||||
mem[2207] = 9397005
|
||||
mem[16208] = 18748
|
||||
mem[11287] = 117402894
|
||||
mem[10310] = 16126
|
||||
mem[63935] = 59804
|
||||
mask = X1X00X01101011X011XX1001011X10110X01
|
||||
mem[17412] = 292
|
||||
mem[55917] = 290254
|
||||
mem[36766] = 38849561
|
||||
mem[39220] = 401237793
|
||||
mask = 011001011X1011X01X100001000110010X00
|
||||
mem[41854] = 1014518
|
||||
mem[16822] = 16372
|
||||
mem[36517] = 6130231
|
||||
mem[37271] = 406796637
|
||||
mask = 0X01000X000111X0111X011001X000000X11
|
||||
mem[58255] = 95641
|
||||
mem[98] = 61432470
|
||||
mask = 0100000100101XX01111100100X11X011101
|
||||
mem[9985] = 1592325
|
||||
mem[11478] = 2271665
|
||||
mem[3757] = 41068007
|
||||
mem[61585] = 70572
|
||||
mem[17154] = 335361
|
||||
mem[60531] = 41930933
|
||||
mask = 1001X00000X011011110X0100X000X010010
|
||||
mem[64462] = 29767556
|
||||
mem[24738] = 210929
|
||||
mem[50899] = 1287
|
||||
mask = 000XX000000111100100X10001X10010100X
|
||||
mem[6334] = 287
|
||||
mem[34777] = 1860550
|
||||
mask = 110X001000101X001110X111010X0X1X0X01
|
||||
mem[12157] = 6178
|
||||
mem[40351] = 59493
|
||||
mem[30619] = 34292339
|
||||
mem[13636] = 1290347
|
||||
mask = X100000XX01011X0111X100101000X10X1X1
|
||||
mem[60731] = 9983015
|
||||
mem[9985] = 18414272
|
||||
mem[56154] = 62268050
|
||||
mem[40924] = 15580622
|
||||
mask = 01010001XX011100110110100X00XX010000
|
||||
mem[24823] = 113683
|
||||
mem[33142] = 14761835
|
||||
mem[33664] = 26275
|
||||
mem[7822] = 5148968
|
||||
mem[39411] = 1216069
|
||||
mem[27779] = 102128
|
||||
mem[36065] = 10811
|
||||
mask = 11X00010XX10100011X00001X11X0X1X10X1
|
||||
mem[34192] = 592942932
|
||||
mem[61987] = 27192613
|
||||
mem[63760] = 8016
|
||||
mask = 010XX00110X01X101111100X0X100X100001
|
||||
mem[14125] = 363398
|
||||
mem[9080] = 113944
|
||||
mem[29909] = 14606451
|
||||
mem[52829] = 102953
|
||||
mask = 0101XX01001111X0110X0010XX0001011110
|
||||
mem[8212] = 2171
|
||||
mem[60531] = 439001
|
||||
mem[11151] = 8267
|
||||
mem[634] = 51725
|
||||
mem[38040] = 6915656
|
||||
mask = XX01001X011X1X001000011100100X000101
|
||||
mem[18184] = 34766
|
||||
mem[53526] = 38417257
|
||||
mem[28494] = 114210018
|
||||
mem[102] = 3422103
|
||||
mask = X100000010101100X1110XXX01110000X1X1
|
||||
mem[7454] = 3185
|
||||
mem[45157] = 3488
|
||||
mem[62822] = 3659366
|
||||
mask = 1110100X1010110001X1X11X1001X0X1001X
|
||||
mem[58002] = 236109549
|
||||
mem[3536] = 11719
|
||||
mem[40939] = 550805420
|
||||
mem[34751] = 538
|
||||
mem[51410] = 19066
|
||||
mem[11996] = 29329688
|
||||
mask = 01010XX00001111011X00110010X0010X111
|
||||
mem[64654] = 1185760
|
||||
mem[56361] = 13297936
|
||||
mem[102] = 3966
|
||||
mem[18335] = 470391
|
||||
mem[1905] = 25790
|
||||
mask = X10X000110XX1110X11001000X00101001X0
|
||||
mem[55089] = 17943368
|
||||
mem[40456] = 501700825
|
||||
mem[47927] = 513748
|
||||
mem[13838] = 385
|
|
@ -1,2 +1,4 @@
|
|||
939
|
||||
7,13,x,x,59,x,31,19
|
||||
mask = 000000000000000000000000000000X1001X
|
||||
mem[42] = 100
|
||||
mask = 00000000000000000000000000000000X0XX
|
||||
mem[26] = 1
|
||||
|
|
|
@ -0,0 +1,102 @@
|
|||
use itertools::Itertools;
|
||||
use std::collections::HashMap;
|
||||
use std::error::Error;
|
||||
use std::fs::File;
|
||||
use std::io::{self, BufRead};
|
||||
use std::vec::Vec;
|
||||
|
||||
#[macro_use]
|
||||
extern crate lazy_static;
|
||||
extern crate regex;
|
||||
|
||||
use regex::Regex;
|
||||
|
||||
enum Command {
|
||||
Mem(u64, u64),
|
||||
Mask(u64, u64),
|
||||
}
|
||||
|
||||
impl Command {
|
||||
fn from_string(line: &str) -> Command {
|
||||
lazy_static! {
|
||||
static ref MASK_RE: Regex = Regex::new(r"^mask = ([X01]{36})$").unwrap();
|
||||
static ref MEM_RE: Regex = Regex::new(r"^mem\[([0-9]*)\] = ([0-9]*)$").unwrap();
|
||||
}
|
||||
|
||||
if let Some(cap) = MEM_RE.captures_iter(line).nth(0) {
|
||||
let addr: u64 = cap[1].parse().unwrap();
|
||||
let value: u64 = cap[2].parse().unwrap();
|
||||
Command::Mem(addr, value)
|
||||
} else if let Some(cap) = MASK_RE.captures_iter(line).nth(0) {
|
||||
let mask = cap[1].to_string();
|
||||
|
||||
let mut set_mask: u64 = 0;
|
||||
let mut unset_mask: u64 = 0;
|
||||
let mut bit: u64 = 1 << 35;
|
||||
|
||||
for c in mask.chars() {
|
||||
match c {
|
||||
'0' => unset_mask |= bit,
|
||||
'1' => set_mask |= bit,
|
||||
'X' => {}
|
||||
_ => panic!("Unsupported mask char: {}", c),
|
||||
}
|
||||
bit = bit >> 1;
|
||||
}
|
||||
|
||||
Command::Mask(set_mask, unset_mask)
|
||||
} else {
|
||||
panic!("Unable to parse line: {}", line);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
struct VM {
|
||||
set_mask: u64,
|
||||
unset_mask: u64,
|
||||
memory: HashMap<u64, u64>,
|
||||
}
|
||||
|
||||
impl VM {
|
||||
fn new() -> VM {
|
||||
VM {
|
||||
set_mask: 0,
|
||||
unset_mask: 0,
|
||||
memory: HashMap::new(),
|
||||
}
|
||||
}
|
||||
|
||||
fn run(&mut self, programm: &Vec<Command>) {
|
||||
for inst in programm {
|
||||
match inst {
|
||||
Command::Mask(set, unset) => {
|
||||
self.set_mask = *set;
|
||||
self.unset_mask = *unset;
|
||||
}
|
||||
Command::Mem(addr, value) => {
|
||||
let set_value = value | self.set_mask;
|
||||
let unset_value = set_value & !self.unset_mask;
|
||||
self.memory.insert(*addr, unset_value);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn compute_sum(&self) -> u64 {
|
||||
self.memory.values().fold(0, |acc, x| acc + x)
|
||||
}
|
||||
}
|
||||
|
||||
fn main() -> Result<(), Box<dyn Error>> {
|
||||
let file = File::open("inputs/day14.txt")?;
|
||||
let lines = io::BufReader::new(file).lines().map(|l| l.unwrap());
|
||||
|
||||
let programm: Vec<Command> = lines.map(|l| Command::from_string(&l)).collect();
|
||||
|
||||
let mut vm = VM::new();
|
||||
vm.run(&programm);
|
||||
|
||||
println!("Answer: {}", vm.compute_sum());
|
||||
|
||||
Ok(())
|
||||
}
|
|
@ -0,0 +1,121 @@
|
|||
use itertools::Itertools;
|
||||
use std::collections::HashMap;
|
||||
use std::error::Error;
|
||||
use std::fs::File;
|
||||
use std::io::{self, BufRead};
|
||||
use std::vec::Vec;
|
||||
|
||||
#[macro_use]
|
||||
extern crate lazy_static;
|
||||
extern crate regex;
|
||||
|
||||
use regex::Regex;
|
||||
|
||||
enum Command {
|
||||
Mem(u64, u64),
|
||||
Mask(String),
|
||||
}
|
||||
|
||||
impl Command {
|
||||
fn from_string(line: &str) -> Command {
|
||||
lazy_static! {
|
||||
static ref MASK_RE: Regex = Regex::new(r"^mask = ([X01]{36})$").unwrap();
|
||||
static ref MEM_RE: Regex = Regex::new(r"^mem\[([0-9]*)\] = ([0-9]*)$").unwrap();
|
||||
}
|
||||
|
||||
if let Some(cap) = MEM_RE.captures_iter(line).nth(0) {
|
||||
let addr: u64 = cap[1].parse().unwrap();
|
||||
let value: u64 = cap[2].parse().unwrap();
|
||||
Command::Mem(addr, value)
|
||||
} else if let Some(cap) = MASK_RE.captures_iter(line).nth(0) {
|
||||
let mask = cap[1].to_string();
|
||||
Command::Mask(mask)
|
||||
} else {
|
||||
panic!("Unable to parse line: {}", line);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
struct VM {
|
||||
mask: String,
|
||||
memory: HashMap<u64, u64>,
|
||||
}
|
||||
|
||||
impl VM {
|
||||
fn new() -> VM {
|
||||
VM {
|
||||
mask: "000000000000000000000000000000000000".to_string(),
|
||||
memory: HashMap::new(),
|
||||
}
|
||||
}
|
||||
|
||||
fn compute_addresses(&self, addr: u64) -> Vec<u64> {
|
||||
fn enumerate_addresses(mask: String, bit: usize, addr: u64) -> Vec<u64> {
|
||||
if bit == 0 {
|
||||
match mask.chars().nth(0).unwrap() {
|
||||
'0' => {
|
||||
return vec![addr & 1];
|
||||
}
|
||||
'1' => {
|
||||
return vec![1];
|
||||
}
|
||||
'X' => {
|
||||
return vec![0, 1];
|
||||
}
|
||||
c => panic!("Unsupported mask bit: {}", c),
|
||||
};
|
||||
} else {
|
||||
let lower_bits = enumerate_addresses(mask.clone(), bit - 1, addr);
|
||||
let addr_bit = addr & (1 << bit as u64);
|
||||
match mask.chars().nth(bit).unwrap() {
|
||||
'0' => return lower_bits.iter().map(|b| b | addr_bit).collect(),
|
||||
'1' => return lower_bits.iter().map(|b| b | (1 << bit as u64)).collect(),
|
||||
'X' => {
|
||||
let mut bit_zero = lower_bits.clone();
|
||||
let mut bit_one: Vec<u64> =
|
||||
lower_bits.iter().map(|b| b | (1 << bit as u64)).collect();
|
||||
bit_zero.append(&mut bit_one);
|
||||
return bit_zero;
|
||||
}
|
||||
c => panic!("Unsupported mask bit: {}", c),
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
enumerate_addresses(self.mask.chars().rev().collect(), 35, addr)
|
||||
}
|
||||
|
||||
fn run(&mut self, programm: &Vec<Command>) {
|
||||
for inst in programm {
|
||||
match inst {
|
||||
Command::Mask(mask) => {
|
||||
self.mask = mask.clone();
|
||||
}
|
||||
Command::Mem(addr, value) => {
|
||||
let addrs = self.compute_addresses(*addr);
|
||||
for address in addrs {
|
||||
self.memory.insert(address, *value);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn compute_sum(&self) -> u64 {
|
||||
self.memory.values().fold(0, |acc, x| acc + x)
|
||||
}
|
||||
}
|
||||
|
||||
fn main() -> Result<(), Box<dyn Error>> {
|
||||
let file = File::open("inputs/day14.txt")?;
|
||||
let lines = io::BufReader::new(file).lines().map(|l| l.unwrap());
|
||||
|
||||
let programm: Vec<Command> = lines.map(|l| Command::from_string(&l)).collect();
|
||||
|
||||
let mut vm = VM::new();
|
||||
vm.run(&programm);
|
||||
|
||||
println!("Answer: {}", vm.compute_sum());
|
||||
|
||||
Ok(())
|
||||
}
|
Loading…
Reference in New Issue