This commit is contained in:
jonathan santis 2024-12-24 13:22:11 +01:00
commit 2de218f9c2
44 changed files with 5398 additions and 0 deletions

152
$ Normal file

@ -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;
}

@ -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

@ -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

@ -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

@ -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

0
.zig-cache/h/timestamp Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -0,0 +1,2 @@
pub const packages = struct {};
pub const root_deps: []const struct { []const u8, []const u8 } = &.{};

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

91
build.zig Normal file

@ -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);
}

72
build.zig.zon Normal file

@ -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 <url>`, 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 <url>` 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",
},
}

13
count.txt Normal file

@ -0,0 +1,13 @@
....11...
...1.....
.........
........2
1....2...
1.....1..
.........
.........
.........
.1.2.3..2

6
day2-1.txt Normal file

@ -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

1000
day2.txt Normal file

File diff suppressed because it is too large Load Diff

6
day3.txt Normal file

@ -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)<mul(701,405)] {@mul(44,889)#>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(615,61)}-mul(539,208)what()@)?/#}(^mul(312,368)[%what(965,619)how()do():'}&;]>{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)<from()$;from(),what(359,353) )mul(525,511)$^{select() +}what()from()mul(159,625):where()!:###~><mul(823,941)what()mul(935,812)when()select()when():mul(736,661)how()mul(728,742)how()*+mul(627,380)?when(589,538)+mul(531,652)>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()<what()&why()when()!from()mul(28,969)&where()};mul(101,807)~,~?mul(21,300)?mul(784,363)]?&{+^who())<mul(751,251)}where()when() mul(129,699)when()&[; do()#mul(593,157! -how() {mul(336,273)$[mul(767*&:from()mul(350,145)]who(524,855)/#from()'/[!&mul(311,457)<select(259,997)}from()>$</+ do()from()!}where()~]:>!mul(838,414)where()-/mul(810,111)'<mul(973,153)~!mul(143,649)[}$don't()#:)$?*when()(select()mul(466,395)^#[<';&from(96,136)$(mul(371,173)$>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(797,825)who()],<]why()mul(634,889)where()when()&!how(760,87)select():@what()mul(280,650)-! $ mul(509how()-#why()(>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(633,634)}[]mul(622,202)where()mul(524,996)!mul(432,456)%[what()what()@?<'who()mul(458,188)[^why()why()}^]mul(635,632)}where()from()^$how();}mul [mul(814,798)%mul(707,658);&+#,what() mul(493,278)what();[<#who()~mul(71,275)]/)>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()<where()do()'[;from()who(),}where()select(542,70)mul(886,778)when()~who()mul(564,730)>-(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()$<what()~# *where(){mul(700,774)+why()!mul(167,944)why()-{,?#*mul(263,222)when(937,759)how()[%do()when()~]*; how(),][mul(797,496)*# ,who()what()mul(417,548)+<@&who()mul(410,219)<how()-mul(946,326)how()mul(672,637),mul(928,490)who()why(217,124)from()mul(922,974)!^% mul(132+select()don't()who())<from() &what()mul(357,21)who()({what()$mul(79,941)@>/select())#]#*mul(463,143)}how()when()!$]do()mul(832,164)-what()<what()//&#)what()mul(588,879)):?!;%mul(854,370)-#[[]why()mul(853,834)&!:!how()mul(83,715)who()select();#when();{mul(498,332):mul(681,273who()$<@# !why()mul(206,67)when());',%mul(341,939) ',mul(344,602)mul(803,721){{(mul(353,665)where()^)*^^(?(mul(19,951)&don't()where()mul(453,418)who():select(503,219)when()},mul(99,836);!mul(688,742)?when()^!how()why()mul(643,864)}%from()$mul(217,653)
<$*^mul(972,456)select()&(mul(408,506)!(#mul(627,283)why()@[{'%mul(352,904)where()?/,where()&%^$:mul(945,486)>$select(),%: <mul(9,606)mul(306,642)%{( mul(120,260)-}~from()how()when()!/mul(98,87)[;why()[mul(947,277)(@mul(969,472)?[;what()mul(92,623)mul(5,792),what()#mul(180,460)where()when()({+!- +why(598,637)mul(659,178#}how()^what()@>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)<why()@>select()],mul(344,943)#;mul(645,722)[)why(258,3)<select()mul(841,699)mul(658,372)how()]?{<select()-#mul(818,278)how()/)mul(530,148)*mul(604,712)why()[-~ )!]mul(425,760)[-where()!#+#what()who()don't()when()why()mul(400,735)+@!mul(523,543);*what():~^$,}*mul(286,589)^mul(875,453)&}^-:#<mul(205,529)>-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()<select()@>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()@<where()where();mulwhat()~}mul(900,800))!mul(247,569)where()how()+-*<[mul)[/mul(402,792){why()?,#@>!}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()<who()/,mul(41,350)^+@mul(12,298){~}mul(90,957)[:&]?#&'<mul(831,781);/~*'mul(122,529),when(687,987)mul(281@~mul(476,393)[%what()when()]:/(#mul(441,562)select()what()~mul(965,167)mul(244,812)'?select()mul(238,951)what()<;!mul(755,636):]don't() @{:]>(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(922,634),why(19,798))+][mul(950,643)~$#-don't()+!{/!mul(31,380)([]how() -when(434,329)mul(528,682)mul(162$&:how()^<how())mul(265,640)}%[do()!*-mul(737,87)?^why()#'(select()*why()mul(512,635)!%mul(107,437)<*):]~who()$what()mul(906,266) ;!select()/{^mul(635,867)^<{^how()!where()where()#!/usr/bin/perl/?:mul(655,372)what(199,832);>%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(569,216)'mul(875,178+mul(576,106)&{<mul(457,835)from()what()mul(771,919)>{*/*mul(146what()?[why()}mul(846,806)#<select()!from()select()~ select()mul(993,127)>}%/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(79,304,<from()%mul(976,541)#mul(482,640)/^what(127,388),[{^how()$)mul(992,710)mul(687,9)&who(390,246)-@!%',,mul(728,710)how()why(68,923),who()#what()(where()when()mul(624,337)}select()<how()where()?!*mulwhere()how()why()mul(376,802)!#from(252,903)mul(60,496):#@where(363,376)>#^$%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(698<don't()mul(82,175)mul(386,509)<from();mul(454,768)#^%when()when()&&mul(941,963)what()>select()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(746,688)why(){mul(140,329)+(!^!&~do()&-,select()-;?#mul(327,421)}@-select(119,85)?}!why(447,976) mul(20,560)[mulhow()/%what()do():when()where();-$mul(690,257)[who()~!?<who()from():*mul(728,463)?-!,$<#when(635,309)mul(569,992)*select()mul(348,231)when()what(401,132)mul(734,962)what()-+,]&select()[<,mul(819,797)&',from(),;}(&mul(378,635)^!mul(692,702)?!:?(($how()mul(359,20)](what()[what()(-@mul(865,749)?;{[)where()from()mul$why()$where()/mul(707,669)%mul(9,881)why()mul(795,416)[mul(683,990)<~mul(801,670)where()when(),who()[+mul(993,621):from()when()]{,%how()when()mul(386,519)[)select()mul+)!]mul(152,672)<{+$mul(402,280)!-[/^$@who()mul(812,36{do()$mul(262,617)~where()-select()mul(797,218)^where();?mul(421,349)select()/[mul(841,580)how()what()what()how()#who()mul(797,115)mul(484,450)(mul(304,175)@+from()when()-#>@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(17,432)}))mul(168,60where()}??$%mul(367,488)when()how()+[when()[;':mul(992,908)::when()]what()what():}don't() mul(72,331)+}what()*when()when()$/@mul(379,950)?what(786,109)~mul(255,952)~<where()/:{mul(532,854)^}(%&!'why()mul(539,11)(mul(292,42)?<~!!where()$<&mul(899,950),+why()how()how()do()!'$from(357,398)how()'>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(258,695)&?+[;>^^{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()<mul(329,540)}mul(597,980)select()^'$+when()^-mul(183,354)({!why()what() select()mul(983,243)<<select()-$from()from()+who()*mul(680,168);select()who()who();'~where()&mul(952,244)}[where()>>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)<<select()how()()/^mul(17,516)}+>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()<when()^)>'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(279,687)how()@what()select())@$mul(236,621)how()[]*),&mul(320,242)from(){}!%when()!:-mul(630,655)/mul(146,899)!why()select(88,257) >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()^&!&<mul(693,274) from()!what()mul(842,707)mul(645?#>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(729,329),?+mul(452,183)where();mul(412,329)select()&{^select()mul(304,748/-<~{$'$mul(250,311)^[!*@don't()-]%when()who()mul(275,612)mul(808,359)%:?how()'/$what()mul(125,6)>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(106,339)[#}[mul(527,610)/@&,#)/;who())mul(945,633)#who()!&,when(),]mul(699,592)*%mul(533,983)#:where()who()>$;[<]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())[{[]&<mul(758,998)<!)#//'how()mul(966,404)* when()select()mul(772,998)'}&;;when()when(647,664)[;mul(357,688)(:mul(936,619)-'!)]from()why()what()[*mul(35,397)select()@@' mul(690,152)#where()mul(918,315)*'~];{%#mul(705,251),($;'mul(229,687)mul(12,423);# ;who()#('mul(409,16)mul(734,661)@[}*;{]*mul(642,531)(mul(897,68)}*[%-what()>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)<mul(390,554)}mul(93,903)from()?;$mul(334,112)#what(549,926)-[ (mul(822,67)^'+%how(922,819) %^mul(535,921)mul(585,568)/:don't()mul(996,381);[mul(750,438)who()$;why()^?%[do()mul(837,207)@,select();^-$don't()why()why()>#why()mul(960,402)<,&{%what()]select()mul(289,89)%){>?+//mul(23,303)what()select(708,763)where()%how()><select()mul(542,492)how()when(976,435)select()#>%mul(224,519)+ ]mul(152,297)]mul(49,650)why()<)%where()mul(783,630)#asdlfksdofijsdfoijasdfjsdfo

140
day4.txt Normal file

@ -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

1374
day5.txt Normal file

File diff suppressed because it is too large Load Diff

0
debug.log Normal file

1001
input.txt Normal file

File diff suppressed because it is too large Load Diff

171
src/day2.zig Normal file

@ -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;
}

204
src/day3-2.zig Normal file

@ -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});
}

142
src/day3.zig Normal file

@ -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});
}

232
src/day4.zig Normal file

@ -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;
}

179
src/day5.zig Normal file

@ -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;
}

121
src/main.zig Normal file

@ -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;
}
}
}
}
}

10
src/root.zig Normal file

@ -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);
}

1
test.txt Normal file

@ -0,0 +1 @@
mul(350,145)

BIN
zig-out/bin/adventofcode Executable file

Binary file not shown.

Binary file not shown.