commit 2de218f9c22cf56f6c987532c65b6ed958b348e7 Author: jonathan santis Date: Tue Dec 24 13:22:11 2024 +0100 init diff --git a/$ b/$ new file mode 100644 index 0000000..6e6100c --- /dev/null +++ b/$ @@ -0,0 +1,152 @@ +const std = @import("std"); +const print = std.debug.print; + +pub fn main() !void +{ + const allocator = std.heap.page_allocator; + var rules = std.ArrayList([]u8).init(allocator); + var data = std.ArrayList([]u8).init(allocator); + + print("typeof arraylist: {}",.{@TypeOf(rules)}); + try readFile(allocator,"day5.txt",&rules,&data); + + print("rules:\n",.{}); + for(rules.items) | rule | + { + print("{s}\n",.{rule}); + } + print("data:\n",.{}); + for(data.items) | dat | + { + print("{s}\n",.{dat}); + } + + const values = try parseIntsToSlice(allocator,data.items[2]); + print("ints: {d}\n",.{values.*}); + + _ = try checkOrder(allocator,data.items[1],&rules); + +} + +fn readFile(allocator : std.mem.Allocator, filename : [] const u8, rules : *std.ArrayList([]u8), data : *std.ArrayList([]u8)) !void +{ + const file = try std.fs.cwd().openFile(filename,.{}); + var buf_reader = std.io.bufferedReader(file.reader()); + var reader = buf_reader.reader(); + + var buf: [1024]u8 = undefined; + + while(try reader.readUntilDelimiterOrEof(&buf,'\n') )| line | + { + + if(std.mem.indexOf(u8,line,"|")) | _ | + { + print("this is a rule: ",.{}); + try rules.append(try std.fmt.allocPrint(allocator,"{s}",.{line})); + } + else + { + try data.append( try std.fmt.allocPrint(allocator,"{s}",.{line})); + print("this is a data set: ",.{}); + } + + print("{s}\n",.{line}); + } +} + +fn parseIntsToSlice(allocator : std.mem.Allocator, data : []u8) !*[]u64 +{ + var values : []u64 = try allocator.alloc(u64,0); + var start_pos : usize = 0; + + //first must be different as dataset does not beginn with a , + + if(std.mem.indexOfAnyPos(u8,data,0,",")) | index | + { + values = try allocator.realloc(values,values.len + 1); + const cur_index = values.len - 1; + + //parses the string from beginning to , to an integer + values[cur_index] = try std.fmt.parseInt(u64,data[0..index],10); + } + + while(std.mem.indexOfAnyPos(u8,data,start_pos,",")) | index | + { + if(start_pos >= data.len - 1) break; + + if(std.mem.indexOfAnyPos(u8,data,index+1,",")) | sub_index | + { + values = try allocator.realloc(values,values.len + 1); + const cur_index = values.len - 1; + + //parses the string from , to , to an integer + values[cur_index] = try std.fmt.parseInt(u64,data[index+1..sub_index],10); + start_pos = sub_index; + } + else + { + values = try allocator.realloc(values,values.len + 1); + const cur_index = values.len - 1; + values[cur_index] = try std.fmt.parseInt(u64,data[index+1..data.len],10); + break; + } + } + return &values; +} +fn parseRule(allocator : std.mem.Allocator,rule : []u8) ![2]u64 +{ + _ = allocator; + + if(std.mem.indexOf(u8,rule,"|")) | index | + { + const int1 = try std.fmt.parseInt(u64,rule[0..index],10); + const int2 = try std.fmt.parseInt(u64,rule[index+1..],10); + return .{int1,int2}; + } + return.{0,0}; +} + +fn checkOrder(allocator : std.mem.Allocator,data : []u8,rules : *std.ArrayList([]u8)) !usize +{ + const nbrs = try parseIntsToSlice(allocator,data); + //const nbrs2 = try parseIntsToSlice(allocator,data); + var pass_test : bool = false; + var fail_index : usize = 0; + + for(nbrs.*,0..) | nbr, index_nbr | + { + ruleFor : for (rules.items,0..) | rule, index_rule | + { + print("rule: {s}\n",.{rule}); + const rule_i = try parseRule(allocator,rule); + if(nbr == rule_i[0]) + { + print("apply rule: {d}\n",.{rule_i}); + print("nbrs2:{d}\n",.{nbrs}); + for(nbrs.*,0..) | nbr2, index_nbr2 | + { + if(nbr2 == rule_i[1]) + { + if(index_nbr2 > index_nbr) + { + pass_test = true; + break; + } + else + { + pass_test = false; + fail_index = index_rule; + break :ruleFor; + } + } + } + //else + //{ + // print("number not in rule\n",.{}); + //} + } + } + } + return 0; +} + diff --git a/.zig-cache/h/4ac86f1636451f87a1225b3223dcab6a.txt b/.zig-cache/h/4ac86f1636451f87a1225b3223dcab6a.txt new file mode 100644 index 0000000..ebfe043 --- /dev/null +++ b/.zig-cache/h/4ac86f1636451f87a1225b3223dcab6a.txt @@ -0,0 +1,88 @@ +0 +2867 1190422 1733997620123333617 63866e75c52c838616dae6216e5f8368 0 src/main.zig +7616 273531 1720029513000000000 a112ef71b351e8f79f6f43c583ede25c 1 std/std.zig +23040 273528 1720029513000000000 da66963546b611ee7750a27396b7d1ea 1 std/start.zig +115223 273226 1720029513000000000 864599658ca312005d8d3860dcc5d44e 1 std/debug.zig +2251 1188745 1733745197116666578 c00e007630e21dfc05b9335a4cbed275 0 /home/ccppi/.cache/zig/b/c00e007630e21dfc05b9335a4cbed275/builtin.zig +33165 273075 1720029513000000000 f94156764e93e22ac481419ae3dcd7e2 1 std/builtin.zig +87972 273031 1720029513000000000 2058e9176f2f8c413153da85bdefea9a 1 std/Target.zig +129328 273053 1720029513000000000 aa1c9ead6b093aa4fc744cbaf6cdb147 1 std/Target/x86.zig +73503 273347 1720029513000000000 4f495cdd87469544c122e37211fe3d16 1 std/math.zig +41362 273418 1720029513000000000 222d7cb14bd7ca087b75cbc16cba6dda 1 std/meta.zig +11091 273029 1720029513000000000 3b4e837c9f6b3b4fbb5b3b95148e553c 1 std/SemanticVersion.zig +61526 273240 1720029513000000000 00003d31510dec096134200d0d6ceecc 1 std/elf.zig +12325 273427 1720029513000000000 2229bf6824a9119504139fcdb850890e 1 std/os.zig +207296 273430 1720029513000000000 651fd04e37ca32286baf84da551c7ce0 1 std/os/linux.zig +12494 273453 1720029513000000000 e9933b000fa707703dab8f2fe68b002a 1 std/os/linux/tls.zig +293019 273515 1720029513000000000 3aef046ab18b515bbbbf65ba8531ef93 1 std/posix.zig +35816 273258 1720029513000000000 9ad542fb9d5f647b2fd9aa956a4876f1 1 std/fs.zig +112808 273260 1720029513000000000 736eee48bb9f3802d7054c19abc437df 1 std/fs/Dir.zig +65843 273261 1720029513000000000 2f1e7806f11f80320d184c737b99b781 1 std/fs/File.zig +25700 273305 1720029513000000000 2c3e57ebee88e5b426bac4e5144d55a2 1 std/io.zig +6386 273313 1720029513000000000 dc08abe1e192b06267ecaf725d5174a6 1 std/io/buffered_reader.zig +14434 273307 1720029513000000000 2655b33c088dd930683d9eb843eaceb4 1 std/io/Reader.zig +176912 273415 1720029513000000000 223e2fd0f89a74fd7d5132dbe48f1c2c 1 std/mem.zig +106358 273244 1720029513000000000 9b602efb3cf67bc725c9853d5fe33864 1 std/fmt.zig +8321 273344 1720029513000000000 445ca968f1971dbcfae846f76f46cc2d 1 std/log.zig +13386 273498 1720029513000000000 b23fdad07ce3b3bc638202a13d269a17 1 std/os/wasi.zig +12352 273145 1720029513000000000 85ba4034d104ed83a45a1bb6ea2f588a 1 std/crypto.zig +6224 273221 1720029513000000000 1478fc3a3f5e7178b0ebc595cf60927a 1 std/crypto/tlcsprng.zig +6449 273320 1720029513000000000 3bcfe7862cea857ee79939a098991ad5 1 std/io/fixed_buffer_stream.zig +2697 273309 1720029513000000000 8464fd0bdf5c1f8ba10a286a4fe46f4d 1 std/io/Writer.zig +13626 273416 1720029513000000000 98c52b2fa05c32ad77f1743a5f3383ee 1 std/mem/Allocator.zig +89980 273282 1720029513000000000 52e58e0e5a1dd700c7ba1de70432e45c 1 std/hash_map.zig +5461 273326 1720029513000000000 ed6aac6dd443d6bdac1cf31688d1b444 1 std/io/tty.zig +112489 273228 1720029513000000000 d33cf67bbc2809a1c38591e04f1e3f51 1 std/dwarf.zig +55939 273241 1720029513000000000 9fbbf465379ce46a9365e411debc3ce1 1 std/enums.zig +87217 273067 1720029513000000000 d82200bd8e9f05406e233eef46e48149 1 std/array_list.zig +114248 273066 1720029513000000000 7aa5a3d5d7c75f7861328581549e6a5d 1 std/array_hash_map.zig +38005 273420 1720029513000000000 2df15a06c9368a128b68d617837153ef 1 std/multi_array_list.zig +1730 273268 1720029513000000000 36cb1b0b5e0bb7d10f9b200b0a751743 1 std/hash.zig +19972 273274 1720029513000000000 c36dede4b91e35db37ea45c66dbe6fe9 1 std/hash/crc.zig +3882 273275 1720029513000000000 168f6844905becfc3ec252416dbee69f 1 std/hash/crc/impl.zig +2057 273095 1720029513000000000 a778ec13ef93e0ace847f52f066441fd 1 std/compress.zig +3736 273134 1720029513000000000 a5c9eee5eaf5943e22c8a03fac3f2841 1 std/compress/zlib.zig +23844 273110 1720029513000000000 61343f5304677e260ccaed8ba225c2b1 1 std/compress/flate/inflate.zig +7460 273106 1720029513000000000 1c1d1c1c4e61c64090b7ace80a4c2dab 1 std/compress/flate/container.zig +16625 273102 1720029513000000000 8ba4aa19f03596c0d0eb18045a7331e8 1 std/compress/flate/bit_reader.zig +7434 273098 1720029513000000000 a6347ffd91bdf7b166947d627e9f38c5 1 std/compress/flate/CircularBuffer.zig +3519 273269 1720029513000000000 4e3c7d701979e5945ab9f85fed59a579 1 std/hash/adler.zig +10966 273108 1720029513000000000 e24401bc06abbf873844211e243f0871 1 std/compress/flate/huffman_decoder.zig +77139 273263 1720029513000000000 6ed68741d6922f90c45c6c388b6cdd8c 1 std/fs/path.zig +1399 273232 1720029513000000000 40a7d4ac60d12c6e9ca294acaed35474 1 std/dwarf/FORM.zig +3900 273235 1720029513000000000 b5711d1b73e43c5aaea25647f88f9369 1 std/dwarf/TAG.zig +7395 273229 1720029513000000000 0736a520f4793791a2cfc257bfcfd3b6 1 std/dwarf/AT.zig +643 273231 1720029513000000000 6f6a9e4e1602df062ad02179710971c4 1 std/dwarf/EH.zig +1884 273403 1720029513000000000 4e39bcecc218a8cefd7304859e028778 1 std/math/log2.zig +200963 273500 1720029513000000000 6382cd937e84a8fc6ae02341db586df9 1 std/os/windows.zig +19056 273069 1720029513000000000 fbe5a337296572a6d62cbde681c465ea 1 std/atomic.zig +54097 273056 1720029513000000000 5fc2474d41197418fc547d7d64491a85 1 std/Thread.zig +10030 273059 1720029513000000000 6ec4900de2fa66c512d3a1a8b197182b 1 std/Thread/Mutex.zig +12563 273456 1720029513000000000 edca846565ef855c728e7372feed8676 1 std/os/linux/x86_64.zig +94423 273450 1720029513000000000 936f06081ca66c21f2225e91832d8a41 1 std/os/linux/syscalls.zig +23129 273523 1720029513000000000 b579436bcc763fc86642b2a1d69be89a 1 std/simd.zig +50900 273013 1720029513000000000 00b173ccd55aed075eef5aa1dccad55a 1 std/Progress.zig +31762 273284 1720029513000000000 39822c5f2ad237650217b35e72989b75 1 std/heap.zig +12747 273289 1720029513000000000 0c84990d94912da71f88ccdd844ff032 1 std/heap/arena_allocator.zig +14239 273343 1720029513000000000 a69e9fd3810cdd1601c26dd47210af71 1 std/linked_list.zig +3917 273285 1720029513000000000 985cae2df1113f68d7f2eca79afe1887 1 std/heap/PageAllocator.zig +74835 273520 1720029513000000000 26bff32158c4e55ea1dbd7cbd193b2d5 1 std/process.zig +29780 273525 1720029513000000000 f63bcad555043dc37b62da5b7656cb6e 1 std/sort.zig +51714 273526 1720029513000000000 eb8790d984ce4a6ddd6376d877c85ff1 1 std/sort/block.zig +17036 273239 1720029513000000000 e5e4bda8771008b986953e018b241bdd 1 std/dynamic_library.zig +82077 273547 1720029513000000000 d5fc31f78c3ec8b424ea391b2e65f728 1 std/unicode.zig +17851 273342 1720029513000000000 62510503fe6b45659189d32c19c9dc45 1 std/leb128.zig +10710 273527 1720029513000000000 f2973ab2be6115a15cf6c75a2be36ad3 1 std/sort/pdq.zig +10091 273550 1720029513000000000 616a2d791eb8d67329f8198701e2bbad 1 std/valgrind.zig +19546 273236 1720029513000000000 eeb537ce254d8635c5876f3cb23ba2ab 1 std/dwarf/abi.zig +26403 273237 1720029513000000000 17cfec6893f0195cf3f2128e131aebbd 1 std/dwarf/call_frame.zig +71838 273238 1720029513000000000 472566d679006f02ce08a8e6d3ca5840 1 std/dwarf/expressions.zig +43084 273058 1720029513000000000 a67e9f409c649ae15d47dcc9582247f0 1 std/Thread/Futex.zig +14616 273068 1720029513000000000 0fed3eb789529104667fd82e81a9af62 1 std/ascii.zig +1299 273314 1720029513000000000 9ea5eaf4f2d36e2273f3ecec7f813b61 1 std/io/buffered_writer.zig +9239 273061 1720029513000000000 d703f6a7af8c150d259a587850decd1f 1 std/Thread/ResetEvent.zig +13689 273541 1720029513000000000 131aba425aefaef0d374793c2dd9e731 1 std/time.zig +1618 273105 1720029513000000000 60e22c8a23680b34b51d27b486811807 1 std/compress/flate/consts.zig +13375 273101 1720029513000000000 239244362ca7a3d92e32a4518ccda927 1 std/compress/flate/Token.zig +8372 273280 1720029513000000000 d48498b32f349820311bbf338ae1aae5 1 std/hash/wyhash.zig +5693 273234 1720029513000000000 01d731f8d28ba8382ff3c5885d5e0c75 1 std/dwarf/OP.zig diff --git a/.zig-cache/h/520e709f3a4d7a345e70999b4d1dfcbe.txt b/.zig-cache/h/520e709f3a4d7a345e70999b4d1dfcbe.txt new file mode 100644 index 0000000..b40a996 --- /dev/null +++ b/.zig-cache/h/520e709f3a4d7a345e70999b4d1dfcbe.txt @@ -0,0 +1,84 @@ +0 +191 1190486 1733918109500000094 7e2860f081407d3d9f477662f7b2cd11 0 src/root.zig +7616 273531 1720029513000000000 a112ef71b351e8f79f6f43c583ede25c 1 std/std.zig +23040 273528 1720029513000000000 da66963546b611ee7750a27396b7d1ea 1 std/start.zig +115223 273226 1720029513000000000 864599658ca312005d8d3860dcc5d44e 1 std/debug.zig +2251 1188759 1733745228589999910 e1ffff83ba21c7ce4210bcfae696187f 0 /home/ccppi/.cache/zig/b/e1ffff83ba21c7ce4210bcfae696187f/builtin.zig +33165 273075 1720029513000000000 f94156764e93e22ac481419ae3dcd7e2 1 std/builtin.zig +87972 273031 1720029513000000000 2058e9176f2f8c413153da85bdefea9a 1 std/Target.zig +129328 273053 1720029513000000000 aa1c9ead6b093aa4fc744cbaf6cdb147 1 std/Target/x86.zig +73503 273347 1720029513000000000 4f495cdd87469544c122e37211fe3d16 1 std/math.zig +41362 273418 1720029513000000000 222d7cb14bd7ca087b75cbc16cba6dda 1 std/meta.zig +11091 273029 1720029513000000000 3b4e837c9f6b3b4fbb5b3b95148e553c 1 std/SemanticVersion.zig +12325 273427 1720029513000000000 2229bf6824a9119504139fcdb850890e 1 std/os.zig +13386 273498 1720029513000000000 b23fdad07ce3b3bc638202a13d269a17 1 std/os/wasi.zig +8321 273344 1720029513000000000 445ca968f1971dbcfae846f76f46cc2d 1 std/log.zig +12352 273145 1720029513000000000 85ba4034d104ed83a45a1bb6ea2f588a 1 std/crypto.zig +35816 273258 1720029513000000000 9ad542fb9d5f647b2fd9aa956a4876f1 1 std/fs.zig +106358 273244 1720029513000000000 9b602efb3cf67bc725c9853d5fe33864 1 std/fmt.zig +6224 273221 1720029513000000000 1478fc3a3f5e7178b0ebc595cf60927a 1 std/crypto/tlcsprng.zig +19056 273069 1720029513000000000 fbe5a337296572a6d62cbde681c465ea 1 std/atomic.zig +54097 273056 1720029513000000000 5fc2474d41197418fc547d7d64491a85 1 std/Thread.zig +10030 273059 1720029513000000000 6ec4900de2fa66c512d3a1a8b197182b 1 std/Thread/Mutex.zig +25700 273305 1720029513000000000 2c3e57ebee88e5b426bac4e5144d55a2 1 std/io.zig +65843 273261 1720029513000000000 2f1e7806f11f80320d184c737b99b781 1 std/fs/File.zig +293019 273515 1720029513000000000 3aef046ab18b515bbbbf65ba8531ef93 1 std/posix.zig +207296 273430 1720029513000000000 651fd04e37ca32286baf84da551c7ce0 1 std/os/linux.zig +2697 273309 1720029513000000000 8464fd0bdf5c1f8ba10a286a4fe46f4d 1 std/io/Writer.zig +176912 273415 1720029513000000000 223e2fd0f89a74fd7d5132dbe48f1c2c 1 std/mem.zig +13626 273416 1720029513000000000 98c52b2fa05c32ad77f1743a5f3383ee 1 std/mem/Allocator.zig +89980 273282 1720029513000000000 52e58e0e5a1dd700c7ba1de70432e45c 1 std/hash_map.zig +5461 273326 1720029513000000000 ed6aac6dd443d6bdac1cf31688d1b444 1 std/io/tty.zig +112489 273228 1720029513000000000 d33cf67bbc2809a1c38591e04f1e3f51 1 std/dwarf.zig +55939 273241 1720029513000000000 9fbbf465379ce46a9365e411debc3ce1 1 std/enums.zig +87217 273067 1720029513000000000 d82200bd8e9f05406e233eef46e48149 1 std/array_list.zig +114248 273066 1720029513000000000 7aa5a3d5d7c75f7861328581549e6a5d 1 std/array_hash_map.zig +38005 273420 1720029513000000000 2df15a06c9368a128b68d617837153ef 1 std/multi_array_list.zig +61526 273240 1720029513000000000 00003d31510dec096134200d0d6ceecc 1 std/elf.zig +112808 273260 1720029513000000000 736eee48bb9f3802d7054c19abc437df 1 std/fs/Dir.zig +1730 273268 1720029513000000000 36cb1b0b5e0bb7d10f9b200b0a751743 1 std/hash.zig +19972 273274 1720029513000000000 c36dede4b91e35db37ea45c66dbe6fe9 1 std/hash/crc.zig +3882 273275 1720029513000000000 168f6844905becfc3ec252416dbee69f 1 std/hash/crc/impl.zig +6449 273320 1720029513000000000 3bcfe7862cea857ee79939a098991ad5 1 std/io/fixed_buffer_stream.zig +14434 273307 1720029513000000000 2655b33c088dd930683d9eb843eaceb4 1 std/io/Reader.zig +2057 273095 1720029513000000000 a778ec13ef93e0ace847f52f066441fd 1 std/compress.zig +3736 273134 1720029513000000000 a5c9eee5eaf5943e22c8a03fac3f2841 1 std/compress/zlib.zig +23844 273110 1720029513000000000 61343f5304677e260ccaed8ba225c2b1 1 std/compress/flate/inflate.zig +7460 273106 1720029513000000000 1c1d1c1c4e61c64090b7ace80a4c2dab 1 std/compress/flate/container.zig +16625 273102 1720029513000000000 8ba4aa19f03596c0d0eb18045a7331e8 1 std/compress/flate/bit_reader.zig +7434 273098 1720029513000000000 a6347ffd91bdf7b166947d627e9f38c5 1 std/compress/flate/CircularBuffer.zig +3519 273269 1720029513000000000 4e3c7d701979e5945ab9f85fed59a579 1 std/hash/adler.zig +10966 273108 1720029513000000000 e24401bc06abbf873844211e243f0871 1 std/compress/flate/huffman_decoder.zig +77139 273263 1720029513000000000 6ed68741d6922f90c45c6c388b6cdd8c 1 std/fs/path.zig +1399 273232 1720029513000000000 40a7d4ac60d12c6e9ca294acaed35474 1 std/dwarf/FORM.zig +3900 273235 1720029513000000000 b5711d1b73e43c5aaea25647f88f9369 1 std/dwarf/TAG.zig +7395 273229 1720029513000000000 0736a520f4793791a2cfc257bfcfd3b6 1 std/dwarf/AT.zig +643 273231 1720029513000000000 6f6a9e4e1602df062ad02179710971c4 1 std/dwarf/EH.zig +1884 273403 1720029513000000000 4e39bcecc218a8cefd7304859e028778 1 std/math/log2.zig +200963 273500 1720029513000000000 6382cd937e84a8fc6ae02341db586df9 1 std/os/windows.zig +12563 273456 1720029513000000000 edca846565ef855c728e7372feed8676 1 std/os/linux/x86_64.zig +19546 273236 1720029513000000000 eeb537ce254d8635c5876f3cb23ba2ab 1 std/dwarf/abi.zig +26403 273237 1720029513000000000 17cfec6893f0195cf3f2128e131aebbd 1 std/dwarf/call_frame.zig +71838 273238 1720029513000000000 472566d679006f02ce08a8e6d3ca5840 1 std/dwarf/expressions.zig +43084 273058 1720029513000000000 a67e9f409c649ae15d47dcc9582247f0 1 std/Thread/Futex.zig +82077 273547 1720029513000000000 d5fc31f78c3ec8b424ea391b2e65f728 1 std/unicode.zig +23129 273523 1720029513000000000 b579436bcc763fc86642b2a1d69be89a 1 std/simd.zig +94423 273450 1720029513000000000 936f06081ca66c21f2225e91832d8a41 1 std/os/linux/syscalls.zig +31762 273284 1720029513000000000 39822c5f2ad237650217b35e72989b75 1 std/heap.zig +12747 273289 1720029513000000000 0c84990d94912da71f88ccdd844ff032 1 std/heap/arena_allocator.zig +14239 273343 1720029513000000000 a69e9fd3810cdd1601c26dd47210af71 1 std/linked_list.zig +3917 273285 1720029513000000000 985cae2df1113f68d7f2eca79afe1887 1 std/heap/PageAllocator.zig +74835 273520 1720029513000000000 26bff32158c4e55ea1dbd7cbd193b2d5 1 std/process.zig +29780 273525 1720029513000000000 f63bcad555043dc37b62da5b7656cb6e 1 std/sort.zig +51714 273526 1720029513000000000 eb8790d984ce4a6ddd6376d877c85ff1 1 std/sort/block.zig +17036 273239 1720029513000000000 e5e4bda8771008b986953e018b241bdd 1 std/dynamic_library.zig +17851 273342 1720029513000000000 62510503fe6b45659189d32c19c9dc45 1 std/leb128.zig +10710 273527 1720029513000000000 f2973ab2be6115a15cf6c75a2be36ad3 1 std/sort/pdq.zig +10091 273550 1720029513000000000 616a2d791eb8d67329f8198701e2bbad 1 std/valgrind.zig +13689 273541 1720029513000000000 131aba425aefaef0d374793c2dd9e731 1 std/time.zig +1618 273105 1720029513000000000 60e22c8a23680b34b51d27b486811807 1 std/compress/flate/consts.zig +13375 273101 1720029513000000000 239244362ca7a3d92e32a4518ccda927 1 std/compress/flate/Token.zig +50900 273013 1720029513000000000 00b173ccd55aed075eef5aa1dccad55a 1 std/Progress.zig +8372 273280 1720029513000000000 d48498b32f349820311bbf338ae1aae5 1 std/hash/wyhash.zig +5693 273234 1720029513000000000 01d731f8d28ba8382ff3c5885d5e0c75 1 std/dwarf/OP.zig +9239 273061 1720029513000000000 d703f6a7af8c150d259a587850decd1f 1 std/Thread/ResetEvent.zig diff --git a/.zig-cache/h/e7d662d68c375191b7525740fff582b1.txt b/.zig-cache/h/e7d662d68c375191b7525740fff582b1.txt new file mode 100644 index 0000000..07f7ea2 --- /dev/null +++ b/.zig-cache/h/e7d662d68c375191b7525740fff582b1.txt @@ -0,0 +1,157 @@ +0 +46350 1188798 1733918116076666762 7f7cb8ef643c5d4a9b9dfb38c13b99b8 0 /home/ccppi/.cache/zls/build_runner/21872970afd69e48a0847077e5196711/build_runner.zig +3845 1190363 1733918109496666760 16a4faf009bcd4892e8cf6fe6c299e1f 0 /home/ccppi/Programming/adventofcode/build.zig +103 1190495 1733918116150000095 35b10ba982858800c98ffbaad5536a86 2 o/a32fcfc0e475f08356ed8aef4020640b/dependencies.zig +7616 273531 1720029513000000000 a112ef71b351e8f79f6f43c583ede25c 1 std/std.zig +23040 273528 1720029513000000000 da66963546b611ee7750a27396b7d1ea 1 std/start.zig +115223 273226 1720029513000000000 864599658ca312005d8d3860dcc5d44e 1 std/debug.zig +2251 1188745 1733745197116666578 c00e007630e21dfc05b9335a4cbed275 0 /home/ccppi/.cache/zig/b/c00e007630e21dfc05b9335a4cbed275/builtin.zig +33165 273075 1720029513000000000 f94156764e93e22ac481419ae3dcd7e2 1 std/builtin.zig +87972 273031 1720029513000000000 2058e9176f2f8c413153da85bdefea9a 1 std/Target.zig +129328 273053 1720029513000000000 aa1c9ead6b093aa4fc744cbaf6cdb147 1 std/Target/x86.zig +73503 273347 1720029513000000000 4f495cdd87469544c122e37211fe3d16 1 std/math.zig +41362 273418 1720029513000000000 222d7cb14bd7ca087b75cbc16cba6dda 1 std/meta.zig +11091 273029 1720029513000000000 3b4e837c9f6b3b4fbb5b3b95148e553c 1 std/SemanticVersion.zig +61526 273240 1720029513000000000 00003d31510dec096134200d0d6ceecc 1 std/elf.zig +12325 273427 1720029513000000000 2229bf6824a9119504139fcdb850890e 1 std/os.zig +207296 273430 1720029513000000000 651fd04e37ca32286baf84da551c7ce0 1 std/os/linux.zig +12494 273453 1720029513000000000 e9933b000fa707703dab8f2fe68b002a 1 std/os/linux/tls.zig +293019 273515 1720029513000000000 3aef046ab18b515bbbbf65ba8531ef93 1 std/posix.zig +31762 273284 1720029513000000000 39822c5f2ad237650217b35e72989b75 1 std/heap.zig +12747 273289 1720029513000000000 0c84990d94912da71f88ccdd844ff032 1 std/heap/arena_allocator.zig +176912 273415 1720029513000000000 223e2fd0f89a74fd7d5132dbe48f1c2c 1 std/mem.zig +13626 273416 1720029513000000000 98c52b2fa05c32ad77f1743a5f3383ee 1 std/mem/Allocator.zig +14239 273343 1720029513000000000 a69e9fd3810cdd1601c26dd47210af71 1 std/linked_list.zig +3917 273285 1720029513000000000 985cae2df1113f68d7f2eca79afe1887 1 std/heap/PageAllocator.zig +1301 273286 1720029513000000000 3db24c00baa9c03a40bfeaa152e28593 1 std/heap/ThreadSafeAllocator.zig +54097 273056 1720029513000000000 5fc2474d41197418fc547d7d64491a85 1 std/Thread.zig +10030 273059 1720029513000000000 6ec4900de2fa66c512d3a1a8b197182b 1 std/Thread/Mutex.zig +19056 273069 1720029513000000000 fbe5a337296572a6d62cbde681c465ea 1 std/atomic.zig +74835 273520 1720029513000000000 26bff32158c4e55ea1dbd7cbd193b2d5 1 std/process.zig +87217 273067 1720029513000000000 d82200bd8e9f05406e233eef46e48149 1 std/array_list.zig +95593 272990 1720029513000000000 eb7f21887b8d6d3a1ea72f4fb7e18f23 1 std/Build.zig +48541 272992 1720029513000000000 f0b7461b8459a4c71e300129f17dffb2 1 std/Build/Cache.zig +2248 272994 1720029513000000000 95a1bb668e0c39f345c83920bac861b7 1 std/Build/Cache/Directory.zig +35816 273258 1720029513000000000 9ad542fb9d5f647b2fd9aa956a4876f1 1 std/fs.zig +112808 273260 1720029513000000000 736eee48bb9f3802d7054c19abc437df 1 std/fs/Dir.zig +65843 273261 1720029513000000000 2f1e7806f11f80320d184c737b99b781 1 std/fs/File.zig +114248 273066 1720029513000000000 7aa5a3d5d7c75f7861328581549e6a5d 1 std/array_hash_map.zig +38005 273420 1720029513000000000 2df15a06c9368a128b68d617837153ef 1 std/multi_array_list.zig +12352 273145 1720029513000000000 85ba4034d104ed83a45a1bb6ea2f588a 1 std/crypto.zig +18622 273219 1720029513000000000 05742583e9b394547e0631c84131938c 1 std/crypto/siphash.zig +89980 273282 1720029513000000000 52e58e0e5a1dd700c7ba1de70432e45c 1 std/hash_map.zig +26882 273032 1720029513000000000 5b9ff543d20a09f8c07cb235a7f3c28e 1 std/Target/Query.zig +45679 273555 1720029513000000000 495dd771e7b568e386535b63332d9a02 1 std/zig.zig +52150 273577 1720029513000000000 d488bc81fd0ba877c413ee9c01ed7219 1 std/zig/system.zig +18992 272998 1720029513000000000 f8e31f1e40286aec688457f633c109d1 1 std/Build/Step.zig +27571 272996 1720029513000000000 f1a35ffb70613c5c506de0b9feb42a25 1 std/Build/Module.zig +16219 273012 1720029513000000000 ebb5646fc6c1cbeff8fff92f756e2694 1 std/Build/Step/WriteFile.zig +50900 273013 1720029513000000000 00b173ccd55aed075eef5aa1dccad55a 1 std/Progress.zig +29025 273561 1720029513000000000 2573e2c79bf66e3476b0024f0dfa2173 1 std/zig/ErrorBundle.zig +76968 273001 1720029513000000000 0500528ea762b29f66289290fec117d5 1 std/Build/Step/Compile.zig +112489 273228 1720029513000000000 d33cf67bbc2809a1c38591e04f1e3f51 1 std/dwarf.zig +31915 273002 1720029513000000000 6880c5430ee92854d2f87b8087aabbb0 1 std/Build/Step/ConfigHeader.zig +1884 273403 1720029513000000000 4e39bcecc218a8cefd7304859e028778 1 std/math/log2.zig +5989 273060 1720029513000000000 9b884db4ae244ef2af3dcea90ca42736 1 std/Thread/Pool.zig +8321 273344 1720029513000000000 445ca968f1971dbcfae846f76f46cc2d 1 std/log.zig +106358 273244 1720029513000000000 9b602efb3cf67bc725c9853d5fe33864 1 std/fmt.zig +14616 273068 1720029513000000000 0fed3eb789529104667fd82e81a9af62 1 std/ascii.zig +13689 273541 1720029513000000000 131aba425aefaef0d374793c2dd9e731 1 std/time.zig +77139 273263 1720029513000000000 6ed68741d6922f90c45c6c388b6cdd8c 1 std/fs/path.zig +12563 273456 1720029513000000000 edca846565ef855c728e7372feed8676 1 std/os/linux/x86_64.zig +72708 273521 1720029513000000000 046fa60b44c156af61840e746b56a6c2 1 std/process/Child.zig +200963 273500 1720029513000000000 6382cd937e84a8fc6ae02341db586df9 1 std/os/windows.zig +394 1188797 1733918116073333429 e2a5dc77f7477e12f9d09568c618e70c 0 /home/ccppi/.cache/zls/build_runner/21872970afd69e48a0847077e5196711/BuildConfig.zig +5954 273328 1720029513000000000 ca96a7daf60a978c600a94a94daaea90 1 std/json.zig +3257 273333 1720029513000000000 b6a0926202bd08dbf296c65a9af6c72b 1 std/json/hashmap.zig +29391 273339 1720029513000000000 8c1d345a91a2c23c70cadb25b14a213b 1 std/json/stringify.zig +25700 273305 1720029513000000000 2c3e57ebee88e5b426bac4e5144d55a2 1 std/io.zig +13386 273498 1720029513000000000 b23fdad07ce3b3bc638202a13d269a17 1 std/os/wasi.zig +6224 273221 1720029513000000000 1478fc3a3f5e7178b0ebc595cf60927a 1 std/crypto/tlcsprng.zig +2697 273309 1720029513000000000 8464fd0bdf5c1f8ba10a286a4fe46f4d 1 std/io/Writer.zig +29780 273525 1720029513000000000 f63bcad555043dc37b62da5b7656cb6e 1 std/sort.zig +51714 273526 1720029513000000000 eb8790d984ce4a6ddd6376d877c85ff1 1 std/sort/block.zig +82077 273547 1720029513000000000 d5fc31f78c3ec8b424ea391b2e65f728 1 std/unicode.zig +76391 273036 1720029513000000000 4668a311541b6be75afd88bf66028ad5 1 std/Target/arm.zig +17620 273530 1720029513000000000 11fc6dca32658eb05179945f9031219f 1 std/static_string_map.zig +10710 273527 1720029513000000000 f2973ab2be6115a15cf6c75a2be36ad3 1 std/sort/pdq.zig +7643 273408 1720029513000000000 03910049e32f401cd3296cc1352aecb4 1 std/math/powi.zig +9239 273061 1720029513000000000 d703f6a7af8c150d259a587850decd1f 1 std/Thread/ResetEvent.zig +17590 273015 1720029513000000000 5ddd4d07802b9f332a306c207663eea0 1 std/Random.zig +3177 273024 1720029513000000000 ece4176296c0d5a4735a0e13195d3e89 1 std/Random/Xoshiro256.zig +23359 273057 1720029513000000000 55e7c53750c5f84af61f7e61406bc0f0 1 std/Thread/Condition.zig +1796 273064 1720029513000000000 43f2cf40b5fd32903bf18a54ea66fc91 1 std/Thread/WaitGroup.zig +5461 273326 1720029513000000000 ed6aac6dd443d6bdac1cf31688d1b444 1 std/io/tty.zig +14434 273307 1720029513000000000 2655b33c088dd930683d9eb843eaceb4 1 std/io/Reader.zig +55939 273241 1720029513000000000 9fbbf465379ce46a9365e411debc3ce1 1 std/enums.zig +1730 273268 1720029513000000000 36cb1b0b5e0bb7d10f9b200b0a751743 1 std/hash.zig +19972 273274 1720029513000000000 c36dede4b91e35db37ea45c66dbe6fe9 1 std/hash/crc.zig +3882 273275 1720029513000000000 168f6844905becfc3ec252416dbee69f 1 std/hash/crc/impl.zig +6449 273320 1720029513000000000 3bcfe7862cea857ee79939a098991ad5 1 std/io/fixed_buffer_stream.zig +2057 273095 1720029513000000000 a778ec13ef93e0ace847f52f066441fd 1 std/compress.zig +3736 273134 1720029513000000000 a5c9eee5eaf5943e22c8a03fac3f2841 1 std/compress/zlib.zig +23844 273110 1720029513000000000 61343f5304677e260ccaed8ba225c2b1 1 std/compress/flate/inflate.zig +7460 273106 1720029513000000000 1c1d1c1c4e61c64090b7ace80a4c2dab 1 std/compress/flate/container.zig +16625 273102 1720029513000000000 8ba4aa19f03596c0d0eb18045a7331e8 1 std/compress/flate/bit_reader.zig +7434 273098 1720029513000000000 a6347ffd91bdf7b166947d627e9f38c5 1 std/compress/flate/CircularBuffer.zig +3519 273269 1720029513000000000 4e3c7d701979e5945ab9f85fed59a579 1 std/hash/adler.zig +10966 273108 1720029513000000000 e24401bc06abbf873844211e243f0871 1 std/compress/flate/huffman_decoder.zig +1399 273232 1720029513000000000 40a7d4ac60d12c6e9ca294acaed35474 1 std/dwarf/FORM.zig +3900 273235 1720029513000000000 b5711d1b73e43c5aaea25647f88f9369 1 std/dwarf/TAG.zig +7395 273229 1720029513000000000 0736a520f4793791a2cfc257bfcfd3b6 1 std/dwarf/AT.zig +643 273231 1720029513000000000 6f6a9e4e1602df062ad02179710971c4 1 std/dwarf/EH.zig +94423 273450 1720029513000000000 936f06081ca66c21f2225e91832d8a41 1 std/os/linux/syscalls.zig +19768 273585 1720029513000000000 817d70e351edd4b746ab4c444c0d2b09 1 std/zig/system/x86.zig +1273 273035 1720029513000000000 92589c8e708010b66287cffb30b3644a 1 std/Target/arc.zig +69762 273037 1720029513000000000 d6af57434a87d01c08b32d2bfe25fdaa 1 std/Target/avr.zig +77144 273039 1720029513000000000 c690addfa0ddc66f16428c3843909a46 1 std/Target/csky.zig +16084 273040 1720029513000000000 ca6f1a2a9e6e8fa60a8331d7c5f5ce34 1 std/Target/hexagon.zig +7121 273042 1720029513000000000 d75880c23fe47c4e74168b752266aab9 1 std/Target/m68k.zig +2220 273044 1720029513000000000 d6af7e91115ce15de6cc6fa6b85ad607 1 std/Target/msp430.zig +81486 273034 1720029513000000000 c94083fc646f9b20640e65787e33fdc0 1 std/Target/amdgpu.zig +25913 273048 1720029513000000000 9d8c66f36c8cefa8cdeac8497ff9ed3d 1 std/Target/s390x.zig +1273 273054 1720029513000000000 1becbd14309ffd333ba9f93137feeab0 1 std/Target/xtensa.zig +1275 273051 1720029513000000000 3f87de4b4cab37706212bd9a456a8c58 1 std/Target/ve.zig +94346 273033 1720029513000000000 136876fa8ce544da55eab725094091a5 1 std/Target/aarch64.zig +2409 273038 1720029513000000000 1693b91547d868068f63e102f2ccb211 1 std/Target/bpf.zig +5236 273041 1720029513000000000 fd217450c001fea386e26e5ae8ee436e 1 std/Target/loongarch.zig +16066 273043 1720029513000000000 6e5fb373b9f2ae19c60dbed74eb241dc 1 std/Target/mips.zig +34534 273046 1720029513000000000 51352484986d855d36c4732d68bc73d0 1 std/Target/powerpc.zig +53948 273047 1720029513000000000 5dd87bdcf11a3787d33834ee1afcb1ea 1 std/Target/riscv.zig +19757 273049 1720029513000000000 81e62932de5b471d355190a547b0390a 1 std/Target/sparc.zig +77930 273050 1720029513000000000 0611f617b9ec2d1a8e22aa44c1fe7363 1 std/Target/spirv.zig +13279 273045 1720029513000000000 c4c3d3112933eb72020bc9eebc304ed2 1 std/Target/nvptx.zig +4508 273052 1720029513000000000 d86c84e4bae678df19d1bcef0e88aef9 1 std/Target/wasm.zig +19546 273236 1720029513000000000 eeb537ce254d8635c5876f3cb23ba2ab 1 std/dwarf/abi.zig +26403 273237 1720029513000000000 17cfec6893f0195cf3f2128e131aebbd 1 std/dwarf/call_frame.zig +71838 273238 1720029513000000000 472566d679006f02ce08a8e6d3ca5840 1 std/dwarf/expressions.zig +10091 273550 1720029513000000000 616a2d791eb8d67329f8198701e2bbad 1 std/valgrind.zig +23129 273523 1720029513000000000 b579436bcc763fc86642b2a1d69be89a 1 std/simd.zig +58779 273010 1720029513000000000 2628367b628e7df7bf938bc2188b14e7 1 std/Build/Step/Run.zig +17036 273239 1720029513000000000 e5e4bda8771008b986953e018b241bdd 1 std/dynamic_library.zig +17851 273342 1720029513000000000 62510503fe6b45659189d32c19c9dc45 1 std/leb128.zig +43084 273058 1720029513000000000 a67e9f409c649ae15d47dcc9582247f0 1 std/Thread/Futex.zig +1299 273314 1720029513000000000 9ea5eaf4f2d36e2273f3ecec7f813b61 1 std/io/buffered_writer.zig +9295 273004 1720029513000000000 268e240d3773b7543a10f2365b34cc53 1 std/Build/Step/InstallArtifact.zig +530 273022 1720029513000000000 6862d091fadcbbb652464ab10689bd23 1 std/Random/SplitMix64.zig +2496 272988 1720029513000000000 51fed0f372bbe1737cc4b59d4258ebe3 1 std/BitStack.zig +8372 273280 1720029513000000000 d48498b32f349820311bbf338ae1aae5 1 std/hash/wyhash.zig +1160 273318 1720029513000000000 32ae6866d358d400739c8281e2b92d26 1 std/io/counting_writer.zig +1618 273105 1720029513000000000 60e22c8a23680b34b51d27b486811807 1 std/compress/flate/consts.zig +13375 273101 1720029513000000000 239244362ca7a3d92e32a4518ccda927 1 std/compress/flate/Token.zig +36892 273217 1720029513000000000 aeaa6f15041af562aebdfbb8f2e94f9d 1 std/crypto/sha2.zig +20392 273242 1720029513000000000 a41115e4a4263ff02975e97d21f21847 1 std/fifo.zig +1464 273560 1720029513000000000 262bf5a41c36322233615e07256bc570 1 std/zig/Client.zig +8752 273565 1720029513000000000 2d7e0835ecf9b1ce89b625495c8209c2 1 std/zig/Server.zig +2591 273259 1720029513000000000 54cecc0501b004131b133c8ec52688b3 1 std/fs/AtomicFile.zig +23028 273070 1720029513000000000 5f649adf883cb2acad194b60017a4672 1 std/base64.zig +39156 272993 1720029513000000000 628e7a63840b5d008ad84d18a2a50b21 1 std/Build/Cache/DepTokenizer.zig +2685 273017 1720029513000000000 5244bfd5edd68ad074bfdf866029fa86 1 std/Random/ChaCha.zig +52267 273173 1720029513000000000 250bf69f713193c74da886706bb53369 1 std/crypto/chacha20.zig +5693 273234 1720029513000000000 01d731f8d28ba8382ff3c5885d5e0c75 1 std/dwarf/OP.zig +7399 273225 1720029513000000000 7e3716a3c82a36541c6cf09b56a96da0 1 std/crypto/utils.zig +1539 273321 1720029513000000000 ca6d9ebe9107eb6ffe4cc4b92611772a 1 std/io/limited_reader.zig +64174 273077 1720029513000000000 ecfd926ec456ba7acf15b5e7bec5f532 1 std/c.zig +10812 273087 1720029513000000000 b5d2e09197008802157fd9bda951945e 1 std/c/linux.zig +14595 273270 1720029513000000000 9802848537ec3da81ac651945a298250 1 std/hash/auto_hash.zig +3957 273454 1720029513000000000 8a6d08b36d5d25b29bdff67ade3e947b 1 std/os/linux/vdso.zig diff --git a/.zig-cache/h/f3eb25f5175810b0b67af56cdeab811c.txt b/.zig-cache/h/f3eb25f5175810b0b67af56cdeab811c.txt new file mode 100644 index 0000000..5991df6 --- /dev/null +++ b/.zig-cache/h/f3eb25f5175810b0b67af56cdeab811c.txt @@ -0,0 +1,152 @@ +0 +51912 165741 1720029513000000000 d600a0ee5e0a696532bca2fbd40226c8 1 compiler/build_runner.zig +3845 1190363 1733918109496666760 16a4faf009bcd4892e8cf6fe6c299e1f 0 /home/ccppi/Programming/adventofcode/build.zig +103 1190495 1733918116150000095 35b10ba982858800c98ffbaad5536a86 2 o/a32fcfc0e475f08356ed8aef4020640b/dependencies.zig +7616 273531 1720029513000000000 a112ef71b351e8f79f6f43c583ede25c 1 std/std.zig +23040 273528 1720029513000000000 da66963546b611ee7750a27396b7d1ea 1 std/start.zig +115223 273226 1720029513000000000 864599658ca312005d8d3860dcc5d44e 1 std/debug.zig +2251 1188745 1733745197116666578 c00e007630e21dfc05b9335a4cbed275 0 /home/ccppi/.cache/zig/b/c00e007630e21dfc05b9335a4cbed275/builtin.zig +33165 273075 1720029513000000000 f94156764e93e22ac481419ae3dcd7e2 1 std/builtin.zig +87972 273031 1720029513000000000 2058e9176f2f8c413153da85bdefea9a 1 std/Target.zig +129328 273053 1720029513000000000 aa1c9ead6b093aa4fc744cbaf6cdb147 1 std/Target/x86.zig +73503 273347 1720029513000000000 4f495cdd87469544c122e37211fe3d16 1 std/math.zig +41362 273418 1720029513000000000 222d7cb14bd7ca087b75cbc16cba6dda 1 std/meta.zig +11091 273029 1720029513000000000 3b4e837c9f6b3b4fbb5b3b95148e553c 1 std/SemanticVersion.zig +61526 273240 1720029513000000000 00003d31510dec096134200d0d6ceecc 1 std/elf.zig +12325 273427 1720029513000000000 2229bf6824a9119504139fcdb850890e 1 std/os.zig +207296 273430 1720029513000000000 651fd04e37ca32286baf84da551c7ce0 1 std/os/linux.zig +12494 273453 1720029513000000000 e9933b000fa707703dab8f2fe68b002a 1 std/os/linux/tls.zig +293019 273515 1720029513000000000 3aef046ab18b515bbbbf65ba8531ef93 1 std/posix.zig +31762 273284 1720029513000000000 39822c5f2ad237650217b35e72989b75 1 std/heap.zig +12747 273289 1720029513000000000 0c84990d94912da71f88ccdd844ff032 1 std/heap/arena_allocator.zig +176912 273415 1720029513000000000 223e2fd0f89a74fd7d5132dbe48f1c2c 1 std/mem.zig +13626 273416 1720029513000000000 98c52b2fa05c32ad77f1743a5f3383ee 1 std/mem/Allocator.zig +14239 273343 1720029513000000000 a69e9fd3810cdd1601c26dd47210af71 1 std/linked_list.zig +3917 273285 1720029513000000000 985cae2df1113f68d7f2eca79afe1887 1 std/heap/PageAllocator.zig +1301 273286 1720029513000000000 3db24c00baa9c03a40bfeaa152e28593 1 std/heap/ThreadSafeAllocator.zig +54097 273056 1720029513000000000 5fc2474d41197418fc547d7d64491a85 1 std/Thread.zig +10030 273059 1720029513000000000 6ec4900de2fa66c512d3a1a8b197182b 1 std/Thread/Mutex.zig +19056 273069 1720029513000000000 fbe5a337296572a6d62cbde681c465ea 1 std/atomic.zig +74835 273520 1720029513000000000 26bff32158c4e55ea1dbd7cbd193b2d5 1 std/process.zig +87217 273067 1720029513000000000 d82200bd8e9f05406e233eef46e48149 1 std/array_list.zig +95593 272990 1720029513000000000 eb7f21887b8d6d3a1ea72f4fb7e18f23 1 std/Build.zig +48541 272992 1720029513000000000 f0b7461b8459a4c71e300129f17dffb2 1 std/Build/Cache.zig +2248 272994 1720029513000000000 95a1bb668e0c39f345c83920bac861b7 1 std/Build/Cache/Directory.zig +35816 273258 1720029513000000000 9ad542fb9d5f647b2fd9aa956a4876f1 1 std/fs.zig +112808 273260 1720029513000000000 736eee48bb9f3802d7054c19abc437df 1 std/fs/Dir.zig +65843 273261 1720029513000000000 2f1e7806f11f80320d184c737b99b781 1 std/fs/File.zig +114248 273066 1720029513000000000 7aa5a3d5d7c75f7861328581549e6a5d 1 std/array_hash_map.zig +38005 273420 1720029513000000000 2df15a06c9368a128b68d617837153ef 1 std/multi_array_list.zig +12352 273145 1720029513000000000 85ba4034d104ed83a45a1bb6ea2f588a 1 std/crypto.zig +18622 273219 1720029513000000000 05742583e9b394547e0631c84131938c 1 std/crypto/siphash.zig +89980 273282 1720029513000000000 52e58e0e5a1dd700c7ba1de70432e45c 1 std/hash_map.zig +26882 273032 1720029513000000000 5b9ff543d20a09f8c07cb235a7f3c28e 1 std/Target/Query.zig +45679 273555 1720029513000000000 495dd771e7b568e386535b63332d9a02 1 std/zig.zig +52150 273577 1720029513000000000 d488bc81fd0ba877c413ee9c01ed7219 1 std/zig/system.zig +18992 272998 1720029513000000000 f8e31f1e40286aec688457f633c109d1 1 std/Build/Step.zig +27571 272996 1720029513000000000 f1a35ffb70613c5c506de0b9feb42a25 1 std/Build/Module.zig +16219 273012 1720029513000000000 ebb5646fc6c1cbeff8fff92f756e2694 1 std/Build/Step/WriteFile.zig +50900 273013 1720029513000000000 00b173ccd55aed075eef5aa1dccad55a 1 std/Progress.zig +29025 273561 1720029513000000000 2573e2c79bf66e3476b0024f0dfa2173 1 std/zig/ErrorBundle.zig +76968 273001 1720029513000000000 0500528ea762b29f66289290fec117d5 1 std/Build/Step/Compile.zig +112489 273228 1720029513000000000 d33cf67bbc2809a1c38591e04f1e3f51 1 std/dwarf.zig +31915 273002 1720029513000000000 6880c5430ee92854d2f87b8087aabbb0 1 std/Build/Step/ConfigHeader.zig +1884 273403 1720029513000000000 4e39bcecc218a8cefd7304859e028778 1 std/math/log2.zig +5989 273060 1720029513000000000 9b884db4ae244ef2af3dcea90ca42736 1 std/Thread/Pool.zig +8321 273344 1720029513000000000 445ca968f1971dbcfae846f76f46cc2d 1 std/log.zig +106358 273244 1720029513000000000 9b602efb3cf67bc725c9853d5fe33864 1 std/fmt.zig +25700 273305 1720029513000000000 2c3e57ebee88e5b426bac4e5144d55a2 1 std/io.zig +5461 273326 1720029513000000000 ed6aac6dd443d6bdac1cf31688d1b444 1 std/io/tty.zig +82077 273547 1720029513000000000 d5fc31f78c3ec8b424ea391b2e65f728 1 std/unicode.zig +13689 273541 1720029513000000000 131aba425aefaef0d374793c2dd9e731 1 std/time.zig +77139 273263 1720029513000000000 6ed68741d6922f90c45c6c388b6cdd8c 1 std/fs/path.zig +12563 273456 1720029513000000000 edca846565ef855c728e7372feed8676 1 std/os/linux/x86_64.zig +17590 273015 1720029513000000000 5ddd4d07802b9f332a306c207663eea0 1 std/Random.zig +3177 273024 1720029513000000000 ece4176296c0d5a4735a0e13195d3e89 1 std/Random/Xoshiro256.zig +23359 273057 1720029513000000000 55e7c53750c5f84af61f7e61406bc0f0 1 std/Thread/Condition.zig +1796 273064 1720029513000000000 43f2cf40b5fd32903bf18a54ea66fc91 1 std/Thread/WaitGroup.zig +9239 273061 1720029513000000000 d703f6a7af8c150d259a587850decd1f 1 std/Thread/ResetEvent.zig +200963 273500 1720029513000000000 6382cd937e84a8fc6ae02341db586df9 1 std/os/windows.zig +2697 273309 1720029513000000000 8464fd0bdf5c1f8ba10a286a4fe46f4d 1 std/io/Writer.zig +13386 273498 1720029513000000000 b23fdad07ce3b3bc638202a13d269a17 1 std/os/wasi.zig +6224 273221 1720029513000000000 1478fc3a3f5e7178b0ebc595cf60927a 1 std/crypto/tlcsprng.zig +29780 273525 1720029513000000000 f63bcad555043dc37b62da5b7656cb6e 1 std/sort.zig +51714 273526 1720029513000000000 eb8790d984ce4a6ddd6376d877c85ff1 1 std/sort/block.zig +14616 273068 1720029513000000000 0fed3eb789529104667fd82e81a9af62 1 std/ascii.zig +76391 273036 1720029513000000000 4668a311541b6be75afd88bf66028ad5 1 std/Target/arm.zig +17620 273530 1720029513000000000 11fc6dca32658eb05179945f9031219f 1 std/static_string_map.zig +10710 273527 1720029513000000000 f2973ab2be6115a15cf6c75a2be36ad3 1 std/sort/pdq.zig +7643 273408 1720029513000000000 03910049e32f401cd3296cc1352aecb4 1 std/math/powi.zig +55939 273241 1720029513000000000 9fbbf465379ce46a9365e411debc3ce1 1 std/enums.zig +1730 273268 1720029513000000000 36cb1b0b5e0bb7d10f9b200b0a751743 1 std/hash.zig +19972 273274 1720029513000000000 c36dede4b91e35db37ea45c66dbe6fe9 1 std/hash/crc.zig +3882 273275 1720029513000000000 168f6844905becfc3ec252416dbee69f 1 std/hash/crc/impl.zig +6449 273320 1720029513000000000 3bcfe7862cea857ee79939a098991ad5 1 std/io/fixed_buffer_stream.zig +14434 273307 1720029513000000000 2655b33c088dd930683d9eb843eaceb4 1 std/io/Reader.zig +2057 273095 1720029513000000000 a778ec13ef93e0ace847f52f066441fd 1 std/compress.zig +3736 273134 1720029513000000000 a5c9eee5eaf5943e22c8a03fac3f2841 1 std/compress/zlib.zig +23844 273110 1720029513000000000 61343f5304677e260ccaed8ba225c2b1 1 std/compress/flate/inflate.zig +7460 273106 1720029513000000000 1c1d1c1c4e61c64090b7ace80a4c2dab 1 std/compress/flate/container.zig +16625 273102 1720029513000000000 8ba4aa19f03596c0d0eb18045a7331e8 1 std/compress/flate/bit_reader.zig +7434 273098 1720029513000000000 a6347ffd91bdf7b166947d627e9f38c5 1 std/compress/flate/CircularBuffer.zig +3519 273269 1720029513000000000 4e3c7d701979e5945ab9f85fed59a579 1 std/hash/adler.zig +10966 273108 1720029513000000000 e24401bc06abbf873844211e243f0871 1 std/compress/flate/huffman_decoder.zig +1399 273232 1720029513000000000 40a7d4ac60d12c6e9ca294acaed35474 1 std/dwarf/FORM.zig +3900 273235 1720029513000000000 b5711d1b73e43c5aaea25647f88f9369 1 std/dwarf/TAG.zig +7395 273229 1720029513000000000 0736a520f4793791a2cfc257bfcfd3b6 1 std/dwarf/AT.zig +643 273231 1720029513000000000 6f6a9e4e1602df062ad02179710971c4 1 std/dwarf/EH.zig +94423 273450 1720029513000000000 936f06081ca66c21f2225e91832d8a41 1 std/os/linux/syscalls.zig +19768 273585 1720029513000000000 817d70e351edd4b746ab4c444c0d2b09 1 std/zig/system/x86.zig +1273 273035 1720029513000000000 92589c8e708010b66287cffb30b3644a 1 std/Target/arc.zig +69762 273037 1720029513000000000 d6af57434a87d01c08b32d2bfe25fdaa 1 std/Target/avr.zig +77144 273039 1720029513000000000 c690addfa0ddc66f16428c3843909a46 1 std/Target/csky.zig +16084 273040 1720029513000000000 ca6f1a2a9e6e8fa60a8331d7c5f5ce34 1 std/Target/hexagon.zig +7121 273042 1720029513000000000 d75880c23fe47c4e74168b752266aab9 1 std/Target/m68k.zig +2220 273044 1720029513000000000 d6af7e91115ce15de6cc6fa6b85ad607 1 std/Target/msp430.zig +81486 273034 1720029513000000000 c94083fc646f9b20640e65787e33fdc0 1 std/Target/amdgpu.zig +25913 273048 1720029513000000000 9d8c66f36c8cefa8cdeac8497ff9ed3d 1 std/Target/s390x.zig +1273 273054 1720029513000000000 1becbd14309ffd333ba9f93137feeab0 1 std/Target/xtensa.zig +1275 273051 1720029513000000000 3f87de4b4cab37706212bd9a456a8c58 1 std/Target/ve.zig +94346 273033 1720029513000000000 136876fa8ce544da55eab725094091a5 1 std/Target/aarch64.zig +2409 273038 1720029513000000000 1693b91547d868068f63e102f2ccb211 1 std/Target/bpf.zig +5236 273041 1720029513000000000 fd217450c001fea386e26e5ae8ee436e 1 std/Target/loongarch.zig +16066 273043 1720029513000000000 6e5fb373b9f2ae19c60dbed74eb241dc 1 std/Target/mips.zig +34534 273046 1720029513000000000 51352484986d855d36c4732d68bc73d0 1 std/Target/powerpc.zig +53948 273047 1720029513000000000 5dd87bdcf11a3787d33834ee1afcb1ea 1 std/Target/riscv.zig +19757 273049 1720029513000000000 81e62932de5b471d355190a547b0390a 1 std/Target/sparc.zig +77930 273050 1720029513000000000 0611f617b9ec2d1a8e22aa44c1fe7363 1 std/Target/spirv.zig +13279 273045 1720029513000000000 c4c3d3112933eb72020bc9eebc304ed2 1 std/Target/nvptx.zig +4508 273052 1720029513000000000 d86c84e4bae678df19d1bcef0e88aef9 1 std/Target/wasm.zig +19546 273236 1720029513000000000 eeb537ce254d8635c5876f3cb23ba2ab 1 std/dwarf/abi.zig +26403 273237 1720029513000000000 17cfec6893f0195cf3f2128e131aebbd 1 std/dwarf/call_frame.zig +71838 273238 1720029513000000000 472566d679006f02ce08a8e6d3ca5840 1 std/dwarf/expressions.zig +10091 273550 1720029513000000000 616a2d791eb8d67329f8198701e2bbad 1 std/valgrind.zig +23129 273523 1720029513000000000 b579436bcc763fc86642b2a1d69be89a 1 std/simd.zig +58779 273010 1720029513000000000 2628367b628e7df7bf938bc2188b14e7 1 std/Build/Step/Run.zig +72708 273521 1720029513000000000 046fa60b44c156af61840e746b56a6c2 1 std/process/Child.zig +530 273022 1720029513000000000 6862d091fadcbbb652464ab10689bd23 1 std/Random/SplitMix64.zig +17036 273239 1720029513000000000 e5e4bda8771008b986953e018b241bdd 1 std/dynamic_library.zig +17851 273342 1720029513000000000 62510503fe6b45659189d32c19c9dc45 1 std/leb128.zig +43084 273058 1720029513000000000 a67e9f409c649ae15d47dcc9582247f0 1 std/Thread/Futex.zig +1299 273314 1720029513000000000 9ea5eaf4f2d36e2273f3ecec7f813b61 1 std/io/buffered_writer.zig +9295 273004 1720029513000000000 268e240d3773b7543a10f2365b34cc53 1 std/Build/Step/InstallArtifact.zig +1160 273318 1720029513000000000 32ae6866d358d400739c8281e2b92d26 1 std/io/counting_writer.zig +8372 273280 1720029513000000000 d48498b32f349820311bbf338ae1aae5 1 std/hash/wyhash.zig +1618 273105 1720029513000000000 60e22c8a23680b34b51d27b486811807 1 std/compress/flate/consts.zig +13375 273101 1720029513000000000 239244362ca7a3d92e32a4518ccda927 1 std/compress/flate/Token.zig +36892 273217 1720029513000000000 aeaa6f15041af562aebdfbb8f2e94f9d 1 std/crypto/sha2.zig +20392 273242 1720029513000000000 a41115e4a4263ff02975e97d21f21847 1 std/fifo.zig +1464 273560 1720029513000000000 262bf5a41c36322233615e07256bc570 1 std/zig/Client.zig +8752 273565 1720029513000000000 2d7e0835ecf9b1ce89b625495c8209c2 1 std/zig/Server.zig +2591 273259 1720029513000000000 54cecc0501b004131b133c8ec52688b3 1 std/fs/AtomicFile.zig +23028 273070 1720029513000000000 5f649adf883cb2acad194b60017a4672 1 std/base64.zig +39156 272993 1720029513000000000 628e7a63840b5d008ad84d18a2a50b21 1 std/Build/Cache/DepTokenizer.zig +2685 273017 1720029513000000000 5244bfd5edd68ad074bfdf866029fa86 1 std/Random/ChaCha.zig +52267 273173 1720029513000000000 250bf69f713193c74da886706bb53369 1 std/crypto/chacha20.zig +5693 273234 1720029513000000000 01d731f8d28ba8382ff3c5885d5e0c75 1 std/dwarf/OP.zig +7399 273225 1720029513000000000 7e3716a3c82a36541c6cf09b56a96da0 1 std/crypto/utils.zig +1539 273321 1720029513000000000 ca6d9ebe9107eb6ffe4cc4b92611772a 1 std/io/limited_reader.zig +64174 273077 1720029513000000000 ecfd926ec456ba7acf15b5e7bec5f532 1 std/c.zig +10812 273087 1720029513000000000 b5d2e09197008802157fd9bda951945e 1 std/c/linux.zig +14595 273270 1720029513000000000 9802848537ec3da81ac651945a298250 1 std/hash/auto_hash.zig +3957 273454 1720029513000000000 8a6d08b36d5d25b29bdff67ade3e947b 1 std/os/linux/vdso.zig diff --git a/.zig-cache/h/timestamp b/.zig-cache/h/timestamp new file mode 100644 index 0000000..e69de29 diff --git a/.zig-cache/o/2a69246989877ed7dfaf738339144ece/adventofcode b/.zig-cache/o/2a69246989877ed7dfaf738339144ece/adventofcode new file mode 100755 index 0000000..86da700 Binary files /dev/null and b/.zig-cache/o/2a69246989877ed7dfaf738339144ece/adventofcode differ diff --git a/.zig-cache/o/2a69246989877ed7dfaf738339144ece/adventofcode.o b/.zig-cache/o/2a69246989877ed7dfaf738339144ece/adventofcode.o new file mode 100644 index 0000000..6ca9bbb Binary files /dev/null and b/.zig-cache/o/2a69246989877ed7dfaf738339144ece/adventofcode.o differ diff --git a/.zig-cache/o/368b608893cad9e66c98d7fbaf6a8dff/adventofcode b/.zig-cache/o/368b608893cad9e66c98d7fbaf6a8dff/adventofcode new file mode 100755 index 0000000..1405205 Binary files /dev/null and b/.zig-cache/o/368b608893cad9e66c98d7fbaf6a8dff/adventofcode differ diff --git a/.zig-cache/o/368b608893cad9e66c98d7fbaf6a8dff/adventofcode.o b/.zig-cache/o/368b608893cad9e66c98d7fbaf6a8dff/adventofcode.o new file mode 100644 index 0000000..606bba8 Binary files /dev/null and b/.zig-cache/o/368b608893cad9e66c98d7fbaf6a8dff/adventofcode.o differ diff --git a/.zig-cache/o/3d7f124ce56c0753034142382044f8a5/adventofcode b/.zig-cache/o/3d7f124ce56c0753034142382044f8a5/adventofcode new file mode 100755 index 0000000..8fb12c2 Binary files /dev/null and b/.zig-cache/o/3d7f124ce56c0753034142382044f8a5/adventofcode differ diff --git a/.zig-cache/o/3d7f124ce56c0753034142382044f8a5/adventofcode.o b/.zig-cache/o/3d7f124ce56c0753034142382044f8a5/adventofcode.o new file mode 100644 index 0000000..954cfd6 Binary files /dev/null and b/.zig-cache/o/3d7f124ce56c0753034142382044f8a5/adventofcode.o differ diff --git a/.zig-cache/o/9b4b7702a975afa81cb59035ecd03f59/build b/.zig-cache/o/9b4b7702a975afa81cb59035ecd03f59/build new file mode 100755 index 0000000..c8eed96 Binary files /dev/null and b/.zig-cache/o/9b4b7702a975afa81cb59035ecd03f59/build differ diff --git a/.zig-cache/o/9b4b7702a975afa81cb59035ecd03f59/build.o b/.zig-cache/o/9b4b7702a975afa81cb59035ecd03f59/build.o new file mode 100644 index 0000000..e612848 Binary files /dev/null and b/.zig-cache/o/9b4b7702a975afa81cb59035ecd03f59/build.o differ diff --git a/.zig-cache/o/a32fcfc0e475f08356ed8aef4020640b/dependencies.zig b/.zig-cache/o/a32fcfc0e475f08356ed8aef4020640b/dependencies.zig new file mode 100644 index 0000000..72e4e83 --- /dev/null +++ b/.zig-cache/o/a32fcfc0e475f08356ed8aef4020640b/dependencies.zig @@ -0,0 +1,2 @@ +pub const packages = struct {}; +pub const root_deps: []const struct { []const u8, []const u8 } = &.{}; diff --git a/.zig-cache/o/d4f1995f46358de9c7972cf80867899c/libadventofcode.a b/.zig-cache/o/d4f1995f46358de9c7972cf80867899c/libadventofcode.a new file mode 100644 index 0000000..01aa0fa Binary files /dev/null and b/.zig-cache/o/d4f1995f46358de9c7972cf80867899c/libadventofcode.a differ diff --git a/.zig-cache/o/d4f1995f46358de9c7972cf80867899c/libadventofcode.a.o b/.zig-cache/o/d4f1995f46358de9c7972cf80867899c/libadventofcode.a.o new file mode 100644 index 0000000..c166f0a Binary files /dev/null and b/.zig-cache/o/d4f1995f46358de9c7972cf80867899c/libadventofcode.a.o differ diff --git a/.zig-cache/o/df2163322ca83dc086fba0ab6e978010/adventofcode b/.zig-cache/o/df2163322ca83dc086fba0ab6e978010/adventofcode new file mode 100755 index 0000000..cae1c43 Binary files /dev/null and b/.zig-cache/o/df2163322ca83dc086fba0ab6e978010/adventofcode differ diff --git a/.zig-cache/o/df2163322ca83dc086fba0ab6e978010/adventofcode.o b/.zig-cache/o/df2163322ca83dc086fba0ab6e978010/adventofcode.o new file mode 100644 index 0000000..a24a6ff Binary files /dev/null and b/.zig-cache/o/df2163322ca83dc086fba0ab6e978010/adventofcode.o differ diff --git a/.zig-cache/o/f5ab83d8317a5435ff55ff63c1ca4386/build b/.zig-cache/o/f5ab83d8317a5435ff55ff63c1ca4386/build new file mode 100755 index 0000000..4607a8b Binary files /dev/null and b/.zig-cache/o/f5ab83d8317a5435ff55ff63c1ca4386/build differ diff --git a/.zig-cache/o/f5ab83d8317a5435ff55ff63c1ca4386/build.o b/.zig-cache/o/f5ab83d8317a5435ff55ff63c1ca4386/build.o new file mode 100644 index 0000000..5188755 Binary files /dev/null and b/.zig-cache/o/f5ab83d8317a5435ff55ff63c1ca4386/build.o differ diff --git a/.zig-cache/z/53d8da468c12563c8ba398391b5e75e7 b/.zig-cache/z/53d8da468c12563c8ba398391b5e75e7 new file mode 100644 index 0000000..3c68536 Binary files /dev/null and b/.zig-cache/z/53d8da468c12563c8ba398391b5e75e7 differ diff --git a/.zig-cache/z/e42243edc0522d29f45261b0e3b2fb38 b/.zig-cache/z/e42243edc0522d29f45261b0e3b2fb38 new file mode 100644 index 0000000..c95bcf9 Binary files /dev/null and b/.zig-cache/z/e42243edc0522d29f45261b0e3b2fb38 differ diff --git a/.zig-cache/z/fec4b29b2a4e776097ce5246af116f09 b/.zig-cache/z/fec4b29b2a4e776097ce5246af116f09 new file mode 100644 index 0000000..7d5e889 Binary files /dev/null and b/.zig-cache/z/fec4b29b2a4e776097ce5246af116f09 differ diff --git a/build.zig b/build.zig new file mode 100644 index 0000000..a18614e --- /dev/null +++ b/build.zig @@ -0,0 +1,91 @@ +const std = @import("std"); + +// Although this function looks imperative, note that its job is to +// declaratively construct a build graph that will be executed by an external +// runner. +pub fn build(b: *std.Build) void { + // Standard target options allows the person running `zig build` to choose + // what target to build for. Here we do not override the defaults, which + // means any target is allowed, and the default is native. Other options + // for restricting supported target set are available. + const target = b.standardTargetOptions(.{}); + + // Standard optimization options allow the person running `zig build` to select + // between Debug, ReleaseSafe, ReleaseFast, and ReleaseSmall. Here we do not + // set a preferred release mode, allowing the user to decide how to optimize. + const optimize = b.standardOptimizeOption(.{}); + + const lib = b.addStaticLibrary(.{ + .name = "adventofcode", + // In this case the main source file is merely a path, however, in more + // complicated build scripts, this could be a generated file. + .root_source_file = b.path("src/root.zig"), + .target = target, + .optimize = optimize, + }); + + // This declares intent for the library to be installed into the standard + // location when the user invokes the "install" step (the default step when + // running `zig build`). + b.installArtifact(lib); + + const exe = b.addExecutable(.{ + .name = "adventofcode", + .root_source_file = b.path("src/main.zig"), + .target = target, + .optimize = optimize, + }); + + // This declares intent for the executable to be installed into the + // standard location when the user invokes the "install" step (the default + // step when running `zig build`). + b.installArtifact(exe); + + // This *creates* a Run step in the build graph, to be executed when another + // step is evaluated that depends on it. The next line below will establish + // such a dependency. + const run_cmd = b.addRunArtifact(exe); + + // By making the run step depend on the install step, it will be run from the + // installation directory rather than directly from within the cache directory. + // This is not necessary, however, if the application depends on other installed + // files, this ensures they will be present and in the expected location. + run_cmd.step.dependOn(b.getInstallStep()); + + // This allows the user to pass arguments to the application in the build + // command itself, like this: `zig build run -- arg1 arg2 etc` + if (b.args) |args| { + run_cmd.addArgs(args); + } + + // This creates a build step. It will be visible in the `zig build --help` menu, + // and can be selected like this: `zig build run` + // This will evaluate the `run` step rather than the default, which is "install". + const run_step = b.step("run", "Run the app"); + run_step.dependOn(&run_cmd.step); + + // Creates a step for unit testing. This only builds the test executable + // but does not run it. + const lib_unit_tests = b.addTest(.{ + .root_source_file = b.path("src/root.zig"), + .target = target, + .optimize = optimize, + }); + + const run_lib_unit_tests = b.addRunArtifact(lib_unit_tests); + + const exe_unit_tests = b.addTest(.{ + .root_source_file = b.path("src/main.zig"), + .target = target, + .optimize = optimize, + }); + + const run_exe_unit_tests = b.addRunArtifact(exe_unit_tests); + + // Similar to creating the run step earlier, this exposes a `test` step to + // the `zig build --help` menu, providing a way for the user to request + // running the unit tests. + const test_step = b.step("test", "Run unit tests"); + test_step.dependOn(&run_lib_unit_tests.step); + test_step.dependOn(&run_exe_unit_tests.step); +} diff --git a/build.zig.zon b/build.zig.zon new file mode 100644 index 0000000..187d73f --- /dev/null +++ b/build.zig.zon @@ -0,0 +1,72 @@ +.{ + // This is the default name used by packages depending on this one. For + // example, when a user runs `zig fetch --save `, this field is used + // as the key in the `dependencies` table. Although the user can choose a + // different name, most users will stick with this provided value. + // + // It is redundant to include "zig" in this name because it is already + // within the Zig package namespace. + .name = "adventofcode", + + // This is a [Semantic Version](https://semver.org/). + // In a future version of Zig it will be used for package deduplication. + .version = "0.0.0", + + // This field is optional. + // This is currently advisory only; Zig does not yet do anything + // with this value. + //.minimum_zig_version = "0.11.0", + + // This field is optional. + // Each dependency must either provide a `url` and `hash`, or a `path`. + // `zig build --fetch` can be used to fetch all dependencies of a package, recursively. + // Once all dependencies are fetched, `zig build` no longer requires + // internet connectivity. + .dependencies = .{ + // See `zig fetch --save ` for a command-line interface for adding dependencies. + //.example = .{ + // // When updating this field to a new URL, be sure to delete the corresponding + // // `hash`, otherwise you are communicating that you expect to find the old hash at + // // the new URL. + // .url = "https://example.com/foo.tar.gz", + // + // // This is computed from the file contents of the directory of files that is + // // obtained after fetching `url` and applying the inclusion rules given by + // // `paths`. + // // + // // This field is the source of truth; packages do not come from a `url`; they + // // come from a `hash`. `url` is just one of many possible mirrors for how to + // // obtain a package matching this `hash`. + // // + // // Uses the [multihash](https://multiformats.io/multihash/) format. + // .hash = "...", + // + // // When this is provided, the package is found in a directory relative to the + // // build root. In this case the package's hash is irrelevant and therefore not + // // computed. This field and `url` are mutually exclusive. + // .path = "foo", + + // // When this is set to `true`, a package is declared to be lazily + // // fetched. This makes the dependency only get fetched if it is + // // actually used. + // .lazy = false, + //}, + }, + + // Specifies the set of files and directories that are included in this package. + // Only files and directories listed here are included in the `hash` that + // is computed for this package. Only files listed here will remain on disk + // when using the zig package manager. As a rule of thumb, one should list + // files required for compilation plus any license(s). + // Paths are relative to the build root. Use the empty string (`""`) to refer to + // the build root itself. + // A directory listed here means that all files within, recursively, are included. + .paths = .{ + "build.zig", + "build.zig.zon", + "src", + // For example... + //"LICENSE", + //"README.md", + }, +} diff --git a/count.txt b/count.txt new file mode 100644 index 0000000..88266ed --- /dev/null +++ b/count.txt @@ -0,0 +1,13 @@ + + + +....11... +...1..... +......... +........2 +1....2... +1.....1.. +......... +......... +......... +.1.2.3..2 diff --git a/day2-1.txt b/day2-1.txt new file mode 100644 index 0000000..b49c10d --- /dev/null +++ b/day2-1.txt @@ -0,0 +1,6 @@ +7 6 4 2 1 +1 2 7 8 9 +9 7 6 2 1 +1 3 2 4 5 +8 6 4 4 1 +1 3 6 7 9 diff --git a/day2.txt b/day2.txt new file mode 100644 index 0000000..5413cb7 --- /dev/null +++ b/day2.txt @@ -0,0 +1,1000 @@ +24 25 28 31 28 +41 44 45 48 49 50 50 +5 8 10 13 15 16 17 21 +11 13 16 17 19 26 +79 81 78 79 82 84 +16 19 20 18 20 22 25 22 +84 87 90 92 94 97 96 96 +86 87 88 91 88 91 95 +40 43 41 44 49 +8 10 10 11 13 +91 94 95 95 92 +18 19 20 20 21 23 25 25 +15 17 19 19 23 +35 37 37 39 40 43 50 +2 5 6 10 12 +82 85 87 88 91 93 97 94 +30 32 35 38 42 43 43 +64 66 68 72 76 +73 74 77 80 84 86 91 +64 67 72 73 74 76 +72 73 75 81 82 81 +24 25 32 35 37 38 38 +59 60 62 64 65 70 74 +44 46 47 48 50 52 58 63 +54 52 53 56 57 58 +77 76 77 80 82 81 +48 45 48 49 52 54 54 +74 71 74 76 78 81 85 +20 18 19 21 27 +88 86 88 91 92 89 92 +17 16 14 17 18 15 +95 92 91 93 95 96 96 +7 5 6 9 8 11 14 18 +15 12 9 12 14 16 21 +3 2 2 5 6 +58 55 55 57 58 57 +36 35 36 36 36 +73 72 72 75 79 +80 77 78 78 79 82 87 +20 19 23 25 27 28 31 32 +92 90 91 95 97 96 +86 84 86 90 93 96 98 98 +36 33 34 38 41 45 +82 81 85 88 89 92 99 +70 69 71 77 78 81 +51 49 50 57 60 58 +28 27 30 33 35 40 40 +40 37 38 45 49 +53 52 54 55 56 61 67 +27 27 29 31 34 +82 82 84 86 89 92 89 +91 91 93 96 96 +55 55 58 60 64 +80 80 81 82 83 85 88 95 +84 84 87 84 85 +81 81 80 82 79 +25 25 22 24 24 +71 71 74 76 77 74 78 +86 86 87 86 87 88 93 +41 41 43 43 46 +70 70 70 72 71 +12 12 13 13 14 15 15 +23 23 23 26 28 31 35 +84 84 86 88 88 89 91 98 +4 4 5 7 8 9 13 14 +31 31 35 36 37 36 +19 19 23 26 26 +80 80 84 85 88 90 94 +51 51 53 54 58 60 61 66 +35 35 36 42 43 +9 9 12 15 18 24 21 +2 2 8 11 14 15 15 +25 25 30 33 36 38 39 43 +13 13 18 19 26 +10 14 15 17 19 +35 39 40 43 45 46 48 45 +41 45 47 50 50 +16 20 23 25 28 31 34 38 +10 14 15 18 20 25 +42 46 49 46 48 +25 29 32 31 34 31 +7 11 14 11 14 14 +90 94 92 94 98 +27 31 34 32 35 37 44 +50 54 54 56 59 61 63 +48 52 52 53 50 +84 88 89 90 91 91 91 +48 52 54 54 56 60 +85 89 89 91 98 +9 13 15 17 21 23 +43 47 49 52 53 57 55 +76 80 82 83 86 90 93 93 +5 9 11 15 16 20 +53 57 61 62 65 66 73 +65 69 70 73 76 81 82 83 +15 19 21 27 24 +51 55 57 63 65 65 +15 19 22 25 27 33 37 +1 5 6 7 9 11 16 22 +50 56 58 60 63 65 68 70 +36 42 43 44 41 +36 42 44 47 50 52 54 54 +79 84 87 88 90 92 94 98 +35 42 45 46 47 49 52 58 +74 80 83 80 81 82 84 85 +60 67 69 72 73 71 72 71 +85 92 94 97 96 98 98 +17 22 25 27 25 28 32 +22 28 26 28 31 33 40 +51 57 60 61 61 62 63 +7 13 16 16 19 18 +80 87 87 89 89 +70 76 79 81 84 84 88 +39 45 46 49 49 51 52 58 +38 43 45 48 52 55 57 58 +79 84 86 89 93 94 92 +39 45 48 52 52 +58 63 67 69 70 74 +76 83 86 90 97 +13 18 25 27 29 31 +60 66 69 72 75 80 82 81 +21 26 29 31 33 38 38 +31 37 42 45 46 50 +15 21 23 24 30 32 38 +51 48 45 43 44 +45 43 41 40 38 37 36 36 +66 64 61 60 57 53 +89 86 83 81 76 +36 33 30 33 30 29 28 27 +91 88 91 89 86 85 83 85 +12 10 12 11 11 +31 30 27 30 28 27 23 +35 32 31 34 32 26 +11 10 10 9 6 5 4 3 +44 41 38 38 37 35 34 36 +80 78 76 73 72 71 71 71 +45 43 40 37 37 33 +97 94 91 88 87 86 86 80 +58 56 53 51 47 44 +66 63 62 60 58 56 52 53 +73 72 71 68 65 61 61 +95 92 88 86 82 +19 17 16 12 11 10 5 +80 77 74 71 66 64 62 61 +64 62 59 56 51 52 +47 46 43 42 39 38 33 33 +45 44 41 39 34 30 +95 92 89 87 82 81 80 74 +94 96 94 91 88 +89 91 90 88 89 +40 41 38 36 36 +70 72 70 68 67 63 +22 25 24 21 19 18 13 +41 42 39 40 38 37 +35 36 35 32 31 29 32 35 +31 34 31 34 34 +88 90 89 91 90 88 85 81 +54 57 60 59 56 50 +83 85 82 82 80 +66 68 68 65 62 61 62 +35 36 36 34 32 30 30 +79 80 80 78 76 74 70 +44 45 45 43 37 +37 40 37 33 31 +63 65 63 59 56 55 54 56 +19 22 21 17 15 13 11 11 +94 95 91 90 88 84 +22 23 19 18 16 14 7 +29 32 30 23 22 +64 67 64 58 56 57 +29 30 27 24 18 18 +33 36 34 27 24 22 20 16 +50 52 49 48 46 39 37 31 +31 31 28 25 22 21 19 16 +47 47 44 43 40 37 38 +88 88 85 84 84 +41 41 38 36 32 +73 73 70 69 67 66 60 +80 80 81 80 79 77 76 75 +36 36 34 32 34 35 +59 59 57 60 59 58 56 56 +30 30 27 28 25 23 19 +9 9 7 6 5 8 3 +89 89 87 86 85 85 82 +52 52 49 46 46 47 +60 60 59 59 59 +21 21 19 19 15 +17 17 17 16 13 12 10 4 +33 33 29 28 26 25 +67 67 63 61 58 60 +27 27 25 24 20 20 +78 78 76 74 72 68 64 +62 62 59 55 49 +47 47 44 38 36 33 31 +31 31 28 21 23 +81 81 80 79 78 72 72 +75 75 69 66 62 +97 97 91 89 87 85 78 +35 31 28 27 26 25 +35 31 28 27 25 22 21 23 +37 33 32 31 28 28 +73 69 67 65 62 59 55 +67 63 60 58 53 +52 48 47 44 47 46 43 +73 69 70 68 69 +18 14 13 16 16 +91 87 84 81 82 79 77 73 +96 92 90 92 91 88 81 +40 36 35 35 34 33 31 +93 89 86 83 82 82 80 81 +86 82 79 79 78 77 77 +20 16 13 13 12 8 +30 26 23 23 21 19 17 10 +76 72 69 66 62 60 57 54 +57 53 49 46 48 +64 60 58 54 54 +20 16 15 12 8 5 1 +40 36 34 31 27 25 19 +25 21 20 18 16 14 9 6 +48 44 43 40 38 36 29 31 +96 92 90 89 83 81 80 80 +45 41 34 32 28 +35 31 28 27 21 19 14 +35 30 27 26 23 +73 66 63 61 64 +60 55 53 51 50 50 +68 62 61 60 56 +55 50 49 46 43 42 37 +29 23 22 25 22 20 18 16 +96 90 88 85 84 86 83 85 +47 41 39 36 37 37 +72 66 69 68 66 62 +52 47 49 46 43 36 +77 71 68 68 67 66 +99 94 94 93 96 +45 38 35 33 31 31 31 +23 16 13 10 10 6 +33 26 25 25 23 20 18 11 +44 37 33 30 28 27 +90 85 81 79 80 +91 85 82 79 77 73 70 70 +98 91 88 86 82 78 +68 63 61 58 54 52 45 +64 58 57 50 49 +66 59 56 49 52 +89 82 77 76 73 70 70 +80 73 72 67 63 +73 66 60 59 57 50 +11 14 15 17 20 23 21 +47 50 52 55 56 56 +16 17 18 19 20 23 27 +82 83 85 88 90 91 94 99 +59 61 59 61 64 67 70 73 +32 33 36 37 38 36 39 38 +86 89 90 91 89 92 94 94 +67 68 71 68 71 73 76 80 +28 30 31 33 34 32 39 +3 4 6 6 7 10 12 13 +61 64 64 66 69 71 68 +49 50 52 52 53 55 55 +8 11 14 16 16 20 +59 62 62 63 70 +43 45 49 52 55 57 +80 82 86 88 89 92 93 91 +81 82 86 87 88 91 94 94 +38 41 45 48 51 53 57 +35 38 40 41 45 47 54 +6 9 12 14 15 17 22 23 +81 82 83 85 91 90 +74 76 83 84 87 87 +24 27 28 35 37 41 +69 71 72 77 80 85 +12 9 12 13 15 17 20 23 +77 75 76 77 78 81 78 +60 57 59 61 61 +13 10 11 14 16 20 +81 80 81 84 85 90 +6 5 6 7 5 7 10 13 +54 51 54 52 54 55 54 +72 71 70 73 73 +89 86 88 90 91 88 90 94 +8 6 3 5 10 +10 7 8 10 12 12 15 16 +14 11 12 14 16 16 19 18 +39 37 38 38 39 42 44 44 +13 11 12 13 15 15 16 20 +10 8 8 11 14 20 +42 40 42 45 49 50 +67 66 70 73 76 78 77 +32 30 34 35 37 37 +47 44 45 49 51 55 +36 35 39 40 43 45 47 53 +68 66 67 68 73 74 +40 37 38 39 40 46 47 45 +28 26 27 30 35 35 +45 42 48 50 54 +44 43 45 48 54 59 +61 61 62 63 64 66 67 +57 57 58 61 59 +66 66 69 71 73 75 78 78 +59 59 61 64 67 71 +28 28 29 30 31 33 36 41 +41 41 42 41 44 45 +11 11 10 13 15 12 +37 37 40 38 41 41 +41 41 40 42 46 +68 68 69 72 69 71 78 +95 95 95 97 98 99 +9 9 9 10 13 14 17 16 +81 81 82 85 88 88 88 +86 86 86 89 92 96 +58 58 59 62 62 67 +80 80 81 85 87 +84 84 87 91 88 +3 3 7 10 11 12 12 +74 74 75 79 81 82 85 89 +26 26 28 29 31 35 37 44 +38 38 39 46 49 +77 77 80 81 87 88 85 +75 75 78 81 87 90 92 92 +28 28 31 37 40 43 47 +11 11 12 18 20 27 +15 19 21 22 23 26 +58 62 64 65 66 69 71 69 +56 60 61 63 63 +46 50 53 56 58 62 +67 71 73 76 81 +52 56 58 56 58 60 +6 10 11 8 7 +81 85 86 89 87 88 88 +72 76 79 76 79 82 86 +39 43 44 46 43 49 +38 42 45 45 46 +41 45 48 51 51 48 +79 83 86 86 86 +24 28 29 31 33 33 34 38 +55 59 59 61 62 65 67 74 +73 77 80 82 86 87 90 +45 49 50 53 57 54 +80 84 88 90 92 92 +14 18 20 22 24 28 32 +61 65 69 70 73 76 82 +50 54 57 59 62 63 69 70 +75 79 81 82 83 89 92 89 +45 49 52 59 61 63 63 +38 42 44 45 48 55 57 61 +62 66 69 71 74 80 86 +28 35 37 40 41 43 +25 30 32 33 34 37 35 +14 19 20 21 22 22 +8 14 17 20 23 27 +23 28 29 31 38 +68 74 77 78 76 79 80 +14 21 18 20 22 23 25 22 +18 23 20 22 22 +65 72 71 74 76 80 +8 14 15 17 14 17 20 25 +59 65 68 70 70 73 +59 65 68 68 71 74 71 +34 41 43 43 43 +20 25 25 28 32 +43 48 50 50 53 56 58 64 +38 45 49 52 55 58 +23 30 34 35 33 +4 9 11 14 18 20 21 21 +51 57 61 63 67 +67 74 78 81 82 88 +20 26 29 36 37 +9 14 15 18 20 26 29 28 +73 79 82 87 90 90 +9 16 18 24 28 +8 14 19 22 29 +80 77 75 73 76 +93 90 88 85 84 81 78 78 +25 22 20 18 15 12 11 7 +51 48 47 44 42 40 37 31 +77 74 77 75 73 72 +94 91 92 90 88 89 +28 27 26 24 21 22 20 20 +94 91 88 87 86 89 85 +91 90 87 85 82 80 81 74 +59 56 56 54 52 50 +89 88 88 87 84 82 85 +96 95 93 90 89 86 86 86 +25 22 22 19 15 +39 36 34 34 33 31 24 +53 52 49 47 43 40 +93 92 88 85 87 +82 80 76 75 72 69 66 66 +57 55 52 49 47 43 39 +43 40 36 33 26 +33 30 28 21 18 +72 70 67 66 59 61 +26 23 22 19 14 12 10 10 +25 22 20 18 13 10 9 5 +33 30 27 21 19 16 13 6 +96 98 97 95 93 90 89 +47 48 46 45 47 +10 12 9 8 7 5 3 3 +48 49 48 47 43 +25 28 26 25 22 15 +2 4 1 4 3 +59 62 65 64 65 +24 25 22 19 20 17 17 +53 54 52 54 51 48 46 42 +21 23 21 18 19 18 12 +48 49 46 46 43 41 40 +58 61 59 57 57 59 +84 85 83 80 79 78 78 78 +20 22 22 19 17 15 11 +87 89 87 86 86 81 +97 99 95 94 91 +15 18 16 15 11 13 +54 55 53 49 49 +28 30 26 25 23 21 17 +34 37 34 32 28 21 +33 36 33 31 28 21 18 15 +66 69 68 63 61 58 55 58 +93 94 93 87 85 85 +17 18 13 12 8 +81 83 80 78 71 68 63 +68 68 66 65 63 +65 65 62 61 58 57 60 +28 28 26 23 23 +48 48 46 45 44 43 39 +16 16 13 11 6 +30 30 29 26 29 28 +23 23 20 22 20 17 20 +41 41 43 41 41 +39 39 36 39 36 32 +34 34 36 35 30 +88 88 87 85 85 84 +6 6 4 3 3 5 +41 41 38 38 38 +14 14 11 8 8 7 5 1 +75 75 72 72 70 64 +59 59 55 52 51 +91 91 88 84 81 79 80 +95 95 92 88 85 85 +62 62 60 59 55 51 +17 17 13 11 4 +67 67 66 65 63 58 56 +63 63 56 55 57 +46 46 45 39 39 +42 42 39 38 32 28 +91 91 86 84 78 +30 26 24 22 21 20 19 +58 54 53 50 53 +10 6 5 4 4 +93 89 88 86 85 83 81 77 +52 48 46 43 38 +89 85 84 81 83 82 79 +46 42 41 39 42 44 +48 44 41 44 43 42 39 39 +61 57 56 53 54 51 47 +55 51 54 52 50 43 +23 19 16 16 15 13 11 8 +23 19 17 16 14 14 13 14 +23 19 19 17 14 11 9 9 +24 20 19 16 14 14 10 +94 90 88 85 85 84 77 +47 43 41 39 36 32 30 +54 50 46 45 42 43 +88 84 81 77 77 +29 25 21 20 18 15 12 8 +67 63 59 58 51 +16 12 6 3 1 +68 64 61 59 53 51 50 53 +70 66 60 58 58 +84 80 75 73 70 66 +92 88 86 85 78 77 71 +93 86 83 82 79 77 74 73 +56 50 48 46 48 +25 20 19 16 13 13 +79 74 73 72 70 69 67 63 +77 71 70 67 64 62 56 +80 74 71 68 67 69 68 65 +36 29 27 26 28 31 +88 82 83 82 82 +13 6 5 7 3 +17 11 12 9 6 1 +87 82 81 80 80 78 75 +23 17 14 11 11 12 +70 64 61 58 58 58 +96 91 90 87 87 85 81 +92 85 85 83 80 74 +23 17 13 12 11 +70 63 59 56 55 53 54 +85 80 79 76 73 70 66 66 +81 75 74 73 72 68 64 +69 62 59 55 54 49 +68 62 60 58 52 49 +81 75 74 71 69 64 66 +71 65 58 55 55 +39 32 31 26 24 22 19 15 +53 47 42 40 33 +39 40 43 44 46 48 55 61 +41 37 35 31 29 25 +33 28 26 23 23 24 +53 49 48 45 43 39 +45 45 46 47 49 49 50 57 +55 52 51 50 47 46 46 42 +43 40 39 33 27 +31 37 42 44 46 46 +38 36 34 33 30 29 27 30 +25 31 33 35 32 38 +74 74 80 82 83 87 +34 40 40 41 44 45 50 +75 68 66 63 61 +72 69 67 64 61 54 54 +23 27 27 29 34 +53 57 58 60 60 +47 40 35 34 35 +28 24 22 20 18 16 16 +55 58 56 52 52 +9 9 11 14 15 12 16 +38 33 29 27 26 21 +19 18 19 19 20 24 +59 59 55 54 53 52 46 +9 13 16 18 20 21 22 26 +36 32 25 24 21 15 +40 41 44 45 47 46 49 53 +2 4 7 7 9 11 18 +16 21 20 22 23 25 +90 84 82 79 75 72 68 +74 74 78 79 81 81 +59 61 64 63 61 59 52 +76 76 75 68 67 64 65 +85 85 85 86 85 +34 37 35 32 29 25 24 +86 84 84 83 80 77 75 68 +15 16 20 21 23 26 29 +65 71 75 76 73 +95 95 94 91 88 90 +81 87 88 91 94 96 97 97 +4 8 11 13 14 12 15 +34 40 42 44 47 45 43 +34 36 38 41 48 51 55 +44 46 44 44 41 40 38 38 +95 98 97 96 93 93 +54 53 50 48 44 38 +25 25 23 20 17 15 11 +82 82 81 81 81 +52 56 58 62 64 68 +39 39 36 35 34 +83 86 88 85 87 +46 39 41 40 34 +18 24 27 34 37 +34 30 28 26 24 23 24 +65 67 70 72 74 77 76 +18 23 24 27 34 36 37 36 +10 10 11 14 16 21 +2 6 9 12 13 13 15 14 +46 51 52 56 57 59 63 +69 75 80 81 85 +60 61 64 61 58 57 60 +84 87 86 80 79 79 +76 73 75 73 73 +72 66 65 62 65 63 60 +10 14 16 17 18 25 27 31 +15 16 17 17 18 +94 94 91 86 82 +39 46 47 49 52 56 58 +1 1 2 2 2 +3 7 8 10 17 20 20 +26 26 24 19 17 14 12 +43 43 42 44 42 37 +62 62 59 60 59 58 55 55 +19 23 27 28 30 36 +41 44 42 44 41 41 +12 10 10 12 13 15 17 22 +52 53 54 55 62 65 67 67 +21 22 21 20 20 19 16 17 +50 46 45 43 41 40 40 40 +69 70 74 77 77 +83 87 89 89 90 94 +14 11 9 11 15 +86 83 84 88 89 92 93 97 +47 44 44 47 47 +83 87 89 89 92 +65 61 57 55 57 +65 69 71 75 78 81 81 +72 72 73 80 81 84 82 +31 28 30 34 35 36 39 41 +94 89 83 82 81 80 79 +55 55 52 48 45 45 +64 66 64 61 59 54 50 +7 6 11 14 17 21 +83 79 75 73 72 71 70 70 +37 36 36 33 31 29 28 31 +92 94 93 92 91 86 +71 70 69 68 63 +80 83 82 83 82 79 77 +51 55 57 61 58 +53 50 47 46 42 42 +89 89 90 96 99 +34 33 36 39 40 44 42 +77 73 69 68 66 +10 10 13 14 16 13 +76 77 74 74 69 +91 92 93 95 96 99 99 99 +17 15 11 10 9 6 5 +47 47 44 41 39 40 41 +21 25 28 30 28 35 +52 55 52 48 49 +44 44 42 45 43 39 +36 36 37 41 42 44 46 44 +43 43 40 40 37 40 +19 22 19 15 10 +61 62 59 56 55 51 +31 37 38 41 45 45 +1 5 8 9 10 15 +42 38 40 38 37 30 +60 61 59 57 55 +36 34 36 33 30 +38 40 41 42 40 42 44 43 +58 55 53 52 51 49 46 42 +91 88 91 89 88 89 +53 53 51 50 50 +89 91 92 95 92 99 +18 13 15 13 11 11 +64 65 66 68 69 70 +71 74 77 80 83 84 86 +40 42 45 48 51 52 54 57 +29 31 32 34 37 39 42 +13 14 15 18 19 22 25 27 +20 18 16 13 12 +21 19 16 13 12 10 7 +88 91 94 95 97 +25 22 21 18 15 13 +55 53 51 48 45 42 40 38 +63 62 61 58 55 52 50 48 +61 58 56 55 54 52 49 +59 60 62 65 67 69 +68 69 72 74 76 77 +73 70 68 65 63 61 +88 89 92 95 96 +37 36 34 33 30 +50 51 52 55 56 59 62 63 +67 70 71 73 76 78 +90 92 93 95 96 +41 42 43 45 46 +60 59 56 54 52 50 47 +39 38 36 35 32 31 28 27 +14 17 19 20 21 24 25 +60 58 56 55 53 51 +11 10 7 6 5 +10 11 14 15 17 19 +14 11 8 5 4 3 +64 62 61 58 55 52 51 +17 14 13 12 11 10 7 +72 70 69 68 66 64 61 +74 77 80 82 85 86 88 89 +26 29 32 35 36 38 +62 60 59 57 56 53 50 +26 25 23 22 20 19 16 13 +7 10 13 16 17 20 21 +71 70 69 67 65 62 61 +11 13 14 15 18 21 +22 20 17 14 11 9 6 5 +3 4 6 8 11 12 14 15 +2 4 6 9 12 +81 84 86 88 91 94 97 98 +32 33 36 37 38 41 +78 77 76 74 73 +71 72 74 76 78 +44 45 48 49 51 53 54 +78 75 74 73 70 69 66 64 +75 74 71 69 66 63 +84 82 79 78 75 74 71 69 +62 61 58 56 54 52 51 48 +98 95 92 89 88 87 85 +3 5 7 9 10 12 14 +89 87 85 83 82 +80 79 77 75 73 71 68 +61 62 64 66 69 72 74 76 +51 49 46 44 43 40 39 38 +70 67 64 63 62 +35 34 33 31 29 27 24 23 +42 44 47 50 51 52 +52 55 58 59 62 64 65 +67 69 72 74 77 80 +14 12 11 9 8 +53 51 48 45 43 +57 58 60 63 65 68 70 +30 32 35 36 38 41 43 +99 97 96 94 91 89 88 +68 65 63 61 59 57 56 +92 90 88 86 85 +44 46 47 49 52 +49 52 53 54 56 57 59 +28 27 25 22 21 20 17 16 +48 46 43 41 40 +79 80 82 85 87 88 89 +58 56 54 53 52 51 49 47 +54 57 60 61 62 64 65 +40 39 38 36 35 33 +32 30 29 27 24 23 22 +17 14 11 9 7 5 +91 89 88 87 86 83 +19 16 14 11 9 8 +40 41 42 45 46 49 51 52 +86 84 81 80 77 74 71 68 +42 41 39 37 36 34 +36 33 32 29 26 23 20 +24 21 20 17 16 +12 9 8 5 4 +76 79 82 85 88 91 92 +64 66 69 72 75 +35 37 38 41 44 46 49 51 +94 92 89 87 86 85 +66 68 71 74 76 +81 80 79 77 75 74 72 71 +83 86 89 92 94 +43 40 37 34 31 +36 37 38 41 43 +31 28 25 23 20 18 +45 44 42 41 38 36 +86 85 84 82 80 77 74 +58 57 55 54 53 50 49 47 +70 71 73 75 78 +73 76 79 80 82 +85 83 81 78 75 72 +37 38 39 42 45 48 50 +64 67 68 71 72 +66 63 61 58 56 +61 64 65 67 68 69 72 74 +95 94 91 90 89 87 85 84 +84 87 89 91 94 +63 65 68 71 72 73 +40 39 38 37 35 34 32 +88 87 86 83 82 81 80 +71 70 68 65 63 62 +92 90 88 85 82 81 80 +76 74 71 68 65 64 +9 11 12 14 17 +74 75 77 78 80 82 +30 33 36 38 39 42 44 45 +59 62 63 65 67 69 +83 86 88 91 94 95 +29 28 26 23 21 +70 71 74 77 78 80 82 +70 72 74 75 76 +6 9 12 15 18 21 24 25 +32 31 29 26 23 22 +76 75 74 72 70 68 +93 92 91 90 89 +56 58 59 60 63 64 +72 73 74 76 78 80 83 85 +96 95 92 89 86 84 +98 95 94 93 90 +27 29 31 33 36 37 39 40 +48 47 44 41 39 38 37 36 +20 19 16 14 13 +98 97 96 95 92 +71 72 74 75 78 80 +49 51 53 55 57 +63 60 59 56 53 +78 80 82 83 84 +80 79 77 75 73 71 69 66 +24 25 27 30 33 34 36 +81 82 84 86 89 +35 36 39 42 43 44 46 +14 15 16 18 21 23 25 28 +83 84 86 89 92 93 +82 81 78 76 73 +19 21 24 27 28 30 32 +61 60 58 56 53 +7 8 10 12 14 +69 67 66 64 61 59 +29 28 25 23 21 +44 46 49 52 54 55 57 60 +6 7 9 10 12 14 15 +27 25 22 19 18 17 14 +50 52 54 56 59 60 63 65 +40 39 36 33 32 +10 11 12 14 16 +30 27 26 24 23 21 19 18 +24 22 20 19 18 16 14 +89 91 93 95 97 98 99 +60 57 54 53 51 48 47 +1 3 6 7 8 10 13 +14 13 11 10 8 +57 55 53 51 50 +48 46 45 42 40 39 36 35 +42 43 45 47 50 +92 90 88 86 85 82 +94 91 90 88 87 85 84 82 +45 46 48 50 53 +24 21 20 17 14 11 9 7 +65 64 62 60 59 56 55 53 +54 51 50 48 47 44 43 +49 47 45 42 39 38 37 34 +37 34 32 30 27 26 25 +87 88 91 92 94 97 +86 84 81 79 76 73 71 70 +59 60 63 64 65 +39 42 43 44 46 +14 16 17 18 21 23 24 27 +5 6 7 9 12 14 16 19 +64 65 67 70 73 +90 89 88 85 84 81 78 +83 85 88 90 92 93 96 97 +83 81 79 76 74 73 +68 71 74 77 78 80 83 86 +41 40 38 35 34 +34 31 28 27 24 +87 88 90 92 93 94 96 +52 55 56 57 60 62 +17 20 23 24 25 27 +30 28 27 24 21 18 15 12 +28 27 26 25 22 19 +72 69 68 67 66 64 +59 56 55 54 52 49 47 45 +26 28 31 32 35 36 38 +52 49 46 45 42 41 39 +9 10 11 12 14 15 17 +35 36 37 39 40 42 44 47 +59 58 55 54 53 52 +11 10 9 8 6 4 3 +18 20 22 23 24 27 +10 8 7 6 5 4 3 +68 71 72 74 76 77 +64 63 62 59 56 54 51 +37 36 35 33 31 28 +98 97 96 95 93 92 90 87 +18 19 21 24 27 +23 24 26 29 30 33 36 39 +52 51 49 47 46 45 42 41 +50 48 47 44 43 +40 43 46 49 52 54 55 58 +45 43 40 37 35 33 31 29 +35 33 30 27 24 23 20 18 +82 83 84 86 88 +19 16 13 10 9 +37 34 33 32 29 +86 83 80 77 76 +77 78 79 81 84 87 88 90 +13 15 18 21 22 25 27 +6 7 9 11 13 14 17 18 +51 50 48 47 46 44 41 40 +79 80 82 83 85 +74 72 69 67 65 63 62 59 +58 57 55 53 50 +54 57 60 62 64 65 68 +28 30 32 34 37 38 +10 13 15 18 20 22 24 27 +80 79 77 74 73 71 70 +21 20 18 15 13 11 9 +21 23 26 29 31 33 35 +74 75 76 78 81 83 +61 58 56 55 54 53 51 50 +54 55 56 57 60 62 64 65 +45 43 42 41 38 37 35 34 +47 50 53 56 57 59 +98 95 94 93 92 90 +13 12 9 7 6 4 2 +68 70 73 76 79 80 81 84 +59 62 65 68 69 72 75 +80 82 84 87 89 92 95 +63 65 68 70 71 72 73 76 +92 90 87 86 85 82 80 77 +20 18 15 13 11 9 7 +60 59 58 55 54 51 48 47 +18 16 15 13 11 9 +71 68 65 62 61 59 57 +69 68 65 62 60 57 56 +75 74 73 72 70 67 65 62 +17 20 22 25 28 31 +43 45 46 48 50 51 +28 25 22 21 19 17 15 +36 33 30 29 27 24 22 21 +13 14 15 18 20 23 +84 82 81 78 77 76 75 +23 26 27 30 33 +56 53 50 47 46 +25 27 28 30 31 32 34 37 +90 92 94 95 96 99 +82 83 85 88 90 92 95 +49 46 45 43 42 40 +55 58 61 63 65 68 69 72 +61 62 65 66 68 69 +49 52 54 55 56 58 59 61 +41 43 44 46 49 +74 71 70 68 65 62 61 58 +26 29 30 31 32 35 38 40 +11 12 14 15 18 21 +79 76 74 72 71 68 66 +17 20 23 25 27 30 33 35 +52 53 55 58 60 +6 7 9 11 12 +88 85 84 83 81 79 77 +71 74 76 77 79 +70 72 75 78 79 +54 56 58 59 62 +97 96 94 91 90 +6 9 10 11 14 17 20 22 +23 21 18 15 14 +99 98 96 94 91 88 87 +96 93 92 90 89 88 +91 89 88 85 84 82 80 77 +86 87 88 91 94 +3 4 7 10 11 12 +56 59 61 64 67 +40 41 44 46 48 49 52 53 +35 34 32 31 30 27 24 22 +48 47 44 43 42 40 38 36 +31 29 26 23 20 19 16 +25 27 28 29 30 32 +4 7 10 13 15 +36 39 40 42 43 45 48 +20 23 25 27 28 31 34 +40 42 45 48 49 52 54 +14 12 10 9 7 4 2 1 +76 74 71 68 66 64 +25 27 29 30 31 +34 31 29 28 25 24 22 +63 64 67 70 72 73 +95 93 90 89 87 85 +29 27 25 22 20 18 +28 30 32 33 34 37 +53 52 49 46 43 42 +41 40 38 36 33 31 30 +81 79 77 75 74 73 +97 96 95 94 93 90 +77 79 81 82 83 +67 64 62 59 56 54 +55 54 52 50 48 46 45 +74 73 70 69 67 +90 88 85 82 80 +16 14 13 12 11 +32 31 29 26 24 23 +17 18 21 24 27 +21 18 16 14 11 9 6 +37 39 41 42 45 47 +6 8 9 11 13 +35 34 32 30 28 27 25 23 +80 78 77 75 73 71 +4 5 6 9 12 15 +48 51 52 53 55 56 57 +31 33 34 35 37 38 40 42 +75 77 78 80 83 86 87 +39 40 43 46 49 51 +70 71 72 74 75 77 79 +95 92 89 87 85 84 82 +5 7 10 12 14 17 18 20 +68 67 66 65 62 +61 63 64 66 68 69 70 73 +61 59 57 55 53 51 +38 36 33 32 31 30 29 +83 82 79 76 75 74 72 69 +17 20 22 23 26 28 +81 83 86 87 90 93 94 +85 82 81 79 77 +7 10 11 12 13 +94 93 90 87 84 82 +63 64 66 69 70 71 73 +35 36 37 39 42 45 +48 47 45 44 41 +93 92 91 89 88 86 +47 50 52 54 55 +33 35 38 40 43 46 48 49 +70 73 76 77 80 +96 95 92 91 88 87 84 83 +14 17 20 21 22 23 25 28 +14 15 16 17 18 20 21 +72 71 70 68 65 63 60 59 +57 60 61 64 67 68 +18 17 16 13 10 +49 47 44 42 40 38 +30 32 34 37 38 +70 69 68 65 63 62 61 +37 40 43 44 47 48 +55 54 53 52 50 47 45 +90 88 86 85 83 81 80 +90 88 85 83 80 +38 40 43 45 46 +64 67 70 73 75 +91 93 95 98 99 +18 15 12 9 8 6 4 1 +80 77 75 73 70 67 64 62 +29 26 24 21 19 16 15 +61 63 64 67 69 72 +60 59 57 54 53 +63 61 59 57 56 54 53 +49 50 52 53 54 +57 59 60 63 66 +61 63 64 65 66 67 69 70 +24 21 19 18 16 14 +42 39 36 35 34 33 +95 94 92 91 89 86 83 +72 75 77 78 81 83 86 +4 5 6 8 9 12 14 +20 22 25 28 30 33 +65 68 70 71 73 74 +1 3 4 6 9 11 12 15 +75 77 79 81 83 85 +21 22 25 28 29 31 34 +8 7 4 3 2 +39 37 34 31 28 diff --git a/day3.txt b/day3.txt new file mode 100644 index 0000000..d048c13 --- /dev/null +++ b/day3.txt @@ -0,0 +1,6 @@ + where()(< }when()mul(678,62)%mul(747,584)from()-select(59,725)mul(570,425)<~^:$where()!@}where()mul(542,816):don't()select()from()#(;!select()mul(541,668)mul(557,427)what()<#-why(952,537)*what()}mul(723,604)/^]'+;from()('-mul(227,146)'what()~*who():select()~from()do()mul(640,593)^$<*from()??>$mul(879,96),}?;(mul(465,50)>!~%'do()$'#'<**mul(781,977)-,?where();mul(154,168)>mul(532,770)(>#*what()/^}?mul(498,722)%^mul(710,295)from()@>mul(816,977)how(80,33)^$?what()how(),what()mul(987,59)'-mul(106,916) when();^(from()where()(what()mul(474,920)?%,mul(435,248)do(),:>$how();~^ from()mul(48,417),#,{mul(430,437)%[,@@mul(953,728)'mul(556,935)]]&select()when()!:/when()%mul(249,960)+;{select(),#mul(713,901)!?^when()%mul(910,594)&where()how(316,735){mul(838,23)$mul(690,953)from();)who()}from()mul(803,624)when(){mul(280,406)mul(190,779)select()#+,[-mul(381,486)*&+['*mul(566,57)mul(91,816)>select()mul(578,725)%&!mul(173,595)*;'do()when()from()/mul(438,7)%mul(15,794)?when()from()}where() who()-mul(103,235);mul(971,383)@do()$mul(250,84)when()where(306,50)select(454,21)@)*mul(419,450):{)mul(736,148))when()*{what()mul(831,562)>]/}who()'do()&who()*+,who(637,20)#/$mul(896,737)-#when()select()when(),:~$@mul(988,98) select()who(709,386);-*!where()~do()!^mul(870,729)what();@mul(749,333)&when()&#how() where()}who()#mul(935,153)[from()!mul(781,341)&){what()mul(833,819)/[~{/]@mul(184,985)^<%{;{mul(630,218){what()}#when()~$'mul(14,702)%>select()^[@mul(474,41)from(){$do()*select()#/how()mul(488,463:where()where(){]-,#-mul(407,949)what()select()where(364,988)^~#*who(){mul(999,525);;select()from()@'why()don't()<+:where()^from()-mul(558,527)@from()$!mul(838,414)where()-/mul(810,111)'how()who() :,where()mul(355,829what()'%^[mul(196,488)[mul(547,815)-how()$when()~ ~how()mul(24,761)!from()%]%?>mul(950,754)mul(649,683){>where()select()mul(771,439)mul(236,961)@what(),~what();^how()mul(791,10))why(),mul(278,737),why()<@~,]?from()do()+#/;} (/^when()mul(139,448)+%^(@ what())mul(122,226)select()[]select():mul(890>when()&what(508,897)select()>~{{{}mul(831,320)from())how()how()who()'mul(283,391);#@mul(310,864)&$-@!:where()mul(869,883)<$}@+<))mul(380,96)%?~ when()how()mul(629,878)#what()who()mul(888,359)$&*![&{~who()'mul(820,290)from()!{/(?,@^~mul(34,230);,don't()why(737,412):?mul(66,718)what(376,732)mul(315,501),:mul(706,831)when()mul(9,585)select()&from()mul(612,24) + )what()]'why()how(654,256)-mul(806,436)!/>~select():;'$from()mul(899,742)[%~mul(736,580)@where()who()why();how()>mul(23,836)when():when()}{}mul(715,293):mul(282,580)from()$?/*>mul(201,586);#;where()mul(118,230)who(){~!@!mul(88,537)#}-^/~mul(910,268)mul(976,63)^&{( :'mul(458,717)$$-how()^-]&+!mul(984,138)>;@where(752,136)mul(697,113)mul(124,665);!select()&how()what()mul(829,781)mul(380,512){!/<(]from()mul!@from():how()}<;(where()mul(206,188)>*how()%*when()mul(702,947)select(36,946)%}why()&+mul(129,741){/<)mul(16,381)how()what()*&{'}mul(192,91)who()$+&++mul(250,605)[[}select()-@,who(798,362)@don't()#how()} {?,who():mul(359,185)who(){ mul(467,606){why()-select()/*?mul(180,855)why()mul(134,121)!;'@~why(187,921)mul(437,28)mul(176,665)*?*!from()who()mul(432,913)[how()when()what()^/mul(277,854)$mul(311,503),%how()]/mul(290,640)where()mul(945,575)@where(394,615)why()from(){where()/when()}mul(186,609)mul(105,239)&><)select()when():!mul(352,943)[ how()'why()#?how()who()]mul(148,156)~mul(797,298)#&-(++where(36,220)(~mul(141,332) mul(963,953)mul(79,791)~#);who())mul(465,458);#when(243,832)>#$*!?mul(977,49)where(808,80)$~]mul(84,878)where():(<< mul)/ :; mul(698,14)when()what()'>mul(455,546)%where()&@;when(491,752)$mul(185,720)?%]from()}how()%mul(402,280) #what()[[%' mul(612,36){when()mul(159,470)@*mul(238,734)}?from()why()' do()@who()mul(172,976)](;/what()-(how()$@@'mul(84,598)<@where()?what()<{?when()mul(162,924)mul(545,472)select(886,293){$when()from()//*mul(59,957)^*why(31,601)mul(608,367)'?@mul(915,987) +[mul(678,85) mul(501,729)-how()how()&select()($^$~do()!-what()-^;mul(682,420)when()mul(469,47)why(119,43)}~mul(699,30)?%>who()?{'mul(264,568)<}+!who()mul(579,479)mul(642,809)/,+>)<[mul(351,839){%(where()-}$mul(240,335)mul(475,338)^who()[{$@when();/mul(335,996)[+mul(954,892):when()what():who()mul(703,909))^,$'(what()do()&mul(675,270)%*];do()$/select())#]#*mul(463,143)}how()when()!$]do()mul(832,164)-what()$select(),%: mul(656,225)where()where()//mul(962,720)>-what()?!do()when()why()]how() $#mul(763,253)[+when()select())~when()mul(353,550){when()mul(664,37)mul(346,65)how()'%how()>select(310,753)mul(979,820)#[ mul(252,202)when(557,299)mul(665,232)when()((@&&%when()select()do()what()mul(730,599)[mul(163,61)why()/mul(235,484)^&don't(),^{~mul(476,543)why()mul(729,497)select()],mul(344,943)#;mul(645,722)[)why(258,3)-who()}-mul(120,526)what()%?/}mul(892,273);&when()mulwhen():when()[[%)~ [-mul(374,778)why()/~'mul(56,465):>%&why()what()who(5,307)$'mul(59,457)what()#<{how(){~who()when()mul(79,949)how()mul(333,172)+@)!*{%:-mul(429,234){< +when(),(}}!mul(19,906)%<,@+from()from())mul(311,428)what()-/<,$!when()?mul(147,63) from()!why()^where()mul(579,972)}+don't()?how()[#$:*#mul(494,424)@&>where():mul(923,253)%who()when(527,372)+]mul(926,810)why()from()mul(903,715)^mul(558,623)]^${ $%who()}when()do()-^what(501,771)#who()mulwhere()(-^%mul(536,670)%who()}why()'{mul(166,387)$:{+)<'?;+mul(723,383)%^^<%mul(17,614)#~*:why()#mul(523,552)?mul(603<#$#)>?'don't()';why();mul(488,276)where()what()>#:)@},mul(220,859)who()how()@!}mul(963,423)<*why()?from()}mul(407,10),@@how(457,318)$ %{?mul(449,618)what();mul(353,499)/]select()from()'<#?;who()mul(203,534)who(){(}/]<@-mul(382,560)',what(315,260)<${{from()what()who()mul(835,840)-+{from()(how()>(mul(16,437)^what()};)mul(877,407) ,select()why()'#~{(mul(850,948)mul(294,578)?{how()mul(588,142)' ,what()how()['mul(636,368)]/from(242,666):{]how()mul(890,543)&mul(608,298)<>when()mul(723,323)!why() where()/mul(865,602)^where()^mul(459,811)$'$&mul(927,406):mul(306,94)+[when()/#from()$select()mul(951,748)select())when()where()mul(498&/#]{{/select(),~mul(406,674)mul(217,369)+')/*how()%'mul(858,734)}:[where()%mul(814,477))%why(920,210)#>>*~who()select()mul(62,156) + ~&!?;{^mul(50,131)*+;[mul(721,655)~^)mul(554,894)>where()}from():,$mul(168,674)from()mul(801,339)what()mul(198,103)>^%!,@[mul(990,341)[<]~ %,~from()(mul(106,659)#'%(why()mul(534,944)select()',$mul(983,446)mul(589,257)[#'+~>#!mul(259,207);:select()#~~mul(570,191)mul(9,323)from()$mul(696]) how()}~$what()^mul(286,33)select(932,233)when()^~+ ~!mul(257,445)<~where()&~~from()?mul(659,273)@& where(981,521){><{/don't()mul(794,832)when()>when()mul(416,516)-what()#/do()why()/?>how()%;where()?,mul(900,44)select():'select()>mul(956,922)mul(534,313)+,${*/*mul(146what()?[why()}mul(846,806)#}%/where()-who():mul(640,359)mul(635,853)[*mul(603,687) :@(who(855,947)when(562,546)where()$-&mul(12,525)how()' ;mul(876,521)<>mul(798,388)>select()?{-,#who()mul(308,935)+when()where())mul(139,62):}}%mul(425,786)from()%/from()%mul(275,112)+mul(913,858)>'/}from()'(from()who()mul(924,718)-what()~*who()from()mul(974,670)^}:* @mul(323,427)-from()$]$<:+)mul(173,489)select()':+#%why()mul(513,137)!how()where()]mul(90,721)!why()]from(){;)from()mul(615,731)@^;why()mul(38,151)}>from()& ]mul(904,102)+#mul(503,138)~)!([where()%mul(920,823);mul(584,684)?select(27,630)>what()]from()/mul(389,580)]^how()who()<%?mul(351,754)^{;%+)mul(693,528)$what()+?^don't();when(581,539),mul(581,172)who()!(mul(491,647)'where()?#who()'mul(550,759)mul(687,686)mul(849,285)when(613,863)do();~!&why()mul(122,69)(what()['mul(167,600)~how()$from()why()mul(174,781)}mul(821,889)'%how()select())from(939,434)[#where()mul(688,766)~how() select()#^$%mul(572,90)where()@mul(170,232)when():' ,?do()#[&#;#^who()who()mul(599,515) ,!-how()'{^mul(751,829);where()why()&{?when()mul(751,40)?'what(),how()select()mulwho()when()'~}mul(712,196)when()>+;])where()mul(367,204)why()]why()(who()?;mul(56,507)}mul(845,878)<,>%)%>;&%mul(856,426)}#[{why()from()#who()~>mul(330,878)+where()when()?@?mul(783,827)/&>,why()who()-when()mul(447,463)!#~} [ *from()mul(990,245)>mul(19,581),from()}?&$[-mul(84,285)?^[!how()mul(703,674)/{**,!mul(833,486)%select()~what();&)[}where()mul(742,827),mul(605,535)-mulwho()from(793,741)when();}]who()#+~mul(100,3)}:;,from()mul(159,606)where()($what()}mul(134,409)[when(359,121))!why()when();mul(933,229)from(){>%#:$[-}mul(954,530)&-#}'*mul(614,803)where(): /'where()why()/mul(465,61)~do() ')why(560,602)[#mul(994,604)[how())when()(mul(284,925) -mul(271,788)%(~{^*where()who()mul(612,425)^%,mul(910,745)/(how()^((what():how()mul(732,779)mul(698select()who()~%& ,mul(919,612)select()'select()when()~from()'mul(244,550)mul(361,26)@!>:mul(73,855)[;{'^>when()'+mul(948,339){&'&%#select()@why()mul(118,943) [how()({'?mul(639,13) + >-where()+/mul(612,127)-%#]+select()mul(71,341&~[when()(what()(&#{mul(613,682)**from()(>,!mul(822,212)from()%{select()(,;when()don't()!select()select()>select()*(mul(105,577):mul(765,221) &select(803,323)what()@-%}~mul(130,279)who(92,379):{%?what()+mul(114,722)+&&~from()what(),!?mul(969,103)> why();]@when()*]mul(391,680)-{select(460,460)&mul(513,976)>mul(212,86):[@mul(771,766)what()~;+]where()what()(mul(600,442)?<#who()how()'who(740,254):(mul(196,517)/(don't()<%@what()[mul(320,909):who()((when()/^>mul(263,979)*&where()!why()$mul(484,668)mul(724,359)]~!where()what();@mul(820,923)mul(636,398)?who()~from()mul(85,799)who()-%)why()($mul(615,634)who()%^how()%don't()why(124,8)?/^^{mul(600,813){select()<'from()!mul(611,346)mul(513,901),%who()^>*$don't()}@?@@why(872,343)+$mul(382,928)]%/&how()who()^select()select()mul(142,954) !+/how();?)!mul(978,138):(^select()>who()~where())mul(679,110)from()what()/@*<;how()mul(75,702)why()mul(367,513)~<$select()/[!^@[mul(868,828)@%mul(387,548)+]mul(774,392)where()&{}when()how()how(155,120)mul(569$,who(572,565)'#$mul(248,341)<who()?how()how()from(),,mul(972,116)+-%]-{-]/]mul(360,448),where()how()where()*$what()mul(441 )$select()mul(200,486))@;+[}!how()mul(5,767)how()+~why()-*&@mul(622,833)*where())mul(594,662)*>?where()!mul(598,524)mul(540:;$from()*where()%#+select()who()mul(588,233)*%why()select()?]what()<~mul(896]how()how()who(812,810)$$<<][mul(158,463)#>mul(304,924)from()select(466,292)select()mul(165,790)}?)]mul(350,950):$why()%+@^$what()/don't()'where()-:>mul(991,496)^>*[+from()mul(857,475)[)/-/<&don't(),)&$why(502,570)*mul(325,595<#who()mul(155,892)*{?why(23,519)#*$mul(194,882)mul(66,512){)mul(50,987)#who()where()how()select()+/mul(282,223)>*what()mul(644,695)[- ^]why(){mul(837,295)when():~+who()[?!select()mul(576,262)select()from()who()^&!&select()%don't()++why()select()when()?,mul(535,959)what()<&&+*~ mul(289,483)when()mul(409,29){+mul(478,216[mul(455,288) + mul(485,849)%'&/} #why()mul(337,670)}&when(292,584)mul(291,636)$<,}mul(873,787)mul(583,597)from()%-{-(+!do()]?mul(508,735)where()+<[*,[^#mul(356,730) why()^what()@?where(558,563)!mul(254,728)mul(573,97)'when(){[!mul(847,358)>+-%[mul(445,707)~<+< *&who(192,588)/mul(339,368)why()?>how())*&when() mul(807,43)don't()$@%who();&(how()mul(719,162)#{(from(),;mul:~-where()%who()how(84,44),mul(970,95)where()(/]how():mul(223[;'?why()!/how()@@who()mul(507,673))^mul(977,524)from()select()^}{#)when()*mul(454,303)%select()*@,mul(563,289)*}who()<}<;why()&mul(673,375)^where()~mul(637,689)'*^who()?don't()who()where()mul(347,707)[#mul(714,896)]mul(249,387)mul(991,762)from()when()where()how(553,916)-mul(116,473)& {who()mul(934,426)#)}from()mul(305,521)why(583,561)-;<}/how()mulwhat()<@&mul(667,932)%select()%mul(196,687))select()*do()from()/what()select()}mul(141,484)+]from()!'^how()who()[$mul(493,253):)&$;[<]mul(663,997) {#@~:#-!mul(869,651)?*@/<#--do()mul(584,519)%select()what()who()-(!@how()don't()<,[!!;where()<^)mul(670,564);$what(),}mul(584,531)-(*mul(727,546)$:how(410,917)select()mul(447,208)'who()( ')&mul(476,15)how()where()^what()mul(332,458)what()?^where()how()how() {&how()mul(265,666)+(-~$mul(341,155)!,where()[mul(302,949);]select()-mul(459,712)-,+{$$+why()(from()mul(764,395)what()]!:do()$where()select():(when()when()where()mul(504,781)/'[why(65,459)where()**(select()%mul(215,820)(how()#{from()@why()do())$+?(*mul(59,437)!why()when()$)%)(when()mul(496,71) ]mul(265,963)/}mul(26,629)why()@]?-where()mul(918,981)#{@mul(179,990)when()%how()# ,mul(762,324)?from()%from(613,182)from(983,106)$!+mul(403,875)/>when(695,810))}when()@mul(992,141)*^who()when()what() do()how()why())[{[]&why()when()mul(156,843)!;}/do()/<$mul(707,716)*why()'(mul(534,614),'((>mul(89,31)[-what(943,12)]from()-$mul(663,578)!^>mul(726,923)what():; ;$don't() mul(660,32)when()'what()^-]mul(684,845)@+#>#^~/^%mul(385,586)%what()mul(800,106)#why()mul(960,402)<,&{%what()]select()mul(289,89)%){>?+//mul(23,303)what()select(708,763)where()%how()>%mul(224,519)+ ]mul(152,297)]mul(49,650)why()<)%where()mul(783,630)#asdlfksdofijsdfoijasdfjsdfo diff --git a/day4.txt b/day4.txt new file mode 100644 index 0000000..567602b --- /dev/null +++ b/day4.txt @@ -0,0 +1,140 @@ +AAMXMSMMMSMMSSMMXMASMAMXXMAMAMXXMASMXMXXMMMXMMXMAMXMXSMMMXMXSAMXSASXMAMXAMAMXSXSSSMXXMASAMMMMASXMAMXAMXAXMASXMASAMXSSMMSAMXAXXAMMXXXXSMAAMAM +SMSSMMMAAMAAAAAXMAXAMAMXASXSSMMSMMAXAXXASAXAAXSMMSAMMAAASXSASASAMXMMSAMXMMAMMMAMMAMAXMXXMMSAMMSASASASASAXMMXXMASXMASAAAMAMXXMAMXMMMXXAMXXMAA +MAAAAXSMSSMMSXMMXMSSSMMXMAXAXSAXASMXMMSMMASMSMXAASAMAMMMXAMASMMAMXMASASAASAMAMAMSAMSXSSMSXXAXAXAMASAMAAXMMAMXSAXMXMSMMMSSMAASMSMAXAASAMMSSMS +MMMSMMMAMAXAMXMSAMAMAMMSXMXMMMXMMMMAAMMXMMMXAMMSMSMMXSAMMAMAMASXMAMXSMMMMSAXXSSXXASXMXSMXASXMSMSMXMAMSMSMXAMMMAXMAAXAMAAAMSMAAAMAMSMMAAAMAMX +SXXXXXMAMSASAXMAXMASMMAMAXMXASMSMAMSMSMAXSASMMAAAMMMASAXSAMMSAMAXMXAXXMAMMAMXMMMSSMAMAMMMMMXAAAAMAMAMAAXMXASAMXASMSXAMMMSMAMMSMMXXXASMMXSAMX +XAMMMSSSSXAMMMSAMMXMMMAMMMAMSAAAMSXXAAXAMXMMXMSSSMAMXMMMSASAMASMMSMMSMSASMAMXAMMMAAAMAXSASAMXMSMSASASMSMMSASMSSMXAXXXMXXMXMMAMXMMASAMMAMSMSS +XXSAAXAMXMMMAASAMSXSASMSSXSXXMSMSMAMSMMXSSMXXXAMAMXXMAMXSAMXSAMMAXAMXAMAMMAMMXMAMXMMMXMSASXSXXXASMSXSAMXXAMMAAAXMMMXXSSXMASMMSAMAXAAXMAMXAAM +XASMSXXMSXMSMMSXMAXSAMXAMAXMSMMXMMAMXAXXXMASXMXSAMXSSMMMMAMAMXSMSSSMXMMSMMXSMMSSSMSSXXMMASASXAMXMAMAMAMXMASMXMXMAMXXMMMXSAMAASAMSSXMMSXSMMMS +SMXAXMAMSAMXMASMXSMMAMMAMXMASAMXMSAMSAMSAMXMAAXMASMXAMXXSMMMMMMXAAAAXXAMASAAAAAAAAAXSAXMXMAXMMXAMXMAMAMASXMXMMASASXXMAAMSAMMMMMMMAASAMXXAXAA +MXMXMSSXXAMXMASAAXMXSMSSXMMAMAMAXMAXMAMXAMSSMMMXMMXSXMMXSMMASAAMMSXMXMMSAMSSXMMSMMMSMXSAXMSMMMSMSAMXXAXXSMMAMSASASAMSMSXSAMMSXMAMSMMASMSMMMS +SSMMXAXAMSMSSSMMMSAXMMMXAAMSSXMXSMMMMSMXAMXSAMSASMXMMMSAMXSASXSXAMMMMMAMXXMXMAMXAMSMMASMAMAAAXAAAMSMSSSMSASAXMAMMMMMAXMXMAMSMXXAXXASAMMAXXXX +XAAXMMSMXXAMXMXAAMAMMASMMMXXAASXSXAAXMAXMAMXMMMAMXXMAXMAMMMMSMXMMSAAAMASMSASMSMSSMAAMAMSAMSSMSMSMXAAAAAASAMMSMXMXASMMSSMSMMAAMSSMMXMAXSAMMSM +SSMMSAAXAMAMMMXMAMXAXAMAAMXMSMSAMXSSSMAXXAXMSSMAMSMSSSXSSMAAXAMAASMSMSMXAMAMAAAAASXSMMMSXMAAAXXAXMMMMMMMMAMXAMMSMMSAMMXAAXMMXMAAAXSSSMSAMXXA +MMSAMMSMMSAMAMXMAMXSSMXSMMAAAXMMMAMAMMAMSMMAAXSXMXAAAXAAAMMMSXSMMSXMASAMSMSMSMMMMXMAMXAMMMXSMSSMMMXMXXMXMAXXASASAMXAMXMXMSXSXMSSMMMAXAMXXMAS +SAMXSAXAMAXSSMSAMXAAAAAXASXSAXMASAMAMMAMAMMMSXMMMMMMSMSMMAMASMXAAMAMXMAMMAMXMASMSMSSSMASMSXXAXAXASXSMXSASASXXMASMMSMMMXSAXAMXMMMMXMAMMMMAMAA +MAMSAMXAMXXAXASAMMMSMMMSAMMXMMSASASMSSXSAXXAXAMASAMXAAXXXXMAMMSMMSXMXSMMMAMAMSMMAAAAAMAAAAXMXMMSMSAAAASAMASXXMMSAAAAAAMAXMAMSXMASMMMXAXSSMMS +SSMSAMSAMXMAMMSSMAAAXMXMAMXXAAMAMAMXAAMSXMXXSSMMSASXMSMSXMMMSAAXMAAMASAASMSSXMASMSMSMMMSMMXMAAXMAMMMMMMAMAMXXMASMXSSMXAMXMXMSAMAXXAMMMMXMAMX +MMAMAMSSMMAAAXSAXMXMMXAMAMSSMMSSMMAMMSMSAMXMXAMMMMMAMMAXAXAAMMMSMMSMASXMSXAMASMMXXMXMAXAAXXSMSMMSMMXMAXAMAMXMMMSMAMMMMSXXASXSXMAMSXSAMXXXAMX +AMAMMMMXMASXSSXMMSSMSSMSASXAAAAAAMAXAXMXAMAAXMSSMSSSMMMMSXMASAXXAXXMXSXMMMXMASASAMXMSMXSXMMMAXMMMAMXMMSMSAMASAXMMMSAAXMXMASAMMMXXMASMMAMXSSM +MMASAAXMXMMAMMMSAAAAAAXSMMXSMMSSMMXMASMMXSMSMXAAXMAMMAMAMXMMMMXMAMXMAXAXMASMXSAMXSAAXMAXAXSMAMAAXMMAAMAAMXMMXASXXXMMMMXXMASXSAMMAMXMAMXSAAAA +XSASMSMMMAXMSAAMMSMMMMMMSMXXXAXAXXMASMMAAXAAAMSMMMMMSAMSXSAAAXXASMSMXSMMMSAMXMAMXMASMMASAMSMMSSMSSSXMAMMMSXMSAAMASXAXAMXMMSXSASMSXMSXMAMAXAS +XMASAXASXMMXAMMSAMMXAMAMMSSMMSMSMSSXMASMMMSMSMMXXAXXMXSMASXMXSMXXAAXXAASXMMSMSAMXMMMXMASMXMAXXAAXMASAMXSAAAMAMXMAMSMSSMASMXAMAMXMAXXAMASMSMX +XMAMXMAMMAMXMXAMAMXSXMASXAXMAXAAAMXMMAXXSXXSXAAAXSXSXMXMMMMSAAMAMMMMSSXSAMAAAAAMAXAMXMASMSSSMAMMMMMMSXAMXSXMMSSMAMAMXAMASMMXMAMASMMSXMAXAAMX +XSASXMAMSAMAMMMSAMXXASASMAMMAMMMMMAXMMXXSAXAXMMMMMAMMSSXMAAMMXMASAAXAAMMAMMMMMMXMXMXAMXMMAAMXSMSXSAAAMMMAAXSXMASXSMMSSMXXMAAMAXXXXXMASAMXAMS +MSASXSXMXASAXAASASAMXMASMMMSXSXXASMSMAMSMMMMXSAMSMAMAAXAMMSXXMAXSAMMASXXAMXSSMSXXSAASAMXMMSMXMAXAXMSSXAXSMAXASAMMAAAAAXMMMMXSAMSSMASAMAMXAMX +MMMMMMAMMMMMXMXSXXXAXMXMXSMSAMASMMMXMAXSASAXMSASMSMMMMSAMAXXXMXXMAMSXMASXMAMAAXAAMAMXASXMMAMAMXMSMAAMMXXASMSMMMSSXMMXSMAXSAMMXMAAMAMXMAMSSSM +MAMAXXAMASXMASMMMSASXMXMAMMMAMAXMSSSSXMXXMASAMXMXAXSAAXMSASMMMMMSAMXAXMASMASMMMMMSMMXAMMAXSSXSXAMXMAXAXSAMMAMAAMAMSSMXASAMASAAMSSMSAXMXXAMAA +SASMXMASASASXSAAAAMMASXMSSMSSMMSSMAAAMMSSMMXAXMSSSMSMASMMAXXAAAASMSSMMMAMXXMASXMAAAXMMMSSMAMAMMMMSMSMSAMXMSSSMSMAMAAAMSXMSAMMMMMXXMASXXMXSMX +SXSAASMMAMXMASXMSSXXAMAAAXMAXAAXAMMMMSAAAAMSSMAXAMAMXMXXMAMSMSSMMMXXXAMASXMASMSASMSMSAXAMMMMAMAMMMSMAMXAAXAAXMAMMSSMMMXAXMXSMMSSSXSXSAMSAAXS +MASMXXAMXMSMXSAMXXXMXSMMMSMMXSAXMMSAXMMXSMMAASMMSMMMSMASMSXMMAXAASMSSXXAMAXXMAXMMAAAXMMMSMXSMXAXASAMAMASMMSSMMAAXXAAMXMAMXAXAAMAMAMAMMAMASMA +MAMMMXSXSXAASMAMXMASXAAMMXMXAXMXSASMSMSAMAMSXMXAAAAAAMAMAXMAMMMMMMAMXMMSSMMXMAMXMXMSAMAAXMAMASMSMSASXSAXXAAMAMMSASXMMMSAMAMSMMSAMAMXMAXMMMXX +MASAMMMAMMMXAAAMXAASXXMMMAMMASXXMASASAMASAMXMXXSSSMMXMAMMMSMMXSAXMAMMXAXAXMXAAMXMXXMMSXSXMXSAXAAASAMXMXSMSAMSXXXMXAXXASXSXXXMASASXSXSXXSAMXS +MAXASAMAMAXXMSMSXMASAXSASAXXAMAMMXMMMAMASASAMSMMMMMSSMXSXAAAMAAMSXMSAMMXMAMSSMSXSAXMASMMMMMMXSSMMMAMAAMXXMAMXXAMXXMMMMSASASAMAMXMMXAXXMSASAM +MSMMMMXAMMSXMAAXXMAMAMMASMSMXSAMXSAXSXMASASASAAAAXXAXMAMMSXMMASXSAMXXAMASAMAAAAAXMMXMXXSAAXXMAXAXXAMSXXSASAMAMSXSASXMXSAMAMXMMSMXAMAMMXMXMAS +XMASAMSSSSMMSMMMXSXMSMMXMMAMXSASXSAMAXMASXMXMMXMSSMSXMASMMSMMAXAMXMAMXXASASMSMMMMSMSMSASXMSMAMSXMSSXMMASXMMXXAAASAAXAAMMMSMMMSAMXSAXSAMXMSXM +XSMMAXAASMAAXMSSXMAMAMXSASASASAMXMAMXSMXSASXSSSXAAAMSMXSAAASXAMXASMMSMMASAMAMMASXSMAAAXMASMXSXSAMAMAXMXMASMSSMMXMMMMMMSAAAAAXXASAASAMXMAXMMM +AMXSXMMXMMMMMAAMASMMSXXMASASXMASXSSMXXMAMXMAAAXMMMSMAXSXMXMXMXXMAXAAAASXMMMXMSAMMSMMSMMSXMAAXXSAMAMAMMMSAXAAMXXAAAXXMMXMMSMMSXSMMSMMSASXXAAS +SXASMMSMXMASMMASAMXMMAMMMMAMAMASMAASXAMAMXMMMMMAXXAMMMMASXXXSAMSSSMMSMMAAXXXMMXXAXAMXAXXXMMSSMSMMASASAAMMMMMMSSSMMSMASXMMXAMAXXAMXAXXAMSMSAS +AMMSAAMAXXAXXSASASAMSAAXSSMSMSMXMSMMSMSAMMSSXMXSSSXXSAMAMAMMXAXAAXXAMASMMMMMXASXSSXMASMMXMAMAAMASMSAMMMMAAAAXMAMMAAMAMAMASAMAMMAMSMSMSMAMXAX +MXSXMMSMMMMMXMASASAXSSXMAMAAAMXSMMAXAMXAMAAMASAMXMMAMAMMXXMSASMMSMMXSAMAMSASMXSAAAXSXASMAMASMMMMXAMAMSASMSSSMMAMMXMMMSSMAMXMAAMAMAAXAXMMMMSM +XMMMSASAMXAAMMAMMMMMXMSAMMSMSMASAMXMASXMMMASXMXMASXSSSMSSMXMAMXXXAMAMXSXMMAMMMMMMMXMMSASMSAXMMXXMXMAMMAMXAXMASMMMAXAAMXMASMSMSSSSMMMMMXXXAMX +MAAXMASMMSMSSSSXSAXXXMAMXXAXXMMMAMXMASXXASMSMMMSMMSXAMAASAAMSMSXSXMAXMMMSMSMAAXAAXAXMXASMMMSAMSAMMSASXSSMXMSASAASASMXXAMAAXAAMAAAXXASMMMMSSS +MXSSMAMAAAXAAAMASMXXXSASXSSSMSMSAMSMXSMSXSASXSASAMXMAMSMXSASAAMMMMSMXMAAXAMXSSMSXSMXAMMMAAXSAMAAXXAXMAMAMXXMASXMSMMAMSMXSASMSMMMSXXAXSASAMMM +SAMXMASMXSSMMMMXMMSMMMASAAXAAAASXMAMAMAMASAMXMMSAMXMAXMAMMMSMSMAAMXXAXMSMSMAXAAXASMSMXASMMMXMASMMAAMMSMMMMXMAMAXMASAMAAXMAMMAMSXMAMSMSXMASAS +MMSASMSAAXMMMXMXXAAAAMAMMMMMSMMMSXMSSSMMXMAMXMASXMAXMAMXMAAXXMMSMSAMXSAAAXMAMMMMAMAAMSMSMMMAMAMAXMMAXAXXAXSMXSXMAASASXSAMAMSSXXAMXMAASMSXMAS +XXMXMMMMXXAAMASMMSSSMMASXAXXAXXAMMXAAAMSSSSMSMASAMXMSASASMMSMSAMXMASAAXXMXMXXXAMAMMMMAXXAASAMAXMMXASMMXSMMAXAXMXMMSXMAMMMAXAMXSMSSSMXSAMXMAM +MSSMSXXMMSSMSAXAMMMXMSASXSSMMSMXSAMMMMMAAMAAMMMXAMAXMASAMSAAAMAXXXMMMSMMXMASMSMMXXASMSXSSMMXSSSMSXMMASMAMMMMMXAMXXXMASXSSSSSMMMAAASXASXSAMXX +AMAAXMXSAAMXMMSSMSAMXMASAXXAAXMAAMXXASMMSMMAMMMMMMXMMAMMMMMSSMSMSXMASAXXAAXAAAAXSXMSAAAXAMSAMAAASAXMAMXAMASMSMMSXMXMAMAAAAAAMXMAMSMMASAXASXX +SSMMMSAMMSMAAMAMXMASXMXMXMMMMXMSSMXMXMASAAXMAMMAXSMMMXSMSSXXXAAAMMXXSXXXXSAMXMMMSAMMMMMMAASAMMMMMXXMAMSMSMSAAAMSAMXMASMXMMSXMAMMXXAMAMAMSAXA +XAAMAMASAMXMMMASXSAMXSXSASMXSAMMAMMSMSSMXAMMXASXXXAAMMMAAXSAMSMSMSMAMMMSAMXSXAAAXAMXMSSMMMSAMMXSAAXSAMAAAXMXMXMSAMXMASXMXMAASAMMAMAMSMMMXAMM +SSMMXXMXXMASXMASXAXXMMAXAAAASAXMAMAAXXXAXSMMXMXMASXMSAMMMSMXMAAAAAMAMAXAASAMXSMSXMMXASXAXXSXMSAAMSXMASMXMSXAXSMXXMXMXXMAAMXXSXSMMMXMAAAAMMMM +MAAXSSSXASASAMASMMMSXMAMXMMMSAMSSMSSSMMMMMAMMXMMXMAASMSMXMAASMSMMXSXXSSSXMASAMXMAMXMSMSXMASMMMMSAXMSMMXSXSAMXAMAMSXMMSASMXSAMASASASXMSMSXMAS +SSMMSAMXMMXSAMASAXAXXMASMSMXMXMXMAXMXAAAAMAMSMSMSMMMMAAXSMXMMAXXXMMXAAXXXMSMMSAMAMXXMXAMXASMAAXMAMMXAASAAXXXXMASAMASASAAAAXAMMSAMMASXXAAMSMS +XAMXMMMSXAASXMAXXMSSXSAXAMXMASXMMSMSXSSXSSMMSAAAAXAAMXMXMAAMSMAXXAAMMSSSSXAAAMASMMMMMMMMMMSXSXSXSXSSSMMMSMMSSXMMSSXMAXXMMMSAMXMXMMAMMXMAMAAM +SXMXMXAXMMXSSMMSSMMXASASXSAMASAMMAMXAXAXMAMAMSMSMXSMSAMXMAMXAMMMMMMMXMXAMMMMMSAAAAAAAAAAAXMAMSAAMAMAAXMXAAXAMASAMXXMMMMAXMXMMMMMXMAMSAMXSMSM +XMMAMMXSMXXMASAAAAMMMSAMASMSASAMXSAMSMAMSAMMMAMAXMAAAXSAMXXXXSASAMXSXMMMMSMAXMASXSSMSSSSSMMAMXMXMAMAMMMSSSMMSAMMSAXSAAMAMXXSASASASXMXAMAMMAM +MSSMSAASMSMMAMMSXMMAXMAMXMASXSXMAMXSAMXMAXMAXASASMMMMSAMXSXMASASXMMAAMMMAAMMXAMXAAAAMAAMAASMMXMASXSASXXMXAMXMAXSXMMSXSXAXMASASASASMSSSMMMXAM +AXAXMMXSAMXMASAMAXSSMSAMXMMMMMMXAMMMMXAMXXXXSXMASAXXXXXXAXSAAMMMXMSSSMXMSSSXMSAMMMMMMAMMMMMASAXMAMMMAMXSMMMASXMAAXAMAMXMSMMSMMMMAMAXAAXAAXSX +SSMMXMXMMMXSXSASXMMXAMMMMMAAAASMMSASAASMMMMMAAXXMXMMMMMMMSMMMSMAAXXAAMSAAAXAAMASMAMAMSMMXXSXMAXAMMSSSMMSAXMXSAASXMMSAXAMXAAXAAXMAMMMXMMMSXMA +MAMXSASXXMXMMMMMAAAMXMAAXXSXSMSAMSASMXMAAAAXMSMXMXAAAAAASAXAAAMMSSMMMMSXMSMMMSAMXAMAXXMXSXAAMMSSMXAAASAMMMXMXMMMMMASMSMSSSMSSMSSSSSMSMSXMAMX +XAMXMAMMAMXMASASXMMSSSSSSXMAXXSAMMMMMASXMSXXAAAASXMSSXSXSASMMMSAMMASMASAMMASAMASMSSMMASXMASXXAAAMMMMMMMSXSAMMXAAXXMXAXAAAAMXAAAAAAXAAAXMMSMX +SMMAMAMXAXASXSASXASAMAAAXMMAMASXMMXXSAMAMAASMMSMSAMAXMXAMMMXAAMASMSAMASXMMAMXXAMAMAXSXMASXMMMMSSMAXSMSXAXSASXMMMMMMMSSMMSMMSMMMMMXMSMSMXXAXS +AAXXSXMSMMASAMXMXXMASMMMMMMASAMXSXAMXMSSMMMAAXXXSXMAXXMXMXAMXXSAMXMMMXSXSMMMSMMMAMXMAMSAMAMXAAMAXXSAAXAXASAMMSMXMAMAAAXAMXXXMXXMXSAXAAMXXMMA +MSSMMAXAMMSMXMXMAMSMMXMAASMMSAMASMMMAMAXAXXSSMAMMAMMMSXMMMSSMXMMMAMXSAMAMASAAAXXMSSSMMMXSAMXMSXMMSAMXMASMMAMAAAASAMMSSMXSMMMSMMSASMMSMSMAXAA +XAAASAMXSXMASXMSAXAXSXXMXSAASXMAMAASAMASXMMXAXMAMMMSAMXSAAAAXMAXSASAMASXSAMMSMSAAAAXXXMMSASMXMASXSMXXMASXSXSSMSMSASXMAAXMASAAASMASAMXXSMSMSX +MMSXMAAAMAMSMXAMMSXSMMSSXXXMMXMXXSASXSXXAASMMMSSMMAMAXAXMXXXMSAMXXMAXXMXMASMAAXMMMSMMMSXSAMXAMSMAXXMXMMSAAAAXXXASMMMSAMXSXSSMSMMXMMXXAMXMXXS +SXMASXMXMAMXMMSMMMMMMAAMAMSMSXMXMMASXSMSSMMAXMAXAMXXAMXSXSAMXMASMMSSMASAMXSMMSMMAXXASAMXMAXSMSMMMMXMAXMMXMXMXSMMMAAXXAXAXXXAXMMSASXSMAXXXAMX +AASAMMMXSASXMAXMASAMMSSMAMAAXAAMXSXSASAMXAXXMMASMMSXXSAAAXMAXSAMAXAAMAMASXSAMAASASXSMASMMMMAMXXAAXMSXSAMXMMMAMAMMSMXSSMMSSMSMMASXSAASAMSMSMX +MMMMXAAAMAMMMSXSAMXXAAAXSSMSMMSMMSAMXMAMMSXSSMAXAAAXAMMSMXMAMMMMXMMSMSXMMXSAMSMMAMXXMMMMASAASXMMMXMAMXMAMSAMASAMMMSAMXAXXMAMXMAMMMMMAXMSAAAM +XSASMMMXXAMAMMAMXSXMMXXMXMAMXAXAAMSMASMMAAXSXMSSMMSMXMAXXMMXSAMASXMMAMAMXMSAMXAMSMMMMSAMMMAMMMSSSXMXSAMXAMASXXAXAAMXXSAAMMAMAMAMAAXMXMXMMMSA +SMASXMASXMSASMAMSAXSSSSSSMSMMMSMMSMXAMAMMSSMAMXSXAXMASMSSXMAMAMXAAAMASAMXAXXMXXMXAMAAMAMXSAMXXAAXXAAMAXMMSXMAXSSMMMXAMMMSSXSXSASMSSSXMASAMAX +XMAMXMASAASASMMMXMMAAAAXMAMAAAAAXMXMASAMXXAMXMAXMAMMMXMAMAMASXMMMMXMXMAMSSMXXSSMSXMASXXMAMMAXMMSMMMASXMMMAMXMMAAXSSXSXAAMMMMMMMMAAXMASASASAS +XSAMXXAMMMMXMXMMMXSMMMMMSASXMMSMMXMAXSASXSMMXMMSMSSMAAMASMMMSAAAXXXXMSAMAASXSMAAXMSMMASXMMSSXXAAXMMMAMAMAMMSXXSXMXAAMMMMSAAXAAMMMXMSAMMSAMAS +MSAMSMSXMXSMMXXAMMASAMXAMXSASAMXSASXMMAMXAMXMMAAAAAASXMASAAASXMMMAMMMSAMMXAMAXMMMAAAXAMASAMAAXSASXAXXASAMSAXMXMMSMMMMASASXMSSXSASMMMMSAMAMAX +AMAMMAAXSAAASMSMSAMXXSMMSAMAMXSMSASXMSAMXSAAAMMSSSSMMAMASMMXSMMASAMAMMMSSMMSSMSSXSSSMMSXMASMXMMAXMSMMMXAXMASXAXSAAAXSAMAMXXXXASASAAAAMASMMMM +SSSMMSMSMSSMMAAAAMXMXMAXMASXMMMAMAMXMAMXAMMSXSAMXMAXSXMASAMMXMSAXASMSAAAAMXMXAAAMXMXMMAXXXMXASMSMAMAMXSAMXSXMMXSASMMMAMAMSMSMMMAMMMMSMMMAASA +MAMXAAXXAXMASMMSMSAAAXXMMMMAAXMAMAMMMAMMXMXMAAXSXSMMMAMXSAMSAMMSSXMAMMXSXMAMMMMSAMXMASASXSMSXSAAXMSSMXMSMXXAMMAXXMXXMAMAXSAMXASXMASAMASMSMMS +MAMMSSSMSMMASAAMASMSSSMAAASXMMMASXMASAMMAASMAMXMASAMMSMAMXMSASAAMAMMMSAMXSSSMSAMXSAAASAMXAAMMMXMMMAMXAAXXXMAMXXXMMXXXAMMMMSMMASMMXMASAMMAAAX +SMMMAXXAAAMAXMMMAMMAAAXMMMMAAXSXXXSMSXSMSXSASXSMAMAMAXMMXMMMAMMXXAMXAMASMSAAMSXMASASXMAMSMMMAMAMXMMSSMMMMMSAMXMSMSAMXSMSAAASMASASMMMMMMSSMMS +AMAMMSXSSSMSSSSSMMMMXMMSSXSMMXMSMASAXAAAMAMXMAXMAMSMASASAMMMSMSASXSMMSMXMMSMMMMMMSXXMSXMMXMSSSSMMSAMASAXAAXAMMMAMMXSAAASMSMXMASMMAMSAAXXMASA +MSXSAXMAXAMMXMAAASXSAAAAAAAXMXAAMAMMMMMMMAMSMXMMSAAMXMASASXMAAMAXXAXMAMMSXMSAAASXMXXASAMMAXMASXAAMASAMXSSXSXMAXAMXMAMMMMMXMMMASMMAMSSMSMSMMM +XXAMMSMSXMMSXSXSMMASXXMSMMMSAMXMSMSXXSAMXXSAMXXAMXAASMXSAMASMXMMMXSMSASAXAASMXXXAXAXMSAMSSSMMMSMMSAMASAXAMXXSMSMSMMAMXAAXAMXAMXASXMXAXXAAXAX +MMMMASXXASXSAMMXAMXMSMAXMAXXAMXMAAMAASMSMXMAXXMXSXMAAXXMASMMAXSASXMASMMXSMMMAMSSMMAMXSMMXMAMXMASAMXSAMMMMSAMXMAAAAMASXSSMMSAMXMMMMXSAMMSMSMS +MAAMXXASAMAMXMAMAMXAXMAMSXSXAXMSSSSMMXSAXXSSMSXMXMSMMXMMASAMXMXASAMMSXMAXAAMAMXAAXAAMMXXAMSMXSASMSMSMMMAXMXSAXSSSXSMMMXMAAAXSASXXSAAAMMAAXAX +SSSSSSXMMMAMAMMSSMMMMMXXXAMXXMMXMAXXXXMMMMAXMASMMMASXAAMASAMMSMXMXMAXAMMSMMSXSXXMSMXSASXSMASXMAMMAAXSAXSMMASAMXAMXSMMSAMSMMMMXSAAMASAMXMSMAM +XAAAXXAAXSSSXSAAAMMSAMMAMXMXMASAMAMXMXMAXMAMXMXXASMXSMSMMXAMAMMSMAMMXXMAAAXSAMXSXXMAMMSAASMMMSSXSMSMMMXMAMAMMMMAMAXAASAXMAAAXMMMMMXMMMMXMASM +XSMSMMMMMMAAAMMSXMASAMSAMASAMASXSAAMASMSXSASXSMAXMXXSXMASMSMXMAAAAAXMSMSSSMMXMAXXAMXSXMMMMXAXXAASAMAXMAMAMXSSMSMMMSMMSMMSSMXXAXSXSAMXAAXXXMA +AXXAAMMSASMMMXAMAMXSAMXASASASXSXMAMAXAAAASMXAAMSSMMMSASAMXAMMMSSSXSAAAAMAMAXMMASXSMSSXMMSXSMSMMMMASXMMSSSMMXAAXSMMMAAXAAXMSSMXSAMXAMXSSSMMSM +SSMSSMASASXSXMASAMAMMMSXMMSAMASXSMSXSMXMASAMSMMAAMXASXMMSMMSAMMAAAXMSMSMSMSAAXAMXXMMSAXASMMASAMXSAMXSAMXAXXSMXMAXXXMXMMMSAAXAMXMSSMMMXAMXAAX +XAAAMMMMXMMMMSAMAMASMMMMAMMXMAMMSASAAXXXXMXMAAMMXMMMSASASMASASMMMAMAMAMAXAAMSMMSMMAAXMMMSAMAMMSAMASXMMSXMMMMAMSMMMMMSMAMSXSMSAXAXXAAXMAMMXSS +AMMMSMMMSASAAMASASXSMAASAMXMMXXAMAMSMMMMMMAXXMMMSAXXSAMAMSMXXMXMAXMMMAMAMAMAAXMAMXMMSSSXXXMXSAMAXAMXMASAXAMMAMAAASMAASXMMAMAMMMSMSXSXMXXSAXM +MXMXAAAAXASMSSXMASXSXSMSXSXXXASMMXMXMMMAAXMMXSAAMXMAMXMXMSXSSMMSXXXXMXMMMSXSMXSAXSAMAAMMSMSAMXSSMSSSMASMMXXSSMMSXXMAMAMAMSMAMXAAASAMMSAAMMSS +MASXSSMSMMMAMMMSAMASAMMXMMMMXXMAAMXMMAMMSMSAAMMMSMMASAMAAMAXAAAAMSMSMXXAAAXAMXMAMSAMMSMAAAMASMXXAXAAMAMMAMXMMAMMMMXSAASMMXSSXMXMXMAMAMMSMSAM +MAXXAXXAMAAAAAAMASMMAMAAAAASXSMSSMAMSASXAAMMSMSXAASASASXSMSMSMMSSMAAAMSMMSSSXSAMXSAMXMMSXSXAMXMMSMSMMSXMASAASXMSAMXASXMAMXAXSMASAMAMMMAMMMMS +MSSMMMSMSSSSSMXXAMAMXMSXMSMSAAMAAMAMXAMMMMMXMASXMMMASASAXAMAMXXXAMSMSMAAXAMXMMMAXSAMXSAMMXMASXMAAXMASAASAMMMMMMSSSMMMMSSMMAMMXASASXMXXXXMAXX +AXAMMASXAXXAAMMXXXAMMXMSXMMMXMMSSMSSSSMSXASAMXMAMSMAMAMMMAMSSSSSMMMXXXSXMMSAMASMXMASMXAMAXAXAXMAMXXMMMMMAMSAXAMMMXMAXXAMXMMMSMMSAMXASMMMSMSM +XMAMMMMMXSXMASAAMXSMXAAMXMAXMXXMAXXMAAAXMASASASAMAMASXMMSSMMXAAXXXMASMMXSSXXXAMMASMMMSSMXSSMMXMAXMSMAXMMXMSAMSSSSSMSAMXSXMSAMAAMAMSMSAAXAAAX +SSSMAXSAMXMASMMMSAXSSMSMASAXSAMXMAXMMMMMMAXMMXSXSMSAMAMMAMAXMMMMMAMASAMASAMSMMSAMXMAMAXAMXAXXSMXMAASXXMMSXMSMAAAAAAXASMSAMMAMMMSSMXXXMSSMSMM +XAAMXMAMXAMXXAAXMXMAXAAMXMAAXAXSSSXMXSAXMMSSSXMASMMXSSMMASXMXAMMMSMMMAMXMMAXAASASMMMMASMSSMMXMAASMMMMMAAMXAAMMMMMMMMASASXMSSMSAMAAXMSMXXXMMS +MSMMMXSSSXSASMMSMMMMMSMSXMXMMMMMAXAMAXASMAMMAAMAMASAMXAMMMAASMSAAMASXSSSSXMMMMSAMAASMMXMXAAMAMAMAAAAMSAMXMAMXSAAXSMMAMMMAMAMASAMXSMXSAAMMMAA +AAXXMAMAMAMASMAAAAMXAAMMASAXMSSMMMAMMXSAMASXSMMAXXMASXSMASXMASXMMSAMAAAXMAXXXXSXMXMSASMASXMSSSMXSXMAXSASXSMSMSSMXAXMASASMMASXSSMSAMXMMMSAMXS +SAMSAMSAMMSMMMSSMMSMSMXSAXXMSAAXXSASXXMASXXAAAXMSSMXMAASAMMMXXMAXMAMMMMMSSMSMAMXSXAXAMMMSAMAAAMAMXMXXMAMAXXAAMASMMMXMSASXSAMMMXSAMMXXAAMASAM +MAAMAMXAXXAAXAXAXSMXMSAMASMMMMMSAMXSAMSXMMMSMMXMAXMMMMMMMSMSASMMMSXMXAAAAXAAMXMAMMSMMMAXMAMMSMMASXMXSMMMAMSSSMAMMMXSAMXMASXMASMMMXMSMMMSAMMA +MAMMMMXSSSSSMXSAMXMASMMMSAXXAXAMASAMAAMMMXAMAMXMAMSMSMXAAAXMASMSAXASXMMMSSSSSSMXSAMXMXXSXXMAMXMASAXAMASMSXMAAMXSXAASAMMMMMMSXMAMXMSMXAAMXMAS +MAMAMMXAAAAMMAMAMASMSAXMMAMSMMMSXMASMSMAMMXSAMSXSAXAAXSMSSSMSMAMXSAMXMAMAMAMAAMSMMMASMAMXAMXMAMASMMMSAMAMAMSMMXMMMMSAMXMMAMXAXSASMAMMMSXMAMX +XAXASMMMSMMMMAMASXXXXAMXMAMAAXXAAXAXMAMXXAAMASXAMMMSMMAMAMAXXMXMASAMMSXSSMAMSMMMAMSASXASAMXMSAMXSXAMXXMASAMAAMMSMXMXAMAMXMSMXMMASMMSAMXAMSMS +SXSASXXMMMSXSSSXSMSSMASASMSMMSSSSMMSSSMSMMSMXMMMMXAMMSSMASXMSMSMASAMXAASASXXAMXMAMSXMMXXAMXAXXSSXXXSAMSASASMSMASXMMSMMASAAXMSMMMMAXSASMMMAAM +AAMAMMMMMAXAAAXXXAAAXASMSXAXMAAXMASAXAAXMAXMMMXMAMXXAXXSASAAAAXMASXSMMSMAMSAMAXMAXXAMSSMXSXMXSMXAXXMAMMMSXMAMMASAMXAXSAXMSMXAXAMMXMSMMAASMSM +MMMAMAAAMMMMMMMMMMSSMAXMSXMMMMSMSSMAMMMMMAMAASASXMSMMSXMXSMSMMMXXMASMXAMAMSSMMSMSXSMMAASAMAXXMASXMXMMXSAMAMAMMXSAMSMMMMSAMASMSSSMXMXMSSMSAXX +SXMXXXSXSAAAAMXXAAXXMMSSMASXXXXMXAMMMSSXMASMMSMSAAAAASXSAXMAXAXXAMXMXXXSXMMAMSXAXAMAMSSMXSAMXMAMXAXSMAXAXXMAXXAMXMAXAAAMAMMSAAAAMAMXMAMAMMMS +AAXSMMMASXMMXSASMSXXAAMASAMASXMMSSMAAXAXMXAAMSXSMMMMMSAMMSMMSAMSSMMMMSAMMSSMMMMMMXMAXMAXXAMXSXAXXMAMMMSMSSSSSMSSSSMSMSMSAMXMMMMMMMXMSMMMMAAA +MSMSASMAMAMXMMMAAMMSMXSMMMSAMAAAAXSMSSMSMMSSMMAXXXXXSMMMAAAXMAXAAAMAAMAMAAXXAASASMSMSAMSMSMASXSMMSSMAXXMAAAXAAAXAAXXXXASAXMMMSASASAAAXSASMSS +SXAXAAMSMXMAAAXMXMASAASXMAMASMMMSMMMAAXAAMMXAMXMSASMSAMXSSSXSMMSSMMMSSSMMMSSSXSASAMXMAXMAXMXMAMXAAMMMSXMMSMMMMMMSAMXAMMMMXAAAMAMAXMSMSXAXAAX +XMMMMMMXMASXSMXXMMAMMMXAMMSAMAXXXMAMSSSSSMAXMMSASAMASXMXMAMXAAAMAXSMMXMASMAMMMMXMMMAMAMMMMMSMMMMMXSAMXMXMAXXXSXAXAMXSXXAMMSMSMSMAMXAMXMXMMMM +MXAAAXSAMXMAAAMSMMXXAMXMMXMASMSSMSSXXMAXXMSMSASMMAMAMAMAMXMSSSMSAMXAXXMASMSMSASMMSSSSXSAMAAXAAAMAASXSXAASASXAAXMXMXAMMMMSAXAAAXMSMMAAAAAMASX +AXSSXSASAMSSMMMSAAMSMSAMXXSAMXAAMAMSMMMMXMXXMAMAMXMMSAMAMAMXXAAMMMSMMSMMXAMAMAXXAAAXAASASXSSSMSMMXSASASXSXMMMMMMSXMMXXAAMMSXMSMAMASMMMSMSAMA +SMAAXXMASAAXAAAXMMMAAXAXSAMXXMSMMASAXAAMSAMSMSMSMSMAXXXAXAMXXMSMSMXMAXAAMMMAMXMMMSSMMMMAMMAAXSAMXXMXMAXAMXXAAXAMXAXAASMSSXAXMXMSMAMMAMAXMAMX +MAMAMXXAASMSSMSXSASMSMAXSXSASMMXSXSMSSXSAMXAAXAAAAMMMSSMXSSMMXAAAAXMASMMSASXSSMXAAAASAMXMSMXMMMXSAMXMXMXMASMSSSMXMMSMSAMMMSSMAXMASASAMSMSAXM +SSSMASMMMMXAAAAASASAMMMMXMAXMAAASXMXAAXSAMXMXMSMSMXSAMAMAXAAAAMSMSMMMSAASMSMMAXMSSSMMXMAMAMSXSAAAAXASAMXMAXXXAMXXXAXMMXMAAAAXAMMXAAMXXAMXXXX +XAAAXMASAXMSMMMMMAMXMASXSSMAMMMMSAMMMSMSASAXXMMMXXAMASAMXSAMSMXXAAMAMSMMMAMMSAMMAAXAXMAMXAXAAMMSSMMMSXSAMXSMMMMXMAMMMMASMMXSMMSXMMSSSMMSMMMX +MSMMSSXMAXXXXXMAMXMSSMSAAAXMASMXSAMXMXAMAXXXMXAXMMXSAMXAXAXMMXAMXMSMXXXMASMAMMXMASMSMSASMSSMSMMAAAXXMASASXXAASASXSAAASASMSAAAAAAXXAAAAXAAAXX +MXMAXMMMMSSMMMXXSMMXAASMSMMXAAAASAMXSMMMSMMXMAXSAMAMASXMMMXXAMXAAXXMASMMAMMXSMXSAXAMASMXAXXXXAMSSMMASXMASXSSMSAMAMXXMMXSAMSSMMSMMXMSMMSSSMSM +XAMMXMAXAAAAAMSMXASXMMMXXASXMASXSXMXMASAMAXASAXXAMASAMASAXMMXMMXMSAMXMAMMSASXMASAMAMAMAMAMSMMXMAMASAMAMMMAAAXMAMSMMSSMSMMMXXMXMXSSMXAXAAAAAA +SSMSASXMMSSMMAAAMAMAXMXASAMXMAXAMASXSMMASXSMMSMSMMXMMSAMXMSAMXSMXAAMASAMXSXMAXXXMXMMXSMAAAXSMXSASXMASXSAMXMAMXMMXAAAAXMASXSASAMAMAASXMMXMMMX +SAASASXAXXXMMSSSXASMMSAMMMMSMXSAMAMMAAMAMAMMAMMASXAAMMMSMMMAXAXAMMMXXMAXAXAMSMMMMSXMASXSXSAMXAMXXXSMMXMXSAMASXMASMMXMMMAMASAMMMASMMMMASMSSSS +MMAMMMMSMSMSAAAAMXMXASXXAAMASMSMMXMSSMMAMAMMASMMMXMXMAXXAASXMASMSXSXMSMMSMSMAAXAAAAMAXAASMXAMSSSMXMASAMAMAMAXAMXSSSMMAXAMXMSMASAMXXAXMAAAAAX +SMMMXAXAAXAMMMMXSMMMXMASXMXAMXMMMAMXMXSAMAMMAXAXSXSASXMSSMSXMMAAAASMMAXXXAAXMXMMSMSMMMSMMSXXXXAAAAXAMAMSXSMSXMMSMAMASXSSSSMMXXMMSMSXSXMMMMMM +XAMMSSSMSMMMSAXXMAXSAMMMMSMSSXMSSSSXSASMSSSMSSSXMASASAMXAAXXXAMXMAMASXXMMSMMMXMMXXXAXXXAAAXSMMSMMXMSSSMMAXAXMAMASMSXMAAMMAAXXMAXAAXAXMSXMSSM +SSMAMXAAXAAAXMSMSSMSXSAMXXAAAAAAAMAMMAXAAAMAXSXAMAMXMAMXMMMMSMXAMXSXMMXSAMMSAASAMXMXMAXMMMXAAMMMXMXMAMXMAMAMSXSASXSMMSMASMMMXMASMSMXMASAAAAM +SMMASXMMMXMSXXAAAMXMXSMMMMMMXMMMSMXMMSMMMSMSXMSXMSMSSSMXMXAAAXAMXXSAAAXMASAMSSMASMMSAMXSMSSSSMMXMAAMSMMMAMSMAMMMMXMXAMAMSAMXSXAXAXXXAXMMMSSM +SASASXSXSAXAMSMSMSSMAMXASXMASXAXXXXMAMAMAXXMAXXMAMAMAXXAMXSSMXSAMASXMMXSAMMMXXMMXAAAXXMXAAMAAMXAXSAXAAMMMSAMXMAMSSMMMSSXSAMASAMSSSMMSSXMXMAM +XMMAMXSASMSXAXAMXAXMASXMSAMXAMXXMSXMASAMASASXMMMAMAMXMMMSAMAMMMAMMMAMXXMXMXAMXAAMXAMXSASMXXSXMMSXMMSSSMMSXMAMMAMAMAXAAAAMXMAMMMAAAXAAMAXMMXA +MSMSMAMAMXSASMSMMSSMASAASAMXSMSMXMASASASASAMMMAMXSXMAMXAMXMAMAXXXAXAMXAASMSASXMAXSAXAXMMMSMMASAMAAAAAMAXMAXXSASMMSMMMSMMSMMMSMMXSMMMSSSMMSSM +MAAXMXMAMXXAMAMAMXXMAMMMMMMMMAAASXMMMSAMAMAMASXSXMXXASMASMSMSMSMSMSAXAMXMASASXMAMSXMXXXSAAASAXASMMMSSSMMSXMASAMXXAAXXXXAAAAXAAXAMXXAAMMAMAAX +SMSMXAMAXXMMMMMSSMXMMMSXXAXAMSMSAMSAMMAMAXAXXXAXMAMXMSAMAXXAAAAXAMSAMSMSMAMAMXMSMMMSSXAMSSMMMXMMAXAMXAAAXAAMMXXXSXSMMXMXSMMMSSMSAAMMMMXAMSSM +XMAASASAMSMSXXMAAAMSSXMASMSMXMMAAASXMSXMMSMSMMMSMAMASMMMMMMSMSMMXMMXMMAAMAMMMXMXAAAAMMXMAXMASAMXAMSSSSMMSXMXMXMASAXMASXAMXSAAMMMMMXMXMXMMAMX +MSMMXMXAXSAMXSAMXSAAMMSAMXAXAXXSMMXAXSAMXAMAXAMXMSSMAAAMASXMAAXAMMMMMMXMSMSMSMMSSMMSSSSMAXXASASXSSMAMAXXXAMXSAAAMAMASAMXSAMXXXAAASXSASASMMSS +AAMMAMSXMMAMAMAXSMMMSXSASAMSXSAMASMMMSAMSXSASMSAMXAXMSMSASAMXMSSMMAAAAAXXMXMAAMAAXMMMMAMAMMMSAMXMAMMMSMMMSMASMSAMMMMMMMAMAMMMSSSMSASASMSASAM +SXSSXMAAXSAMXSAMXASXSAMXMAXAMAAMAMAAASMMMXMASXMASMSMAXAMASAMXXSAASMSSSSSXXASXSMSSMSAASAMAXSAXAMXSAMXAXAXAAMXSMMXAAAAAAMASAMAMAAXMXAMAMMSXMAS +XAXMASXSMXXXXAMXSAMXMXMASXMAMSAMXSSMMXSXMASMSMSMMXMASMXMXMXAMXSSMMMXAAXXXSMSAXAMMASXMSXSAXMASMAASXMMASXMSSSMXMASXSSSSMSASMSMSMSMMMAMXMXMASAM diff --git a/day5.txt b/day5.txt new file mode 100644 index 0000000..e246454 --- /dev/null +++ b/day5.txt @@ -0,0 +1,1374 @@ +96|15 +69|95 +69|66 +41|61 +41|26 +41|28 +66|75 +66|96 +66|99 +66|95 +25|74 +25|89 +25|48 +25|61 +25|75 +11|74 +11|26 +11|51 +11|82 +11|95 +11|61 +17|58 +17|63 +17|41 +17|39 +17|62 +17|64 +17|46 +63|25 +63|27 +63|46 +63|24 +63|12 +63|53 +63|11 +63|52 +72|24 +72|11 +72|23 +72|85 +72|61 +72|82 +72|53 +72|36 +72|95 +61|74 +61|83 +61|91 +61|93 +61|87 +61|52 +61|69 +61|51 +61|42 +61|27 +19|36 +19|89 +19|75 +19|85 +19|25 +19|28 +19|65 +19|52 +19|41 +19|46 +19|64 +39|23 +39|96 +39|64 +39|12 +39|82 +39|15 +39|95 +39|99 +39|85 +39|36 +39|25 +39|61 +58|25 +58|63 +58|65 +58|23 +58|95 +58|39 +58|36 +58|64 +58|22 +58|82 +58|72 +58|75 +58|89 +75|74 +75|87 +75|61 +75|89 +75|99 +75|18 +75|53 +75|11 +75|88 +75|48 +75|28 +75|82 +75|91 +75|51 +89|69 +89|26 +89|24 +89|87 +89|74 +89|52 +89|67 +89|17 +89|91 +89|86 +89|27 +89|85 +89|93 +89|88 +89|62 +36|53 +36|67 +36|92 +36|93 +36|82 +36|85 +36|28 +36|18 +36|91 +36|74 +36|52 +36|24 +36|42 +36|87 +36|26 +36|86 +27|17 +27|91 +27|69 +27|48 +27|66 +27|34 +27|83 +27|19 +27|26 +27|22 +27|96 +27|93 +27|18 +27|72 +27|67 +27|15 +27|39 +91|72 +91|46 +91|41 +91|17 +91|66 +91|63 +91|39 +91|93 +91|15 +91|96 +91|34 +91|12 +91|83 +91|69 +91|42 +91|58 +91|22 +91|62 +15|63 +15|65 +15|85 +15|82 +15|36 +15|75 +15|88 +15|61 +15|95 +15|52 +15|28 +15|74 +15|11 +15|12 +15|46 +15|53 +15|41 +15|23 +15|87 +93|46 +93|41 +93|25 +93|75 +93|72 +93|66 +93|99 +93|12 +93|58 +93|22 +93|17 +93|15 +93|39 +93|65 +93|63 +93|62 +93|79 +93|11 +93|64 +93|95 +28|51 +28|72 +28|22 +28|91 +28|17 +28|26 +28|79 +28|18 +28|62 +28|34 +28|67 +28|69 +28|93 +28|58 +28|39 +28|48 +28|74 +28|87 +28|86 +28|42 +28|92 +67|91 +67|41 +67|17 +67|12 +67|79 +67|58 +67|96 +67|72 +67|63 +67|65 +67|42 +67|46 +67|39 +67|86 +67|25 +67|93 +67|22 +67|62 +67|69 +67|66 +67|34 +67|83 +23|34 +23|93 +23|82 +23|24 +23|87 +23|69 +23|83 +23|18 +23|67 +23|85 +23|26 +23|52 +23|88 +23|51 +23|89 +23|61 +23|48 +23|53 +23|36 +23|28 +23|27 +23|92 +23|74 +26|34 +26|66 +26|93 +26|96 +26|63 +26|62 +26|65 +26|22 +26|67 +26|69 +26|12 +26|17 +26|15 +26|48 +26|91 +26|39 +26|86 +26|19 +26|51 +26|83 +26|72 +26|42 +26|79 +26|58 +12|23 +12|82 +12|11 +12|27 +12|46 +12|25 +12|92 +12|61 +12|18 +12|85 +12|75 +12|53 +12|52 +12|89 +12|41 +12|88 +12|87 +12|74 +12|99 +12|95 +12|36 +12|64 +12|24 +12|28 +24|52 +24|18 +24|53 +24|42 +24|92 +24|48 +24|66 +24|58 +24|88 +24|62 +24|93 +24|69 +24|27 +24|91 +24|67 +24|34 +24|51 +24|74 +24|17 +24|83 +24|26 +24|87 +24|28 +24|86 +62|79 +62|58 +62|96 +62|41 +62|22 +62|11 +62|15 +62|65 +62|36 +62|75 +62|64 +62|82 +62|99 +62|95 +62|66 +62|46 +62|72 +62|23 +62|12 +62|61 +62|19 +62|39 +62|63 +62|25 +48|65 +48|39 +48|93 +48|15 +48|62 +48|67 +48|51 +48|19 +48|79 +48|42 +48|66 +48|96 +48|17 +48|72 +48|91 +48|34 +48|41 +48|86 +48|22 +48|58 +48|63 +48|69 +48|12 +48|83 +85|74 +85|42 +85|17 +85|26 +85|91 +85|53 +85|67 +85|87 +85|88 +85|62 +85|51 +85|58 +85|83 +85|69 +85|24 +85|52 +85|34 +85|27 +85|28 +85|92 +85|48 +85|86 +85|18 +85|93 +83|15 +83|72 +83|66 +83|86 +83|62 +83|65 +83|17 +83|79 +83|58 +83|64 +83|22 +83|12 +83|11 +83|39 +83|25 +83|63 +83|41 +83|96 +83|42 +83|69 +83|75 +83|46 +83|19 +83|93 +64|75 +64|26 +64|48 +64|27 +64|51 +64|87 +64|74 +64|92 +64|95 +64|85 +64|18 +64|52 +64|82 +64|11 +64|61 +64|28 +64|53 +64|23 +64|36 +64|88 +64|24 +64|89 +64|67 +64|99 +99|83 +99|82 +99|18 +99|91 +99|53 +99|89 +99|48 +99|27 +99|69 +99|24 +99|88 +99|74 +99|52 +99|28 +99|36 +99|34 +99|92 +99|23 +99|85 +99|87 +99|61 +99|67 +99|26 +99|51 +42|17 +42|65 +42|72 +42|63 +42|15 +42|12 +42|99 +42|66 +42|75 +42|62 +42|22 +42|95 +42|19 +42|58 +42|46 +42|11 +42|96 +42|39 +42|23 +42|25 +42|86 +42|64 +42|79 +42|41 +51|69 +51|58 +51|79 +51|25 +51|63 +51|17 +51|65 +51|67 +51|41 +51|39 +51|19 +51|62 +51|93 +51|12 +51|83 +51|86 +51|42 +51|91 +51|34 +51|66 +51|15 +51|72 +51|22 +51|96 +87|58 +87|51 +87|96 +87|42 +87|93 +87|83 +87|19 +87|17 +87|72 +87|48 +87|22 +87|79 +87|39 +87|67 +87|62 +87|86 +87|92 +87|27 +87|34 +87|69 +87|66 +87|91 +87|18 +87|26 +46|87 +46|64 +46|28 +46|74 +46|24 +46|26 +46|27 +46|85 +46|61 +46|48 +46|18 +46|95 +46|89 +46|88 +46|36 +46|92 +46|23 +46|75 +46|11 +46|82 +46|53 +46|52 +46|51 +46|99 +22|95 +22|41 +22|99 +22|63 +22|61 +22|15 +22|39 +22|82 +22|85 +22|96 +22|64 +22|23 +22|11 +22|65 +22|46 +22|12 +22|19 +22|72 +22|24 +22|89 +22|52 +22|25 +22|75 +22|36 +74|39 +74|83 +74|93 +74|48 +74|51 +74|67 +74|42 +74|34 +74|17 +74|27 +74|58 +74|72 +74|18 +74|91 +74|22 +74|62 +74|69 +74|86 +74|87 +74|79 +74|19 +74|66 +74|26 +74|92 +86|62 +86|99 +86|19 +86|96 +86|23 +86|11 +86|65 +86|58 +86|15 +86|61 +86|66 +86|79 +86|17 +86|95 +86|25 +86|75 +86|22 +86|46 +86|72 +86|41 +86|12 +86|64 +86|63 +86|39 +52|17 +52|88 +52|93 +52|62 +52|92 +52|48 +52|91 +52|69 +52|28 +52|83 +52|74 +52|27 +52|86 +52|26 +52|79 +52|51 +52|34 +52|66 +52|18 +52|87 +52|42 +52|58 +52|53 +52|67 +53|93 +53|26 +53|87 +53|48 +53|86 +53|67 +53|74 +53|42 +53|17 +53|92 +53|62 +53|58 +53|66 +53|39 +53|51 +53|27 +53|79 +53|28 +53|91 +53|83 +53|69 +53|34 +53|22 +53|18 +82|52 +82|85 +82|24 +82|88 +82|74 +82|17 +82|48 +82|67 +82|53 +82|26 +82|83 +82|92 +82|28 +82|51 +82|69 +82|18 +82|27 +82|87 +82|34 +82|86 +82|42 +82|89 +82|93 +82|91 +65|74 +65|28 +65|99 +65|88 +65|64 +65|52 +65|61 +65|46 +65|27 +65|24 +65|53 +65|63 +65|95 +65|85 +65|75 +65|36 +65|41 +65|87 +65|89 +65|11 +65|12 +65|23 +65|25 +65|82 +34|66 +34|19 +34|39 +34|83 +34|22 +34|72 +34|64 +34|93 +34|79 +34|12 +34|15 +34|86 +34|75 +34|41 +34|96 +34|62 +34|69 +34|65 +34|46 +34|63 +34|17 +34|58 +34|42 +34|25 +95|36 +95|18 +95|52 +95|67 +95|24 +95|89 +95|92 +95|82 +95|88 +95|48 +95|61 +95|26 +95|53 +95|74 +95|28 +95|51 +95|91 +95|87 +95|23 +95|85 +95|34 +95|83 +95|27 +95|99 +88|53 +88|26 +88|91 +88|69 +88|28 +88|17 +88|86 +88|62 +88|83 +88|58 +88|48 +88|87 +88|22 +88|27 +88|42 +88|51 +88|92 +88|66 +88|18 +88|34 +88|93 +88|74 +88|67 +88|79 +92|17 +92|91 +92|83 +92|34 +92|69 +92|51 +92|42 +92|93 +92|15 +92|86 +92|62 +92|67 +92|63 +92|39 +92|19 +92|26 +92|72 +92|66 +92|48 +92|79 +92|65 +92|58 +92|22 +92|96 +18|42 +18|15 +18|22 +18|67 +18|62 +18|58 +18|86 +18|39 +18|17 +18|66 +18|26 +18|34 +18|83 +18|72 +18|96 +18|92 +18|19 +18|79 +18|69 +18|51 +18|93 +18|65 +18|91 +18|48 +79|85 +79|15 +79|65 +79|89 +79|39 +79|75 +79|11 +79|61 +79|63 +79|12 +79|41 +79|72 +79|82 +79|19 +79|36 +79|99 +79|24 +79|64 +79|25 +79|46 +79|95 +79|22 +79|96 +79|23 +96|74 +96|95 +96|85 +96|65 +96|52 +96|25 +96|23 +96|36 +96|89 +96|53 +96|24 +96|11 +96|41 +96|64 +96|88 +96|63 +96|99 +96|61 +96|46 +96|75 +96|28 +96|12 +96|82 +69|12 +69|62 +69|65 +69|86 +69|79 +69|11 +69|58 +69|17 +69|63 +69|15 +69|93 +69|39 +69|75 +69|42 +69|46 +69|41 +69|96 +69|64 +69|72 +69|19 +69|25 +69|22 +41|18 +41|64 +41|52 +41|74 +41|23 +41|95 +41|53 +41|89 +41|85 +41|25 +41|36 +41|82 +41|99 +41|46 +41|87 +41|92 +41|27 +41|75 +41|11 +41|88 +41|24 +66|23 +66|41 +66|22 +66|25 +66|79 +66|11 +66|82 +66|15 +66|64 +66|61 +66|36 +66|12 +66|19 +66|65 +66|85 +66|39 +66|46 +66|63 +66|72 +66|89 +25|88 +25|26 +25|92 +25|28 +25|46 +25|95 +25|11 +25|23 +25|36 +25|87 +25|82 +25|27 +25|53 +25|18 +25|52 +25|24 +25|85 +25|64 +25|99 +11|48 +11|89 +11|18 +11|87 +11|28 +11|23 +11|34 +11|85 +11|92 +11|36 +11|52 +11|24 +11|91 +11|27 +11|53 +11|99 +11|88 +11|67 +17|95 +17|99 +17|36 +17|79 +17|61 +17|15 +17|11 +17|19 +17|65 +17|96 +17|22 +17|12 +17|25 +17|23 +17|72 +17|75 +17|66 +63|85 +63|99 +63|74 +63|36 +63|82 +63|18 +63|61 +63|41 +63|95 +63|89 +63|64 +63|28 +63|23 +63|87 +63|75 +63|88 +72|52 +72|88 +72|46 +72|64 +72|41 +72|25 +72|12 +72|99 +72|96 +72|63 +72|15 +72|19 +72|75 +72|65 +72|89 +61|88 +61|82 +61|67 +61|89 +61|26 +61|92 +61|28 +61|53 +61|48 +61|85 +61|18 +61|36 +61|24 +61|34 +19|12 +19|11 +19|82 +19|63 +19|61 +19|88 +19|96 +19|23 +19|95 +19|15 +19|24 +19|53 +19|99 +39|63 +39|65 +39|24 +39|89 +39|41 +39|72 +39|19 +39|46 +39|88 +39|11 +39|52 +39|75 +58|66 +58|12 +58|79 +58|61 +58|41 +58|46 +58|19 +58|11 +58|96 +58|15 +58|99 +75|95 +75|24 +75|36 +75|27 +75|52 +75|67 +75|23 +75|85 +75|26 +75|92 +89|28 +89|18 +89|34 +89|53 +89|51 +89|92 +89|48 +89|42 +89|83 +36|34 +36|88 +36|69 +36|89 +36|83 +36|48 +36|27 +36|51 +27|62 +27|86 +27|42 +27|58 +27|51 +27|79 +27|92 +91|79 +91|65 +91|64 +91|19 +91|25 +91|86 +15|89 +15|25 +15|99 +15|64 +15|24 +93|42 +93|86 +93|19 +93|96 +28|83 +28|66 +28|27 +67|19 +67|15 +23|91 + +27,51,67,91,42,86,58,66,39,72,96 +88,64,61,72,82,46,36,63,41,95,75 +17,62,58,66,79,22,39,72,19,96,65,63,12,41,25,46,64,75,11,95,99,23,61 +12,41,39,93,95,66,86,62,42,11,58 +18,92,26,48,67,83,69,42,62,58,66,79,39,19,15 +64,46,61,66,63,99,23,11,75,17,41 +46,75,11,95,99,61,36,82,85,24,52,53,74,87,27,18,92,26,48 +18,92,61,74,27,48,99,67,89,36,52,26,11,91,95 +75,22,85,36,15,89,72,39,79,99,46,61,23,11,19,64,95 +66,58,72,93,79,17,34,65,42,64,39 +83,87,51,42,69,93,91,26,24,89,88,17,86,18,53,92,67 +83,93,42,86,66,96,15,63,12,41,25,64,75 +67,95,53,87,75,92,18,36,99 +25,64,11,23,24,99,15,96,88,61,46,95,63 +51,91,83,69,42,17,62,58,66,79,22,39,72 +26,69,86,66,72,15,63 +34,91,92,22,17,74,58,79,66,53,83 +87,86,51,26,28,17,18,92,24,67,27,42,91,85,34,53,69 +51,67,91,34,83,69,93,42,86,17,62,58,66,79,22,72,19,96,15,65,63,12,41 +48,69,83,27,42,86,34,62,93,58,53,18,88,67,52,87,24,91,74 +96,15,65,63,12,41,25,46,64,75,11,95,23,61,36,82,89,52,88,53,28 +72,95,11,41,89,19,82,12,63,79,22,25,36,65,61,96,66,75,39,64,15,23,99 +41,39,22,25,69,11,86,93,66,42,19,46,64,72,15,79,96,65,58,12,75 +12,41,25,46,64,11,23,61,36,82,89,85,24,52,53,28,74,87,27 +42,83,79,28,66,74,48,53,26,93,62,67,51,91,18,88,87 +34,19,96,15,66,17,69,22,79,26,72,86,67,91,48,18,39,93,51,92,42 +91,34,83,69,93,86,17,62,58,79,22,39,72,19,96,15,65,63,12,25,46 +99,23,61,36,82,24,88,53,28,74,87,27,92,26,48,34,83 +96,15,65,63,12,41,25,46,64,75,11,95,99,61,36,82,85,24,52,88,28 +66,27,48,18,96 +11,95,99,82,52,53,27,92,48 +17,66,39,12,41,93,51 +86,62,58,66,22,72,19,96,15,65,63,12,41,25,46,64,75,11,95,99,23 +26,85,27,52,92,82,34,51,87,83,67,23,89,36,74,24,28,69,53,91,18 +46,64,75,11,95,99,23,61,36,82,89,85,52,88,53,74,87,18,92,26,48 +83,85,92,87,88,74,28,48,18,52,82,93,24 +17,22,19,63,99 +79,11,39,86,19,65,46,62,93,42,64,96,69,25,72,66,15,12,41,58,22 +15,41,72,23,64,99,62,36,12,58,25,95,96 +74,92,51,28,91,34,69,42,67,48,66,87,26,27,22,79,93,39,18,17,83 +66,93,91,72,67,87,83,22,86,18,42,39,51,34,62,27,69,17,74,58,92 +62,34,58,66,72,42,51,17,86 +75,61,12,87,95,99,82,11,52,64,74,36,28 +87,27,18,48,51,83,93,86,62,58,66,79,39,72,19 +87,51,42,88,74,26,52,53,17,24,27,83,86,34,62,92,18,48,93,58,28 +72,96,41,64,95,36,88 +61,88,82,67,91,28,36,89,52,83,23,87,34,26,18,51,69,48,24 +88,53,28,74,87,27,18,92,26,48,51,34,83,69,93,42,86,17,58,66,79 +36,27,18,82,92,83,99 +89,61,34,88,82,93,91 +75,24,72,61,96,63,82,39,41,52,15,65,95 +74,53,24,18,26,36,88 +91,34,83,93,42,86,17,62,58,66,22,39,72,19,96,15,65,63,12,25,46 +72,96,12,41,25,75,23,89,88 +11,25,27,75,24,74,82,85,88,53,36,87,95,28,63,64,89 +89,82,52,74,27,63,61,95,53 +89,52,51,95,99,53,85,11,18,23,88,87,27,28,64 +61,36,89,87,83,69,93 +62,67,12,72,25,19,42,39,83,66,65,63,34,41,86,58,79,22,91 +69,42,63,22,79,39,15,96,12,65,67,86,91,93,58,48,72,51,83 +82,89,24,52,53,74,87,27,18,92,26,48,51,67,91,34,69,42,86 +87,27,18,92,26,48,51,67,91,83,93,86,17,62,66,79,22 +72,19,86,25,96,23,12,95,39,11,22,41,99,46,63 +46,25,86,66,22,96,63,62,42,93,69,39,15,12,79,64,34 +92,87,18,53,83,58,22,93,91,74,51 +17,62,58,66,79,22,39,72,96,15,65,63,12,41,25,46,64,75,11,95,99,23,61 +58,66,79,72,12,75,95,61,82 +19,15,41,25,46,64,75,36,85,52,53 +26,79,66,17,91,18,93,62,34,92,58,51,67,83,53,74,28,88,42,27,87 +26,18,28,69,27,48,89,51,42,36,24,91,83 +72,41,22,61,79,23,63,65,36,62,11,46,99,15,25,95,19,75,12,58,64 +34,83,69,93,42,17,58,79,22,39,72,19,96,15,63,41,25,46,64 +74,87,18,26,48,67,91,34,83,69,93,42,17,62,22,39,72 +83,79,66,15,91,63,96,25,58,12,72,65,62,34,69,19,39,42,22,86,41,67,93 +96,15,65,63,41,25,64,61,82,89,24,52,28 +11,23,61,36,82,24,88,53,28,27,18,92,26,48,51,67,91 +93,51,69,34,41,96,22,17,19,58,65,15,79,62,39,63,91,83,42 +65,63,12,41,25,46,64,75,11,95,99,23,61,36,82,89,85,24,52,88,53,74,87 +46,95,11,41,19,23,89,65,96,99,66,36,25,12,72,75,82,64,15,79,61,39,22 +23,75,74,82,53,11,88,24,27,18,85,95,87,25,36,46,26,92,64,99,89,61,28 +52,11,27,12,61,74,24,63,75,64,46,36,89,95,99,87,41,82,85,88,28,23,25 +82,24,88,53,28,74,87,27,18,92,26,48,51,67,91,34,83,69,93,42,86 +88,63,61,52,75,23,12,89,72,36,95 +89,95,63,39,36,41,46,19,72,24,64,25,85,75,61,22,99 +99,82,89,24,52,88,53,28,87,27,92,26,48,51,91,34,83 +51,69,72,91,79,86,93,96,48,22,27,42,62 +46,22,65,83,86,39,62,69,15,64,75,63,42,17,96,66,58,41,25,72,19 +83,69,86,17,62,58,66,79,22,39,72,19,15,65,63,12,41,25,46,64,75 +74,67,28,42,26,91,18 +15,65,12,25,11,95,99,61,36,82,85,24,88,28,74 +69,93,42,86,17,62,58,66,79,22,72,19,96,15,65,63,12,41,25,46,64,75,11 +95,99,23,82,89,88,28,74,27,18,92 +95,23,61,82,89,85,24,52,53,74,27,18,92 +41,62,64,42,69,72,11 +19,65,11,95,89,46,25,36,66,22,23,12,72,63,41,79,64,82,15,39,75,99,96 +58,22,72,36,65,39,25,23,64,96,82,99,11,41,79,15,66,19,12 +23,61,82,89,24,52,28,18,51,67,91 +58,66,22,39,72,19,96,65,12,41,25,46,75,95,23,61,36 +36,66,22,15,46,41,64 +93,69,92,36,24,83,82,87,53,52,61,85,91,74,26,89,34,18,88 +82,89,85,52,88,28,74,27,92,26,48,51,67,91,34,83,69,42,86 +95,39,22,58,72,23,99,12,63,25,75,96,62 +11,95,99,36,82,89,85,52,88,53,28,74,87,27,18,26,48,67,91 +72,96,15,65,12,46,64,75,11,95,36 +95,99,23,61,36,82,89,85,24,88,53,28,74,87,27,92,26,91,34 +34,18,27,92,67,95,23,61,48,51,53,26,85,91,88,99,74,89,28 +42,24,85,69,26,28,74,89,88,36,83 +58,66,79,22,39,96,15,65,63,64,11,99,23,36,82 +28,48,67,83,42,22,39 +93,82,69,74,51,24,34,85,89,42,36,52,27,53,28,92,67,91,83,87,88,26,48 +18,83,28,17,66,69,93,26,52 +85,89,53,26,36,46,88,24,99,52,27,25,18,92,75,74,11 +17,62,58,66,22,72,19,96,15,65,63,12,41,25,46,64,75,11,99,23,61 +58,66,79,39,19,96,65,63,75,95,99 +61,36,82,89,85,24,52,88,28,74,87,27,18,92,26,48,51,91,34,83,69 +63,41,25,46,64,95,23,61,89,85,24,52,53,28,74,87,27 +79,22,39,72,19,15,65,63,12,41,25,46,75,11,95,99,23,36,82,89,85 +65,11,25,53,82,88,74,12,15,63,41,64,89,23,24,99,46,75,95,52,36 +52,27,61,87,24 +62,39,15,65,63,41,11,95,99 +67,19,34,15,12,63,72 +85,23,79,95,11,39,19,46,72 +83,93,51,86,69,91,48,19,22,96,34,58,79,17,26,92,65 +83,74,67,88,18,69,34,27,51,92,42,66,28,53,91,62,26,87,48,17,79 +42,17,66,79,72,19,15,12,25,46,64,95,99 +28,18,64,87,25,99,74,89,82,11,36,24,75,61,12 +62,92,48,79,17,53,27,18,83,28,86,69,67,88,74 +83,91,48,93,36,24,92,74,89,88,69,42,51,85,26,18,52,34,53,87,82 +46,64,99,82,28,26,48 +12,95,23,99,75,64,41,15,74,24,11 +22,72,19,96,15,65,63,25,46,75,99,23,36,82,89,85,24 +41,25,64,11,95,23,85,24,87 +87,27,48,51,83,69,93,17,58,72,19 +25,79,64,96,99,66,15,39,11,12,63,61,75,89,41,82,46,95,72,19,65 +85,48,42,52,69,26,83,24,93,74,36,34,67 +27,87,92,24,99,46,11,64,53,75,95,88,74,26,89,28,52,85,25 +89,24,52,74,87,27,92,48,67,34,69,86,17 +17,89,83,24,92 +17,58,39,96,15,65,63,12,41,64,75,95,99,23,61 +82,12,46,61,25,15,53,65,75,99,36,24,88,52,28,89,41,11,23,85,64,74,95 +86,19,69,18,93 +87,27,92,26,48,51,67,91,34,83,69,93,42,86,17,62,58,66,79,22,39,72,19 +95,87,27,26,91,36,24,23,74,82,89,53,85,28,52,51,88,48,92,11,61,99,18 +74,87,27,92,26,48,91,34,83,93,42,17,62,58,66,79,22,39,72 +48,88,85,52,46,92,24,99,74,36,89,61,27,23,64,26,87 +12,95,18,41,85,23,61 +39,96,41,46,11,36,52 +93,42,86,17,62,58,22,39,96,15,65,41,25,46,75,11,95 +82,85,53,28,26,67,86 +46,99,11,39,64,58,42,65,19,22,15,75,95,17,25,79,86,12,72 +15,65,64,95,36,82,85,24,88,53,28 +99,23,24,64,95,87,65 +63,61,95,24,53,64,88,27,52,85,74 +96,64,11,95,99,61,36,82,89,85,28 +89,46,25,88,18,11,92,28,82,87,52,95,53,99,26,75,74,36,27,64,24 +99,75,11,85,25,27,92,95,52,74,87,61,82,18,24,41,36 +22,96,15,63,25,11,61,89,24 +88,53,58,79,83,93,48,87,92 +41,58,93,12,15,22,67,96,83,79,25,66,19 +66,93,41,69,72,62,46,63,15,17,19,58,65,96,83 +15,22,72,24,64,96,41,75,23 +34,26,91,52,67,48,92,51,27 +85,87,65,24,28,88,36,89,52,11,99,23,61,12,63,41,82 +53,63,99,61,12,95,74,36,41,88,23,28,15,85,64 +42,93,39,91,69,19,79,58,41,72,63,86,66,12,17,62,22,46,83,65,25,15,34 +82,88,83,99,61,28,85,26,87,18,34,51,48 +27,26,48,51,67,91,34,83,42,62,58,79,22,39,72,19,96 +92,26,48,67,91,34,69,93,42,86,58,66,79,22,39,72,19,15,65 +27,92,88,34,69,51,18,85,93,24,62,52,26 +36,85,15,88,96,11,64,75,53,28,61 +89,87,27,52,28,85,18,61,24,67,99,91,74,51,11,92,95 +34,83,69,93,42,17,62,58,66,79,22,72,19,96,15,65,63,12,41,46,64 +65,25,79,93,46,72,83,86,58,63,66,91,34,15,41 +17,52,88,18,85,89,91 +42,91,28,58,48,17,26,67,24,74,69,62,34,83,52 +82,85,24,52,28,74,87,27,18,92,91,34,69,42,86 +58,12,41,66,83,42,19,17,62,79,46,25,22,15,39,93,65,96,69,63,34,91,86 +63,15,83,65,46,25,69,19,42,75,39,79,41,12,62,72,58 +69,17,62,66,96,25,75 +26,48,67,91,34,83,69,42,86,17,58,79,22,39,72,19,63 +72,19,65,46,64,75,11,82,24 +64,63,99,46,17,19,22,65,15,61,58,23,72 +83,79,65,15,42,39,91,69,72,34,86,17,62,63,66,58,51,22,96,93,12,67,41 +34,51,69,66,92,42,26,18,52,67,53,27,17,83,28,93,87,88,91,86,74 +74,87,27,18,92,26,48,51,34,83,93,86,17,62,58,66,79,39,72 +91,42,63,96,79,62,22,51,26,65,72 +86,93,26,66,48,74,18,17,58,27,91,51,79,39,34,28,92 +24,75,46,27,82,89,36,28,64,87,25,18,95,61,74,53,92,88,99,52,23,41,11 +85,23,87,36,61,89,74,99,27,64,95,53,11,26,18,25,88,46,75,52,82 +74,64,82,87,27 +62,66,46,58,75,79,65,64,72,19,39,25,41,12,96,36,11,99,23,22,61 +48,51,67,91,34,93,42,17,58,66,39,19,96,15,65,63,12 +28,93,26,58,87,91,69,86,22,53,66 +18,92,26,48,51,67,91,34,69,93,42,86,17,62,58,66,79,39,96 +96,15,65,63,12,25,46,11,95,99,61,82,89,85,24,52,88 +42,91,93,65,63,17,72,51,19,79,83,69,41 +24,61,67,52,11,36,99,85,53,82,51 diff --git a/debug.log b/debug.log new file mode 100644 index 0000000..e69de29 diff --git a/input.txt b/input.txt new file mode 100644 index 0000000..e1ec595 --- /dev/null +++ b/input.txt @@ -0,0 +1,1001 @@ +28186 35627 +51854 34597 +19211 51032 +79370 53096 +68126 40302 +43284 25771 +80565 99650 +83151 70796 +91092 74579 +70740 98650 +45166 53096 +24309 45165 +62950 26641 +23291 91017 +56683 53851 +22308 81625 +83150 34155 +87443 91017 +56834 91784 +35159 67595 +10722 83450 +92257 23419 +15995 96671 +89901 39216 +25104 76669 +37075 56652 +15874 66083 +33493 35627 +87420 31838 +11269 91386 +92604 83450 +34888 99650 +49759 40926 +38211 27379 +93866 22096 +88205 66217 +55772 60776 +83556 78255 +22292 50829 +22487 78358 +27260 79702 +74570 90319 +27532 14353 +40720 67595 +99885 65688 +25733 53752 +12466 14411 +88402 40165 +63328 13804 +45165 62461 +24913 94225 +32251 76669 +91004 40165 +48939 45165 +98082 34561 +74569 42932 +99641 54600 +42748 22021 +23376 54490 +38706 69865 +64985 87783 +14431 78715 +37671 94814 +27425 60776 +21801 76669 +96975 33493 +56680 31838 +41265 71129 +99081 32487 +53077 82615 +54490 55624 +22649 60776 +82601 25943 +93133 96412 +77182 78358 +67827 76838 +45976 89107 +20352 89034 +28891 23800 +87739 76669 +47802 99650 +18060 28437 +65882 93980 +53343 13764 +84301 93604 +62547 93479 +79067 45165 +70139 54490 +28158 76669 +71631 39775 +36521 57540 +78928 37888 +75943 39076 +28462 60107 +95828 94225 +49768 73181 +40545 97945 +18963 74260 +17934 63046 +73054 13454 +43170 60924 +90257 28180 +99765 33493 +41380 50296 +24225 62945 +66579 73961 +73361 54622 +26339 91017 +84080 62041 +89322 54600 +84610 18344 +58420 87051 +12253 83450 +25631 91017 +71764 63533 +52908 40165 +56578 46636 +99876 61946 +43934 64469 +78242 11111 +97629 28916 +21477 91017 +97639 64456 +90978 53077 +94412 73836 +49249 96113 +92750 14411 +12961 13764 +84319 22230 +83435 78146 +48951 86109 +40258 13764 +54600 65577 +51432 53096 +11527 20394 +68196 94225 +14939 91017 +13158 39216 +62120 93587 +20939 71764 +58436 28038 +37198 31838 +59152 17554 +52958 44145 +64236 18285 +63763 56578 +40304 99650 +86564 78910 +45684 52760 +43139 61946 +99974 76669 +44698 86004 +19940 22021 +29106 78358 +60431 91386 +50880 76451 +96595 42193 +40966 73961 +64515 61946 +31081 39834 +87614 70892 +82663 54622 +73537 62994 +14125 56652 +51361 35627 +26084 35817 +82915 20069 +72409 22021 +22834 20071 +93476 83787 +63719 53096 +41505 48056 +56055 20404 +37255 99650 +33468 60776 +70472 22598 +66290 53077 +91071 67595 +30888 33173 +60826 29871 +12334 78358 +62744 69424 +85449 79500 +22333 16295 +67621 18455 +12605 90059 +32490 25835 +96639 75870 +82412 39747 +76964 60153 +60776 60776 +68837 39216 +35635 67595 +85239 14964 +15278 83450 +63581 35178 +77006 18285 +88570 80424 +61499 81689 +57466 47392 +78524 84304 +11821 53989 +62425 28916 +36264 50872 +38567 13061 +16357 45165 +17202 94451 +64290 31838 +76075 55071 +87325 40165 +93961 99650 +49866 65601 +91725 14411 +44721 18285 +44065 33493 +22521 56578 +28070 54600 +45621 54600 +54677 26913 +79647 24298 +89613 31415 +86493 13764 +16243 64218 +12832 21187 +43847 35189 +75859 54600 +69276 75826 +43251 14411 +96012 41446 +35482 35817 +45380 82383 +66801 31838 +79199 92341 +33087 70511 +40619 28916 +67655 80670 +22431 60776 +62731 54622 +29873 25771 +99354 63481 +36415 61946 +29742 94919 +64872 53077 +93028 55635 +32784 18285 +87488 68734 +56652 18285 +49968 80712 +82653 53096 +30377 24784 +40120 45165 +88404 70120 +69179 45165 +99645 67595 +44883 45165 +76320 43595 +29057 90019 +28502 61946 +73459 84304 +96354 54622 +77589 14301 +51381 54490 +40490 95808 +36023 27135 +13434 63807 +27250 35627 +13764 32845 +28229 34954 +56430 76669 +98593 63811 +11192 60776 +81601 72265 +86908 77116 +25484 82383 +31115 42206 +75124 70148 +96785 53096 +59814 85995 +17024 57255 +81701 41971 +43938 33493 +91646 33599 +96616 81828 +73270 87775 +75876 35817 +53007 83450 +39527 33975 +35936 17039 +95194 23302 +96876 80147 +68136 91386 +31253 19760 +98767 61208 +98353 86604 +13239 36264 +43374 13764 +36658 22965 +58030 84304 +42686 78358 +99419 49423 +43976 20759 +33361 47852 +23794 61946 +26896 83450 +12213 37740 +53827 49270 +71874 61946 +19394 77889 +63728 81025 +63780 72467 +34161 21317 +81832 56652 +20986 99650 +36631 48302 +60232 63009 +37744 84304 +46964 39391 +19771 14411 +75783 69365 +71727 71252 +60541 69095 +68594 30949 +51619 88697 +26797 50216 +86654 61946 +98872 53347 +20079 18807 +60408 41952 +37203 47862 +92078 43717 +94853 53096 +91937 65490 +39800 79198 +14179 50429 +21846 72768 +19081 14411 +60170 39838 +14482 36264 +61946 64811 +88464 10899 +93401 44867 +42260 53495 +92730 76838 +17708 31838 +68523 99650 +44540 95629 +12785 54490 +34598 13764 +20161 28916 +15318 67595 +67423 47864 +13951 95495 +63011 67595 +73505 61946 +22300 73685 +35181 78358 +70531 60776 +95954 57049 +65463 67851 +67270 53593 +62726 13782 +66690 72865 +99591 33493 +89300 13764 +82383 51267 +55326 56578 +66315 54622 +51554 91145 +21778 67595 +38569 71437 +25915 80353 +92411 88336 +76148 83204 +68688 61443 +78063 34003 +27804 14411 +79316 59050 +14222 22021 +83018 18197 +36304 33795 +46381 78358 +23167 99650 +73696 11314 +83569 71391 +93902 76551 +33606 35906 +30257 54600 +24956 80860 +64619 14411 +17640 56652 +22908 83696 +18954 74347 +89497 83450 +70303 76669 +37979 69814 +22661 53077 +96573 83961 +13055 85059 +73265 67595 +31927 45165 +61607 54490 +62232 53096 +68738 79113 +50586 95006 +55731 39122 +33386 31838 +20118 97657 +98794 76669 +62869 57813 +45508 91386 +29960 56652 +20228 95663 +75424 74090 +75421 30158 +82307 11086 +26488 64910 +48430 41174 +81439 63107 +68896 56652 +67511 33375 +40446 66170 +13668 68369 +83234 16181 +16929 84304 +42735 85915 +93954 22403 +98252 33493 +39418 54622 +14183 89745 +67167 68002 +88731 22021 +42317 54490 +29404 83450 +80844 31838 +43255 34866 +61762 32538 +32255 78358 +93152 25771 +42141 56578 +83740 22021 +40030 47353 +34668 14411 +46752 21905 +26196 48915 +45243 67595 +26757 56652 +13969 82383 +13148 84304 +39362 29711 +92819 31171 +12210 14411 +58671 91017 +87279 62713 +97755 92124 +77086 62944 +87094 40099 +83398 35817 +36525 64734 +27346 36264 +50274 17587 +74438 92593 +86182 13764 +63946 56578 +99269 25771 +46815 67595 +44645 93146 +82027 25771 +46981 39216 +52039 31814 +25930 54600 +48743 31838 +80123 72281 +21790 84579 +91556 78358 +63961 14411 +11280 97891 +67372 60776 +35817 34731 +80767 53877 +32458 90108 +53471 13557 +76699 92723 +33967 31838 +83166 23325 +48974 44826 +28408 16412 +18980 61946 +76595 21581 +54278 82835 +57836 67595 +16791 84304 +52746 99650 +23543 83450 +28819 95078 +21590 84304 +90588 91017 +62879 43669 +35788 81389 +67595 91386 +43342 73961 +34072 73961 +41533 54487 +77769 71151 +95215 74006 +37630 44436 +85291 18292 +82845 99650 +56633 60776 +95645 54490 +59689 14411 +77873 23174 +47892 94225 +71442 77808 +52932 56578 +68699 56652 +70296 54600 +34780 50848 +14008 63408 +65865 73961 +64689 84695 +70986 45490 +20034 54600 +21194 73961 +42510 37716 +80906 32357 +38289 19304 +44371 53386 +45873 95639 +72359 53096 +26200 40165 +81093 32591 +75520 99689 +70526 92020 +38000 90543 +42109 40526 +65858 64811 +77533 83450 +84191 63489 +59480 46311 +20750 32879 +81791 76258 +49948 56739 +44960 22021 +49084 12978 +46948 25438 +22467 39216 +32066 41311 +47715 13764 +40689 56652 +81797 82792 +48102 91114 +13286 64910 +24324 81079 +14772 91386 +10721 20481 +26990 54622 +67169 22021 +42848 25771 +24672 13764 +86122 25771 +56904 13764 +81436 53096 +94624 33493 +91853 56652 +23675 14088 +26625 68877 +22777 53096 +44833 33493 +47549 96449 +79529 27951 +78188 99650 +16287 51001 +64231 25771 +84131 55907 +15378 41016 +69506 78358 +80392 64811 +68681 57430 +95565 40165 +27128 40839 +11911 38020 +32463 95974 +64051 39216 +59409 25771 +85311 99650 +15025 76669 +31085 83450 +57046 43589 +31356 25944 +53445 32566 +65374 24456 +94347 17250 +51998 76838 +38930 76838 +13223 22328 +23412 33493 +33498 39216 +66922 97888 +19340 13764 +30800 33625 +63834 53077 +26329 76669 +36202 52321 +99460 87180 +10752 22155 +83677 54586 +83136 94225 +43505 94775 +49792 51024 +18430 87697 +48959 62169 +27559 86092 +42055 71266 +47346 27875 +95130 15327 +67175 50520 +80717 48669 +98758 93010 +69621 73606 +25596 22021 +37015 83450 +14944 93706 +70867 84304 +14464 80652 +11365 25771 +78435 46797 +45002 58808 +57900 83487 +99650 55843 +80681 38011 +64811 86071 +97586 33898 +42094 41087 +76669 54622 +74600 28060 +18109 25771 +95834 40165 +76583 32274 +23271 54600 +73123 81744 +81442 70437 +97274 25771 +99106 91717 +19847 39216 +41705 54622 +97824 64338 +34982 39216 +47246 58999 +94716 78358 +52266 60776 +39216 95154 +49351 94864 +64910 39559 +43455 84248 +71500 27152 +30651 49103 +63267 44712 +17567 18998 +63046 48579 +51483 63529 +35182 14411 +73961 60776 +39993 30182 +26258 96243 +52698 77762 +21525 22021 +47513 20331 +13140 22021 +43778 40165 +22788 94225 +84367 31838 +54265 64910 +55305 42377 +78923 54586 +40429 39216 +12422 63046 +24878 94225 +64356 57593 +34812 40889 +54661 60776 +31004 55132 +38061 63046 +85827 35627 +72862 33704 +51636 98691 +15448 54159 +90048 67595 +53851 18285 +48530 74924 +20386 81637 +87273 53096 +83022 56018 +98251 65250 +89295 60776 +98142 15765 +31571 42354 +92874 70979 +44965 58401 +51688 78358 +93890 12104 +65530 53096 +55006 91017 +49672 55977 +31815 37826 +13567 58321 +60844 53077 +63845 26325 +98712 79314 +99601 63236 +14173 60776 +11249 86708 +37023 48603 +25248 14411 +25444 63817 +92822 10083 +43060 41903 +98283 89972 +10004 77190 +69379 56652 +30459 45165 +81481 18285 +47130 24016 +57377 56872 +24043 63046 +78319 33493 +96058 33493 +42928 32466 +76838 35627 +43659 76669 +36827 39216 +41007 60776 +79655 14411 +26608 44836 +85420 68185 +81174 96069 +79223 59880 +54106 52192 +71917 83450 +19775 73961 +45391 66102 +26838 33493 +53437 76669 +71922 91017 +67552 40770 +23842 12889 +75398 90858 +20264 96094 +38278 39216 +62780 68287 +92766 45165 +25677 23355 +55791 83450 +63556 93703 +97511 61946 +74712 18285 +34605 15067 +57436 56652 +91202 91017 +11656 54622 +31838 22156 +94443 25771 +84090 60590 +63298 91386 +60339 56419 +25780 53096 +55284 76669 +83080 71920 +53843 36881 +83616 42743 +89091 68085 +71899 31838 +57786 67595 +34559 96506 +77211 94225 +67812 61946 +26511 63739 +51963 97847 +81350 23053 +37978 57093 +93413 89804 +38133 60776 +73234 84629 +60624 31957 +13937 34269 +35804 44626 +36210 53096 +34190 33493 +30736 83057 +80091 23762 +60917 82383 +30227 53096 +94439 56652 +78308 67595 +51009 67595 +64010 53077 +20563 61946 +43967 17312 +86436 75180 +80389 42825 +94453 83450 +41805 91918 +21462 99650 +71157 10537 +35046 73961 +96103 74733 +83069 35732 +18285 82383 +26446 76669 +70874 18579 +10539 11666 +57999 83450 +25966 91017 +37570 93089 +46126 18897 +65025 78341 +48404 61946 +26116 91017 +84857 33493 +84369 96112 +79609 76561 +24415 76669 +55288 37007 +85869 10010 +15152 76669 +10609 52954 +56293 59754 +35563 99650 +15144 32125 +27560 33493 +10484 99261 +73264 74795 +44774 17094 +41294 53851 +14411 83990 +17065 25771 +25771 60026 +58907 16393 +93527 90760 +25715 68223 +61620 23456 +36485 15169 +70191 39216 +40165 94225 +54006 99650 +75597 53096 +49678 25771 +51574 96842 +57852 18285 +60104 61946 +78607 35627 +54889 14411 +47241 10303 +71456 94225 +81425 49149 +59061 28602 +24633 31838 +14420 93613 +54622 53077 +17040 78745 +70622 88133 +56992 72730 +97895 33493 +94648 44310 +59138 13764 +97350 69918 +32734 83579 +55320 66823 +96915 55216 +95293 38588 +13774 12822 +70053 58437 +22021 18724 +41216 43315 +28987 31838 +70488 89770 +48277 53914 +79376 76669 +94225 53077 +60803 12578 +21144 16837 +23645 33714 +28916 83751 +50535 31838 +62178 64811 +63126 71848 +33569 46461 +99826 53077 +74714 33856 +67967 26838 +83610 54622 +15872 36009 +34302 31838 +24069 56292 +90147 38554 +95987 79195 +62656 40165 +83153 26094 +68726 85767 +63172 74949 +35390 94225 +29379 63046 +13571 56578 +16169 64811 +68905 35817 +71763 53096 +48781 28841 +95966 15028 +87862 67072 +87176 60776 +11203 13761 +50294 11171 +21503 25547 +96570 78358 +25213 84422 +61744 85120 +62795 72393 +84907 33493 +82935 84304 +24224 36264 +91386 99650 +76217 98074 +73872 60776 +41777 19177 +95695 39216 +88779 15111 +93458 67595 +74732 67770 +23754 39216 +90662 35817 +24013 99650 +66779 83450 +54586 27524 +88285 69874 +47809 22021 +25662 71764 +31583 56652 +58156 60776 +22656 56578 +22315 76174 +70195 54622 +27027 33351 +32409 75991 +91017 72493 +53096 13301 +92656 41863 +84304 85568 +45081 73961 +21844 78358 +83024 61946 +93888 45113 +69174 53096 +98465 56543 +46208 56652 +63289 99650 +96607 76329 +62648 55561 +38090 62481 +87491 90246 +45019 81753 +88050 73961 +18142 26270 +36682 22021 +15933 94225 +17393 38533 +33633 67595 +55662 73961 +63567 74739 +69557 83450 +36169 25771 +40716 35837 +11665 14704 +94437 36515 +43859 18285 +98937 54490 +73932 94209 +99289 50655 +12403 22021 +80283 64811 +68700 43336 +36887 69617 +53551 83450 +76290 18285 +49743 25771 +35627 76669 +59070 13231 +40419 24169 +48544 82383 +68680 84304 +31610 58761 +31170 67595 +27004 41596 +62727 98757 +24189 76875 +42807 97581 +85552 71764 +52402 40046 +78358 41164 +83450 76669 +62947 25771 +55820 53096 + diff --git a/src/day2.zig b/src/day2.zig new file mode 100644 index 0000000..90fc51b --- /dev/null +++ b/src/day2.zig @@ -0,0 +1,171 @@ +const std = @import("std"); +const print = std.debug.print; +var data : [1024][20]i32 = undefined; +var data_len : [1024]u32 = undefined; +var res:u32=0; +var res2:u32=0; +const dir = enum {zero,up,down}; +var data_size : u32 = 0; +var direction = dir.zero; +var safe : bool = true; +var safe_rep : u32 = 0; +var safe_no_dump : u32 = 0; + //const e_data = data[0..data_size]; +var temp : i32 = 0; +var legit : bool = false; +var instance_unsafe : u32 = 0; + +pub fn main() !void { + _ = try readFile(); + const e_data = data[0..data_size]; + const e_data_len = data_len[0..data_size]; + + for(e_data,e_data_len) | row,len | + { + print("[main]len:{}\n",.{len}); + const row2 = row[0..len]; + if(checkLevel(row2) > 0) + { + safe_no_dump += 1; + for(1..len) | i | + { + print("\x1B[0m",.{}); + const row1 = try rmNum(&row,len,i); + print("rmRow: {d}\n",.{row1}); + print("remove level {}\n",.{i-1}); + if(checkLevel(row1)>0) + { + print("still unsafe ",.{}); + } + else + { + print("now safe ",.{}); + safe_rep += 1; + break; + } + } + } + else + { + safe_rep += 1; + } + } +print("Data_size: {}\n",.{data_size}); +std.debug.print("safe reports: {}\nsafe rep without dump:{}\n",.{safe_rep,safe_no_dump}); +} +fn rmNum(slice : [] const i32,len : u32,pos : usize) ![]i32 +{ + var str = try std.heap.page_allocator.alloc(i32,len); + + print("len rm: {}, slicelen: {}\n",.{len,slice.len}); + + for(slice,0..) | num, i | + { + if(i > len-1) + { + break; + } + + if(num == 0) break; + if(i < pos) + { + str[i] = num; + } + else + { + str[i-1] = num; + } + } + const sl2 = str[0..len-1]; + return sl2; +} + +fn checkLevel(slice : [] const i32) u8 +{ + direction = dir.zero; + legit = false; + print("slice: {d}, len {}\n",.{slice,slice.len}); + + for(slice,0..) | num,ii | + { + if(ii < slice.len-1 ) + { + if(num == slice[ii+1]) + { + std.debug.print("\x1B[31mequal1\n",.{}); + return 1; + } + if(direction == dir.zero and num > slice[ii+1]) + { + direction = dir.down; + } + if(direction == dir.zero and num < slice[ii+1]) + { + direction = dir.up; + } + if(direction == dir.down and num < slice[ii+1]) + { + std.debug.print("\x1B[31mexit2\n",.{}); + return 2; + } + if(direction == dir.up and num > slice[ii+1]) + { + std.debug.print("\x1B[31mexit3\n direction : {}\n num :{} > {}, index: {}\n",.{direction,num,slice[ii+1],ii}); + return 3; + } + //temp = @intCast(num); + if(@abs(num - slice[ii+1]) < 1 or @abs(num - slice[ii+1]) > 3) + { + std.debug.print("\x1B[31mexit4 num: {} slice[ii+1]: {}, full slice {d}, index: {}\n,",.{num,slice[ii+1],slice,ii}); + return 4; + } + + } + + } + print("\x1B[0m",.{}); + return 0; +} + +fn readFile() !void +{ + const file = try std.fs.cwd().openFile("day2-1.txt",.{}); + defer file.close(); + + var buf_reader = std.io.bufferedReader(file.reader()); + var in_stream = buf_reader.reader(); + + var buf: [1024*5]u8 = undefined; + var index : u32 = 0; + var row : u32 = 0; + + while(try in_stream.readUntilDelimiterOrEof(&buf,'\n')) | line | + { + var it = std.mem.split(u8,line," "); + + while (it.next()) |word| + { + if(std.mem.eql(u8,word,"\n")==false) + { + if(std.mem.eql(u8,word," ")==false) + { + data[row][index] = try std.fmt.parseInt(i32,word,10); + index += 1; + } + } + else + { + + data_len[row] = index; + row += 1; + index = 0; + } + } + data_len[row] = index; + index = 0; + row += 1; + + } + data_size = row; +} + diff --git a/src/day3-2.zig b/src/day3-2.zig new file mode 100644 index 0000000..b182af1 --- /dev/null +++ b/src/day3-2.zig @@ -0,0 +1,204 @@ +const std = @import("std"); +const print = std.debug.print; +var buffer : [22048]u8 = undefined; + +pub fn main() !void +{ + var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator); + defer arena.deinit(); + const allocator = arena.allocator(); + + const read_bytes = try readFile("day3.txt"); + const pattern = "mul("; + + + + var slice :[]u8= undefined; + var slice2 :[]u8= undefined; + slice2 = buffer[0..read_bytes]; + + var mulresult : u64 = 0; + var count : u64 = 0; + + var endpos : usize = 0; + //var buf : [10]u8 = undefined; + + + while(slice2.len != 0) : (count += 1) + { + print("slice2: {}\n",.{slice2.len}); + while(true) + { + var do = std.mem.indexOf(u8,slice2,"do()"); + if(count == 0) + { + do = 0; + } + + const dont = std.mem.indexOf(u8,slice2,"don't()"); + + if(do == null and dont == null) + { + print("last line\n",.{}); + std.posix.exit(1); + break; + } + if(do) | do2 | + { + if(dont) | dont2 | + { + if(dont2 > do2) + { + print("endpos{s} ,endpos{d}\n",.{buffer[endpos..endpos+5],endpos}); + slice2 = slice2[do2..dont2]; + endpos = endpos + dont2 + 7; //absolute pos in buffer + break; + } + else + { + endpos = endpos + dont2 + 7; + slice2 = buffer[endpos..]; + print("endpos{s} ,endpos{d}\n",.{buffer[endpos..endpos+5],endpos}); + } + } + else + { + //slice2 = slice2[do2..]; + print("last line\n",.{}); + std.posix.exit(1); + break; + } + } + } + + slice = slice2; + while(slice.len != 0) + { + //_ = try std.io.getStdIn().reader().readUntilDelimiterOrEof(buf[0..],'\n'); + const first = std.mem.indexOf(u8,slice,pattern); + + var index2 : usize = 0; + + + if(first) | index | + { + var num :u64 = 0; + const len = try getNum(allocator,slice,index + pattern.len,&num); + if(len > 0) + { + if(slice[index + pattern.len + len] == ',') + { + var num2 : u64 = 0; + const len2 = try getNum(allocator,slice,index + pattern.len + len + 1,&num2); + if(len2 > 0) + { + //print("num2: {}\n",.{num2}); + index2 = index + pattern.len + len + len2 + 1; + if(slice[index2] == ')') + { + mulresult = mulresult + (num * num2); + if(num > 999 or num2 > 999) + { + print("error invalid data to loong number",.{}); + std.posix.exit(1); + } + print("{s}({d},{d})\nmulresult: {d}\n",.{pattern,num,num2,mulresult}); + } + else + { + index2 = index + 1; + } + } + } + else + { + index2 = index + 1; + } + } + else + { + print("len: {}\n slice: {s}\n endpos{s}\n",.{len,slice,buffer[endpos-5..endpos]}); + } + if(slice.len > index2) + { + slice = slice[index2..]; + //print("slice len: {} \nindex2:{}\n",.{slice.len,index2}); + } + else + { + break; + } + } + else + { + + break; + } +//print("do: {?}, dont(): {?}\nslice.len:{}\n,index2:\n",.{do,dont,slice.len}); + + } + + slice2 = buffer[endpos..]; + } + print("add up muls: {d}\nreadBytes from File: {d}",.{mulresult,read_bytes}); +} + +fn getNum(allocator : std.mem.Allocator,buf : []u8,first : usize,parsed : *u64) !usize +{ + var result : []u8 = try allocator.alloc(u8,0); + var i: u64 = first; + if(i >= buf.len - 1) + { + return 0; + } + + while(isNumber(buf[i]) == true) : ( i += 1) + { + //_ = try std.fmt.bufPrint(&result,"{s}{}",.{temp,buf[i]}); + result = try std.fmt.allocPrint(allocator,"{s}{c}",.{result,buf[i]}); + if(i >= buf.len-1) + { + return 0; + } + } + print("\n{s}\nlen: {}",.{result,result.len}); + if(result.len > 0) + { + parsed.* = try std.fmt.parseUnsigned(u64,result,10); + } + else + { + return 0; + } + defer allocator.free(result); + return result.len; +} + +fn isNumber(number : u8) bool +{ + const numbers = [10]u8{'0','1','2','3','4','5','6','7','8','9'}; + for(numbers) | nbr | + { + if(number == nbr) + { + return true; + } + } + return false; +} + +fn readFile(filename : [] const u8) !usize +{ + const file = try std.fs.cwd().openFile(filename,.{}); + defer file.close(); + + const bytes_read = try file.readAll(&buffer); + return bytes_read; + +} + +test "search substring" +{ + const pos = std.mem.indexOf(u8,"abcde","ded"); + print("Pos: {?}",.{pos}); +} diff --git a/src/day3.zig b/src/day3.zig new file mode 100644 index 0000000..4c55b14 --- /dev/null +++ b/src/day3.zig @@ -0,0 +1,142 @@ +const std = @import("std"); +const print = std.debug.print; +var buffer : [22048]u8 = undefined; + +pub fn main() !void +{ + var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator); + defer arena.deinit(); + const allocator = arena.allocator(); + + const read_bytes = try readFile("day3.txt"); + const pattern = "mul("; + + + + var slice :[]u8= undefined; + slice = buffer[0..read_bytes]; + + var mulresult : u64 = 0; + + //var buf : [10]u8 = undefined; + + while(slice.len != 0) + { + //index2 = 0; + //_ = try std.io.getStdIn().reader().readUntilDelimiterOrEof(buf[0..],'\n'); + const first = std.mem.indexOf(u8,slice,pattern); + var index2 : usize = 0; + + if(first) | index | + { + var num :u64 = 0; + const len = try getNum(allocator,slice,index + pattern.len,&num); + if(len > 0) + { + if(slice[index + pattern.len + len] == ',') + { + var num2 : u64 = 0; + const len2 = try getNum(allocator,slice,index + pattern.len + len + 1,&num2); + if(len2 > 0) + { + //print("num2: {}\n",.{num2}); + index2 = index + pattern.len + len + len2 + 1; + if(slice[index2] == ')') + { + mulresult = mulresult + (num * num2); + if(num > 999 or num2 > 999) + { + print("error invalid data to loong number",.{}); + std.posix.exit(1); + } + print("{s}({d},{d})\nmulresult: {d}\n",.{pattern,num,num2,mulresult}); + } + else + { + index2 = index + 1; + } + } + } + else + { + index2 = index + 1; + print("should be , but is: {c}\nindex2 = {}\n",.{slice[index + pattern.len + len],index2}); + } + } + if(slice.len > index2) + { + slice = slice[index2..]; + //print("slice len: {} \nindex2:{}\n",.{slice.len,index2}); + } + else + { + break; + } + } + else + { + break; + } + } + print("add up muls: {d}\nreadBytes from File: {d}",.{mulresult,read_bytes}); +} + +fn getNum(allocator : std.mem.Allocator,buf : []u8,first : usize,parsed : *u64) !usize +{ + var result : []u8 = try allocator.alloc(u8,0); + var i: u64 = first; + if(i >= buf.len - 1) + { + return 0; + } + + while(isNumber(buf[i]) == true) : ( i += 1) + { + //_ = try std.fmt.bufPrint(&result,"{s}{}",.{temp,buf[i]}); + result = try std.fmt.allocPrint(allocator,"{s}{c}",.{result,buf[i]}); + if(i >= buf.len-1) + { + return 0; + } + } + print("\n-{s}\nlen: {}",.{result,result.len}); + if(result.len > 0) + { + parsed.* = try std.fmt.parseUnsigned(u64,result,10); + } + else + { + return 0; + } + defer allocator.free(result); + return result.len; +} + +fn isNumber(number : u8) bool +{ + const numbers = [10]u8{'0','1','2','3','4','5','6','7','8','9'}; + for(numbers) | nbr | + { + if(number == nbr) + { + return true; + } + } + return false; +} + +fn readFile(filename : [] const u8) !usize +{ + const file = try std.fs.cwd().openFile(filename,.{}); + defer file.close(); + + const bytes_read = try file.readAll(&buffer); + return bytes_read; + +} + +test "search substring" +{ + const pos = std.mem.indexOf(u8,"abcde","ded"); + print("Pos: {?}",.{pos}); +} diff --git a/src/day4.zig b/src/day4.zig new file mode 100644 index 0000000..c461dc8 --- /dev/null +++ b/src/day4.zig @@ -0,0 +1,232 @@ +const std = @import("std"); +const print = std.debug.print; +var buffer : [30000]u8 = undefined; +var debugBuffer : [30000]u64 = undefined; + +const Dir = enum {leftUp, Up, rightUp, left, right, downLeft, down, downRight}; + +const GenericError = error{ + NoNewlineFound, + HitBoundary, +}; +var debugFile : std.fs.File = undefined; + +pub fn main() ! void +{ + + debugFile = try std.fs.cwd().createFile("debug.log",.{}); + defer debugFile.close(); + + var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator); + defer arena.deinit(); + const allocator = arena.allocator(); + + var absPos : usize = 0; + // var currentPos : usize = 0; + var found : u64 = 0; + var ret : u64 = 0; + + const read_bytes = try readFile("day4.txt"); + const lineLen = try getLineLen(); + + for(buffer[0..read_bytes],0..) | _,currentPos | + { + absPos = currentPos; + print("absolute Pos: {}\n",.{absPos}); + // if(@mod(currentPos+1,lineLen) != 0 or currentPos == 0) + // { + print("mod: {}\n",.{@mod(currentPos,lineLen)}); + //ret = try checkString(allocator,"XMAS",&absPos,lineLen); + ret = try checkForMas(allocator,&absPos,lineLen); + debugBuffer[currentPos] = ret; + found = found + ret; + print("Found: {}\n",.{ret}); + //} + + } + print("AllFound: {}\n",.{found}); + + for(debugBuffer[0..read_bytes],0..) | buf,i | + { + if(buf == 0) + { + if(@mod(i,lineLen-1) != 0) + { + print(".",.{}); + } + + } + else + { + print("{d}",.{buf}); + } + if(@mod(i+1,lineLen) == 0) + { + print("\n",.{}); + } + + } +} + +fn checkString(allocator : std.mem.Allocator, pattern : [] const u8,pos : *usize,lineLen : u64) !u64 +{ + var result : u64 = 0; + const tempPos = pos.*; + inline for (@typeInfo(Dir).Enum.fields) | enu | + { + pos.* = tempPos; + //print("typeof:{s} {}\n",.{enu.name,i}); + const slice = move(allocator,@enumFromInt(enu.value),pattern.len-1,pos,lineLen) catch ""; + print("pattern: {s} slice {s} {s}\n",.{pattern,slice,enu.name}); + if(std.mem.eql(u8,pattern,slice) == true) + { + result +=1; + } + } + + return result; +} + +fn checkForMas(allocator : std.mem.Allocator,pos : *usize,lineLen : u64) !u64 +{ + var result : u64 = 0; + const tempPos = pos.*; + + pos.* = tempPos; + if(buffer[pos.*] == 'A') + { + const slice = move(allocator,Dir.leftUp,1,pos,lineLen) catch ".."; + pos.* = tempPos; + const slice2 = move(allocator,Dir.downRight,1,pos,lineLen) catch ".."; + pos.* = tempPos; + + const slice3 = move(allocator,Dir.rightUp,1,pos,lineLen) catch ".."; + pos.* = tempPos; + const slice4 = move(allocator,Dir.downLeft,1,pos,lineLen) catch ".."; + pos.* = tempPos; + + print("slice: {s}\n",.{slice}); + print("slice2: {s}\n",.{slice2}); + print("slice3: {s}\n",.{slice3}); + print("slice4: {s}\n",.{slice4}); + + if(((slice3[1] == 'M' and slice4[1] == 'S') or (slice3[1] == 'S' and slice4[1] == 'M')) and ((slice[1] == 'M' and slice2[1] == 'S') or (slice[1] == 'S' and slice2[1] == 'M'))) + { + result += 1; + } + + + } + return result; +} + +fn move(allocator : std.mem.Allocator, dir : Dir, count: usize,absPos : *usize,lineLen : u64) ![]u8 +{ + var result : []u8 = try allocator.alloc(u8,1); + + result[0] = buffer[absPos.*]; + //defer allocator.free(result); + + for(0..count) | _ | + { + const homePos = absPos.*; + //debugBuffer[absPos.*] = '.'; + if(absPos.* != '\n') + { + switch(dir) { + Dir.leftUp => { + if(absPos.* > lineLen) + { + absPos.* = absPos.* - lineLen - 1; + } + else + { + return error.HitBoundary; + } + }, + Dir.Up => { + if(absPos.* > lineLen) + { + absPos.* = absPos.* - lineLen; + print("dir.up {c}\n",.{buffer[absPos.*]}); + } + else + { + return error.HitBoundary; + } + }, + Dir.rightUp => { + if(absPos.* > lineLen) + { + absPos.* = absPos.* - lineLen + 1 ; + } + else + { + return error.HitBoundary; + } + }, + Dir.left => { + //if(@mod(absPos.*,lineLen)!=0) + if(absPos.* > 0) + { + absPos.* = absPos.* - 1; + } + else + { + return error.HitBoundary; + } + }, + Dir.right => { + absPos.* = absPos.* + 1; + }, + Dir.downLeft => { + absPos.* = absPos.* + lineLen - 1; + }, + Dir.down => { + absPos.* = absPos.* + lineLen; + }, + Dir.downRight => { + absPos.* = absPos.* + lineLen + 1; + }, + } + } + if(buffer[absPos.*] != '\n') + { + result = try std.fmt.allocPrint(allocator,"{s}{c}",.{result,buffer[absPos.*]}); + } + else + { + absPos.* = homePos; + result = try std.fmt.allocPrint(allocator,"...",.{}); + } + + } + //print("absPos: {} lineLen: {}\n",.{absPos.*,lineLen}); + return result; +} + + +fn getLineLen() GenericError!usize +{ + if(std.mem.indexOf(u8,&buffer,"\n")) | index | + { + print("found newline at {?}\n",.{index}); + //add for the newline itself + return index+1; + } + else + { + return error.NoNewlineFound; + } +} + +fn readFile(filename : [] const u8) !usize +{ + const file = try std.fs.cwd().openFile(filename,.{}); + defer file.close(); + + const bytes_read = try file.readAll(&buffer); + return bytes_read; + +} + diff --git a/src/day5.zig b/src/day5.zig new file mode 100644 index 0000000..2f48de7 --- /dev/null +++ b/src/day5.zig @@ -0,0 +1,179 @@ +const std = @import("std"); +const print = std.debug.print; + +pub fn main() !void +{ + const allocator = std.heap.page_allocator; + var rules = std.ArrayList([]u8).init(allocator); + var data = std.ArrayList([]u8).init(allocator); + var sum : usize = 0; + + print("typeof arraylist: {}",.{@TypeOf(rules)}); + try readFile(allocator,"day5.txt",&rules,&data); + + print("rules:\n",.{}); + for(rules.items) | rule | + { + print("{s}\n",.{rule}); + } + print("data:\n",.{}); + for(data.items) | dat | + { + print("{s}\n",.{dat}); + } + + + + for(data.items) | dat | + { + const values = try parseIntsToSlice(allocator,dat); + print("ints: {d}\n",.{values}); + if(try checkOrder(allocator,dat,&rules)) | failed_rule | + { + print("dataset failed at rule {d}\n",.{failed_rule}); + } + else + { + print("dataset {d} clean\n",.{values}); + const middle = getMiddleFromSlice(values); + print("middle value {d}\n",.{values[middle]}); + sum = sum + values[middle]; + } + } + +print("Final result: {d}",.{sum}); + +} + +fn readFile(allocator : std.mem.Allocator, filename : [] const u8, rules : *std.ArrayList([]u8), data : *std.ArrayList([]u8)) !void +{ + const file = try std.fs.cwd().openFile(filename,.{}); + var buf_reader = std.io.bufferedReader(file.reader()); + var reader = buf_reader.reader(); + + var buf: [1024]u8 = undefined; + + while(try reader.readUntilDelimiterOrEof(&buf,'\n') )| line | + { + + if(std.mem.indexOf(u8,line,"|")) | _ | + { + print("this is a rule: ",.{}); + try rules.append(try std.fmt.allocPrint(allocator,"{s}",.{line})); + } + else if(std.mem.indexOf(u8,line,",")) | _ | + { + try data.append( try std.fmt.allocPrint(allocator,"{s}",.{line})); + print("this is a data set: ",.{}); + } + + print("{s}\n",.{line}); + } +} + +fn parseIntsToSlice(allocator : std.mem.Allocator, data : []u8) ![]u64 +{ + var values : []u64 = try allocator.alloc(u64,0); + var start_pos : usize = 0; + + //first must be different as dataset does not beginn with a , + + if(std.mem.indexOfAnyPos(u8,data,0,",")) | index | + { + values = try allocator.realloc(values,values.len + 1); + const cur_index = values.len - 1; + + //parses the string from beginning to , to an integer + values[cur_index] = try std.fmt.parseInt(u64,data[0..index],10); + } + + while(std.mem.indexOfAnyPos(u8,data,start_pos,",")) | index | + { + if(start_pos >= data.len - 1) break; + + if(std.mem.indexOfAnyPos(u8,data,index+1,",")) | sub_index | + { + values = try allocator.realloc(values,values.len + 1); + const cur_index = values.len - 1; + + //parses the string from , to , to an integer + values[cur_index] = try std.fmt.parseInt(u64,data[index+1..sub_index],10); + start_pos = sub_index; + } + else + { + values = try allocator.realloc(values,values.len + 1); + const cur_index = values.len - 1; + values[cur_index] = try std.fmt.parseInt(u64,data[index+1..data.len],10); + break; + } + } + //print("address of heap allocated memory: {}\nvalues itself: {d}\n",.{&values,values}); + return values; +} +fn parseRule(allocator : std.mem.Allocator,rule : []u8) ![2]u64 +{ + _ = allocator; + + if(std.mem.indexOf(u8,rule,"|")) | index | + { + const int1 = try std.fmt.parseInt(u64,rule[0..index],10); + const int2 = try std.fmt.parseInt(u64,rule[index+1..],10); + return .{int1,int2}; + } + return.{0,0}; +} + +//returns the rule number which first caused a rule mismatch +fn checkOrder(allocator : std.mem.Allocator,data : []u8,rules : *std.ArrayList([]u8)) !? usize +{ + const nbrs = try parseIntsToSlice(allocator,data); + //const nbrs2 = try parseIntsToSlice(allocator,data); + var pass_test : bool = false; + var fail_index : usize = 0; + + for(nbrs,0..) | nbr, index_nbr | + { + for (rules.items,0..) | rule, index_rule | + { + + const rule_i = try parseRule(allocator,rule); + if(nbr == rule_i[0]) + { + print("check rule: {s}",.{rule}); + for(nbrs,0..) | nbr2, index_nbr2 | + { + if(nbr2 == rule_i[1]) + { + if(index_nbr2 > index_nbr) + { + print("... OK\n",.{}); + pass_test = true; + break; + } + else + { + print("... failed at rule {d}\n",.{index_rule}); + pass_test = false; + fail_index = index_rule; + return fail_index; + } + } + } + else + { + print("... skip rule\n",.{}); + } + } + } + } + return null; +} + +fn getMiddleFromSlice(data : []u64) usize +{ + const middle = (data.len - 1) / 2; + print("middle: {}\n",.{middle}); + + return middle; +} diff --git a/src/main.zig b/src/main.zig new file mode 100644 index 0000000..14ffdbf --- /dev/null +++ b/src/main.zig @@ -0,0 +1,121 @@ +const std = @import("std"); +var data : [4][1024]u32 = undefined; +var res:u32=0; +var res2:u32=0; + +pub fn main() !void { +_ = try readFile(); +std.debug.print("{},{}\n",.{data[0][0],data[1][0]}); + + for(&data[0],0..) | *elema,indexa | + { + const slice = data[0][indexa+1..]; + for(slice) |*elemb| + { + if(elemb.* < elema.*) + { + const temp = elema.*; + elema.* = elemb.*; + elemb.* = temp; + } + } + } + for(&data[1],0..) | *elema,indexa | + { + const slice = data[1][indexa+1..]; + for(slice) |*elemb| + { + if(elemb.* < elema.*) + { + const temp = elema.*; + elema.* = elemb.*; + elemb.* = temp; + } + } + } + + for(&data[0],&data[1],&data[2],&data[3]) | a, b, *c, *d | + { + d.* = 0; + if(a < b) + { + c.* = b-a; + } + else if (a > b) + { + c.* = a-b; + } + } + for(&data[0]) | a | + { + + for(&data[1], &data[3]) | b, *c | + { + //std.debug.print("a:{} ,b:{}\n",.{a,b}); + if(a == b and a != 0) + { + c.* = a; + std.debug.print("c:{}, a:{}\n",.{c.*,a}); + } + } + } + for(&data[3]) | count | + { + res2 = res2 + count; + } + + for(&data[2]) | a | + { + res = res + a; + } + std.debug.print("res: {}\n",.{res}); + std.debug.print("res2: {}\n",.{res2}); + std.debug.print("ex: {} {} {}",.{data[0][1],data[1][1],data[3][1]}); + + +} + + + +fn readFile() !void +{ + const file = try std.fs.cwd().openFile("input.txt",.{}); + defer file.close(); + + var buf_reader = std.io.bufferedReader(file.reader()); + var in_stream = buf_reader.reader(); + + var buf: [1024]u8 = undefined; + var index : u32 = 0; + var indexa: u32 = 0; + var indexb : u32 = 0; + + while(try in_stream.readUntilDelimiterOrEof(&buf,'\n')) | line | + { + var it = std.mem.split(u8,line," "); + + while (it.next()) |word| + { + if(std.mem.eql(u8,word,"\n")==false) + { + if(std.mem.eql(u8,word,"")==false) + { + //std.debug.print("entry:{s}\n", .{word}); + if(@mod(index,2)==0) + { + data[0][indexa] = try std.fmt.parseInt(u32,word,10); + indexa +=1; + } + else + { + data[1][indexb] = try std.fmt.parseInt(u32,word,10); + indexb += 1; + } + index += 1; + } + } + } + + } +} + diff --git a/src/root.zig b/src/root.zig new file mode 100644 index 0000000..ecfeade --- /dev/null +++ b/src/root.zig @@ -0,0 +1,10 @@ +const std = @import("std"); +const testing = std.testing; + +export fn add(a: i32, b: i32) i32 { + return a + b; +} + +test "basic add functionality" { + try testing.expect(add(3, 7) == 10); +} diff --git a/test.txt b/test.txt new file mode 100644 index 0000000..c08c4af --- /dev/null +++ b/test.txt @@ -0,0 +1 @@ +mul(350,145) diff --git a/zig-out/bin/adventofcode b/zig-out/bin/adventofcode new file mode 100755 index 0000000..86da700 Binary files /dev/null and b/zig-out/bin/adventofcode differ diff --git a/zig-out/lib/libadventofcode.a b/zig-out/lib/libadventofcode.a new file mode 100644 index 0000000..01aa0fa Binary files /dev/null and b/zig-out/lib/libadventofcode.a differ