commit 680da5cc2cecc002cca7dae841dec869ceaa312e Author: Tarik Hijstek Date: Fri Nov 25 22:36:13 2022 +0100 attemps from before diff --git a/2020/day1/day1.cs b/2020/day1/day1.cs new file mode 100644 index 0000000..20d4d5a --- /dev/null +++ b/2020/day1/day1.cs @@ -0,0 +1,6 @@ +int main(){ + var input = File.ReadAllText(input1); + + + return 0; +} \ No newline at end of file diff --git a/2020/day1/day1.zig b/2020/day1/day1.zig new file mode 100644 index 0000000..e400902 --- /dev/null +++ b/2020/day1/day1.zig @@ -0,0 +1,99 @@ +const std = @import("std"); + +pub fn main() anyerror!void{ + // fuck it, inline time + comptime const numbers: [200]u32 = .{ + 1695,1157,1484,1717,622, + 1513,1924,63,1461,1971, + 1382,1587,1913,1665,1464, + 1914,1637,1527,1424,1361, + 1187,272,1909,1448,1623, + 1164,1931,1646,1096,1655, + 1962,1961,1694,1792,1989, + 1616,138,1887,1357,1965, + 1085,308,2007,1254,1179, + 1124,1719,1467,1928,1630, + 1676,1359,1241,1511,1413, + 1656,1818,1919,1422,1745, + 1208,1609,1544,1775,1154, + 1057,1440,1242,1202,1266, + 1305,1836,1760,1730,1396, + 1315,1496,1964,1300,1195, + 1583,1607,1743,1682,1453, + 1848,1320,1601,954,1473, + 1847,1486,1853,1668,1342, + 1087,1139,1349,1568,1728, + 1420,1233,1073,1376,1658, + 1477,1871,1958,1950,1503, + 1758,1474,1203,1336,1981, + 1309,1618,1846,1974,1940, + 1333,1119,1756,1918,961, + 1307,1375,1346,1611,1284, + 84,1754,1608,2010,1341, + 1136,1218,1882,1911,1288, + 1930,1749,1952,1556,1757, + 1761,1112,1963,1186,1373, + 1622,1973,1330,1508,1222, + 1226,1389,1679,1584,1237, + 1563,1763,1998,1293,1642, + 95,1661,1674,1100,1262, + 1895,1548,1400,1205,1435, + 1156,1034,1577,1701,1198, + 1173,1500,1858,1809,1780, + 1412,1982,1070,1523,1776, + 1598,1113,1144,1777,1313, + 1102,1999,1405,1784,1196, + }; + + var task1timer = try std.time.Timer.start(); + var task1answer:u32 = task1(numbers); + var task1time = task1timer.read(); + std.debug.print("T1 answer found in : {0}ns \n", .{task1time}); + std.debug.print("T1 answer is: {0} \n", .{task1answer}); + + std.debug.print("\n",.{}); + + var task2timer = try std.time.Timer.start(); + var task2answer:u32 = task2(numbers); + var task2time = task2timer.read(); + std.debug.print("T2 answer found in : {0}ns \n", .{task2time}); + std.debug.print("T2 answer is: {0} \n", .{task2answer}); +} + +pub fn task2(numbers: [200]u32)u32{ + for(numbers)|num1|{ + for(numbers)|num2|{ + if(num1+num2 > 2020){ + continue; + } + var num3 = (2020 - (num1+num2)); + if(isInArray(num3, &numbers)){ + return num3 * num2 * num1; + } + } + }else{ + return 0; + } +} + +pub fn task1(numbers: [200]u32)u32{ + for(numbers)|num|{ + var num1 = 2020 - num; + if(isInArray(num1, &numbers)){ + return num1*num; + } + }else{ + return 0; + } +} + + +pub fn isInArray(num: u32, arr: *const [200]u32)bool{ + for(arr)|checkee|{ + if(checkee == num){ + return true; + } + } + return false; + +} diff --git a/2020/day1/day1File.zig b/2020/day1/day1File.zig new file mode 100644 index 0000000..9346f53 --- /dev/null +++ b/2020/day1/day1File.zig @@ -0,0 +1,68 @@ +const std = @import("std"); +const warn = std.debug.warn; + +pub fn main() anyerror!void{ + var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator); + defer arena.deinit(); + + const allocator = &arena.allocator; + + //read data from file. + //each line is one number + var file = try std.fs.cwd().openFile("input1", .{}); + defer file.close(); + + const file_size:u64 = try file.getEndPos(); + std.debug.print("{0} \n", .{file_size}); + + var buffer = try allocator.alloc(u8, file_size); + var reader = file.reader(); + + var size = try reader.read(buffer); + + std.debug.print("{0} \n", .{buffer}); + +//read from buffer +//put value in array +//is value 10? +//finish array, interpret as int32. +const numberArr: []u32 = try allocator.alloc(u32, 4); +var i:i32 = 0; + +for(buffer) |byte|{ + if(byte == 10){ + i=0; + //std.debug.print("{0}", .{@as(i32,numberArr)}); + + }else{ + //numberArr.push(byte); + } + i += 1; +} + + // for(buffer) |byte|{ + // if(byte == 10){ + // std.debug.print("Newline!\n", .{}); + // }else{ + // std.debug.print("{0}", .{byte}); + // } + // } + + + + +//what two numbers from the input file add up to 2020? +//once those two numbers have been found, multiply them + + +//naive: +//foreach number |num1| +//foreach number |num2| +//if(num1+num2 = 2020) +//return num1*num2 + +//v2 +//foreach number |num1| +// if(number.contains(2020-num1)) +// return num1*(num2; +} \ No newline at end of file diff --git a/2020/day1/input1 b/2020/day1/input1 new file mode 100644 index 0000000..208b522 --- /dev/null +++ b/2020/day1/input1 @@ -0,0 +1,200 @@ +1695 +1157 +1484 +1717 +622 +1513 +1924 +63 +1461 +1971 +1382 +1587 +1913 +1665 +1464 +1914 +1637 +1527 +1424 +1361 +1187 +272 +1909 +1448 +1623 +1164 +1931 +1646 +1096 +1655 +1962 +1961 +1694 +1792 +1989 +1616 +138 +1887 +1357 +1965 +1085 +308 +2007 +1254 +1179 +1124 +1719 +1467 +1928 +1630 +1676 +1359 +1241 +1511 +1413 +1656 +1818 +1919 +1422 +1745 +1208 +1609 +1544 +1775 +1154 +1057 +1440 +1242 +1202 +1266 +1305 +1836 +1760 +1730 +1396 +1315 +1496 +1964 +1300 +1195 +1583 +1607 +1743 +1682 +1453 +1848 +1320 +1601 +954 +1473 +1847 +1486 +1853 +1668 +1342 +1087 +1139 +1349 +1568 +1728 +1420 +1233 +1073 +1376 +1658 +1477 +1871 +1958 +1950 +1503 +1758 +1474 +1203 +1336 +1981 +1309 +1618 +1846 +1974 +1940 +1333 +1119 +1756 +1918 +961 +1307 +1375 +1346 +1611 +1284 +84 +1754 +1608 +2010 +1341 +1136 +1218 +1882 +1911 +1288 +1930 +1749 +1952 +1556 +1757 +1761 +1112 +1963 +1186 +1373 +1622 +1973 +1330 +1508 +1222 +1226 +1389 +1679 +1584 +1237 +1563 +1763 +1998 +1293 +1642 +95 +1661 +1674 +1100 +1262 +1895 +1548 +1400 +1205 +1435 +1156 +1034 +1577 +1701 +1198 +1173 +1500 +1858 +1809 +1780 +1412 +1982 +1070 +1523 +1776 +1598 +1113 +1144 +1777 +1313 +1102 +1999 +1405 +1784 +1196 diff --git a/2020/day2/day2.zig b/2020/day2/day2.zig new file mode 100644 index 0000000..936c62b --- /dev/null +++ b/2020/day2/day2.zig @@ -0,0 +1,73 @@ +const std = @import("std"); + + +pub fn main() anyerror!void{ + var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator); + defer arena.deinit(); + + const allocator = &arena.allocator; + + //format: + //[d-d] [c]: [password] + //[minamount [sperator] maxamount] [character]: [password] + + var file = try std.fs.cwd().openFile("input2", .{}); + defer file.close(); + + const file_size:u64 = try file.getEndPos(); + std.debug.print("{0} \n", .{file_size}); + + //var buffer = try allocator.alloc(u8, file_size); + //var reader = file.reader(); + + //var size = try reader.read(buffer); + + //std.debug.print("{0} \n", .{buffer}); + try file.seekTo(0); + + const contents = try file.reader().readAllAlloc( + allocator, + file_size + ); + defer allocator.free(contents); + + // const passBuffer = try allocator.alloc(u8, 40); //get a 40 char buffer + // defer allocator.free(passBuffer); + + const ArrayList = std.ArrayList; + var list = ArrayList(u8).init(allocator); + defer list.deinit(); + + for(contents)|char,index|{ + if(char == 12){ + std.debug.print("\n", .{}); + //end of line, so clear everything + + continue; + } + if(char == 45){ + //current char is (-), so we take the input so far + //and set it as the min + for(list)|didget|{ + + } + } + + list.append(char); + + //put byte in buffer + //is current byte a dash (-)? + //yes, then this is min + //read untill space + //from (-) until the space, is the max + + std.debug.print("{c}", .{char}); + + } +} + +pub fn isPassValid(char:u8, amountMin:i32, amountMax:i32, input: []u8 )bool{ + //in here check if password is valid + return false; + +} \ No newline at end of file diff --git a/2020/day2/input2 b/2020/day2/input2 new file mode 100644 index 0000000..32ae92c --- /dev/null +++ b/2020/day2/input2 @@ -0,0 +1,1000 @@ +2-6 w: wkwwwfwwpvw +14-15 v: hvhvlhvvvwxvdvscdpvg +2-3 b: bkkb +3-4 v: wgvvzvhcvlrvjvvmv +11-12 c: cccccccccqcccckcc +2-5 z: zkzpzlzzzzz +7-13 x: xxxxxxxxxxxxxxx +7-10 f: zffxbwffqfxfffxf +16-17 h: hvhhhhhhhhhhhhhrt +2-3 k: krjkk +10-11 k: kkkkkkkkkkg +17-20 d: dmfpddzdlddtvdddwdtk +3-5 m: tdwmmmmj +4-6 b: ncdbbpgxrg +8-13 d: bdfddglkdddgqwdfczs +2-5 s: tsszkhgf +2-3 k: zbkt +5-9 k: qqwmdqkzkldhpjql +4-6 p: bpjfhrpd +10-11 r: rrrxrrrrwhrrrr +6-9 n: nnxnwnnnbl +4-6 k: kmgpkkjd +4-5 v: vvdgv +3-4 h: jhhh +5-14 n: gnsnnnlvbzcsjjwqj +14-17 f: qfqffffqffnlwcffz +11-12 j: mchrqljrjhjjhjvmjwb +1-4 k: kkkkk +13-14 q: qqqqqqqqxqqqqlqq +1-3 k: cmkrdptlkxlkh +7-9 m: mmmmmmmmmm +4-10 b: brbxqbbblb +3-4 f: fqdff +3-4 r: rqrpzrr +6-7 n: cknndnngpnnn +2-6 b: pkbbbbb +3-9 s: lssssssjswzss +1-6 m: kmmmmmmmmmm +1-4 n: nnnnnn +3-4 p: pppqp +7-16 s: ssnslsmshfsvstxsprw +1-5 x: nxxxxxx +2-4 q: qcqqhq +4-5 r: rrprz +2-5 q: kqqqqqq +6-7 m: nggpmcm +4-9 r: rrrrrrrrr +3-6 j: zqjpzkkpspsjs +1-4 h: hhhs +4-8 l: wlqgklsl +6-7 f: zxfwcpf +5-17 g: cgvfqmggggqggggzgw +2-13 m: mpsmmmmmmmmmmmm +8-12 b: bdbbblbbbbxkbmb +17-18 z: zzzzzzzzzzzzzzzzjz +6-11 h: dlkhchqxthn +1-6 x: lxxxxxsxdxdhxxfj +3-4 m: mmpm +4-8 l: ncphmhtldmrtvslrbt +14-15 c: ncgjthcdvgjcwcjz +4-5 s: bsjsssbt +2-5 j: psjvjzbghz +11-12 b: bbbbbbbbbbbbl +6-7 b: bbbbbbb +6-7 k: kkkkkkps +9-10 w: wwwcrxcwwwwwwf +1-3 k: rkkk +4-5 q: dqxcq +2-14 v: vhhtvgwvdhvmqvmsp +2-3 c: nbzrfvv +5-9 h: hhkvmrxhsf +3-5 v: bdlgvcqftvvx +8-9 p: ppppppppw +4-6 f: dfkfdf +7-8 m: mnnmmqwmmzjfb +11-17 w: wgwwwwwwwwwwwwjbwwww +1-5 q: ccbwhgqszgnqtf +1-6 d: dkxxddd +5-10 c: ccccrcckccccc +10-13 x: rxcxxxxxhxcxkxxx +2-6 p: pppppfp +4-5 k: mkjnkmtkkpk +7-14 f: ffffffkwfffhpf +8-9 h: hhhhhhhwwhhhh +3-4 r: rrrrr +3-4 t: swptmltp +7-10 l: lmllgllwll +6-13 q: zqnrkqpqcdfnqvdnlrqq +2-3 k: ccvmrkxl +11-15 l: llllllllllllllpll +11-18 v: vvvgvvvvvtmvrvvvsqv +11-14 t: dshqbfvbdttqcx +7-8 n: wghnnnwnnnmvnn +4-7 b: bpxcbffcsr +6-10 l: rnlnwlmvtl +17-20 j: jjvjjjjjjsjjjjjtmjjz +5-8 g: mvcfkrfcgppfjv +3-11 f: crzfpxmtlkwwnnfrd +4-6 v: vvvvmsvd +3-7 d: dddddddd +10-11 m: mmmmmmmkmgmm +5-10 s: jgsssgsssqsh +12-18 g: fbggtqvjggxmgggjkg +10-11 v: nfclzhbnphxx +2-10 m: ntqmdkhrrj +4-7 g: ggxtmdggmghgc +8-11 g: rggggxttqggg +7-9 t: tthsjppttftt +15-16 v: vvvvvvvvvvvvvvvh +2-5 g: sgcgr +5-7 f: fxffjffffp +10-15 r: rrrrrrdrrrrrjrr +13-16 p: ppppppbppppppwpmppp +5-11 z: zbmxftzzzzmz +11-13 k: jkkxkkkkvkwkkkkvk +6-7 n: nnntnnz +8-11 j: gjjjjnjkdjqpjtj +2-4 x: xxxjj +2-13 r: rgnrlpwrbrrxvrrrrzw +5-6 p: pppppp +14-16 n: pcnnxqnglnnznngn +1-2 f: fffffx +4-5 d: ddpvcdv +2-3 n: kfnn +4-6 q: qbhbcwmhph +5-6 p: pnbccxp +5-9 v: vvvvvvvvmv +2-4 x: rjsv +9-16 x: xxxxxxxxmxxxxxxnx +2-5 j: jdjbjjjjj +6-12 t: tttgtttltbtnhrtgk +7-10 v: vvvvvvvvvsv +4-7 h: zmlhhpljhjjhqfh +8-9 m: mmmxmsmkmmmm +10-11 z: zzzzzzzzztwz +6-11 x: xxxxxxxxxxhxxxxxxx +1-13 g: gggfgggggggggggggz +14-15 f: frjzssdfnnzflffpsqfj +10-18 f: fffffffffffffffffff +3-4 s: ssmg +13-14 t: ttttttttttttgt +6-7 l: lllscll +14-16 r: tbbnrgdkdrrsdrnrjnb +11-12 k: lkkkkkqkkkkclkkqkk +2-4 n: hnfnn +4-5 n: nsnptgcccnrtc +9-10 z: zzzzzzzzzrz +7-8 m: pmcgtmmmmmxmvm +6-9 x: xxxxfxxxq +2-4 w: wwws +9-17 h: hbhhcvhrhctvhhhhx +2-11 k: qfnkfhlbfkshtqvcnk +5-9 k: kkkkkkkkbkkkkklkk +3-5 v: pgsjv +10-14 n: nnnnnznnnnnnnknr +6-8 k: ppkhkkgkjkqjkkhzkbv +1-2 f: pfcm +10-11 g: gggggwgggbgg +3-4 f: fffsjqff +7-13 x: kxwpsxxwqkxtx +3-13 k: klxrstnsxxvmk +3-6 w: dwrwgw +1-3 q: qqqq +4-7 s: pdsdmsssm +2-9 d: dtzdfddmcbtddjddc +4-5 j: jjhjjj +1-5 l: ldjll +7-11 m: mmwmmlmmmmmmm +9-11 b: bklmbbbbbdmfb +4-9 b: bbbbbbbbbbb +10-14 h: jhgchkhkhhhhhqhh +5-6 g: lhqrggfngdkrdthzlvxg +3-4 z: zzzzzzzz +2-6 z: lptzfpx +1-4 m: msjscmmmcmpcj +6-7 k: xsklqkq +8-16 m: mmmmmmmmmmmmmmmmmm +1-13 k: kjzbztnmnqkckcgkt +15-17 d: ddmckddddkfqdmddn +4-7 t: tzttvbtxltst +2-12 t: ntkdzntftxnjl +3-5 t: tttttt +7-10 t: ttfgtlfhftzkft +1-3 z: bzbzz +4-5 q: wqkqp +13-14 s: mssssssscssssvcxs +1-11 t: ttttttttxts +6-8 x: xxxxsxxxxsf +1-3 g: cxngg +12-14 h: hvhbhhnhhhhhhhh +1-5 q: qqqqqq +4-8 n: nnhnkzzrbgwtbvnprnjx +2-5 t: qrlttrdf +5-6 h: hhhhhlhhh +1-12 w: wwwwwwfgqwggwxwfwbw +6-10 p: pppppppppcppp +12-13 k: klpvkmrlnkfpmv +2-7 n: nnpswzxxhd +4-6 k: pnkgkqrhg +7-9 g: ggggzgqgngm +9-12 d: ddkddddddpdd +4-9 l: lhhlxcsqlkxxsbj +9-16 c: ccdcckrccchcccpccs +5-11 l: jshrlcrlkxqp +4-6 c: cwcvcccctcc +6-8 d: dsbmlddlqc +4-6 r: frrrhsb +1-2 f: frhhfjgffwnnf +5-13 b: bbbbbbbbbbbbbbbbb +5-13 g: jnxbjmfbgmmbg +1-9 g: gkggrbggg +1-9 z: zzzzzzzzzzz +15-16 k: kkkkkkkkkkkkkkks +3-4 b: bttm +7-8 k: kkkkkkkt +13-14 f: ffffsffffffffj +8-9 q: dqqqqqqwfqqbq +4-5 m: mmfvm +4-10 z: hzjzprfqtzfzlcdpvm +19-20 x: xxxxxxxxxxxzxxxxxxxc +10-11 l: lzllldlllhlllcpll +9-15 l: lflllblllllqllhl +6-9 c: ccccczccxvckck +7-14 w: xjchwqvkfgswpwpskc +3-6 v: vvvxtb +3-5 f: ffksvqx +10-12 m: nxztknmwgmfgq +4-7 n: nbcwzbvhgnnn +3-4 d: pdhdgwdd +10-13 l: ltmwlllxlltclqpllp +16-20 t: tttttttttttttttttttt +6-7 z: gflqpzzzpx +1-6 x: fxtmtlxgxl +2-3 r: rsrr +2-16 p: tpsthmqblbjdvxfspm +13-15 c: ccccccccccccccc +8-9 f: fffkfxfgfff +1-6 f: fzfffjf +5-6 d: dddcdrd +3-5 f: fffffff +5-6 h: gchlpkxhshhh +2-3 n: rnvx +1-3 d: dmfp +7-8 g: ggzggjwgkg +8-13 n: cndnnknvpnvnnn +2-4 z: xztz +2-3 h: hhzzm +4-5 c: ccccckzdqcw +5-9 w: qqwwwwvsw +1-2 g: ggmgggjg +6-7 g: bggxggkgsmgg +4-7 j: zrjgsvj +4-6 g: vgccgdc +1-11 m: cnmbjlmhlqx +8-12 m: mmmmmbmmmmgmsmmm +14-15 n: nwpnnnnnnnnnnnnnpn +14-18 k: tkkkkpkkpkkkkkxhkj +3-5 m: mpmmnmd +12-13 m: qmmmmmmmmmmmxmm +6-8 b: cbbbbkbb +7-8 m: mmmmmmtm +2-7 s: ntbjsswshs +2-3 r: btrgr +15-16 h: vgxdgxjvhzdbhjhhj +15-16 j: jjbjjjjjpqjjjjjj +2-4 r: rrrr +1-9 n: nntshwzsf +2-4 n: nnnpnjcc +3-4 p: hrzpsp +7-8 l: lllnlbqm +1-9 d: sddddddddd +2-3 s: scssswssq +2-5 p: zpvwp +16-19 z: zzzzzzzzfrzzzzzszmz +5-6 g: gtgkgggzgr +4-7 x: bclxbtq +11-12 k: kkkkkkkkkkdk +9-18 x: bxlqxvxxxxxxxxxcvmc +8-18 g: dgpgfgngjmqgqgqpnm +4-10 f: fffsfffffwfff +1-4 f: dfcztnztghj +7-10 t: tttpttkttjtt +3-4 h: vfhhhhv +7-9 s: wkjsslxdss +5-14 z: zzzzzzzzprzzzfzzcwzz +1-3 v: vpvrvcvvdkmm +5-9 c: bcbcccccmcchrgz +7-12 f: ffqfvffkfrztjdfcff +6-7 n: crmdnmvmnnnnnqnnnzn +9-12 t: tttsqtttpttrtttlrt +2-3 n: jnxpgngtgmx +8-10 p: pxpsppzvpppppp +4-5 x: nkbvx +1-3 w: nrlj +1-2 b: bdhs +5-11 q: qqqqbqqqqqqqqq +2-4 n: nnlmmzhtnknb +4-16 h: xhhhhchhhhhhghhphhs +6-11 t: tttzqtbttttt +10-11 q: jqqqrqqpqsnq +13-14 f: ffhffffkffffff +10-12 d: dddddddkdrddd +12-13 h: qghhdvthxqhhh +1-4 b: bnvsbb +6-11 q: xqnfqqqqvqfqvqqqh +3-8 k: skskkkkvkk +4-6 b: bbbbbm +6-9 v: fvthvvvvzhvv +5-9 w: wwwwwwrwgw +3-19 c: vlpkjhtcvbktwwrcmnc +10-13 r: zrrrrrgwrrrsrrrcvr +5-16 n: svcqnnvkmjhbgjxh +4-15 n: nnnknnnhnnnnnnnnnn +9-13 q: fqxlqsqlqgxkqvrfqgb +15-16 z: zzzzzzzzzzzzzzhdzz +2-18 j: pjrkwwdbsfbbncjkpz +11-12 z: zzzzzzzzzzzm +2-4 h: kpfj +5-17 h: whwdzvthhhhhhhhhhhh +5-7 r: rrcqvnsjrcvrwrfrp +5-7 w: wwrwwwww +1-3 l: llhl +12-16 r: bhlqqxszwnnstrff +3-5 f: pxdrf +5-8 x: hcjxszxxcxxxxx +3-4 q: qqqlc +4-5 n: sfnhn +3-5 n: nnmnnx +4-11 g: gkmnglkjxdn +7-10 r: rrrbqqrrgbrrmp +1-6 t: ttncttttzbtcst +16-19 h: hhhpgcthnhdrtcbhvjh +4-6 c: ccpcldcc +11-12 s: sbvzssshsnvl +8-17 w: scwwpwwwwwwtvwwwwwh +8-9 x: xxxxxxxxk +12-13 g: ggtbxqgggzxcpshgg +4-12 l: prllqnlgzsqxlvwbj +8-9 d: dddddddngd +3-6 f: rfffkfqf +12-16 g: zfvpgsmmhtprpcrgzkww +12-13 q: qqqqtqqqqqqxxq +4-8 d: dpzddfddhvjspzpn +2-5 n: kjmbgf +1-16 x: xlxcxxxxpxxqfxxlxrx +4-7 b: cvbrbhlsbzc +1-4 f: hffpff +4-6 f: fffnfmf +10-11 s: sssssssmsfsh +1-4 q: qpzdqqqqcqtqqqqq +7-8 s: sdhjmdvwtssv +13-14 t: tttctgttttttttttx +4-12 h: zhxlbhhhhhzch +6-10 p: ppdpptpxkpppd +2-6 s: pslhftrg +2-5 g: stgfgsq +3-4 b: bbxbw +5-6 s: qjdmshssqjpksmv +17-18 q: qqqmknmrlqqpkqtlqc +16-17 c: cccccdcccccdcccdccc +2-4 n: nvnvd +7-8 d: dddddddd +4-14 d: mdcqlgcrjdrvfd +6-9 m: mpmmfmmmvm +9-17 v: vvvvvvvvvvvvvvvvvv +2-3 r: rrrj +10-13 s: sjrssssdftsssss +12-16 j: bjznjjjjwjgxjjqj +8-9 t: dttttttcttttttf +1-5 n: nnnnnn +1-7 p: ptdpsggktwjkpzpp +1-5 w: rwpwwwqww +11-12 k: kxrkkrnnlgkkz +3-5 p: ppqppp +1-2 l: jkrmtrnflxhj +9-11 x: pqxxxvmxqxx +14-17 f: wftqlzbvmhnlfjbvf +2-5 x: xxxxj +3-13 m: zjmmxcbcbksmntxghsm +1-8 v: nvvvvvvjvvg +3-4 b: bblb +1-3 p: qppmwvhmgmkcspdml +3-4 n: nnntnn +2-3 p: nrppvr +10-11 r: crrrrrrrrrrr +4-5 p: jqpkm +12-14 k: kkjklkkhkrkkkbkkkkk +3-13 l: lqfjldlxflnvrlcdmhll +9-13 c: cxsccbqkhccccxcjcp +5-6 c: cvcsccp +13-14 d: dddddddddddddjd +1-5 d: cmbdxnxndpct +3-4 l: lllk +5-6 b: bbbbdb +5-6 v: kczqvvvv +4-13 s: sszsbksgtssbdmsls +2-13 q: kqxqrccgfhwcq +4-12 t: ttttlttttttlk +9-10 j: jjjjcjjjjgjjjjj +14-16 h: hhhhhhhhhhhhhhhh +10-11 z: zzzzzzzzzzz +1-5 x: xxnxs +2-6 h: hwshhhzhhzhsdhxh +12-14 x: xsxxxxxxxxxtkxx +3-9 f: fvffvfxxf +14-15 l: llwllfnlllrjxhlx +7-8 g: ggggbgjt +1-3 w: wwcw +5-11 p: pppwqpbpppppppp +14-18 v: vvvvvvvvvvvvvvvvvvv +5-6 j: gjjjqpjj +5-8 n: nqtxngdznfwrjxtx +2-3 h: hchzhk +2-4 z: vtzz +1-4 q: mqqnqq +3-5 g: gggggggg +5-7 v: vnvvvvv +1-3 h: hlcsjhs +8-19 s: stsssspqwsssssssssss +1-3 f: nffn +15-17 d: dddddddddddddddddd +2-4 x: gxhl +11-12 n: nnnnnnnnknnjwnn +4-6 w: wwwkww +10-17 p: ppwppzpppvqppszbxp +11-14 z: zzzhszzfzzlxcz +3-10 d: ndnddmwdsnpdkbn +7-9 f: ffffffwtf +9-11 l: lhndlllllljmqccll +1-2 r: jrrrrrrrr +2-3 b: bbbbn +1-4 h: hhhhh +4-8 s: gsmsmtrs +1-3 s: ksssss +13-14 k: kkkkskkkkkkkkxkkkk +4-7 v: tdgsvvjvvqvvvn +6-11 r: dqkpngrmzrrlt +13-14 k: kkkgkkkkgkkkkkkh +2-6 x: xxxxjllxsx +9-12 v: vvvvvvvvsvvv +12-14 z: zzzzzpzzzzzvzcz +14-15 w: wwwwwvwwwwwwwwpw +3-4 k: kjkkwkk +2-8 m: hhtmwxgm +5-13 z: zpzzwzzzzfwzdznzmwzf +4-6 x: xfxxxg +6-9 p: smjdwprpzh +5-10 f: nfxffpffffffpf +13-14 h: phhhhhhhwtrhjhfhhhh +4-12 l: nbrstqwkwgclcbznzlfj +2-4 j: jvjvjjjmj +2-3 p: pxxp +4-5 g: gggngg +11-13 d: gddddqddzdzdddh +4-6 t: bdltkmtttcwctm +7-11 f: bxwxmhftfbm +12-13 g: gpggwghghcgghgggkpgg +6-7 w: wwwwprr +2-12 l: lllmxrnlgllvlwltcl +1-4 g: grgk +5-9 k: lxkhkklkbkdqlkk +4-7 r: pjgrzzrrgpxnckxzrcxc +4-5 m: mmmmm +7-17 v: sbtvbpgbnqbfswdhbv +2-3 w: wtwx +3-5 v: lvdhvb +7-10 s: szssjsshdvs +9-10 p: ptfpsfpjpnvppxpghpp +15-17 m: mmmmmmmmmmxmmmqldmrm +18-19 z: zzzzzzzzzzzzztzzzzk +5-7 f: flfqfffvffn +4-6 x: sxrqkl +1-2 b: kzbb +2-9 c: cccccccbjjv +16-17 p: pvpfppppppppppppwp +9-16 h: hshhhtjhthhhwhkh +2-10 b: fmwfbcdwvbj +8-10 j: jjjjjjjrjjj +1-7 x: xtxzjwdxmcjdh +4-5 j: jjjrjj +3-7 f: ffvfffnf +11-13 z: dlchjrjjrlzzz +2-8 s: ssssssssss +4-5 k: bfvjvgqkzkwbhk +2-5 b: zkkcnrrglcxfk +17-18 m: lmmmmmmmmmmmmmmmgh +7-9 p: tdppkcpnkpkpf +10-12 t: ttgqmntbtptg +2-5 m: fmkhm +10-11 g: gggdxggdggxg +6-12 j: jgwjjjjjxjvjjqdjg +7-16 z: zzzzzzzzzzzzzzzzzzz +4-6 b: nsrtbb +2-5 j: kjxjtrl +3-6 b: bhtxxhjbxbbb +3-12 q: npnlkbqfgpxqjzdfjn +5-7 v: vbvvsgv +2-9 h: mhhhhhhhh +11-13 n: nnnnnnnnnnnnhn +5-6 n: nncnnl +3-4 h: phxhh +6-8 w: wwwwnwwwglwgw +5-6 j: qjwjjj +9-11 h: hhhhhhhhhhg +4-5 b: chbdb +5-6 l: lllljl +12-13 q: qqlqqqqqqqqgq +2-5 j: jkwlt +4-12 w: gmgtvwfwcwwwb +2-3 m: qmvdv +2-7 k: hkkmsspkrm +3-7 k: tlklhkwk +3-5 c: chgzcccd +9-19 x: xxxxxxxxxxxxxxxxxxqx +3-4 b: bbxbbz +1-3 f: fhhf +4-5 d: fddhp +1-3 j: jjnj +8-9 n: nnnnnnnnn +3-4 c: cjct +10-11 m: mmmmmmmmmmh +1-2 x: xbxxx +12-14 j: vtkjdjjjhgpjjjgj +5-6 n: rldnpnnlxnbjmgnxncv +7-8 f: pnrcpmgffzjffffrxf +5-9 n: nffdnnnnqnnm +10-18 s: sssssvsskxssssrsbsss +10-11 k: kkkkkkkkkkkk +4-5 x: xxxlgxxxx +4-5 s: ssksgsssss +4-5 b: bbbbkb +1-3 b: bbbxb +1-4 t: vttthjtttrs +7-9 r: rjcfrhrqmrrrrrr +1-4 f: kffcffff +14-15 d: ddxmmdddddtdddv +6-8 h: hfhhvhvq +15-19 q: qcqqqqqqqqqqqqhqqjsq +2-4 n: cnwn +3-4 b: btbn +4-5 p: sncdvppkphpp +14-16 h: zqbhrnhhvlhgxhhw +5-7 z: zjzctzfzl +4-10 m: gmpmmmrqmqcm +3-4 n: nnnnnnn +7-9 k: tdqwklhlwncdz +7-10 d: hmddhvnddznddd +2-5 q: sqpjm +2-4 p: zpwpkppvp +3-4 g: gxggggqgg +5-14 p: vzpppprdfzbkntdd +4-8 m: vldmnlpmmsdbz +3-4 q: qqlmqqqqq +3-16 n: pztmwhjmznjqckmnxrr +8-11 b: bvhbsbnbhbmbfjbqbr +5-7 q: wqqqqqgq +4-14 n: nnnrfsnndncmnnmdw +3-12 c: ktcccvpzgkfqcc +8-10 s: mcwvgsdspsl +3-6 l: lllllv +1-3 q: fqmqq +14-15 z: zzzzzzzzzzzzzwz +5-11 z: zzmzbxzjzzzzp +12-13 w: wwwwshwwwwkwlwwwwww +15-18 r: rrrrrrrrrrrrrrrrrlr +6-8 x: fcgqdxbxwlgxh +10-11 c: ccccccccccfc +5-16 t: ttstjrttzbttjltktk +6-12 g: lgwgdfdzggggj +15-17 v: vvvvvvvvvjvvvvvhgv +1-5 n: cnnnnn +5-7 w: mwwwxww +9-12 w: wvwwwpwwwwwbvwwm +1-6 b: bbbbbbb +4-5 g: qggbrg +19-20 r: btvfzlvzmrzhxkclxkfr +9-11 j: mkmmvjjldqx +1-4 l: lqlgrlcqfll +13-15 z: czzrzzzzzhzzzzzzzz +7-9 h: hzghwhwhh +7-17 g: gggggglggggggggggg +2-4 r: rjfzr +5-6 n: nnnnsnbmn +2-8 k: vdqhfccdkjm +2-4 z: tszh +5-7 j: pjgtjwpr +4-8 g: gggggggggg +8-12 h: dnkgcqlhszwqpkzhgdp +1-4 n: pnnnnn +3-10 d: ddrdddlrnrchdfddd +4-5 h: thzdq +7-15 d: wkvnfwdhxgvdfjr +13-15 j: jpjjjjslgjjjbgjrjjj +11-12 n: nnntnnnntntnn +1-2 n: nnnnnn +7-11 s: sswssnssssfsn +3-4 x: xmxz +9-10 v: jvvvxvvvgvvt +5-7 c: cmccfgdc +2-5 q: jqdqq +17-20 x: wrdkznpjxcwjxqtnxpvx +4-6 c: mczcccc +11-13 b: crbbhxbbbbbfxbbbbx +16-19 f: fvffffqgfjffffpffqd +10-11 k: kkjkkkkkqckkk +2-6 r: rrsntpc +2-17 q: qcpzdqfbqqqqqqqqw +2-5 d: fvdpddbkq +1-8 q: dqqqfqzz +9-14 t: kkpbzspjgtzztft +1-2 v: gvvv +12-13 w: wkwwwwntwwwtwktmwwww +13-19 s: ssssssssxssskssssss +8-10 k: kkkkkkkbkxkk +8-9 q: qcqdjblnvqqqsqqqqq +10-13 r: rrrjrprrjrrrvr +4-6 k: kqkkmv +2-4 z: dkzb +2-3 b: wbbc +17-18 p: pppppgppppppppppxppp +5-14 v: vdvlvvjzvdvpvc +3-12 x: xnxxxtjxxkxxxxx +5-6 b: gqzbbvbbbb +6-10 k: kkhxqkkkkkcncxgkk +9-10 j: jjjjjjjjcsjj +4-9 t: wzttttxgthbfbbt +2-12 v: vzvvvkpfvprwmvxjgsvd +3-9 t: lttcmtrntxwjhhmqhnbc +7-11 m: dpmqpmdvkmlw +16-17 s: zssssswsstpssssjmsss +3-8 h: hhvhbhhhh +7-9 c: nccccnxcc +4-5 z: mzzzz +6-7 g: ggggggg +2-4 t: wqmtqzkln +4-6 r: rrcrfrg +2-4 n: ngndn +8-9 p: sjppxxgcn +5-6 j: wjjjmj +3-7 g: qskprfh +4-9 x: dxxxxxxqvqcxfdjzx +7-13 q: qqqttqqxmfqqlzqpqqq +8-11 g: gggggggpgggg +3-4 q: qqlx +1-3 q: qqtktrq +9-17 b: bbbbbbbbgbbbbbbbbbb +6-9 r: rrrbrzrrc +9-11 r: rrrrrrrrsrrr +3-9 d: lsvdztpddd +9-12 z: xzzzzzzgzzzcztzz +3-13 f: fkffdzbtdffpfgjffff +1-2 d: tddd +4-6 c: wsgfhccrwxfd +1-2 d: hdtnbxqdjnmsksm +6-9 r: rlrrmxdrrrr +8-9 c: cccccccmc +5-13 w: wtwzkwwwjwxdwwvgbwjg +7-8 t: ttkqgstt +5-11 f: fjfffgfffdlf +6-7 l: llllllcl +4-6 g: ggglggg +11-12 r: rrrrrrrrrrrx +3-4 r: rrrr +4-8 p: sbpppdrpppmplfq +2-3 k: kkghkzkrxwx +9-11 m: vwmmmdpxlczmwmmmmgmj +2-5 k: dpjrsxkhn +2-12 k: kkkkchsksjwbkkw +8-17 r: rrrrrrvrkrlrrrrtz +3-4 q: nrqq +6-7 j: crwjljtjxjjk +1-6 w: qwwwpwwwwt +8-9 v: vvvvvvvkv +5-6 b: bttbbbb +8-11 j: tjbpjjjjfdj +7-9 f: rfwfffnmvjwktfwfff +14-15 r: rrrrrrrrrrllrrr +12-14 s: sflzzssqlcmsdsn +12-14 n: nnnnnnnnnnnnnnwn +4-9 k: kkkckxkgz +5-6 r: rrdrrsrr +1-2 p: qplxp +4-16 c: ccccccczfwphcbcmc +2-3 z: bsrz +7-8 x: xxlhxxsxxxjctxx +2-4 k: kzkkkk +4-10 n: nnnrnnnnnnn +1-2 c: pzzfbl +1-2 q: spqqq +4-6 g: pgnvgwttgfg +10-12 f: fffffffffffff +7-8 f: fkrfffns +6-7 b: bbbbbbt +2-5 m: mmmmmmmmm +6-15 m: qxhmlmmxmmnmmmppmrtn +10-16 n: shknnnnqnnclnjnnn +2-10 d: ddxddddddddd +11-12 n: nnncnnnnnnpn +1-3 z: xzlz +1-4 s: mssss +1-7 p: bbppppppkgp +5-6 w: wwwwbq +4-6 g: ggpgggg +2-3 z: dzzz +15-17 q: qqqqqqqqqqqqqqqqtqqq +13-15 p: ppppzpppzpfpfpp +6-11 t: xlthtttttccbqtrvqqst +7-10 r: rrwrrrrrrx +10-11 z: zvzzwzzskzkzzzzqc +4-8 r: rrrxvrrsrw +9-12 j: jhzjjjjjjbjn +1-4 h: hhhzhh +5-11 r: mrrptkrtrqjsrr +13-14 l: dllllllllllllp +6-12 x: gxxxbgkqvwgh +5-8 s: ssfscsnt +8-9 c: chgcggccq +4-5 r: rrrrrr +8-9 f: fffpfffhfcf +2-3 x: xltcxkg +14-15 s: qssssssssdsssdjss +4-7 k: ckkcqkk +3-7 q: lrqpqbn +2-5 p: qvfpp +1-6 w: twwwwmwwqwww +4-7 k: wkkkcfkrkhxd +12-18 g: gggggggggggjgggggxg +3-4 c: jjtwmcgl +6-10 p: pppppppppp +4-6 w: fgwwwwwcbkw +1-5 l: blllll +3-4 t: nrtbtstxwt +1-10 d: dddjdddddddddqdbdd +1-3 h: xchh +3-7 p: wnhxrpp +11-13 v: vvvvxvvvvvvvvvvvvv +16-17 f: ffffftfffffffffff +1-9 m: mkmbjmpbr +3-5 x: xxxxx +9-10 f: ffffjvrfgfffff +4-5 d: ddddsdbdd +6-10 j: jjjjjjjmjqjjjj +4-10 q: lqqbqqqqqgqq +4-13 d: dddwdddddddddddddddd +3-5 t: gdtlxbtsnc +6-15 t: tfbjchtdhdvtfcfgtjtk +6-7 d: dddddddd +7-18 w: sgbbkwxgdxvwlhjfct +8-11 n: pbfnnnwntnnnn +1-15 j: jjjjjjjjjjjjjjj +3-12 b: zbbsdblxbqvbp +5-6 p: zxpjtp +4-7 k: kgdhskkkklkmfgnkrtm +9-10 s: sssshssfsjpxssvc +2-4 w: whlhw +11-16 z: zzbzzzzzzztzzzzsz +8-10 x: txmxxvxpxxxxxmmlrnj +7-8 r: zrrrrrrs +4-9 v: vvvbbvvvvb +10-11 z: zxzzzzzxmzz +7-14 h: hhvxcrhhkhhhtrbwtghx +9-10 h: hhfkhchhhpwsphhjdhhc +3-5 q: qqqqtq +4-5 f: ffmftff +3-13 l: llwmlldllfjlt +2-3 b: bqkp +2-3 j: jjbj +6-11 r: rnwdrpjrrpxrwrr +9-11 q: pqlsqjqjqztsqvhmq +2-4 m: mccmm +6-8 f: kfffffffffj +13-14 l: xlllllllllllkkml +8-12 p: pppppvpppkpdppp +10-19 x: txnxxhxcxmxrdxfjkvx +8-9 x: xxxxxbxct +1-2 s: bsjssr +2-5 h: hcbhcl +11-12 c: dsdklbhrncccc +2-3 c: ccncccc +7-8 f: fffltfft +12-13 c: ccccccccjcccgc +2-9 r: nsrqvqtrrd +1-4 r: trrr +9-11 z: gzmlcrbbrsvz +7-11 t: thtbhtxprtcttttt +4-6 g: zxgtfb +7-8 d: dfkmhqrjsddqf +14-15 h: whhhxmrqhjhsvgshvvcx +2-3 t: ttxxprtpdtrrgn +9-11 t: ttttttttpttt +1-4 p: pnpp +2-4 f: fvfvf +14-15 x: xxxxxgxxxxxxxxl +6-10 n: hmdnlrpnkn +1-3 n: gtvnhdnjnn +14-15 d: mddddddddddddtld +12-16 z: zqzzzzztzcdwzzzz +2-3 f: mffjfj +10-13 l: mlrlvlmxlllkk +4-20 j: mvbxdjhxvtxmrnfjvlsr +5-15 m: zkchpzsgjgvxssmjpm +8-14 b: bbbbrbwbbjbbbzbb +4-17 v: vlvmvvvvvnwtvvvnvvhv +16-17 w: wwwwwwbtjwwwwwwwwww +7-9 x: sjhjrbxxbq +14-15 w: kwwwwwwwwwwwwwwwwww +12-13 w: wwwwwwwwwwwxxwwwwlw +2-5 m: mmmmsmmm +1-2 n: ndng +1-2 w: wpcmtlpwwnzrdzc +13-14 z: zzzzzzzzzzzzzvz +8-10 l: lllllllxlkl +8-9 s: ssssssssp +9-12 s: sdsssssvssss +2-3 g: ggxv +6-9 c: cccpcjccc +4-10 j: bmwjqhtmfzkwlsjrc +3-4 f: ffwff +7-12 c: qwrcrtcqczqdxc +3-4 p: vvpm +8-14 k: dkkgkkzkqkkkzwj +9-18 s: ssssssssxsssssssssss +12-15 g: gsggrgglggngggrglggt +3-6 w: wwwpch +3-7 p: ppppppkppp +5-6 n: nnnnnbn +8-11 m: nmlwmdcmmtmb +11-15 t: ttttttttttttttt +3-4 f: fffn +5-7 b: bbbbbbtb +17-20 l: lllllllnllllllllpllg +3-4 n: rnbs +10-18 h: hhhhphhhmnhhhnhhvhhh +4-5 h: hhmph +2-5 k: fndkkkksvbk +1-3 s: ssssss +3-16 k: kkkkkkkkkkkkkkkzk +5-9 t: ttzwssrltt +3-4 b: blmbgqphpnq +12-16 d: zdjcndpdjgbddcddd +15-17 b: ldjbbdxfwdgldfbfn +9-17 n: rhxsgngwnvdfdwtnntr +13-14 z: zzzpzzzzzzzzszz +2-3 s: sfssjssxssk +1-6 n: dwngnnrnnn +4-9 n: nnghfsvnnp +8-10 d: cxxdnmpdkh +8-9 p: pppllpprnppp +8-9 h: hhhqngfrhhhhhhh +13-17 d: ddddrnddddddbdddd +2-14 w: rptqzcsdvbjctwsfkwb +3-6 x: mhxxqx +4-6 k: kkktkkkck +2-4 f: fcffhkff +17-18 t: ttttttttttttttttjt +1-2 q: zcgfq +1-4 b: bbbjbbbbrb +5-6 g: ggggtx +5-12 q: qwqpqpmkhqqj +8-9 b: bbgbbbbxb +3-4 x: xxxxxb +4-5 n: ktskn +9-10 z: zlzdgmpzzz +9-12 j: bjjqjjjjgjjj +2-12 g: cqnrtxhkgzrmxfbp +2-6 q: qngktqqqw +1-2 z: nzfzlfdqk +3-10 m: jmrwmhwmmxdmmmm +7-9 z: ckzzdjjrzb +3-4 m: mmmg +5-16 l: llllflllllllllllll +10-20 h: rxxkbjnvjpvzqjhbhjhh +5-6 m: xkmmqv +1-3 x: xxxx +10-16 w: wdqwwhwwcwmcfwwh +7-11 m: mmmmmtmmmmmmm +2-7 z: frrzczznn +3-7 k: kbkkrgkgzmtlkwkljcq +10-13 l: clgwvjbxfwrll +6-7 t: tdcthtt +2-6 k: hknhpk +5-13 p: pppptppppppppp +8-14 j: jjjpjqxhjbjjjjjj +5-6 z: zzzkzzpzz +2-5 m: mwpfmrnscgpbbbwt +3-4 t: tpmt +8-12 d: lbddddvdmddddzdddl +1-7 p: ppppppxpp +6-7 t: cttttpl +2-3 j: jhrj +11-12 j: cnbrzpcjghjj +8-9 w: wwwwwwwww +11-12 f: fffffgfffffcf +3-4 n: nnnh +4-8 h: dztmrvhhchhhh +13-18 l: llllllllllllfllllll +2-3 s: tzssns +4-6 p: ppppphprln +5-7 g: cjljggsgvlkgqlg +5-12 g: kkgxghvkrzwggvf +4-10 w: jwwznwkmrj +7-11 p: cpbhppcmgztfpbp +4-5 g: ghgcfz +2-3 w: nfwwqklwr +3-4 x: gxxh +16-19 c: gzhxgqzvclbrmfkclls +11-13 f: fffffffjffpffsffhffl +2-5 h: hqdmxxhbhhhhhghhhh +2-3 l: hllw +3-13 v: vvvzvzvgvxlzflvr +6-12 m: kmscmmnmdtxm +14-15 t: clhtqdcfdncdtbt +4-5 k: fbkkwxkrpxtkctjzhndk +6-11 g: zggggndgggsggg +7-10 n: mdnntkntnj +5-6 b: xlbbbbb +7-11 s: sssszssmsss +3-10 k: qkkkkkkrgkkkfhkrhk +14-20 p: qcdpppdnppjppgcptppq +2-3 n: wnknrjwtqcksmlw +7-10 n: jnztbnnzrw +9-10 j: jjjjjjjjjp +3-5 f: hbfnfjkmfpnfjfv +5-7 n: pckprbrnx +2-4 r: rbqr +1-11 q: qqqqqqqqqqzq +2-13 k: kkmqckkgqqntkmr +2-4 j: vjzjj +11-12 q: qqqqqqcqqqfpqr +2-10 x: dxhqtxtbkxnnpcrbtgp +6-10 h: wlhzdhcchhj +7-19 k: snktsqkmckmzfklbzkv +3-9 d: ddhdvzpdw +9-18 f: flpgfvffsffwfffgsk +14-17 t: tttttttxtttttttttt +7-14 l: wnpxlllqllvhkbhxlk +11-12 n: nnnnnnnnhnnx +8-12 r: fhrrrtrrrcwg +5-6 p: psptpx +3-4 x: xxxxx +12-15 b: bbbbbbbbbbbbbbqfb +3-4 f: ffsg +8-15 n: nnnnnmnnndnnnngnnnnn +4-9 t: ttfhtftwt +4-5 f: ffvff +4-18 s: jssjsssssssssssnsvms +2-5 z: tzzsz +9-17 g: nwpqgggbggjfgggmglhd +5-6 c: kccdbccc +3-4 r: rgrr +9-15 d: dqddhddngdddddnzd +4-12 c: zmlpclmdxsqc +6-8 q: fwkptqfqqxg +3-4 s: hznnsqdx +8-9 q: qqhqqqqczqq +7-8 z: nzzzzzzzzz +15-16 p: pppmpppppppppltdpp +8-14 h: hhhhhhhmhhhhhrhhhhhh +3-4 k: fwnchdkstg +10-17 h: kpcnnpljchcqbcsvbq +8-9 v: tzhcvbtzvtlm +12-16 l: fkjlmjdcllkpwxhxhnl +6-15 k: llfkkknskkbkkkbkkjkk +7-12 n: tnbjngwnnnlnvgj +16-19 r: gbtxrqmrrrrrrrwrflw +3-12 c: ccqcccccfccccccccc +14-15 z: zzvzzzzzzzzzznczz +5-6 d: qpddzd +4-7 m: mmmrmmmhtmcmpmm +15-18 g: lghrgggggwqgggxnmqwg +9-12 d: ddddjrddmddnd +6-15 t: tttttmttttttttqtttt +9-12 g: gbdgggnggcggpg +5-9 c: ccvshdqtcvcczl +9-10 v: xvvtfxrvxvvvvvtvbc +3-4 j: jjjjjjjnq +5-6 h: pkhzhh +5-6 g: gggggm +1-6 j: djjjjjj +4-5 c: xvfcfkfz +2-6 p: dpcjksgxtp +1-2 w: rrwwwdw +4-5 t: ngrttjftxttkrt +1-8 t: gchtttbtt +5-11 r: bhvgmszrpgrgwcdp +4-12 j: sjjjmzjjjjjpj +7-15 t: tslntctttxtkgtm +16-18 j: jwjwpjjjjzfjjjxvjjj +4-9 c: rbdpccfghwrn +1-8 k: kkkkkntkkcdqk +1-3 c: cctdcvcdqc +5-6 m: mmmmmm +6-10 w: lqwcqwqzkhcbwtgvzxb +3-4 h: hgxhjchhlpms +11-14 b: bkbxxdkrbzbswb +1-2 r: drcr +19-20 l: llllllllllllllllllll +2-7 g: fmggdgggx +11-14 z: zzzzzzvzzxbzzh +7-8 p: ppppppdx \ No newline at end of file diff --git a/2021/day1/day1.zig b/2021/day1/day1.zig new file mode 100644 index 0000000..857387d --- /dev/null +++ b/2021/day1/day1.zig @@ -0,0 +1,76 @@ +const input = @embedFile("input1"); +const std = @import("std"); + +pub fn main() !void{ + var increments: usize = 0; + var t = std.mem.tokenize(u8, input, "\n"); + + var window = .{ + try std.fmt.parseInt(usize, t.next().?, 10), + try std.fmt.parseInt(usize, t.next().?, 10), + try std.fmt.parseInt(usize, t.next().?, 10), + }; + + while(t.next())|line|{ + var sum1: usize = window[0] + window[1] + window[2]; + + window[0] = window[1]; + window[1] = window[2]; + window[2] = try std.fmt.parseInt(usize, line, 10); + var sum2: usize = window[0] + window[1] + window[2]; + + if ( sum1 < sum2) increments += 1; + + } + + std.debug.print("result: {}", .{increments}); +} + + + +test "part1" { + var t = std.mem.tokenize(u8, input, "\n"); + + var last: usize = std.math.maxInt(usize); + var increments: usize = 0; + + while(t.next()) |line| { + const n = try std.fmt.parseInt(usize, line, 10); + defer last = n; + if ( n > last) increments += 1; + } + + try std.testing.expect(1583 == increments); + +} + +test "part2"{ + var increments: usize = 0; + var t = std.mem.tokenize(u8, input, "\n"); + + // Read the first window + var window = .{ + try std.fmt.parseInt(usize, t.next().?, 10), + try std.fmt.parseInt(usize, t.next().?, 10), + try std.fmt.parseInt(usize, t.next().?, 10), + }; + + while(t.next())|line|{ + //with this window, calculate the current window sum + var sum1: usize = window[0] + window[1] + window[2]; + + //slide window one over + window[0] = window[1]; + window[1] = window[2]; + window[2] = try std.fmt.parseInt(usize, line, 10); + + var sum2: usize = window[0] + window[1] + window[2]; + + if ( sum1 < sum2){ + increments += 1; + } + + } + + std.testing.expect(1627 == increments); +} \ No newline at end of file diff --git a/2021/day1/input1 b/2021/day1/input1 new file mode 100644 index 0000000..0bed5fe --- /dev/null +++ b/2021/day1/input1 @@ -0,0 +1,2000 @@ +159 +158 +174 +196 +197 +194 +209 +213 +214 +222 +223 +228 +229 +236 +237 +238 +241 +248 +255 +256 +257 +269 +276 +292 +302 +304 +308 +309 +311 +315 +314 +320 +323 +324 +329 +330 +311 +340 +341 +342 +341 +347 +349 +350 +367 +370 +378 +379 +378 +379 +389 +390 +393 +388 +393 +402 +405 +404 +402 +410 +411 +441 +449 +448 +449 +450 +412 +414 +415 +418 +420 +440 +439 +458 +459 +457 +463 +465 +469 +470 +479 +480 +481 +482 +475 +468 +467 +472 +484 +486 +498 +489 +493 +511 +510 +493 +495 +494 +514 +517 +520 +521 +544 +557 +563 +565 +568 +572 +571 +572 +575 +584 +583 +599 +600 +605 +612 +615 +618 +625 +627 +633 +663 +665 +666 +669 +683 +706 +716 +722 +731 +734 +739 +741 +754 +760 +765 +783 +788 +795 +811 +813 +818 +805 +816 +821 +829 +830 +854 +855 +850 +859 +860 +866 +867 +866 +867 +874 +875 +876 +870 +875 +878 +880 +884 +898 +915 +918 +922 +923 +949 +942 +945 +949 +970 +956 +969 +964 +972 +973 +975 +974 +970 +989 +990 +993 +994 +1002 +1003 +1007 +1013 +1025 +1035 +1033 +1040 +1045 +1055 +1056 +1057 +1059 +1060 +1063 +1051 +1056 +1057 +1047 +1054 +1055 +1051 +1052 +1058 +1061 +1066 +1067 +1070 +1074 +1075 +1076 +1084 +1122 +1128 +1140 +1141 +1139 +1152 +1151 +1152 +1156 +1167 +1166 +1165 +1169 +1162 +1175 +1202 +1212 +1218 +1219 +1240 +1238 +1224 +1230 +1245 +1253 +1285 +1295 +1297 +1309 +1323 +1329 +1333 +1336 +1339 +1318 +1321 +1318 +1345 +1347 +1349 +1352 +1353 +1360 +1358 +1345 +1352 +1356 +1357 +1370 +1373 +1393 +1423 +1424 +1431 +1447 +1454 +1444 +1470 +1477 +1479 +1485 +1483 +1497 +1518 +1536 +1539 +1544 +1549 +1558 +1557 +1581 +1585 +1591 +1632 +1633 +1636 +1639 +1633 +1637 +1638 +1639 +1640 +1642 +1658 +1676 +1675 +1707 +1708 +1709 +1710 +1711 +1715 +1707 +1712 +1733 +1734 +1732 +1722 +1730 +1746 +1747 +1748 +1749 +1755 +1759 +1771 +1772 +1771 +1770 +1771 +1773 +1772 +1771 +1780 +1781 +1782 +1781 +1775 +1786 +1798 +1814 +1818 +1826 +1791 +1793 +1796 +1821 +1822 +1825 +1834 +1838 +1867 +1907 +1908 +1910 +1921 +1926 +1924 +1921 +1941 +1945 +1958 +1957 +1978 +1973 +1974 +1977 +1978 +1984 +1992 +1998 +2002 +1998 +1993 +1984 +2013 +2014 +2017 +2016 +2019 +2024 +2031 +2032 +2042 +2041 +2047 +2055 +2057 +2059 +2066 +2086 +2090 +2091 +2094 +2112 +2113 +2123 +2125 +2123 +2124 +2135 +2152 +2155 +2158 +2157 +2169 +2168 +2166 +2167 +2168 +2185 +2190 +2189 +2190 +2198 +2170 +2171 +2177 +2184 +2186 +2187 +2162 +2174 +2175 +2172 +2180 +2182 +2188 +2213 +2226 +2228 +2227 +2216 +2220 +2221 +2220 +2212 +2215 +2220 +2223 +2226 +2228 +2236 +2237 +2238 +2258 +2257 +2256 +2260 +2261 +2271 +2294 +2297 +2309 +2311 +2327 +2326 +2340 +2339 +2342 +2343 +2346 +2352 +2363 +2364 +2371 +2386 +2387 +2392 +2401 +2407 +2415 +2418 +2432 +2457 +2458 +2459 +2461 +2463 +2464 +2465 +2486 +2487 +2490 +2509 +2510 +2518 +2522 +2525 +2527 +2521 +2522 +2526 +2529 +2530 +2552 +2548 +2564 +2566 +2568 +2569 +2570 +2565 +2576 +2577 +2581 +2582 +2587 +2588 +2568 +2569 +2563 +2575 +2576 +2577 +2578 +2588 +2603 +2604 +2605 +2620 +2622 +2627 +2630 +2639 +2629 +2631 +2632 +2644 +2646 +2655 +2658 +2663 +2660 +2659 +2657 +2655 +2656 +2657 +2658 +2669 +2679 +2678 +2684 +2677 +2721 +2728 +2729 +2728 +2729 +2730 +2733 +2742 +2730 +2731 +2733 +2735 +2740 +2750 +2746 +2748 +2751 +2771 +2786 +2792 +2797 +2799 +2803 +2814 +2825 +2832 +2839 +2844 +2854 +2833 +2842 +2844 +2866 +2868 +2871 +2872 +2876 +2877 +2901 +2910 +2916 +2940 +2951 +2966 +2967 +2972 +2976 +2978 +2977 +2980 +2993 +3004 +3005 +3031 +3030 +3036 +3035 +3038 +3041 +3040 +3043 +3046 +3068 +3080 +3081 +3101 +3104 +3111 +3118 +3119 +3112 +3111 +3113 +3140 +3165 +3164 +3174 +3184 +3200 +3183 +3185 +3187 +3188 +3197 +3215 +3233 +3232 +3243 +3220 +3221 +3224 +3226 +3263 +3275 +3286 +3287 +3300 +3304 +3314 +3316 +3311 +3314 +3324 +3325 +3329 +3347 +3341 +3346 +3348 +3363 +3369 +3396 +3384 +3390 +3391 +3394 +3393 +3399 +3405 +3411 +3417 +3408 +3378 +3383 +3379 +3385 +3386 +3406 +3397 +3374 +3378 +3373 +3358 +3357 +3381 +3387 +3422 +3420 +3415 +3416 +3432 +3419 +3422 +3423 +3436 +3437 +3439 +3441 +3449 +3453 +3488 +3499 +3513 +3536 +3576 +3570 +3569 +3570 +3571 +3575 +3573 +3617 +3594 +3589 +3587 +3596 +3583 +3588 +3589 +3583 +3594 +3612 +3617 +3634 +3628 +3629 +3630 +3640 +3642 +3647 +3644 +3657 +3658 +3657 +3660 +3661 +3662 +3681 +3684 +3694 +3698 +3697 +3707 +3709 +3710 +3723 +3741 +3747 +3752 +3753 +3747 +3751 +3756 +3752 +3781 +3800 +3804 +3792 +3809 +3805 +3806 +3812 +3813 +3814 +3818 +3820 +3835 +3836 +3837 +3806 +3812 +3837 +3840 +3845 +3842 +3879 +3880 +3890 +3919 +3927 +3929 +3920 +3916 +3928 +3892 +3865 +3876 +3913 +3933 +3934 +3901 +3902 +3903 +3909 +3910 +3911 +3912 +3920 +3949 +3944 +3946 +3947 +3963 +3976 +3977 +3979 +3985 +3997 +4006 +4014 +4021 +4026 +4030 +4031 +4054 +4044 +4045 +4055 +4053 +4051 +4055 +4068 +4066 +4068 +4069 +4072 +4071 +4063 +4064 +4067 +4075 +4099 +4140 +4141 +4172 +4171 +4172 +4182 +4191 +4192 +4194 +4201 +4207 +4211 +4213 +4220 +4258 +4257 +4256 +4258 +4271 +4270 +4263 +4265 +4266 +4292 +4290 +4297 +4298 +4299 +4316 +4333 +4335 +4346 +4349 +4354 +4355 +4357 +4373 +4371 +4361 +4366 +4369 +4373 +4374 +4378 +4380 +4394 +4395 +4400 +4406 +4412 +4419 +4417 +4424 +4440 +4443 +4449 +4459 +4461 +4466 +4461 +4463 +4462 +4464 +4472 +4475 +4476 +4478 +4464 +4481 +4483 +4493 +4504 +4505 +4513 +4516 +4527 +4526 +4514 +4515 +4544 +4545 +4560 +4562 +4561 +4573 +4572 +4571 +4592 +4600 +4589 +4606 +4612 +4628 +4629 +4597 +4623 +4624 +4619 +4620 +4636 +4637 +4647 +4649 +4650 +4653 +4655 +4663 +4681 +4677 +4696 +4698 +4704 +4709 +4706 +4696 +4698 +4697 +4698 +4711 +4716 +4740 +4741 +4742 +4743 +4740 +4750 +4742 +4745 +4753 +4754 +4755 +4756 +4757 +4758 +4788 +4791 +4802 +4811 +4800 +4808 +4817 +4789 +4809 +4820 +4821 +4802 +4804 +4805 +4807 +4808 +4799 +4810 +4807 +4806 +4791 +4801 +4808 +4818 +4828 +4841 +4837 +4841 +4860 +4880 +4909 +4913 +4910 +4909 +4925 +4927 +4929 +4932 +4933 +4932 +4933 +4949 +4938 +4940 +4930 +4944 +4950 +4944 +4957 +4967 +4973 +4979 +4974 +4962 +4949 +4950 +4952 +4956 +4961 +4962 +4981 +4983 +4985 +5000 +5001 +5004 +5031 +5035 +5036 +5037 +5040 +5048 +5057 +5056 +5045 +5047 +5031 +5034 +5036 +5047 +5065 +5068 +5069 +5053 +5046 +5043 +5048 +5050 +5059 +5092 +5088 +5089 +5090 +5091 +5090 +5091 +5104 +5109 +5112 +5113 +5107 +5106 +5121 +5114 +5122 +5117 +5135 +5146 +5149 +5150 +5151 +5157 +5158 +5160 +5158 +5163 +5181 +5182 +5160 +5161 +5131 +5149 +5152 +5150 +5151 +5154 +5153 +5163 +5170 +5190 +5193 +5199 +5201 +5205 +5206 +5202 +5206 +5208 +5209 +5208 +5212 +5224 +5225 +5226 +5234 +5216 +5239 +5233 +5232 +5209 +5218 +5227 +5226 +5230 +5233 +5244 +5249 +5250 +5251 +5249 +5266 +5264 +5296 +5303 +5322 +5308 +5331 +5334 +5339 +5345 +5346 +5347 +5350 +5351 +5357 +5353 +5354 +5356 +5357 +5370 +5371 +5370 +5373 +5376 +5384 +5385 +5392 +5394 +5395 +5407 +5413 +5419 +5422 +5435 +5432 +5437 +5440 +5442 +5444 +5441 +5442 +5445 +5447 +5450 +5459 +5477 +5478 +5482 +5476 +5475 +5476 +5480 +5481 +5475 +5487 +5507 +5506 +5507 +5510 +5505 +5508 +5509 +5520 +5515 +5518 +5525 +5511 +5486 +5516 +5533 +5532 +5545 +5548 +5547 +5560 +5562 +5566 +5570 +5574 +5576 +5586 +5558 +5566 +5552 +5541 +5545 +5553 +5550 +5546 +5555 +5551 +5547 +5562 +5578 +5604 +5608 +5614 +5613 +5601 +5611 +5622 +5621 +5619 +5618 +5625 +5627 +5630 +5623 +5624 +5619 +5616 +5618 +5629 +5635 +5636 +5637 +5638 +5647 +5648 +5649 +5650 +5649 +5650 +5652 +5655 +5664 +5665 +5666 +5673 +5674 +5689 +5694 +5696 +5715 +5716 +5713 +5712 +5743 +5767 +5768 +5769 +5770 +5778 +5793 +5794 +5793 +5799 +5800 +5803 +5804 +5805 +5806 +5829 +5830 +5833 +5834 +5836 +5838 +5844 +5843 +5851 +5852 +5851 +5887 +5891 +5872 +5877 +5880 +5875 +5879 +5880 +5887 +5878 +5882 +5884 +5883 +5864 +5876 +5882 +5896 +5899 +5886 +5887 +5891 +5894 +5937 +5934 +5931 +5940 +5943 +5941 +5942 +5951 +5948 +5958 +5947 +5945 +5947 +5958 +5964 +5967 +5966 +5957 +5958 +5959 +5962 +5946 +5970 +5978 +5972 +5986 +5974 +5968 +5985 +5997 +6001 +6042 +6038 +6041 +6068 +6082 +6087 +6090 +6101 +6102 +6106 +6110 +6097 +6098 +6105 +6106 +6122 +6121 +6140 +6173 +6187 +6193 +6195 +6197 +6198 +6208 +6215 +6217 +6220 +6232 +6247 +6248 +6252 +6249 +6252 +6269 +6270 +6274 +6299 +6301 +6313 +6334 +6335 +6342 +6343 +6344 +6378 +6377 +6376 +6378 +6369 +6362 +6369 +6371 +6370 +6379 +6384 +6387 +6407 +6373 +6392 +6402 +6405 +6407 +6412 +6420 +6419 +6422 +6435 +6436 +6435 +6437 +6421 +6422 +6421 +6425 +6415 +6431 +6425 +6426 +6427 +6426 +6429 +6443 +6435 +6454 +6455 +6456 +6474 +6475 +6476 +6483 +6485 +6489 +6490 +6493 +6499 +6505 +6513 +6517 +6507 +6508 +6514 +6516 +6515 +6530 +6523 +6520 +6525 +6513 +6514 +6529 +6531 +6524 +6537 +6525 +6529 +6535 +6555 +6561 +6562 +6570 +6571 +6572 +6573 +6579 +6577 +6579 +6582 +6593 +6597 +6600 +6598 +6593 +6610 +6612 +6613 +6614 +6592 +6593 +6599 +6593 +6594 +6559 +6560 +6564 +6561 +6560 +6557 +6562 +6564 +6538 +6551 +6552 +6557 +6567 +6568 +6566 +6547 +6549 +6550 +6551 +6552 +6547 +6545 +6550 +6555 +6561 +6584 +6597 +6599 +6607 +6616 +6619 +6626 +6637 +6645 +6646 +6648 +6664 +6665 +6669 +6673 +6677 +6684 +6698 +6699 +6700 +6704 +6712 +6724 +6738 +6748 +6751 +6753 +6756 +6781 +6782 +6785 +6794 +6795 +6770 +6781 +6777 +6779 +6784 +6793 +6785 +6786 +6790 +6773 +6778 +6789 +6799 +6804 +6805 +6806 +6816 +6823 +6829 +6831 +6834 +6836 +6838 +6857 +6859 +6860 +6889 +6913 +6914 +6917 +6919 +6929 +6924 +6919 +6924 +6899 +6904 +6924 +6925 +6932 +6936 +6931 +6921 +6922 +6923 +6947 +6951 +6963 +6960 +6965 +6970 +6973 +6965 +6966 +6978 +7010 +7015 +7012 +7017 +7027 +7035 +7036 +7026 +7035 +7007 +7006 +6997 +6995 +7003 +7021 +7028 +7031 +7041 +7039 +7056 +7072 +7080 +7081 +7055 +7056 +7088 +7101 +7105 +7107 +7108 +7104 +7105 +7084 +7087 +7084 +7088 +7086 +7098 +7100 +7081 +7083 +7081 +7084 +7085 +7089 +7098 +7097 +7101 +7104 +7105 +7114 +7117 +7118 +7115 +7117 +7122 +7121 +7127 +7128 +7132 +7149 +7166 +7127 +7122 +7123 +7124 +7126 +7127 +7146 +7148 +7161 +7166 +7167 +7160 +7155 +7154 +7155 +7158 +7177 +7189 +7192 +7194 +7204 +7212 +7199 +7206 +7207 +7212 +7219 +7198 +7208 +7217 +7223 +7216 +7217 +7224 +7223 +7222 +7219 +7223 +7222 +7224 +7230 +7231 +7230 +7231 +7229 +7231 +7232 +7228 +7241 +7243 +7240 +7239 +7241 +7248 +7251 +7254 +7292 +7297 +7296 +7297 +7301 +7306 +7308 +7311 +7310 +7312 +7317 +7319 +7324 +7323 +7330 +7332 +7345 +7352 +7355 +7382 +7403 +7391 +7395 +7416 +7417 +7418 +7410 +7411 +7412 +7414 +7415 +7429 +7408 +7407 +7408 +7411 +7410 +7413 +7411 +7408 +7410 +7408 +7409 +7410 +7416 +7417 +7419 +7420 +7424 +7428 +7450 +7453 +7468 +7469 +7470 +7449 +7450 +7435 +7436 +7455 +7460 +7461 +7462 +7465 +7485 +7496 +7502 +7503 +7514 +7526 +7538 +7528 +7534 +7543 +7544 +7545 +7519 +7531 +7532 +7539 +7540 +7542 +7551 +7567 +7576 +7574 +7569 +7579 +7580 +7588 +7573 +7578 +7579 +7581 +7600 +7634 +7631 +7630 +7639 +7648 +7649 +7652 +7653 +7656 +7665 +7635 +7643 +7649 +7656 +7657 +7656 +7661 +7666 +7674 +7680 +7676 +7692 +7677 +7678 +7689 +7700 +7723 +7729 +7738 +7743 +7748 +7769 +7770 +7776 +7784 +7786 +7788 +7805 +7806 +7801 +7825 +7830 +7832 +7815 +7816 +7828 +7830 +7831 +7834 +7858 +7860 +7862 +7873 +7879 +7883 +7894 +7910 +7916 +7917 +7935 +7942 +7930 +7932 +7934 +7935 +7932 +7936 +7944 +7951 +7953 +7954 +7960 +7963 +7976 +7968 +7972 +7977 +7978 +7976 +7977 +7991 +8016 +8056 +8058 +8059 +8074 +8078 +8087 +8088 +8083 +8088 +8094 +8103 +8118 +8114 +8115 +8111 +8116 +8115 +8105 +8106 +8107 +8108 +8112 +8120 +8129 +8134 +8138 +8137 +8138 +8152 +8158 +8171 +8191 +8201 +8207 +8209 +8236 +8237 +8239 +8244 +8239 +8241 +8252 +8243 +8244 +8260 +8254 +8248 +8251 +8246 +8249 +8262 +8265 +8266 +8263 +8264 +8267 +8273 +8297 +8302 +8303 +8302 +8310 +8313 +8314 +8332 +8333 +8306 +8308 +8307 +8334 +8332 +8329 +8330 +8332 +8337 +8338 +8343 +8350 +8349 +8361 +8365 +8368 +8371 +8372 +8375 +8402 +8412 +8445 +8447 +8472 +8482 +8483 +8486 +8493 +8495 +8494 +8493 +8494 +8499 +8501 +8503 +8513 +8509 +8510 +8514 +8515 +8514 +8518 +8535 +8538 +8543 +8545 +8557 +8568 diff --git a/2021/day1/input1.test b/2021/day1/input1.test new file mode 100644 index 0000000..3b0be38 --- /dev/null +++ b/2021/day1/input1.test @@ -0,0 +1,8 @@ +607 +618 +618 +617 +647 +716 +769 +792 \ No newline at end of file diff --git a/2021/day2/day2.zig b/2021/day2/day2.zig new file mode 100644 index 0000000..4c49499 --- /dev/null +++ b/2021/day2/day2.zig @@ -0,0 +1,70 @@ +const input = @embedFile("input2"); +const std = @import("std"); + +pub fn main() !void{ + + var horizontal: usize = 0; + var depth: usize = 0; + var aim: usize = 0; + + var iter = std.mem.tokenize(u8, input, "\n "); // You can split on 2 delimeters, by adding them to the string + + while(iter.next())|direction|{ + var value = try std.fmt.parseInt(usize, iter.next().?, 10); + + if(std.mem.eql(u8, direction, "up")){ aim -= value; } + if(std.mem.eql(u8, direction, "down")){ aim += value; } + if(std.mem.eql(u8, direction, "forward")){ + horizontal += value; + depth += (aim * value); + } + } + + std.debug.print("result: {}", .{depth * horizontal}); +} + +test "Part 1"{ + + var horizontal: usize = 0; + var depth: usize = 0; + + var iter = std.mem.tokenize(u8, input, "\n "); // You can split on 2 delimeters, by adding them to the string + + while(iter.next())|direction|{ + var value = try std.fmt.parseInt(usize, iter.next().?, 10); + + if(std.mem.eql(u8, direction, "forward")){ horizontal += value; } + if(std.mem.eql(u8, direction, "up")){ depth -= value; } + if(std.mem.eql(u8, direction, "down")){ depth += value; } + + } + + + std.testing.expect(1762050 == (depth * horizontal)); +} + + + + +test "part 2"{ + + var horizontal: usize = 0; + var depth: usize = 0; + var aim: usize = 0; + + var iter = std.mem.tokenize(u8, input, "\n "); // You can split on 2 delimeters, by adding them to the string + + //First token is the direction + while(iter.next())|direction|{ + var value = try std.fmt.parseInt(usize, iter.next().?, 10); + + if(std.mem.eql(u8, direction, "up")){ aim -= value; } + if(std.mem.eql(u8, direction, "down")){ aim += value; } + if(std.mem.eql(u8, direction, "forward")){ + horizontal += value; + depth += (aim * value); + } + } + + std.testing.expect(1855892637 == (depth * horizontal)); +} \ No newline at end of file diff --git a/2021/day2/input2 b/2021/day2/input2 new file mode 100644 index 0000000..dec59fb --- /dev/null +++ b/2021/day2/input2 @@ -0,0 +1,1000 @@ +forward 2 +forward 5 +forward 5 +down 4 +forward 8 +down 1 +forward 2 +forward 2 +down 9 +down 2 +forward 6 +forward 3 +down 9 +down 2 +forward 4 +up 2 +forward 7 +up 6 +forward 8 +forward 4 +up 5 +forward 3 +down 9 +forward 5 +forward 8 +forward 6 +forward 6 +forward 8 +forward 8 +forward 5 +down 2 +forward 8 +down 4 +down 6 +down 6 +forward 7 +forward 6 +up 3 +up 5 +down 5 +down 3 +up 2 +down 7 +down 2 +forward 1 +forward 6 +up 1 +down 7 +forward 8 +down 7 +down 6 +forward 5 +up 6 +forward 9 +down 9 +up 3 +down 6 +down 1 +forward 6 +up 1 +down 1 +up 3 +up 7 +forward 1 +down 5 +forward 7 +forward 3 +down 9 +up 8 +forward 1 +down 4 +up 1 +forward 9 +forward 7 +down 2 +forward 8 +down 2 +down 5 +down 2 +up 1 +down 5 +forward 4 +forward 8 +forward 3 +forward 3 +forward 1 +down 1 +forward 1 +down 7 +up 7 +down 3 +down 1 +down 7 +down 4 +forward 7 +forward 5 +down 9 +down 5 +forward 3 +up 7 +down 2 +up 1 +forward 1 +forward 2 +down 7 +down 3 +forward 7 +up 4 +forward 3 +up 8 +down 9 +down 4 +forward 5 +forward 6 +down 3 +down 5 +down 4 +down 9 +down 8 +forward 6 +down 3 +down 1 +down 9 +down 6 +forward 9 +forward 2 +up 5 +forward 5 +forward 4 +down 9 +up 7 +up 2 +forward 1 +forward 8 +forward 6 +up 8 +down 9 +down 2 +forward 7 +down 6 +forward 7 +up 9 +up 7 +down 8 +up 1 +forward 2 +forward 9 +down 9 +forward 6 +down 2 +down 1 +up 3 +forward 4 +down 3 +down 4 +down 9 +up 8 +up 8 +forward 3 +up 7 +forward 9 +forward 7 +up 2 +up 8 +forward 2 +down 6 +forward 3 +forward 1 +down 7 +down 2 +forward 9 +forward 9 +down 3 +forward 2 +forward 8 +down 6 +forward 6 +forward 5 +forward 1 +forward 6 +down 8 +down 7 +up 9 +down 6 +up 7 +down 2 +up 8 +up 8 +down 3 +down 7 +up 2 +up 2 +down 6 +down 6 +forward 2 +down 6 +forward 8 +forward 9 +down 3 +forward 6 +down 9 +forward 1 +up 6 +down 3 +up 5 +forward 9 +forward 7 +forward 9 +forward 5 +up 6 +down 3 +down 3 +down 3 +forward 1 +up 5 +forward 3 +forward 2 +down 1 +forward 7 +down 1 +forward 6 +forward 5 +forward 9 +up 6 +forward 1 +up 8 +down 7 +forward 6 +forward 3 +forward 1 +up 6 +forward 4 +up 6 +down 7 +forward 8 +forward 4 +forward 6 +forward 5 +up 6 +down 7 +up 9 +down 7 +forward 3 +down 7 +forward 6 +down 6 +down 6 +forward 8 +up 8 +forward 8 +forward 2 +down 8 +forward 4 +forward 9 +forward 7 +down 4 +down 7 +forward 4 +forward 3 +forward 2 +forward 2 +forward 5 +down 6 +forward 1 +forward 6 +up 8 +up 3 +up 9 +forward 3 +up 8 +forward 3 +up 8 +down 9 +up 7 +forward 9 +forward 1 +down 7 +forward 9 +down 6 +forward 4 +down 3 +up 9 +forward 5 +down 4 +up 6 +down 1 +up 9 +forward 2 +up 2 +down 1 +forward 7 +down 6 +down 4 +down 7 +down 4 +down 8 +up 9 +down 6 +up 3 +down 7 +forward 3 +forward 1 +down 1 +forward 2 +forward 6 +down 6 +forward 5 +down 8 +down 8 +down 6 +down 9 +forward 6 +forward 7 +up 8 +forward 5 +up 8 +down 6 +up 3 +forward 9 +up 9 +forward 2 +up 6 +forward 2 +down 8 +forward 3 +down 5 +down 8 +up 6 +down 3 +down 7 +down 4 +forward 5 +forward 8 +down 8 +forward 6 +down 8 +up 1 +forward 5 +down 3 +down 2 +up 1 +forward 3 +forward 7 +forward 6 +forward 9 +up 8 +down 2 +down 1 +down 7 +forward 4 +forward 2 +down 9 +down 3 +down 5 +up 6 +down 2 +forward 8 +up 1 +up 5 +down 6 +down 7 +forward 3 +down 4 +up 6 +down 9 +up 6 +down 2 +down 2 +down 6 +down 3 +forward 9 +down 6 +forward 5 +forward 6 +forward 4 +down 6 +forward 3 +down 9 +up 8 +forward 2 +up 3 +forward 1 +up 8 +forward 1 +down 6 +down 3 +forward 5 +forward 4 +down 9 +up 3 +down 6 +forward 4 +down 8 +down 3 +down 7 +forward 1 +forward 2 +forward 8 +down 2 +down 6 +up 9 +forward 2 +forward 4 +forward 8 +down 3 +forward 9 +down 7 +up 8 +forward 1 +down 6 +down 3 +forward 5 +forward 5 +forward 2 +down 2 +down 2 +down 2 +up 4 +forward 2 +forward 5 +forward 1 +forward 5 +down 3 +forward 8 +up 1 +forward 9 +up 5 +forward 2 +down 4 +forward 8 +forward 9 +up 6 +up 1 +down 7 +down 3 +forward 9 +down 3 +down 3 +forward 3 +forward 6 +up 4 +forward 2 +down 9 +forward 5 +forward 3 +forward 5 +down 6 +up 6 +down 7 +forward 2 +down 4 +forward 6 +forward 5 +forward 8 +down 4 +up 3 +up 4 +down 9 +forward 9 +down 7 +down 1 +down 9 +down 6 +down 8 +forward 7 +down 3 +up 3 +up 5 +forward 5 +up 6 +down 6 +forward 9 +down 7 +forward 6 +up 1 +forward 7 +forward 8 +down 9 +down 1 +forward 4 +up 2 +down 3 +up 3 +down 6 +forward 6 +down 7 +down 2 +forward 8 +forward 2 +forward 3 +forward 5 +up 8 +up 6 +down 1 +up 7 +down 1 +down 8 +forward 5 +up 7 +down 1 +forward 8 +down 6 +down 2 +up 7 +down 1 +forward 1 +up 8 +forward 5 +down 7 +down 8 +forward 4 +down 6 +down 2 +forward 4 +forward 7 +down 5 +down 1 +down 8 +down 3 +up 8 +down 6 +down 1 +down 1 +forward 4 +down 8 +up 5 +forward 3 +forward 3 +forward 5 +forward 8 +up 7 +forward 5 +down 8 +forward 9 +up 9 +forward 1 +down 2 +up 9 +down 7 +up 1 +up 3 +forward 9 +forward 8 +forward 3 +forward 8 +down 8 +down 5 +down 7 +up 7 +forward 9 +up 8 +down 9 +down 9 +down 1 +up 4 +up 4 +up 3 +forward 3 +down 7 +down 3 +forward 5 +up 9 +down 3 +up 2 +forward 1 +forward 4 +up 9 +forward 6 +down 6 +down 6 +forward 2 +forward 2 +down 4 +forward 9 +up 6 +down 8 +down 8 +down 9 +up 4 +down 9 +down 3 +down 7 +forward 4 +up 4 +up 5 +down 2 +up 2 +forward 1 +up 8 +forward 2 +down 6 +forward 9 +down 9 +forward 9 +up 8 +down 5 +up 3 +up 9 +down 8 +forward 6 +forward 2 +forward 7 +down 9 +down 8 +up 9 +down 5 +up 5 +down 1 +forward 3 +down 2 +down 5 +down 4 +down 1 +down 5 +down 5 +down 5 +forward 8 +down 2 +down 3 +down 4 +down 2 +up 8 +up 1 +down 5 +forward 8 +down 6 +forward 9 +down 6 +down 6 +down 5 +forward 5 +forward 3 +forward 7 +down 6 +forward 4 +down 8 +up 9 +up 6 +forward 5 +down 4 +forward 8 +forward 1 +forward 8 +up 5 +up 5 +forward 6 +down 3 +down 7 +up 7 +down 5 +forward 1 +forward 3 +up 3 +down 3 +down 3 +down 5 +forward 9 +down 2 +up 5 +up 2 +forward 1 +down 1 +forward 5 +down 8 +forward 8 +forward 9 +forward 3 +forward 2 +forward 4 +down 5 +up 1 +down 5 +up 1 +up 4 +forward 2 +forward 4 +down 6 +up 2 +up 4 +forward 4 +down 7 +forward 2 +up 1 +forward 4 +up 4 +forward 9 +down 1 +down 4 +up 1 +forward 2 +forward 3 +down 6 +forward 9 +forward 3 +down 2 +forward 9 +up 4 +forward 5 +forward 2 +down 2 +forward 5 +down 5 +down 3 +down 7 +down 7 +up 3 +down 7 +forward 9 +forward 7 +up 4 +forward 7 +up 8 +down 8 +forward 5 +down 2 +down 9 +up 8 +forward 4 +forward 4 +forward 2 +up 4 +down 5 +forward 3 +forward 6 +forward 5 +forward 3 +forward 7 +up 9 +forward 1 +forward 2 +up 7 +down 4 +forward 8 +down 2 +forward 1 +down 1 +down 9 +up 2 +down 2 +forward 8 +forward 5 +up 9 +forward 5 +down 2 +forward 2 +down 7 +forward 5 +down 1 +forward 9 +forward 8 +forward 8 +forward 9 +forward 8 +down 9 +forward 8 +down 1 +down 2 +down 9 +up 2 +forward 8 +forward 8 +down 9 +forward 8 +up 8 +forward 2 +down 5 +up 3 +forward 2 +up 3 +down 6 +forward 5 +up 7 +forward 2 +forward 7 +forward 7 +down 8 +forward 3 +up 5 +down 8 +down 3 +down 8 +up 6 +down 6 +up 4 +forward 7 +up 6 +up 1 +down 5 +up 8 +forward 8 +forward 9 +down 8 +forward 6 +down 8 +down 9 +down 8 +forward 9 +up 1 +down 1 +down 8 +down 5 +down 2 +up 7 +forward 4 +down 4 +forward 6 +down 1 +forward 5 +forward 3 +forward 9 +up 8 +down 4 +down 6 +down 4 +down 1 +up 9 +forward 9 +down 9 +forward 7 +down 2 +down 8 +forward 2 +forward 5 +down 6 +down 1 +down 1 +up 3 +forward 9 +up 7 +down 1 +down 6 +forward 6 +up 2 +down 4 +down 7 +forward 3 +down 9 +down 1 +forward 7 +forward 2 +forward 6 +down 4 +forward 7 +forward 8 +forward 3 +forward 7 +up 8 +forward 5 +up 8 +down 8 +forward 3 +forward 8 +forward 7 +forward 3 +down 4 +forward 9 +forward 4 +up 6 +forward 4 +forward 6 +up 4 +forward 6 +forward 2 +down 3 +down 3 +down 4 +down 1 +down 9 +up 1 +up 9 +down 7 +up 9 +forward 5 +down 2 +up 7 +forward 9 +up 1 +down 5 +up 8 +forward 9 +down 1 +up 3 +forward 3 +forward 9 +up 7 +forward 3 +down 7 +forward 3 +forward 5 +forward 4 +up 3 +forward 3 +down 8 +forward 7 +up 5 +forward 9 +down 6 +up 6 +up 1 +forward 8 +down 9 +forward 9 +forward 9 +down 5 +down 7 +forward 7 +down 5 +down 3 +forward 4 +up 6 +forward 6 +forward 2 +down 8 +down 6 +forward 1 +forward 1 +down 6 +forward 1 +down 6 +down 2 +forward 1 +forward 6 +up 4 +up 7 +up 3 +down 6 +forward 1 +forward 9 +forward 4 +down 4 +forward 3 +down 8 +down 6 +down 6 +forward 2 +forward 8 +forward 6 +down 4 +up 2 +down 1 +up 4 +down 8 +forward 9 +down 4 +down 8 +up 8 +forward 2 +up 9 +down 9 +forward 2 +down 8 +forward 3 +down 1 +up 9 +forward 6 +down 9 +forward 2 +down 2 +up 5 +down 4 +down 5 +down 7 +forward 4 +down 4 +forward 6 +forward 2 +down 8 +up 3 +up 9 +forward 3 +forward 6 +down 6 +down 2 +down 5 +down 4 +forward 1 +up 2 +down 3 +forward 6 +forward 5 +down 4 +down 3 +forward 2 +forward 4 +down 9 +down 3 +down 4 +up 6 +forward 8 +up 2 +up 8 +up 4 +forward 7 +forward 5 +forward 9 +down 6 +forward 7 +forward 9 +up 3 +forward 6 diff --git a/2021/day2/input2.test b/2021/day2/input2.test new file mode 100644 index 0000000..b7172ac --- /dev/null +++ b/2021/day2/input2.test @@ -0,0 +1,6 @@ +forward 5 +down 5 +forward 8 +up 3 +down 8 +forward 2 diff --git a/2021/day3/day3.zig b/2021/day3/day3.zig new file mode 100644 index 0000000..4091b89 --- /dev/null +++ b/2021/day3/day3.zig @@ -0,0 +1,85 @@ +const input = @embedFile("input3"); +const std = @import("std"); + +pub fn main() !void{ + + + var counting = [1]usize{0} ** 12; + + var iter = std.mem.tokenize(u8, input, "\n"); + while(iter.next() ) |line| { + + for(line)|c, i|{ + counting[i] += (c -48); //HACK: subtract 48 to go from ascii to bit + } + + + //@popCount(u8,line); // >=3 means 1 is most common bit. + } + + + // + var gamma: u12 = 0; + var epsilon:u12 = 0; + + for(counting)|count, i|{ + + if(count > 500){ + counting[i] = 1; + }else{ + counting[i] = 0; + } + } + + + for(counting)|c, i|{ + if(c == 1) gamma |= @as(u12, 1) << @intCast(u4,i ) ; + } + + gamma = @bitReverse(u12, gamma); + epsilon = ~gamma; + + const result: u64 = gamma * @as(u64, epsilon); + + std.debug.print("result: {}", .{result}); +} + +test "part 1"{ + + + var counting = [1]usize{0} ** 12; + + var iter = std.mem.tokenize(u8, input, "\n"); + while(iter.next() ) |line| { + + for(line)|c, i|{ + counting[i] += (c -48); //HACK: subtract 48 to go from ascii to bit + } + + } + + + // + var gamma: u12 = 0; + var epsilon:u12 = 0; + + for(counting)|count, i|{ + + if(count > 500){ + counting[i] = 1; + }else{ + counting[i] = 0; + } + } + + + for(counting)|c, i|{ + if(c == 1) gamma |= @as(u12, 1) << @intCast(u4,i ) ; + } + + gamma = @bitReverse(u12, gamma); + epsilon = ~gamma; + const result: u64 = gamma * @as(u64, epsilon); + + std.testing.expect(2648450 == result); +} diff --git a/2021/day3/input3 b/2021/day3/input3 new file mode 100644 index 0000000..5bd6997 --- /dev/null +++ b/2021/day3/input3 @@ -0,0 +1,1000 @@ +100101001000 +011101110101 +000001010101 +001001010001 +001101011110 +010101001100 +110110011111 +100100110101 +101010110110 +001100001001 +010100000001 +011001010010 +001011000011 +001001100111 +000000100011 +100101101111 +000100011011 +110011000101 +111101100100 +001110000111 +010110001010 +110100011111 +110011010000 +010100100111 +100011111101 +111101000110 +011000111111 +001111001101 +100100010000 +111111110111 +101111110110 +110000011000 +010101011011 +001000100000 +100011101100 +001111001111 +101000101010 +110110000000 +001101101001 +000000001010 +010101010111 +010101110010 +010000110101 +001110001101 +011110011010 +011011100100 +000111110110 +100110101100 +100001101111 +100000010111 +111100001111 +110000101110 +011000111011 +001101000011 +111110010001 +101000111000 +110111100110 +101101011010 +101111110010 +110101111110 +001011011001 +001101010000 +111001100110 +100111001000 +011110100101 +011111000110 +010010010101 +001001001001 +011111011101 +100010000101 +101111111010 +000110100001 +011001000110 +101001010000 +101001000001 +100110111101 +110011001011 +010010100001 +110001100010 +111010000001 +100011011110 +101010011000 +001000100100 +100011001110 +111110100010 +101110001000 +001100110001 +010010101011 +001011101111 +101111011101 +011100110000 +101010011011 +000011011010 +101010111100 +011101010001 +111111101000 +110110010000 +100101000111 +111010010011 +010100111001 +010110100101 +100000010101 +111110011000 +011111011100 +010001101110 +110011110000 +100101001100 +100000000101 +000011111101 +001011100111 +001111100110 +000100111100 +101110100101 +010000111000 +011001011111 +011100100100 +000011000100 +111110111010 +011111110000 +110011000100 +010010001111 +001100111101 +111101001001 +100000110010 +101110110011 +100111010010 +010001001001 +010000001011 +100001000001 +010010010100 +000000111101 +001100010010 +000111001110 +000101010010 +000010011000 +001111011011 +110001100000 +011110101010 +011000100110 +110111011101 +001001100010 +110101000011 +000011110100 +100000011110 +111100101001 +111111101001 +111110000101 +110101100011 +100101110100 +001001011000 +011000110100 +110000001000 +100100111011 +110111001111 +000110000111 +011011110110 +011100001011 +111111111000 +111001101000 +011101010111 +110011001100 +001000000111 +101011001001 +000100101111 +111110100111 +100000011010 +101100100100 +110001000110 +101100011110 +110010011001 +101000100110 +001111110111 +010011111100 +000111101101 +011010011110 +101010010011 +101000110011 +011111001000 +000001111000 +111001110110 +111110011101 +101110101000 +010010010110 +011011110100 +110100100011 +000101000111 +000110000000 +001101010100 +100101101000 +101101001011 +110101011010 +010111100111 +101100010111 +111110001000 +010101101000 +100010001001 +110100010000 +100110000000 +101101001100 +100010111001 +001101010001 +000101000101 +001110111000 +011111011000 +011001101100 +111101101110 +101000101011 +000100111001 +011101000111 +100001111100 +111000101101 +011000001111 +100101000010 +010101100011 +011111110001 +010110100110 +001101001100 +100010101010 +000110100111 +000101100000 +110001010101 +110000110001 +101000010001 +010110011101 +001011111000 +010001000010 +010010001101 +010100100101 +011100001111 +111101101111 +111100101100 +010011100110 +100001101110 +111110110110 +011100100101 +010000010000 +001011100000 +011110010001 +001000110001 +111011100111 +111101011011 +100111010001 +101100010110 +100010101101 +101111011111 +000100111000 +000111100011 +111100001101 +111101010100 +111011111101 +001101001011 +100100100111 +111011011101 +111110011001 +100110110001 +011110111011 +110010000011 +001110000010 +010100111111 +001000001011 +000101001000 +111110000001 +101110110000 +111110101001 +110110111110 +011010110011 +010011000100 +110110111101 +111101001000 +011000010100 +101010010010 +111000001111 +100110111111 +100011100110 +101001000111 +101000000011 +101100011011 +001111010101 +110100010001 +111001001010 +101110110010 +000011001110 +101000000110 +010010011001 +000111101100 +000010010111 +001100101010 +001010110000 +010100011000 +010000010101 +111100010111 +011010010110 +111111110001 +001111000100 +010001100111 +010011111010 +101101101101 +110100100001 +011101001110 +000010001111 +011000110101 +010011100100 +011111000101 +111011110010 +101100101011 +001001000010 +101011111110 +110111011010 +100111100100 +010101011110 +100111010011 +100100011101 +001101000111 +101001010100 +001000101100 +100101101101 +101111011100 +011011111001 +001100111011 +100100000110 +111111001110 +011111000011 +100000101010 +001110111101 +010110111100 +010000010001 +101010100000 +011001100001 +100000010100 +100111001110 +010011110100 +001010010000 +000110011100 +111001110100 +010110001110 +101110101011 +010010111101 +111111100001 +110100101000 +111010100100 +001001101010 +011011011111 +011001111001 +110110001100 +101000001100 +000101010001 +100010010111 +101110000111 +111010101001 +100100111010 +111100101010 +101111010100 +111000011001 +001100101001 +101000000000 +110110011110 +111011110001 +110000110000 +011001100011 +101100111101 +101010101110 +011011101011 +101001011101 +110000110100 +010010101100 +001110111010 +011111001010 +001100100110 +001111101001 +000001111110 +110000111001 +000111001111 +100001111010 +111011101111 +101001110001 +101010101001 +011001011000 +001001010011 +100100111000 +011101011010 +110001101010 +100000100011 +001000101001 +001110011100 +001001111100 +001001110110 +001010100011 +011010101100 +011101110100 +110100111000 +101100000111 +010001100010 +100011000111 +010010000010 +011110110100 +110000000110 +010100100110 +101000001111 +011110001101 +100111011100 +100000100111 +101110000001 +000111110100 +001011001101 +011110101001 +110011011111 +100011011011 +100100111001 +110010100001 +000000010110 +011011100011 +001000111100 +100000100110 +001000100110 +111011000101 +011010000110 +001000000010 +010100101001 +011110101110 +111111100111 +000010001110 +101100010101 +011101110001 +001011110101 +000100001010 +000101011010 +011111110110 +101100001000 +010101010000 +001101111111 +010011110101 +001101111101 +100100100011 +111111011101 +101101100110 +011100001110 +011101010110 +001110001100 +000111100100 +111110011111 +100010001011 +011001100100 +110000101000 +000001010110 +111110110101 +111101101101 +001001101111 +101010111010 +011010110100 +010100110000 +010100100011 +010011011010 +111111001101 +101000100010 +000001010100 +100011010001 +001100000100 +111101011010 +000100000111 +100011100000 +000100110101 +100111001011 +011111100001 +110011011010 +111011000100 +000101111000 +000010001010 +000110111001 +100011011101 +101011010000 +011100111011 +000011100110 +001111100101 +001001111110 +001000110011 +110111011100 +101000100111 +100010100000 +111000000100 +101010011100 +101110111110 +000000110110 +110111011111 +101011110000 +111000100110 +000011111111 +010101100001 +001110011001 +011011011110 +110111111110 +000111001010 +100000110100 +001001111000 +011010111010 +111100000000 +000110010111 +100001010100 +000010001100 +001001011111 +100000011011 +111011110011 +101101110001 +100101011010 +111110101010 +000000111001 +010100101110 +011110000001 +001001010110 +110110111010 +011101000010 +011111010100 +000101101100 +010101111101 +110011111100 +000010010101 +000010100000 +101100100000 +010010010000 +111001110011 +101100111001 +000010110000 +000100010111 +011101111110 +110000011011 +011100011011 +110000010101 +010010110101 +111101110100 +010010000101 +110010000010 +110101010000 +010101000101 +110101010001 +101010100111 +010100110111 +110011010110 +010001011011 +011111001101 +001100100011 +110000010111 +110000010110 +110111011000 +111000000110 +000101000010 +000101110011 +111010100011 +000111011111 +001110000110 +110010011111 +100001111000 +110110011010 +100000111110 +110000100001 +111101000001 +001101001110 +000000111000 +000010100100 +101001011110 +010110101010 +001010010111 +011011100101 +001100010100 +010011100010 +001000010011 +010111101000 +011000011000 +000101100100 +010101100101 +010111110001 +001000100010 +001010110100 +111011000001 +011110001111 +010111100001 +111010010100 +000000100101 +111110000111 +010010101010 +010011000001 +111011010000 +100101011001 +011000000011 +100101100101 +100101011011 +001000100011 +101111001000 +100110001001 +001011001011 +000000000001 +111011110100 +100101001001 +111100100110 +011010010011 +011000000001 +100111001100 +101001100000 +100000011101 +000110100000 +010110011100 +010000010100 +101111110011 +001101101100 +111010111000 +000000101110 +101001111101 +101000110111 +101111101001 +010101110001 +100011010010 +111110001100 +111111000000 +000101111001 +100111101101 +001111110000 +001010101101 +111001101110 +000011000010 +011000010000 +101101010000 +010001101100 +000011010111 +000010101010 +101001101001 +110011001110 +000101110100 +100001110000 +001100011110 +101100110001 +011010011000 +000010111010 +001001100100 +010111001110 +111101010001 +111000001001 +101100101110 +001011101011 +001100010001 +100110101110 +011000001001 +111001111101 +101110100100 +010111011011 +010110111010 +000011101100 +010001011100 +011100101011 +100001000100 +000111000101 +001110100010 +111100000101 +011101101000 +110011110110 +110110100110 +110010001111 +101111111011 +101111011110 +010011100101 +010101101010 +000001100010 +101101001101 +111001010010 +100110110011 +111000111010 +100000110000 +011100101100 +011000110111 +101101100011 +001000010000 +000101101010 +010100101111 +011010111111 +010111011100 +100010001100 +111011001011 +011000000111 +011101100101 +011001100101 +101111010010 +100011011001 +100111110010 +000010010100 +000010000001 +111011010001 +101111001010 +001110000100 +111100100001 +011100000110 +000000110111 +101100001100 +100111110001 +010011010111 +111111010101 +101110101001 +010011111101 +101011101110 +000011000110 +111001001111 +111101101000 +001111101100 +011000011111 +101100000010 +011100110110 +001110110001 +011111100000 +010001010010 +111001111110 +010100010110 +101010100101 +111001101010 +110110101011 +110010011010 +110111101011 +111101110000 +001010100101 +001101001000 +110101101001 +101100010011 +011001011001 +000110010000 +000011000001 +000011000101 +100100100001 +001101101101 +000100001111 +111100110111 +010000111110 +111110011010 +001101110111 +100101111000 +000110110100 +111110010100 +010011001100 +101100010100 +110011101110 +011001101110 +110001001011 +010000000101 +100110101101 +000011011111 +001101110011 +111001001101 +011000010110 +001010101110 +001010010110 +101000000101 +111101111111 +110001001000 +001100010110 +110001000101 +111010001011 +011001001011 +001011011011 +111100001001 +101101110101 +111010111011 +100000111101 +100111000000 +001110111110 +100110010000 +101110000000 +011101101010 +001010011011 +001100101100 +101011101001 +110001000011 +011100010111 +100001010111 +101001110111 +000100000001 +000100101101 +101110101100 +000111011001 +101011111010 +100101010101 +010100010111 +010000100101 +110011000010 +001110001111 +000010110001 +010000100010 +111111001000 +111000110111 +001100010101 +000110111100 +001100101111 +110011111101 +001100011010 +110000100011 +101001101111 +111101100101 +110100010101 +100110001010 +001000000000 +110111100000 +110001001001 +001000011101 +100000101101 +010111001010 +000001101000 +111000001110 +011001010100 +000110000001 +110110010100 +101001001111 +101010100010 +111010110000 +010000001110 +111011001101 +111111101101 +001001100011 +110001101111 +110111111101 +000100010001 +101000010100 +011011001110 +101101101010 +011010000100 +110000110111 +110100010100 +100010010001 +100111110111 +011001111101 +010001111100 +000110111111 +001011100100 +110011101100 +001101100011 +101001100001 +110011111111 +111000011110 +000110101110 +101100001101 +010010010111 +000000101111 +010010110110 +111111010100 +010101101001 +110011100110 +000101001001 +111001111010 +111101111110 +011011101001 +101010010111 +101111001111 +100101111011 +001101110100 +011111110101 +000101010111 +000101000011 +010001101010 +010101110110 +010010100011 +011100100010 +001101000101 +101010001111 +000111111010 +111010110011 +110010100000 +011111111111 +111001010001 +111010000100 +000010100001 +001100011011 +010010000000 +100111101000 +011010101010 +101011101011 +010001100101 +001011100010 +111111110100 +001011011010 +100111101111 +000001110111 +110101010101 +100111011110 +101011100011 +001110010011 +100101000000 +000100001110 +001000111000 +100011111100 +011000010101 +100000000111 +100011001010 +010100110010 +011100010101 +110001100101 +000011100100 +111100111001 +001100111100 +001011101001 +101011001101 +001001001111 +100010110000 +010000001111 +001101101000 +111100101111 +111100100100 +000001000101 +100010000010 +110101010110 +111111100010 +000010110111 +000111110011 +000010101000 +111000001100 +101110001011 +100000010001 +010010110111 +011101110111 +100001000110 +011111101101 +111101110010 +110100001000 +100010111000 +000001011010 +110010100011 +001001011100 +111011100010 +110110001111 +011111110011 +011011010100 +100000110101 +100110000001 +100111101100 +010101001110 +101101111011 +001000110100 +010110111000 +110000100110 +100001000101 +101000001101 +110001011110 +110000010100 +111111011110 +000000010000 +001110100100 +100100000000 +111000011010 +000010111100 +000101100001 +100000011100 +111101100011 +000011000000 +001100001100 +100001101011 +010100010010 +111010101111 +101100001011 +010110111111 +010110110010 +000111111111 +010100001001 +101110011101 +011000101101 +000100001011 +000000101011 +100011000101 +011010101000 +010110000000 +001011111010 +010011011011 +011111100100 +000110011101 +010001000100 +111010110010 +111101110101 +101001110010 +010101001111 +001000010010 +001101001001 +011011000010 +010110100111 +001000111101 +101011001011 +110110110101 +011110011111 +111000111101 +100011001011 +001111111011 +011111010010 +000101100011 +000010111001 +011011010010 +010100011010 +111111001111 +010001110100 +110001111011 +100011000100 +101101000100 +001110100111 +000101101011 +000100001001 +110101110110 +100000101011 +010000000000 +011010100000 +110011001111 +010110110111 +100000001001 diff --git a/2021/day3/input3.test b/2021/day3/input3.test new file mode 100644 index 0000000..a6366a8 --- /dev/null +++ b/2021/day3/input3.test @@ -0,0 +1,12 @@ +00100 +11110 +10110 +10111 +10101 +01111 +00111 +11100 +10000 +11001 +00010 +01010 diff --git a/2021/day4/day4.zig b/2021/day4/day4.zig new file mode 100644 index 0000000..e69de29 diff --git a/2021/day4/input4.zig b/2021/day4/input4.zig new file mode 100644 index 0000000..e69de29