diff options
| -rw-r--r-- | input14 | 560 | ||||
| -rw-r--r-- | src/main.rs | 137 |
2 files changed, 694 insertions, 3 deletions
@@ -0,0 +1,560 @@ +mask = 0X11XX1X010X01101000X01X011101100000 +mem[4634] = 907 +mem[54949] = 444591415 +mem[5445] = 1446 +mem[2822] = 702866 +mask = 000X0001010X01111X110X1X011X01110100 +mem[37380] = 15013 +mem[10527] = 65 +mem[37825] = 1485263 +mem[18685] = 3789546 +mem[49810] = 123513 +mask = 0110XX110101X1X01001110000111000010X +mem[10040] = 696657 +mem[20116] = 29074481 +mask = 0011001101011011100X010XX1X11XX1X100 +mem[27427] = 458 +mem[495] = 36485381 +mem[29064] = 32744 +mask = X11X1011001011X111X000X11X0101101100 +mem[53658] = 7312 +mem[22728] = 86908 +mem[12525] = 4502 +mem[37291] = 24359 +mask = 00111X1X10010X1100110X110XX111XX1100 +mem[55871] = 589570 +mem[15038] = 5937461 +mem[54949] = 657120 +mask = 0X1X1X11X101011X10XX0011001X0100000X +mem[11248] = 9235 +mem[6448] = 416920615 +mem[13182] = 93777963 +mem[59380] = 122713 +mem[5755] = 2013351 +mask = 01110X0100X111X110X0X010000XX001X0X0 +mem[37825] = 49012808 +mem[44072] = 132971 +mem[4640] = 11215 +mem[7060] = 497 +mem[14084] = 254725 +mem[20345] = 17492548 +mask = X0X1X0XX01010111101X11000110X111X0X0 +mem[7322] = 396422 +mem[12859] = 366194 +mem[26614] = 238879122 +mem[41413] = 5075832 +mem[29380] = 32273697 +mem[31250] = 241679 +mem[49264] = 9276463 +mask = XX111X1101010111100010100111011X000X +mem[31234] = 6327319 +mem[20442] = 7737 +mem[53573] = 29127 +mem[11418] = 5594 +mask = 01X101100X11X11XX10X00110110011X0100 +mem[29653] = 1031390200 +mem[26287] = 2055712 +mem[17079] = 16375 +mem[5855] = 4357 +mem[12362] = 1636 +mem[51925] = 1034818 +mem[32514] = 718 +mask = 01110X110XXX11111XX0010XX01101X11110 +mem[43421] = 1904 +mem[31710] = 79198345 +mem[51641] = 792 +mem[25879] = 296966 +mem[61247] = 856 +mem[28520] = 15211687 +mem[52476] = 48999 +mask = 1011XX01X10101111010X1X1011000010010 +mem[34317] = 112380 +mem[12948] = 4642664 +mem[60624] = 2058959 +mem[41589] = 131585499 +mem[37155] = 63701 +mem[58140] = 14596048 +mem[53361] = 8169 +mask = 0X101011110101X010100011001XX111011X +mem[2516] = 159804448 +mem[56019] = 4708 +mem[2822] = 193009 +mask = 0XX01011110101111X010X110010X0011X10 +mem[58540] = 219677 +mem[27179] = 29070 +mem[10896] = 2385 +mem[27360] = 193579 +mask = X0101111010101101001X0111100X00X000X +mem[12890] = 74431 +mem[57760] = 12122 +mem[7973] = 2850 +mem[50560] = 4870 +mem[41841] = 2335 +mask = X0110101XX011X111000011X1X0100001000 +mem[54855] = 28859 +mem[63909] = 572 +mem[10112] = 27228153 +mem[18348] = 55896 +mem[12188] = 1312 +mem[46913] = 4356 +mask = 0111XX1X01001111X110100101X10101XX01 +mem[44220] = 4035 +mem[49510] = 27112 +mem[26737] = 5127 +mem[58822] = 13458521 +mem[32583] = 9480407 +mem[19323] = 1262579 +mask = 0010X111110XX1X110X1X01010111100XX10 +mem[24061] = 11583225 +mem[38455] = 74030 +mem[24892] = 3177209 +mask = 0011000101011111100X011X01100X0010X0 +mem[13350] = 10618 +mem[912] = 79652 +mem[29354] = 4886 +mem[22547] = 544 +mem[227] = 4915806 +mem[36816] = 3549982 +mask = X111X01101X1X1111X000100X011X1X11010 +mem[44234] = 3789 +mem[63704] = 1702 +mem[22207] = 6002803 +mem[22876] = 574 +mem[53719] = 392761 +mask = 00111011X001X01X0011100X100010010101 +mem[60930] = 750211944 +mem[10639] = 41930 +mem[32869] = 938382 +mem[18899] = 6326298 +mask = XXX1001001X10X1X1X1X1000001011111X10 +mem[30328] = 803377 +mem[50352] = 129416820 +mem[28691] = 797 +mem[29517] = 5166548 +mem[29912] = 21829 +mem[26614] = 4782307 +mask = X11101X100111111XXX000X1XX00100X0110 +mem[59045] = 42934816 +mem[24442] = 180882905 +mem[47760] = 16245 +mask = XXX011110101011110X1XX100X0001010X00 +mem[48181] = 22395453 +mem[60054] = 1473575 +mem[44575] = 437231650 +mem[6675] = 422141 +mem[4144] = 73734 +mem[65235] = 603 +mem[10866] = 16037624 +mask = 01101XXX11001110101001XX00X000111010 +mem[8467] = 6633 +mem[49264] = 35317 +mask = 0X11111101010X1111000111011X00X00X1X +mem[38989] = 126216989 +mem[32976] = 51878853 +mem[37911] = 663307 +mem[43272] = 116913133 +mem[13930] = 11309 +mem[59351] = 2263850 +mask = 1X11XX01X101X0X11000111X011011X0X000 +mem[42972] = 65537685 +mem[23265] = 341611 +mem[2913] = 1002629103 +mem[38604] = 117 +mem[10597] = 38149173 +mask = 011X11010XXX111000011000X011101X1000 +mem[24676] = 31760372 +mem[44731] = 148209 +mem[41586] = 2332900 +mem[35644] = 281 +mem[1436] = 33437 +mem[31250] = 886682 +mem[6334] = 3026475 +mask = 00111111010001X0X00000110X10101X0100 +mem[27179] = 2158488 +mem[30053] = 134079752 +mem[61619] = 1014 +mem[20069] = 9724102 +mask = 10XX101X010X011110X00X1100XX0111110X +mem[34320] = 877592754 +mem[14396] = 7981169 +mask = 011X0011010X0111110000011X1XX1101010 +mem[61038] = 81512 +mem[35618] = 3501 +mem[22941] = 6518 +mask = X111001X0111111110000110110001X0X010 +mem[34682] = 97 +mem[56366] = 263496554 +mem[62961] = 49991623 +mask = 001X11111001X1X110110111000XX0000X11 +mem[6341] = 1421 +mem[24611] = 120993920 +mask = 101X1111110X0X11110101X01X000010010X +mem[20485] = 5715808 +mem[22244] = 15692138 +mask = 001110110XX10X11X0110XX0X00011X10001 +mem[14849] = 284 +mem[57509] = 30506693 +mem[2158] = 17503 +mem[56184] = 130050 +mem[60746] = 507 +mask = X1101X1111000110X0100X0X111XX11X0010 +mem[60171] = 348215 +mem[7283] = 2904 +mem[9298] = 1494 +mem[6121] = 65038864 +mem[50665] = 2758625 +mask = 00101X1111010111100100X1101X1XXX0XX0 +mem[12368] = 13254764 +mem[17006] = 4886 +mem[50125] = 539 +mem[61065] = 2071 +mem[42147] = 5033 +mask = 01010110010100X1100X0000X11100X0001X +mem[9115] = 52912116 +mem[34552] = 988 +mem[53819] = 2173617 +mem[9555] = 19134613 +mem[63704] = 53775 +mask = 01001011110X011X1X01001X0XX000101X1X +mem[5222] = 329352 +mem[6675] = 7561112 +mask = 0X111011X1110011001100X0X10111101X00 +mem[2679] = 263 +mem[33107] = 12294 +mem[26533] = 26 +mem[6989] = 16021183 +mem[9526] = 14020 +mask = 100100100X110X1X1X1XX1110010111XX01X +mem[45991] = 659 +mem[54561] = 192359313 +mem[16625] = 1012109 +mem[21769] = 14483 +mem[41047] = 3843578 +mask = 00011X0101010XX11X10011100000101000X +mem[63063] = 88772 +mem[28691] = 1840439 +mem[49095] = 13533 +mem[38569] = 3963850 +mem[37631] = 17229630 +mask = 01101X111X01X1101X110001X01001010010 +mem[9975] = 106086 +mem[48788] = 1764936 +mem[42959] = 5838 +mem[11250] = 239618 +mem[47113] = 544 +mem[2822] = 6581077 +mem[12525] = 3265 +mask = 01111111X1010111X0001X100110010X0X01 +mem[27284] = 6821 +mem[21759] = 15665251 +mem[30823] = 120323 +mem[19505] = 14353279 +mem[39782] = 307874155 +mem[24061] = 15198 +mask = 01111X110101X11X10111X10X1001X1X000X +mem[37663] = 5911411 +mem[29380] = 85209498 +mem[23647] = 243 +mem[45231] = 35830 +mask = 01110011X100111111100110X10011X01X11 +mem[20886] = 4537 +mem[12297] = 1629 +mem[60297] = 43447 +mem[46364] = 814453320 +mask = 0XX01111X10XXX10X00100000011011101X0 +mem[10128] = 9549 +mem[61903] = 1996 +mem[27405] = 1587 +mem[2679] = 45513040 +mask = 011X10111101011110110X0X00011000X001 +mem[49219] = 43638 +mem[972] = 51647 +mem[24865] = 850379117 +mem[35684] = 5096007 +mask = X1111X110010X1111100100X0XX0011XX01X +mem[18907] = 633 +mem[54569] = 239677359 +mem[56790] = 931635 +mem[32827] = 181441 +mem[46211] = 2592 +mem[38622] = 99 +mask = 101X00X1010101111X11100000X10111X111 +mem[22205] = 116543101 +mem[35762] = 82569329 +mem[9713] = 897774801 +mem[59137] = 465011 +mask = 01X101100101XXX11X0X00XX111000X10011 +mem[49510] = 4013 +mem[37268] = 11930096 +mem[49716] = 2313 +mem[31868] = 57339 +mem[39897] = 1688837 +mask = X01X10X11101011X1X0XX010011X0101X001 +mem[7716] = 1938 +mem[43453] = 1599594 +mem[13162] = 8174414 +mem[6989] = 1104673 +mem[396] = 416 +mem[30813] = 90633769 +mask = 01X011X10001X1100001100001X11010000X +mem[52346] = 30663 +mem[33601] = 69756 +mem[37268] = 3792 +mem[53782] = 81029429 +mem[9975] = 3917934 +mask = 0011111101X10X10X0X00011X110X0X1100X +mem[11088] = 839502 +mem[11443] = 152590965 +mem[12362] = 437 +mem[22876] = 59905 +mask = 0X11001100101111X1101X0000100001100X +mem[881] = 2540 +mem[41431] = 82050989 +mem[44733] = 184264 +mask = 0111X111000X111110000X01X011X1000000 +mem[29534] = 60069 +mem[45094] = 173463179 +mem[38646] = 556512138 +mem[50352] = 2418 +mask = X01X111101X10010100X0010011101001000 +mem[65388] = 58820 +mem[47582] = 209297 +mem[7544] = 906 +mem[12246] = 1008999 +mem[9647] = 5611 +mask = 0XX1101XX001X0X100110110001111X0101X +mem[27514] = 444 +mem[14660] = 62026457 +mask = 011X001101X111111100010X00X10X000100 +mem[30494] = 2661 +mem[33720] = 823 +mem[46563] = 924 +mem[56963] = 664131835 +mem[5111] = 19659 +mask = 1011X0010101101XX000X0000X0110111000 +mem[34629] = 98971417 +mem[40782] = 203196 +mem[28134] = 395046 +mem[26546] = 8144219 +mem[48190] = 99388222 +mask = 000110X0XX01X11110X1X10001000011X001 +mem[46867] = 30971 +mem[16411] = 88270 +mem[50915] = 535967 +mem[21513] = 348047 +mem[63704] = 10230355 +mem[63048] = 17068278 +mem[48970] = 5228 +mask = 0010111X11X01111100X10000XX01X000000 +mem[20345] = 175241457 +mem[27179] = 1296 +mem[27126] = 1827043 +mask = X0101X11110X0110XXX100111010X111XX00 +mem[37268] = 51456603 +mem[10417] = 8798516 +mem[4485] = 95948398 +mem[8642] = 779931 +mask = 01X1001XX11111X100000100100000100111 +mem[11794] = 415902 +mem[546] = 2169 +mem[32486] = 13281164 +mask = 0X111X1101110X100X000X1001110101010X +mem[22108] = 111982252 +mem[43748] = 78425 +mem[34629] = 306 +mem[47753] = 131353739 +mask = 011011X1XX011110X00100X0X1111XX1010X +mem[11269] = 155703 +mem[35544] = 32531224 +mem[52896] = 1233236 +mem[4143] = 737957 +mem[40320] = 247 +mem[6351] = 27827 +mem[50497] = 271 +mask = 01101111110XX11010100000X0000X11X010 +mem[58794] = 123769809 +mem[62949] = 31582 +mem[13930] = 1992650 +mem[49248] = 2358 +mask = 1111X0110X1X0111110X1X00X1000X111X10 +mem[21889] = 30250288 +mem[9042] = 107142 +mem[23279] = 461035 +mem[29517] = 1123 +mem[23972] = 67432 +mem[33809] = 638702339 +mem[15521] = 2476 +mask = 0X11011101X1X1X110111110X01101X01100 +mem[32705] = 118666 +mem[55232] = 1773866 +mem[43500] = 21442 +mem[35684] = 1555 +mem[25276] = 954 +mem[40811] = 9208696 +mem[26437] = 32497 +mask = 0111X11100101111110X1X00X00110X111X0 +mem[18391] = 767342723 +mem[64055] = 38122 +mem[22094] = 149640311 +mem[25472] = 645102 +mem[20761] = 2750 +mem[25339] = 25819361 +mask = 011XX1110101011110X101101X11101011X0 +mem[51881] = 3666692 +mem[52701] = 6590 +mem[20991] = 3369 +mem[46342] = 4894 +mask = 0X101X111X01011X101X00110001X0100XX0 +mem[11252] = 1994 +mem[20741] = 9297955 +mask = XX110XX10X011X111000X01001111XX11000 +mem[46854] = 398972 +mem[52634] = 51020 +mem[23052] = 302017 +mem[20442] = 1413 +mem[18068] = 422217535 +mem[26346] = 16548426 +mask = 1X1X00010X011X11100010011X110X00110X +mem[28595] = 1419614 +mem[32724] = 69630 +mem[10772] = 965 +mem[12362] = 1856573 +mask = 001XX1X1110101111001001110X10X110X11 +mem[2679] = 597 +mem[14201] = 3287586 +mem[48499] = 31534 +mem[40434] = 30832 +mem[60646] = 4788156 +mask = 001X1111100101X1X01100X110100010X010 +mem[9846] = 44720410 +mem[11252] = 358945775 +mem[61247] = 6242 +mem[11248] = 2180 +mem[43748] = 59259664 +mask = X01011111100011X110XX01010X101110000 +mem[8508] = 450888237 +mem[15242] = 941271822 +mem[53719] = 435898962 +mask = X0110X01000110X1100X010001110XX1X01X +mem[24163] = 19965416 +mem[33463] = 142990 +mem[27298] = 61516 +mem[56366] = 4672568 +mask = 00111X110111011000X00X1101X1X10X1100 +mem[56172] = 12 +mem[17800] = 2992383 +mem[25002] = 89527 +mem[12244] = 809 +mem[49958] = 392741 +mem[28940] = 884600 +mask = X11XX001XX11110110001011X00100010000 +mem[8273] = 19574791 +mem[33828] = 2088 +mem[45777] = 28558 +mem[7847] = 31760 +mem[63891] = 868564 +mask = 01111111XXX101111001X101101X1X0X0111 +mem[50761] = 407 +mem[10181] = 675468 +mem[30060] = 201031 +mem[9713] = 7521152 +mem[25778] = 108639 +mem[15272] = 3161 +mask = 01X10XX00101001111001XXXXX1110000011 +mem[22094] = 636723 +mem[39113] = 60654 +mem[61381] = 946758957 +mem[4474] = 1035138754 +mem[16664] = 15926 +mem[60370] = 36434 +mask = 01X1011X010101111XX0010X11000X100100 +mem[34381] = 1821811 +mem[10084] = 618 +mem[38455] = 34253 +mem[42651] = 2883 +mem[2679] = 515927386 +mask = 0111X111010101111X0XX111011XX11X0100 +mem[59504] = 73026 +mem[61065] = 1003897 +mem[21822] = 19172 +mem[18899] = 546 +mem[32907] = 1038115 +mem[23647] = 3011 +mem[59088] = 878373849 +mask = 10101111X101011X1XX10111X00X001X0X0X +mem[40320] = 11198 +mem[16676] = 13399 +mem[5445] = 12173642 +mem[35134] = 1037649143 +mask = 00X01111010101101001X011X011XX110000 +mem[61750] = 1194 +mem[7040] = 3663944 +mem[40769] = 6278226 +mask = 0111XX1X010011111X001100111111101100 +mem[22244] = 22188053 +mem[47799] = 3685 +mem[25708] = 75747 +mem[64831] = 4756375 +mem[34046] = 164285 +mem[50578] = 11937455 +mask = X1110X1101011X111XXX1010001X01X0X101 +mem[62500] = 4671325 +mem[58692] = 795322324 +mem[16015] = 768 +mask = X110111111010X101011000100100X10XX00 +mem[32976] = 31923 +mem[8466] = 239391 +mem[6221] = 16243452 +mem[16595] = 445893 +mask = 0X101X11010XX1101001000101100111X01X +mem[13683] = 9962888 +mem[972] = 402033884 +mask = 011101110X1X11X11100010X101101010100 +mem[13627] = 7499 +mem[63925] = 5611 +mem[31710] = 8173 +mem[41589] = 15062 +mask = 011101X1001X1111X0000X001001001X1X00 +mem[38904] = 59776 +mem[40992] = 61129 +mem[21672] = 2892903 +mem[64012] = 6840045 +mem[27298] = 28347317 +mem[44711] = 11192 +mem[42288] = 244911 +mask = 001000110X11111110X0010111X001X0X111 +mem[58822] = 33289 +mem[56527] = 193878164 +mem[48593] = 15520289 +mem[56511] = 7485107 +mask = 1011X0100101X11X10111110001X11101X01 +mem[54625] = 613806 +mem[1660] = 28678912 +mem[42420] = 345449 +mask = 0X1XX000010101111X1100XX0X10X101000X +mem[16414] = 18061 +mem[62500] = 9781513 +mem[27160] = 86 +mem[30053] = 62630281 +mask = 0111011X0XX1X1111X010110X1000X10X1X0 +mem[15140] = 6421 +mem[44559] = 14824389 +mem[51021] = 989171 +mem[7013] = 96616 +mask = 0XX010111101X11110010010X00000111010 +mem[26533] = 18441 +mem[11274] = 42077 +mem[7604] = 71694078 +mem[12343] = 80225 +mem[50320] = 152 +mem[44463] = 994 +mem[35173] = 200567 +mask = 0111011X010011X1X100010XXX01X0111100 +mem[14911] = 698 +mem[16834] = 1246858 +mem[17006] = 244 +mem[48839] = 1074 +mask = 0X1X0011011111X1X000X11X11000X01XX11 +mem[12368] = 3510868 +mem[33320] = 53294034 +mem[48579] = 15039 diff --git a/src/main.rs b/src/main.rs index d32dedc..f0f0336 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1042,6 +1042,7 @@ fn find_next_bus(time: i64, busses: &[i64]) -> i64 { } /* taken from https://rosettacode.org/wiki/Chinese_remainder_theorem#Rust */ +#[allow(clippy::many_single_char_names)] fn chinese_remainder(residues: &[i64], modulii: &[i64]) -> Option<i64> { fn egcd(a: i64, b: i64) -> (i64, i64, i64) { if a == 0 { @@ -1076,7 +1077,7 @@ fn chinese_remainder(residues: &[i64], modulii: &[i64]) -> Option<i64> { fn find_earliest_time(input: &str) -> i64 { let mut residues = Vec::new(); let mut modulii = Vec::new(); - for (residue, modulus) in input.split(",").enumerate() { + for (residue, modulus) in input.split(',').enumerate() { if modulus == "x" { continue; } @@ -1092,7 +1093,7 @@ fn find_earliest_time(input: &str) -> i64 { fn day13() { let input = read_lines("input13"); let time = input[0].parse::<i64>().unwrap(); - let busses : Vec<i64> = input[1].split(",") + let busses : Vec<i64> = input[1].split(',') .filter(|b| *b != "x") .map(|b| b.parse::<i64>().unwrap()) .collect(); @@ -1102,8 +1103,119 @@ fn day13() { println!("13b: {}", find_earliest_time(&input[1])); } +enum InitializationInstruction { + MEM(u64, u64), + MASK(String), +} + +struct DockingProgram { + instructions: Vec<InitializationInstruction>, +} + +impl DockingProgram { + fn new(input: &[String]) -> DockingProgram { + let mut instructions = Vec::new(); + + for line in input { + let instruction : Vec<&str> = line.split(" = ").collect(); + let cmd = instruction[0]; + let value = instruction[1]; + + let init_instr = if cmd == "mask" { + InitializationInstruction::MASK(String::from(value)) + } else { + let end = cmd.find(']').unwrap(); + let addr = &cmd[4..end].parse::<u64>().unwrap(); + InitializationInstruction::MEM(*addr, value.parse::<u64>().unwrap()) + }; + instructions.push(init_instr); + } + + DockingProgram { instructions } + } + + fn mask_value(&self, mask: &str, value: u64) -> u64 { + let mask0 = u64::from_str_radix(&mask.replace("X", "1"), 2).unwrap(); + let mask1 = u64::from_str_radix(&mask.replace("X", "0"), 2).unwrap(); + + (value & mask0) | mask1 + } + + fn run(&self) -> u64 { + let mut mask = String::new(); + let mut memory = HashMap::new(); + + for instruction in &self.instructions { + match instruction { + InitializationInstruction::MASK(new_mask) => { + mask = new_mask.clone(); + }, + InitializationInstruction::MEM(addr, val) => { + memory.insert(addr, self.mask_value(&mask, *val)); + }, + } + } + memory.values().sum() + } + + fn collect_addresses(&self, mask: &str, addr: u64) -> Vec<u64> { + let mut addresses = Vec::new(); + addresses.push(addr); + + let positions : Vec<usize> = mask.chars() + .enumerate() + .filter(|(_,x)| *x == 'X') + .map(|(idx,_)| mask.len() - 1 - idx) + .collect(); + for pos in positions { + let mut new_addresses = Vec::new(); + for addr in addresses { + let set_bit1 = 1 << pos; + new_addresses.push(addr | set_bit1); + + let set_bit0 = !(1 << pos); + new_addresses.push(addr & set_bit0); + } + addresses = new_addresses; + } + + addresses + } + + fn run_v2(&self) -> u64 { + let mut mask = String::new(); + let mut memory = HashMap::new(); + + for instruction in &self.instructions { + match instruction { + InitializationInstruction::MASK(new_mask) => { + mask = new_mask.clone(); + }, + InitializationInstruction::MEM(addr, val) => { + /* overwrite addr with 1s from mask */ + let mask_step1 = u64::from_str_radix(&mask.replace("X", "0"), 2).unwrap(); + let addr = addr | mask_step1; + + for new_addr in self.collect_addresses(&mask, addr) { + memory.insert(new_addr, *val); + } + }, + } + } + memory.values().sum() + } +} + +fn day14() { + let input = read_lines("input14"); + let program = DockingProgram::new(&input); + + println!("14a: {}", program.run()); + println!("14b: {}", program.run_v2()); +} + fn main() { - day13(); + day14(); } #[cfg(test)] @@ -1361,4 +1473,23 @@ mod tests { assert_eq!(find_earliest_time("67,7,x,59,61"), 1261476); assert_eq!(find_earliest_time("1789,37,47,1889"), 1202161486); } + + #[test] + fn test_day14() { + let input = "mask = XXXXXXXXXXXXXXXXXXXXXXXXXXXXX1XXXX0X\n\ + mem[8] = 11\n\ + mem[7] = 101\n\ + mem[8] = 0\n"; + let input = read_lines_str(input); + let program = DockingProgram::new(&input); + assert_eq!(program.run(), 165); + + let input = "mask = 000000000000000000000000000000X1001X\n\ + mem[42] = 100\n\ + mask = 00000000000000000000000000000000X0XX\n\ + mem[26] = 1\n"; + let input = read_lines_str(input); + let program = DockingProgram::new(&input); + assert_eq!(program.run_v2(), 208); + } } |
