From c6787f95e5f83eec4a535c3e3c325a53d4447eeb Mon Sep 17 00:00:00 2001 From: Rene Pot Date: Thu, 3 Dec 2020 11:38:29 +0000 Subject: [PATCH 01/59] moved files around --- day1input.txt => day1/input.txt | 0 day1.js => day1/program.js | 2 +- day2input.txt => day2/input.txt | 0 day2.js => day2/program.js | 2 +- 4 files changed, 2 insertions(+), 2 deletions(-) rename day1input.txt => day1/input.txt (100%) rename day1.js => day1/program.js (93%) rename day2input.txt => day2/input.txt (100%) rename day2.js => day2/program.js (96%) diff --git a/day1input.txt b/day1/input.txt similarity index 100% rename from day1input.txt rename to day1/input.txt diff --git a/day1.js b/day1/program.js similarity index 93% rename from day1.js rename to day1/program.js index c874e4f..fa54b97 100644 --- a/day1.js +++ b/day1/program.js @@ -24,7 +24,7 @@ function findSumPart1(nums) { }); } -fs.readFile('./day1input.txt', 'utf-8', (e, data) =>{ +fs.readFile('./input.txt', 'utf-8', (e, data) =>{ const items = data.split("\n"); items.forEach((num, i) => { items[i] = parseInt(num); diff --git a/day2input.txt b/day2/input.txt similarity index 100% rename from day2input.txt rename to day2/input.txt diff --git a/day2.js b/day2/program.js similarity index 96% rename from day2.js rename to day2/program.js index e135497..6d50394 100644 --- a/day2.js +++ b/day2/program.js @@ -61,7 +61,7 @@ function parseItems(input) { } -fs.readFile('./day2input.txt', 'utf-8', (e, data) =>{ +fs.readFile('./input.txt', 'utf-8', (e, data) =>{ const items = data.split("\n"); const pws = parseItems(items); From f4e09f7014618f663799ca576ddb78094b571e5f Mon Sep 17 00:00:00 2001 From: Rene Pot Date: Thu, 3 Dec 2020 11:38:36 +0000 Subject: [PATCH 02/59] day 3, part 1 --- day3/input.txt | 323 ++++++++++++++++++++++++++++++++++++++++++++++++ day3/program.js | 24 ++++ 2 files changed, 347 insertions(+) create mode 100644 day3/input.txt create mode 100644 day3/program.js diff --git a/day3/input.txt b/day3/input.txt new file mode 100644 index 0000000..8285f03 --- /dev/null +++ b/day3/input.txt @@ -0,0 +1,323 @@ +.....#....#...#.#..........#... +...#.................#......... +......#...#.#.#.....#..#.....#. +.........#.#.............##.... +#..####..#..#.##.....#......... +...#........#..##...........#.. +..##.#.#..#....#..#......#.#... +.......#.##....#.....###....#.# +.#..#...#......#..#....##.#.... +...#...............#.#.....#... +..#............#..#.........#.# +#.#.#.............##.#......#.. +#...#..............##...#.#.... +...#....#................#.#..# +..#.#..#.#.#..#.....#.........# +#.............#..#..........#.. +.#...#.#........###.#....#...#. +#......#....#.#..#.##..#....... +.##......###.#......#..##...#.. +#..#....#........#......#.#.... +.#..................#.....#.### +.#......#.#.#.....#...#.#...... +....#.............#.#.......... +....#..#.#........#..###....... +.....#....#...#........#....... +...........#.###....##.......#. +....#...........#.#..#...#..... +...........#.....#.#........... +.....#........#.....#.#..#....# +#.#......#.......#.......#..... +..........#.............#.#.#.. +#...#..........#....#....#..... +.#.#......#..##...#.....#...##. +.#....#...#.#.......#.#........ +....#....##.##...#............. +#...#....#..#.........#........ +...#.....#.#...#.......#..#.... +#.......#...#....##........#..# +####........#........#....#.#.. +............##..........#...... +.......#.....#.#.#.##..#...#... +..........#....#...##.........# +..##..####.......##......#.##.. +.....#.#......##...#..#...#.... +....#.#.#.........#........#... +...........###...#.........##.. +.......#.#....#......#.##...##. +.................#...##.#...##. +.......#.......#..#.#.......... +.#....#..#....#........#....... +...............#.##..#...##..#. +.###.#....#......#...#.#.....#. +.#.....##.......#.......#...... +....#..#.....#.....#........... +.......#....#.................# +.......#.##...#...#......#..... +.#.....#...####.............#.. +......#.........#..........#... +.........#....#....#........### +....#.........#......##.....#.. +....#........##...##.....##...# +.#..#....#..........#...#.###.# +#..#......#...#........#....... +...#.........................#. +.............#........#........ +.......#.#.#.....##.....#..#... +..##..##.........#............. +.#...#..#......#...##..##..###. +.....#....#...#...##.##........ +.#.#..#...........#..#..#...... +##..#...#..#...##..#....#...... +...#...#...#.........#....###.. +...##..#....#.#.#.......#...#.. +..#.#.....#..#....#..##.......# +.....#.#.....#......#....#.#... +.......##....#.....#...#.....#. +..##..#.................#.#.... +..............##....##.#..##... +.#..#.....#....#.#.#........... +......#.#.#..#..#...#.....#..## +..#.........#.#.......###...##. +#.....#...........#.....#.##.#. +#..........#....#....#..#....#. +.#.....#...#.......###......#.. +....##..##......#....#....#.... +.......#.#.............#....#.# +.#..#.##.##.##....#.#.....##.## +....#..##.#..#.............##.. +....#...........#...#....#..#.. +...........#..#....#....##.#.## +......#....#....#.....#......#. +.##.##....#.....#.#......#...#. +.....##.......#.#.#........##.. +#..........##..#....#..#.#....# +...#........................... +...#..#...#..#.#.#.#.......#.#. +.....#.........#..###.......... +...#.#......##....#......#..### +#..............#....#.......#.. +.........##......###..###...... +..#......##...........#.##..... +#.#..#......#...##............. +......#.#.............#....#..# +#.....##..#.#.................# +..##....#.....#....#.....###... +.#.#.##.....#.................. +.#......#.#.#.....#..#....#.... +..#.#.....##.#...#..#.#.##..... +..#.#..#......##.#.#..........# +.......##.....#..#...#....##.#. +...#.....#..........#.......... +......................##......# +...###.........##.........#.... +....#..................#.....#. +.##..#.............#........##. +....#....#...###..........#.... +.....#.#..........###.......... +..#......##......#.#.##.#..#... +##...........#.#..#.....#..#... +.........#......#..........#.#. +...#.##.#..#..###..#........... +....##.#.##...........#.....##. +....#...................###.... +#.......#......#......#.....#.. +#..........##.................. +...#..#.#....#..#.........##.#. +......#...##.#...............#. +.........#....#.#...#..#..#.... +...#......###..#......#.....#.# +#..###.#.............#......... +......#...........#............ +..#..#.##.....#......#.#..#...# +.........#..............#...... +........#.....#..#...#.....#..# +.....................#........# +.##.......##...#.###.........#. +.#...#.......#.#....##....#.... +........#......#...........#.#. +....#......##...#.....#...#...# +..#.........#.#...............# +....#.....#......#............. +.............##.....#....#..... +........#......#.#.....#....#.. +#.........#...#......#....#...# +.#........###...#.#.#...#....#. +.###...........#..#............ +....##.........#..#...##.#..### +.####..#.#...............##.#.. +#.....#...#....#.......##....#. +..#.....##...##.#...#..#....... +..#.###.......#.....#.......#.. +...........#.......#....##....# +..#...#....##........###......# +...#..#..............#...#..... +##.#.............#....##.#..##. +##.#..#..............#.#....... +.......#....#....##............ +.##..##.#..........#.#...#.#... +.........##.......##...#...#... +............#...##....#...#.... +........#...#..#...#.##......#. +..#...#.#.........#.#....#..... +..#...#.#..#.......#.#......... +.......#.....#...#.#..###....#. +.#......#.#....#.#.####....#... +.......##..#......#...#......## +#####.....#........#.#.......#. +.....#...#..#...#.#.....#..#... +....#...#....##.....##....#.#.. +.#..#......#.####.....#....#..# +...#.......#..#.....##........# +.#.....#.#.#.....##...#..#..... +.............#...#..#.....#.... +...#.....##.......#...##..#...# +..#.............#...#..#..##... +...#........#........#...#...#. +##..........#.#.#.............# +....#....#..............#..#... +....#..####..##....#.......#.#. +.#..#.....##....#.#.....#...#.. +#............##..#..#.#......#. +....#..........##..#........... +..#.##.#.......#...#.##....#... +....#.#.............#.#.##....# +...#..#.#.#......#..#....#....# +.............#...........#..#.. +#.............##.......#..###.. +..##....#.#.#...#...#....#...#. +##.......####........##..#..... +.###..#..#..#..#...#.#......... +............#............#..... +#...#.....#.#.##.##...#.......# +#........#....#...#.........#.. +#....#.#......#.............#.. +....#............#......##...#. +.......#........#..#.......#..# +#.#...#.#.#..#..#........#....# +#.#.##...........#.....#.....#. +.#...##.#..#................... +###...#.#.....................# +.#....##...##.#....#..#........ +........###...#.#....##...#..## +...#..#..........###..#.......# +..#..##.............#.....#.... +....##..#..............#....... +...##...##.#....#.#...#...#.#.# +..#..........#.....##........#. +.#.#.....#......#..#....#...... +...##.#....#.......#......#.... +...##..#........##......#..##.. +#..###...#...........#.#....... +..##...#...#.#.#...#.#.....#... +..#.....##.#....#.....#..#..... +..#.#......#.......#........... +....##......##.............#..# +.......#.........##...#..#...#. +.#........#.##.#.....#.#....... +#..#...#..#.....##...........#. +..##..............#....#....... +.#..#....#.#...........#..##.#. +#....#..###..........#...#..... +.......#...##........#.#...###. +....#..#......##......#.....#.. +.#..##..#..#......#......#.##.. +....#.#...........#..#.#.##.#.. +.....#......#.....#.....#..#... +..........#...........#...##... +#..#.#.#..#....#.....##......## +..#.....#.....#................ +...#.#..##.........#..#..##.... +.#.....##..#.#.#.#.....#....... +...........##...#.............. +...#.#....##..#.............### +...#.#...........#.........#... +#.....#.....##..#.#.#.#....#... +##..................##.##...... +......#.....#....#.....#..#...# +.............#.......#....#..## +.#..#.##..#..#.........##...#.. +..#.#....#........#....#....##. +.#.#.#.#.#.......#.......#..#.. +#.....#..##..#.........#....... +.............#.#..............# +.........#......#....#.#......# +.........#.#...##..#.#......... +...........#..........#........ +.......#...#...#......#..#..... +#.....#...............#.....#.# +..#....#..........#.#...#..#... +#....##..#..#.....#.#..#.#..... +.#....#..###............##..... +......#.##...........#....#..#. +...#........##....#...#...#.... +..#.#.#.....#..#.#..........##. +..................#...........# +##........#.#......#.#.......#. +......#..#.............##...... +.#..###..#...###......#....#..# +..#...........#...#...##..#...# +..#..........#..............#.. +.....#......................... +..#.#..##...........##...#..... +...........#......##.....##.... +......#.......#................ +.........#.......#.#........... +#......#...#........##.....##.. +...#.....#....#..#.....#....... +....#.#......#...#..#.##.##...# +..#..#.#.....#...#...........#. +.#....##.####.....#..........## +...##.##.....##..###...#....... +.......#.#...#....#.......#..#. +.#..#.###.#.............#...... +.###.........####..#........... +#..#.#.###.....#.......#....... +.#.....#.....#.....#.........#. +..#...#......#.......##.###.... +.......##.............##.#..... +.....................#.....##.# +##.#...#........#..##........#. +...#..........#.#.#..#......### +.#....#.#.#..........##........ +....#....####....#.#....#..#.#. +..#.........#....##..........## +...##.#.......##.#.......#.#... +........#..#......#...#.#.....# +.....##............#.#.......#. +.........##...##..#.....#..#... +#...#....#........#...#....##.# +..#.....#..........#...##.....# +.##..#.........#...........#... +.....##.#.#.#.#..#...#.....#.#. +.#..#..##.........#.......#...# +#....#.....#...#....#.........# +...#..#.......#.........#...... +.#....##..#......##.#.#......#. +....##.##...........#...#...... +..#.#....#.##...#......#....... +...#........#.............#.... +...##....................#.###. +.#.......#.........#......##... +....#..#..............#....#... +....##.#............#.......... +.#...#....#...##..........#.... +....#............#.....#....... +.......#........#.............. +....#.#....#.#..#..#........... +......................#.#...... +#......##.....#..#.......##.... +...#........#........#.#...##.. +##.#....##....#................ +#..#....#..............#.##.... +......#........#...........#... +#....##.##...#...#..#...##..... +............#............#..#.. +#....#...#..#..#.#...........#. +.......#..........#..........## +.....#......#....##.#.......... +.#....#....#....#....#..#...#.. +.....###....#...#.#.#........#. +.......#...#..........##..#...# +..##........................##. +.....#....#..............#....# diff --git a/day3/program.js b/day3/program.js new file mode 100644 index 0000000..f9615f5 --- /dev/null +++ b/day3/program.js @@ -0,0 +1,24 @@ +const fs = require('fs'); +let items; + +fs.readFile('./input.txt', 'utf-8', (e, data) => { + items = data.split("\n"); + const result = progress(0, 0, 0); + console.log('result!', result); +}); + +function progress(trees, currentRow, currentColumn) { + const block = items[currentRow].substr(currentColumn, 1); + if (block === '#') trees++; + + currentRow++; + if (!items[currentRow]) return trees; + + currentColumn +=3; + + if (currentColumn > items[currentRow].length - 1) { + currentColumn -= items[currentRow].length; + } + + return progress(trees, currentRow, currentColumn); +} \ No newline at end of file From ab872f549a03842bc8e3f45d96bd493442526483 Mon Sep 17 00:00:00 2001 From: Rene Pot Date: Thu, 3 Dec 2020 11:47:39 +0000 Subject: [PATCH 03/59] day 3 part 2 --- day3/program.js | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/day3/program.js b/day3/program.js index f9615f5..6c2aae4 100644 --- a/day3/program.js +++ b/day3/program.js @@ -3,22 +3,33 @@ let items; fs.readFile('./input.txt', 'utf-8', (e, data) => { items = data.split("\n"); - const result = progress(0, 0, 0); - console.log('result!', result); + const resultPart1 = progress(0, 0, 0, [3,1]); + const resultPart2 = checkPart2(); + + console.log('result!', resultPart1, resultPart2); }); -function progress(trees, currentRow, currentColumn) { +function checkPart2() { + const oneone = progress(0, 0, 0, [1,1]); + const threeone = progress(0, 0, 0, [3,1]); + const fiveone = progress(0, 0, 0, [5,1]); + const sevenone = progress(0, 0, 0, [7,1]); + const onetwo = progress(0, 0, 0, [1,2]); + return oneone*threeone*fiveone*sevenone*onetwo; +} + +function progress(trees, currentRow, currentColumn, nextStep) { const block = items[currentRow].substr(currentColumn, 1); if (block === '#') trees++; - currentRow++; + currentRow += nextStep[1]; if (!items[currentRow]) return trees; - currentColumn +=3; + currentColumn += nextStep[0]; if (currentColumn > items[currentRow].length - 1) { currentColumn -= items[currentRow].length; } - return progress(trees, currentRow, currentColumn); + return progress(trees, currentRow, currentColumn, nextStep); } \ No newline at end of file From bec4f4e0e0b5931103ee32d4d2afa80cbcce6fff Mon Sep 17 00:00:00 2001 From: Rene Pot Date: Fri, 4 Dec 2020 11:00:09 +0000 Subject: [PATCH 04/59] day 4 part 1 --- day4/input.txt | 1169 +++++++++++++++++++++++++++++++++++++++++++++++ day4/program.js | 60 +++ 2 files changed, 1229 insertions(+) create mode 100644 day4/input.txt create mode 100644 day4/program.js diff --git a/day4/input.txt b/day4/input.txt new file mode 100644 index 0000000..646dcfe --- /dev/null +++ b/day4/input.txt @@ -0,0 +1,1169 @@ +byr:2024 iyr:2016 +eyr:2034 ecl:zzz pid:985592671 hcl:033b48 +hgt:181 cid:166 + +hgt:66cm +pid:152cm +hcl:cfb18a eyr:1947 +byr:2020 ecl:zzz iyr:2029 + +ecl:gry hcl:#888785 eyr:2023 cid:63 +iyr:2019 hgt:177cm +pid:656793259 + +pid:#5e832a +ecl:dne hcl:#7d3b0c byr:2018 eyr:1928 hgt:61cm iyr:1936 cid:241 + +hcl:#888785 ecl:oth eyr:2025 +pid:597580472 +iyr:2017 hgt:187cm byr:1957 cid:247 + +eyr:2029 cid:145 iyr:2026 pid:178cm hgt:162in ecl:gry +hcl:#a5d09f byr:2002 + +eyr:2024 +ecl:amb +pid:349191561 iyr:2018 hgt:156cm byr:1972 +hcl:#341e13 + +byr:1998 pid:408617933 +hcl:#fffffd hgt:193cm eyr:2021 ecl:brn iyr:2013 + +eyr:1964 byr:2026 +hcl:#cfa07d hgt:154cm pid:175cm cid:85 iyr:2018 ecl:gmt + +hgt:161cm +pid:021086946 +iyr:2020 ecl:blu eyr:2024 +byr:1921 + +pid:173cm cid:235 eyr:1935 iyr:1952 ecl:utc byr:2015 hgt:187 +hcl:6239ed + +iyr:2015 hcl:#18171d pid:2691566700 ecl:gmt hgt:68cm eyr:2032 byr:2016 +cid:341 + +hcl:#c0946f +iyr:2010 pid:941290886 eyr:2023 ecl:brn +hgt:190cm +byr:1927 + +pid:423210256 eyr:2026 iyr:2011 byr:1926 hcl:#efcc98 +ecl:grn +hgt:185cm cid:135 + +ecl:blu eyr:2030 +byr:1996 hgt:154cm iyr:2019 pid:809421142 +hcl:#b6652a +cid:250 + +hcl:39615c iyr:1934 byr:2009 pid:7752456272 hgt:191cm +eyr:2024 ecl:#5b7a58 + +iyr:1938 hgt:160in hcl:#623a2f eyr:2031 +ecl:grn pid:169cm byr:1964 + +ecl:grt byr:2004 hcl:026249 hgt:176in iyr:1933 eyr:2023 +pid:176cm + +hgt:167cm +pid:023312072 ecl:oth iyr:2018 hcl:#866857 eyr:2024 byr:1994 + +hcl:#c0946f +ecl:blu iyr:2016 +eyr:2023 hgt:193cm +pid:190756361 byr:1943 +cid:306 + +iyr:2013 hgt:179cm ecl:oth +cid:290 eyr:2020 pid:953948851 +hcl:#6b5442 +byr:1973 + +pid:795414848 +cid:51 +ecl:oth iyr:2020 hcl:#ceb3a1 eyr:2026 byr:1995 hgt:186cm + +iyr:2020 +byr:1993 hgt:159cm pid:905121332 +ecl:brn eyr:2023 +hcl:#341e13 + +ecl:hzl iyr:2017 eyr:2020 hcl:z byr:2003 hgt:163 + +eyr:2038 +cid:342 hgt:116 iyr:2019 hcl:73db63 byr:1973 ecl:gry pid:468207739 + +pid:022772899 eyr:2040 hgt:181cm +ecl:dne +hcl:#866857 +byr:1931 iyr:2012 + +pid:36127238 eyr:2038 cid:227 iyr:1985 hgt:103 byr:2004 +hcl:z ecl:#45a680 + +hgt:183cm +iyr:2013 byr:1933 cid:112 +eyr:2024 pid:795616425 +hcl:#7d3b0c +ecl:gry + +cid:236 byr:1985 hgt:160cm +hcl:#6b5442 eyr:2028 +ecl:gmt pid:277781460 iyr:2018 + +ecl:amb +byr:1948 pid:750948701 eyr:2025 iyr:2013 hgt:62in hcl:#7d3b0c + +eyr:2029 iyr:2020 pid:385941629 byr:1998 hgt:153cm cid:321 +hcl:#623a2f + +byr:1966 hgt:69in iyr:2012 +pid:423254216 +eyr:2020 hcl:#602927 ecl:blu + +byr:2004 pid:14257358 cid:338 iyr:2010 +ecl:gry +hcl:#602927 +hgt:152cm + +ecl:gry eyr:2027 hcl:#341e13 +iyr:2018 pid:298762877 hgt:162cm byr:1968 + +hcl:#ceb3a1 +iyr:2019 ecl:brn eyr:2020 pid:575413143 byr:2030 hgt:185cm +cid:159 + +eyr:2025 pid:628251539 ecl:blu byr:1953 hgt:63in hcl:#18171d iyr:2016 + +pid:973247326 byr:1925 hcl:#341e13 ecl:grn eyr:2028 hgt:156cm +iyr:2014 + +byr:1957 hgt:154cm +hcl:#7d3b0c +pid:062760305 eyr:2023 ecl:brn +iyr:2012 + +ecl:brn eyr:2029 +cid:250 +pid:477431667 hgt:177cm +byr:1993 iyr:2020 hcl:#ceb3a1 + +pid:155471269 iyr:2010 byr:1985 hgt:169cm eyr:2026 hcl:#694b7d cid:337 ecl:gry + +ecl:grt hgt:152in byr:2012 +pid:#b9d022 iyr:2030 +eyr:2037 hcl:z cid:201 + +hcl:9270b3 eyr:2028 +hgt:71cm iyr:2017 pid:#6c7af7 ecl:grn byr:1971 + +pid:#0ab7e1 hgt:166cm byr:1929 +cid:289 +hcl:#623a2f iyr:2005 +ecl:amb + +pid:967754435 +hgt:175cm hcl:#341e13 ecl:utc iyr:2023 eyr:1949 byr:1988 + +byr:1942 ecl:brn eyr:2023 pid:898126666 hgt:182cm cid:138 +hcl:#866857 +iyr:2010 + +eyr:2027 iyr:2019 byr:1953 pid:760664328 hcl:#b6652a +ecl:grn hgt:155cm + +iyr:2018 +ecl:brn hcl:#18171d pid:953129359 hgt:167cm eyr:2030 byr:1974 + +cid:77 +pid:975070417 hcl:#b6652a ecl:amb iyr:2013 byr:1995 +eyr:2025 hgt:184cm + +hgt:168cm +eyr:2026 byr:1938 ecl:gry pid:037135813 hcl:#6b5442 +iyr:2010 + +iyr:2017 hcl:4cc74b byr:1980 hgt:176in +pid:460622356 ecl:xry eyr:2030 + +hcl:z +ecl:oth pid:872514537 hgt:175in eyr:1984 iyr:2011 cid:145 byr:2024 + +iyr:2014 ecl:blu +pid:332729196 hgt:63in +eyr:2020 +hcl:#602927 + +hcl:#7d3b0c pid:369981570 byr:1996 ecl:gry +eyr:2024 iyr:2017 + +pid:446117373 hgt:158cm +iyr:2010 ecl:gry eyr:2024 hcl:#e54715 + +cid:341 pid:842156559 +hgt:167cm hcl:#602927 byr:1939 ecl:amb iyr:2016 + +byr:2017 +cid:176 +ecl:#9e42ae iyr:2029 pid:8965345 eyr:2038 hcl:z +hgt:116 + +eyr:2027 iyr:2014 hcl:#ceb3a1 +cid:280 pid:871521406 ecl:oth byr:1957 hgt:166cm + +cid:303 iyr:2019 +eyr:2021 pid:579593282 ecl:gry hcl:011a46 byr:1981 +hgt:184cm + +iyr:2015 byr:1936 cid:61 ecl:brn pid:307248029 hgt:172cm hcl:#18171d eyr:2029 + +pid:708687506 ecl:brn hcl:#602927 +iyr:2014 byr:1987 +hgt:193cm +eyr:2021 + +ecl:gry +iyr:2015 hcl:#efcc98 byr:1950 +cid:150 eyr:2023 pid:569864726 +hgt:161cm + +byr:1920 hcl:#602927 iyr:2018 +ecl:gry eyr:2020 +hgt:192cm pid:020336420 + +hcl:#539335 byr:1949 +hgt:152cm +cid:95 pid:002018679 +eyr:2030 iyr:2015 ecl:brn + +hcl:#b6652a eyr:2023 +pid:515291463 iyr:2013 byr:1990 +ecl:blu hgt:160cm + +eyr:2030 iyr:2012 +ecl:grn pid:416049447 hgt:188cm +hcl:#a97842 byr:1976 + +iyr:2017 hgt:61in ecl:oth byr:2001 eyr:2028 +hcl:#733820 +pid:078720467 + +eyr:2021 hgt:151cm iyr:2020 +hcl:#efcc98 ecl:oth +byr:1985 +pid:876231883 + +iyr:2019 hcl:#ceb3a1 hgt:156in +eyr:2004 pid:093465895 ecl:amb byr:2026 + +pid:103964845 hgt:178cm cid:320 ecl:oth +hcl:#fffffd byr:2002 eyr:2021 iyr:2019 + +ecl:brn byr:1920 pid:499363957 +cid:217 hcl:#341e13 hgt:164cm +iyr:2017 eyr:2028 + +ecl:brn pid:5837609946 iyr:2011 +byr:1971 eyr:2030 hgt:189cm +hcl:#866857 + +byr:1974 iyr:2015 hcl:#cfa07d +hgt:190cm ecl:grn pid:330115418 eyr:2020 cid:173 + +iyr:2010 +eyr:2024 byr:1943 pid:227557868 +cid:102 hgt:72in +hcl:#6b5442 + +hgt:151cm byr:1994 +pid:050723476 +cid:104 iyr:2010 hcl:#b6652a +ecl:brn eyr:2030 + +ecl:gry byr:1942 +hcl:#c5e354 hgt:192cm iyr:2019 +eyr:2027 pid:192177566 + +ecl:hzl hcl:#c0946f byr:1997 pid:853199076 hgt:166cm +iyr:2019 +eyr:2020 +cid:329 + +eyr:2027 iyr:2029 hcl:#602927 +pid:#1b8593 byr:2028 hgt:172in ecl:grn + +eyr:2036 iyr:2030 ecl:utc +pid:22330365 hcl:z byr:2016 hgt:65cm + +pid:936740771 +ecl:grn byr:1976 +hcl:#602927 +iyr:2017 hgt:192cm +cid:257 eyr:2027 + +eyr:2021 pid:415535681 +hcl:#b6652a hgt:191cm +ecl:hzl +iyr:2013 byr:1985 + +hgt:193cm +pid:499609129 +iyr:2014 ecl:oth +eyr:2029 hcl:#cfa07d byr:1973 + +ecl:gry byr:1996 cid:85 hgt:174cm iyr:2013 pid:444611265 hcl:#6b5442 eyr:2028 + +pid:170343402 +iyr:2029 +hgt:167cm +byr:2016 eyr:2034 ecl:hzl hcl:z cid:254 + +hcl:4893d5 ecl:blu byr:1960 +eyr:2027 pid:573029479 iyr:1952 hgt:74in + +eyr:2021 hgt:192cm pid:729836929 iyr:2020 byr:1973 +cid:155 ecl:grn hcl:#602927 + +hcl:#a97842 byr:1946 +iyr:2018 cid:172 hgt:162cm eyr:2030 ecl:amb pid:028768413 + +iyr:2020 hcl:#c0946f ecl:grn pid:601040247 cid:237 hgt:177cm eyr:2024 +byr:1941 + +iyr:2014 byr:1959 +eyr:2028 +hcl:#fffffd +ecl:#7df42b cid:165 hgt:68cm + +byr:1944 hcl:#18171d +pid:009636175 hgt:155cm ecl:amb eyr:2032 iyr:2015 + +byr:1987 hgt:150cm +hcl:#b6652a eyr:2021 +ecl:blu +pid:723709387 iyr:2017 + +byr:1937 ecl:oth eyr:2022 hcl:#733820 pid:143694811 cid:175 hgt:150cm + +pid:562911401 +cid:80 hgt:61in byr:1922 eyr:2027 ecl:amb iyr:2014 +hcl:#602927 + +iyr:2013 ecl:amb pid:826291674 hcl:#ceb3a1 eyr:2021 byr:1968 hgt:75in + +hcl:#5e0e07 +hgt:164cm pid:572114080 eyr:2028 iyr:2016 +byr:1922 ecl:oth + +ecl:blu eyr:2029 hgt:155cm +byr:1950 hcl:#866857 cid:271 iyr:2015 +pid:216813084 + +iyr:2018 byr:2009 cid:212 ecl:#71a98c pid:3467231102 hcl:z hgt:173cm +eyr:2026 + +eyr:1945 cid:302 iyr:2030 +hcl:z pid:0411732179 +byr:2004 hgt:165in +ecl:grt + +iyr:2010 hgt:169cm +hcl:#ceb3a1 +eyr:2022 pid:659709686 ecl:hzl +byr:1931 + +hcl:z pid:5077677466 +eyr:2021 hgt:184cm +iyr:1973 +byr:2009 ecl:#35575e + +hgt:190cm cid:103 iyr:2018 +byr:1970 ecl:gry +eyr:2028 +pid:549406360 hcl:#18171d + +byr:1964 eyr:2023 iyr:2015 hgt:174cm pid:305268492 +hcl:#b98e00 ecl:blu + +hgt:162cm +ecl:brn iyr:2019 byr:1951 +cid:169 pid:755632568 eyr:2030 hcl:#ceb3a1 + +iyr:2010 ecl:oth hgt:192cm eyr:2025 +hcl:#efcc98 pid:003868873 byr:1925 + +hcl:z +ecl:gmt hgt:62 eyr:1991 +byr:2012 +iyr:2025 pid:1835041269 + +hgt:162 +iyr:2026 byr:2024 +pid:6463124513 hcl:#602927 ecl:oth eyr:2028 + +hcl:bfb027 iyr:1945 byr:1989 eyr:1944 pid:826897563 ecl:dne cid:117 hgt:177 + +hcl:#b6652a iyr:2013 +ecl:blu byr:1952 eyr:2020 pid:737726601 cid:308 +hgt:167cm + +eyr:2028 iyr:2012 hcl:#6b5442 +byr:1986 ecl:blu +pid:365821409 hgt:180cm + +hgt:101 eyr:2037 pid:2457985649 +ecl:gmt +hcl:4c0784 iyr:2029 + +hcl:#341e13 iyr:1954 ecl:dne byr:2007 +eyr:2028 pid:552497791 hgt:189cm cid:263 + +ecl:blu +hgt:71in pid:360012597 eyr:2029 hcl:#18171d byr:1949 +iyr:2014 + +hgt:164cm cid:237 iyr:2016 byr:1966 +hcl:#623a2f ecl:oth +pid:129809894 eyr:2027 + +hcl:a2243b eyr:2031 +ecl:#de9183 +byr:1982 hgt:109 iyr:1968 pid:848311277 + +eyr:1950 +hcl:45470a byr:1983 +pid:82580746 cid:321 +hgt:191cm ecl:dne iyr:2013 + +iyr:2018 ecl:blu eyr:2021 +byr:1983 pid:045613120 + +hgt:164cm byr:1926 +hcl:#cfa07d +eyr:2030 +iyr:2010 +pid:360787918 cid:61 ecl:amb + +pid:#d6dddd iyr:1967 ecl:gmt hcl:z byr:1947 eyr:1943 cid:93 hgt:97 + +ecl:oth hgt:172cm +hcl:#efcc98 byr:1957 +pid:729531506 iyr:2017 +eyr:2030 + +ecl:#5a51b9 byr:2023 eyr:2021 iyr:2027 +pid:174cm hgt:80 hcl:6b4f6e + +hgt:157cm +ecl:amb +eyr:2020 pid:994733990 iyr:2020 cid:174 byr:1966 +hcl:#7d3b0c + +eyr:1986 +byr:2020 hcl:#c0946f +pid:499981246 +iyr:1926 cid:214 ecl:amb hgt:161cm + +hcl:#18171d byr:1971 +pid:#ef8a06 +eyr:2019 ecl:blu +hgt:158cm iyr:2011 + +byr:1959 cid:298 pid:876132993 +ecl:blu iyr:2011 hgt:176cm +hcl:#6b5442 eyr:2030 + +eyr:2030 +byr:1926 hcl:#733820 iyr:2017 +hgt:150cm pid:165cm ecl:blu + +byr:1991 eyr:2027 +hgt:183cm +pid:178cm +ecl:grn hcl:8a6142 iyr:2017 +cid:265 + +hgt:183cm +eyr:2027 hcl:#602927 pid:530884763 byr:1959 ecl:brn iyr:2013 + +hcl:#b6652a eyr:2030 hgt:171cm cid:97 byr:2002 pid:166795809 +ecl:hzl +iyr:2016 + +pid:479944517 hgt:166cm byr:1976 eyr:2022 hcl:#a97842 +ecl:grn iyr:2018 + +byr:1949 +eyr:2013 +hcl:z ecl:hzl +pid:152cm hgt:139 iyr:1962 + +pid:278193062 hcl:#c0946f iyr:2013 byr:1950 eyr:2020 hgt:167cm +ecl:oth + +eyr:1955 +iyr:2018 pid:#ffd4de byr:1922 hgt:178cm hcl:z +ecl:lzr +cid:154 + +ecl:grn hcl:#a189d5 byr:1977 pid:120286096 +eyr:1966 +hgt:178cm +iyr:2011 + +eyr:2028 +hcl:#fffffd iyr:2013 byr:1956 pid:565425333 cid:207 ecl:gry hgt:67in + +hgt:188cm eyr:2028 cid:90 +iyr:2019 pid:574624890 hcl:#b6652a byr:1937 ecl:oth + +hcl:#efcc98 hgt:152cm ecl:hzl iyr:2010 cid:217 byr:1936 eyr:2027 pid:857984889 + +hgt:124 iyr:2015 byr:1989 ecl:oth eyr:2023 hcl:#ceb3a1 pid:917440765 + +ecl:#61e880 cid:82 +pid:165cm byr:2019 eyr:1930 hgt:152in hcl:z iyr:2030 + +byr:1974 +hgt:60in ecl:gry +hcl:#c0946f +pid:215085889 +iyr:2017 eyr:2020 + +ecl:grn hcl:#ceb3a1 +pid:602147794 hgt:180cm eyr:2028 byr:1927 iyr:2018 + +hcl:#ceb3a1 byr:1958 ecl:gry +pid:210246609 iyr:2018 hgt:169cm +eyr:2023 +cid:255 + +eyr:2025 +byr:1950 hgt:177cm +ecl:gry pid:547034188 +iyr:2018 +cid:218 hcl:#341e13 + +pid:380369950 +eyr:2022 hgt:65in iyr:2019 ecl:brn +byr:1996 + +hgt:167cm +iyr:2014 +eyr:2029 cid:199 pid:144048588 byr:1963 ecl:oth hcl:#733820 + +byr:1962 ecl:brn hgt:161cm eyr:2022 hcl:#cfa07d +pid:247699670 iyr:2016 + +hgt:192cm ecl:#8bdb3e pid:#b152a9 hcl:#18171d iyr:2012 byr:2011 cid:335 eyr:2040 + +hcl:11f8f4 ecl:#86f885 iyr:2022 +hgt:75in +pid:920078124 byr:1952 eyr:1994 + +pid:718378772 cid:282 +hcl:#fffffd hgt:166cm eyr:2023 iyr:2019 byr:1944 +ecl:grn + +eyr:1963 pid:562051556 +ecl:#793853 +hcl:z byr:2030 iyr:2026 + +byr:1980 +cid:143 hgt:161cm eyr:2022 +pid:778422225 +hcl:#7d3b0c iyr:2011 ecl:blu + +byr:1940 eyr:2021 hgt:74in cid:161 hcl:#a97842 ecl:blu +pid:864682628 iyr:2014 + +byr:1991 pid:163871357 ecl:oth +hgt:189cm cid:229 eyr:2024 +hcl:#efcc98 +iyr:2012 + +iyr:2013 hcl:#ceb3a1 ecl:hzl byr:1985 pid:801995950 hgt:73in +eyr:2029 + +byr:1931 hcl:#ceb3a1 iyr:2013 +cid:289 eyr:2027 ecl:blu +hgt:150cm pid:969679765 + +iyr:2015 hgt:176cm eyr:2025 ecl:blu +byr:1935 pid:388582890 hcl:#efcc98 + +iyr:1956 eyr:2034 pid:049440894 ecl:xry byr:1950 cid:228 +hgt:186cm + +iyr:2014 hcl:#fffffd byr:1985 +eyr:2022 +hgt:176cm pid:556889061 ecl:amb + +pid:994755123 hgt:165cm +ecl:brn +eyr:2022 byr:1937 iyr:2011 + +byr:2012 +hcl:z cid:217 iyr:1958 +ecl:brn hgt:160cm +pid:871866608 +eyr:2027 + +hcl:#a97842 +ecl:hzl byr:1929 +iyr:2016 +eyr:2029 pid:220410871 hgt:192cm + +pid:332596122 byr:1986 +hcl:#cfa07d +eyr:2022 hgt:189cm ecl:grn iyr:2016 + +hgt:167cm +hcl:#6b5442 eyr:2026 +iyr:2020 ecl:grn cid:231 pid:521486150 + +cid:299 +hgt:178cm byr:1945 ecl:brn iyr:2012 +hcl:#fffffd eyr:2022 +pid:264693268 + +ecl:lzr pid:157cm hcl:f0a766 +iyr:2029 hgt:175in byr:2004 + +hcl:#888785 +hgt:159cm eyr:2025 +iyr:2012 ecl:oth +byr:1995 pid:135442622 + +eyr:2024 hcl:#a97842 +iyr:2013 pid:186863004 ecl:brn byr:1929 hgt:162cm + +pid:518619727 ecl:grn +hcl:#866857 byr:1954 +iyr:2016 +hgt:69in + +eyr:2022 iyr:2018 +byr:1926 +ecl:oth pid:073817633 +hgt:167cm hcl:#b6652a + +hgt:190cm iyr:2019 +ecl:dne byr:2010 eyr:2023 pid:979671212 + +hgt:190 +ecl:#5ddbda byr:2025 iyr:1973 pid:#a082dc eyr:1998 cid:177 hcl:z + +iyr:1976 eyr:2026 pid:4862485 hgt:71in +byr:1975 ecl:#41855f hcl:#ceb3a1 + +ecl:brn +byr:1927 iyr:2012 hgt:67in +pid:479646443 eyr:2039 hcl:z + +pid:779458123 +cid:263 hcl:#efcc98 +byr:1951 +hgt:153cm iyr:2011 +ecl:amb eyr:2030 + +hgt:187cm +eyr:2028 +byr:1957 +hcl:#b6652a iyr:2015 pid:616963706 ecl:brn + +hgt:154cm byr:1947 +pid:51196404 +eyr:2020 iyr:2001 +ecl:hzl + +hgt:157cm iyr:2013 eyr:2021 +ecl:blu hcl:d9e6e0 +byr:2023 + +iyr:2010 +hcl:#866857 +ecl:brn eyr:2022 +cid:163 byr:1962 pid:458396337 hgt:160cm + +ecl:amb eyr:2027 +byr:1987 +hgt:184cm +pid:125222897 cid:214 +iyr:2020 + +ecl:grt eyr:1942 +iyr:2023 +hcl:901862 hgt:159in +byr:2009 + +eyr:2028 +byr:1973 hgt:151cm iyr:2013 ecl:hzl pid:229165831 + +eyr:2024 hgt:190cm ecl:grn byr:1962 iyr:1921 pid:531272718 hcl:#ceb3a1 + +hgt:169in pid:1747598652 ecl:dne +iyr:1974 eyr:2031 hcl:#602927 byr:2030 + +hgt:177cm iyr:1963 eyr:2006 +cid:276 hcl:#7d3b0c +pid:192cm +ecl:grn byr:2022 + +pid:893346945 hcl:#733820 ecl:oth iyr:2013 byr:1973 hgt:186cm eyr:2025 + +hgt:177cm +eyr:2025 +byr:1997 hcl:#733820 +cid:295 iyr:2016 pid:019887743 ecl:grn + +iyr:2019 +byr:1982 eyr:2030 ecl:brn pid:041140029 hcl:#a97842 hgt:189cm + +pid:165cm iyr:1962 hcl:e5c590 ecl:#e394a4 +eyr:2040 +hgt:70cm byr:2006 + +byr:1940 eyr:2025 iyr:2020 hcl:#a97842 ecl:brn pid:502841851 cid:121 +hgt:160cm + +eyr:2015 ecl:zzz hgt:174 pid:154cm iyr:2021 +hcl:z +cid:113 +byr:2003 + +iyr:2020 +eyr:2023 pid:402183362 hcl:#120eb2 +ecl:amb +hgt:150in +byr:1921 + +pid:059311672 cid:290 hcl:#7d3b0c byr:1996 +iyr:2021 hgt:155cm ecl:hzl eyr:2030 + +pid:790768270 hgt:167cm ecl:gry +byr:1973 +hcl:#b6652a eyr:2028 iyr:2017 + +hcl:#18171d eyr:2024 pid:062349624 +byr:2002 iyr:2019 cid:230 ecl:oth + +iyr:2015 +hgt:170cm +cid:193 +eyr:2025 ecl:hzl byr:1947 +pid:484823445 +hcl:#623a2f + +pid:5792950369 cid:343 +hcl:1d16b7 eyr:2024 +hgt:185in iyr:1965 +ecl:gmt byr:1948 + +pid:#a1a101 +ecl:grn +byr:1945 +iyr:2013 hcl:#ceb3a1 hgt:156cm cid:279 eyr:2026 + +pid:936593230 eyr:2026 hgt:179cm +hcl:#7d3b0c +iyr:2015 byr:1976 +ecl:gry + +eyr:2021 pid:210678956 hgt:153cm cid:72 iyr:2018 ecl:grn + +pid:995512119 +byr:1937 eyr:2021 hcl:#4d8fe2 ecl:brn +iyr:2019 +hgt:187cm + +hcl:#341e13 pid:282336259 eyr:2022 +cid:95 byr:1977 hgt:101 ecl:#955529 +iyr:2029 + +pid:934992980 hcl:#fffffd iyr:2028 eyr:1945 ecl:gry byr:1926 + +iyr:2018 ecl:gry +hgt:179cm hcl:#866857 pid:573616710 +byr:1987 + +byr:2010 eyr:2021 hcl:z pid:018180068 hgt:74 +cid:183 iyr:2027 ecl:dne + +iyr:2020 hgt:160cm +pid:760124779 hcl:#b6652a ecl:grn eyr:2030 byr:1951 + +pid:354858055 ecl:hzl hgt:192cm +hcl:#ceb3a1 byr:1983 cid:314 +iyr:2016 eyr:2027 + +eyr:2028 iyr:2013 hgt:171cm hcl:54be83 ecl:xry byr:2021 +pid:89895052 + +byr:1963 iyr:2019 +pid:298992037 eyr:2024 +hgt:63in hcl:#341e13 + +hgt:64cm +pid:7645482607 ecl:#c94773 cid:231 hcl:621e9d eyr:2000 byr:2013 + +hcl:#ceb3a1 ecl:gry iyr:2015 hgt:178cm byr:1945 +pid:416960939 + +hgt:178cm +cid:121 +byr:1961 iyr:2019 hcl:#6b5442 +eyr:2028 pid:098226989 + +iyr:2015 eyr:2028 +ecl:amb +hgt:154cm +pid:364426658 byr:1960 +hcl:#623a2f + +byr:1998 +pid:#e5ab03 hcl:z ecl:grn +iyr:2006 hgt:61cm eyr:2038 + +hcl:#866857 eyr:2020 +hgt:187in +pid:#8239dc iyr:2010 ecl:#6259e7 byr:1939 + +pid:#6082fa eyr:2028 ecl:gry hcl:937410 iyr:2010 +hgt:173cm + +eyr:1922 ecl:grt pid:228396726 hgt:65cm +hcl:#6b5442 byr:2024 iyr:2010 + +hcl:#c0946f iyr:2016 byr:1978 +pid:774430678 eyr:2026 +ecl:oth hgt:61in + +cid:208 pid:714195768 iyr:2019 eyr:2022 byr:1937 ecl:gry hcl:#ceb3a1 hgt:159cm + +eyr:2028 ecl:gry iyr:2010 byr:2001 hgt:163cm pid:409136005 hcl:#623a2f cid:200 + +pid:471094613 eyr:2028 hgt:165cm iyr:2010 ecl:amb byr:1995 hcl:#a97842 + +ecl:oth iyr:2011 pid:907249487 eyr:2020 +byr:1924 cid:68 hcl:#a97842 +hgt:155cm + +byr:1983 +hgt:69cm +eyr:2027 iyr:2010 hcl:#866857 +pid:671371092 +ecl:amb + +hgt:97 pid:168cm cid:67 +eyr:1957 hcl:#623a2f byr:2027 ecl:gry iyr:2019 + +ecl:blu iyr:2012 pid:287999130 hgt:178cm eyr:2020 +byr:1940 +hcl:#888785 + +hcl:z hgt:63cm ecl:grt +iyr:2024 eyr:2031 pid:167cm +byr:2013 + +hgt:65in hcl:z cid:300 ecl:amb pid:58257193 +byr:1969 iyr:2011 eyr:1985 + +hcl:#341e13 eyr:2036 hgt:189in +pid:58541401 +ecl:#d793f2 iyr:2010 byr:2006 + +cid:259 ecl:grn +hcl:#a97842 +hgt:167cm +pid:641690548 eyr:2021 +byr:1930 +iyr:2010 + +eyr:2027 +hgt:75in +cid:335 hcl:#602927 iyr:2012 ecl:blu pid:724014178 +byr:1928 + +eyr:2027 +hcl:#8345d8 ecl:grn byr:1965 pid:728151722 +hgt:182cm iyr:2016 + +iyr:2020 pid:794922933 +hcl:#341e13 +ecl:oth +byr:1985 +hgt:71in +eyr:2022 + +ecl:#025c94 +hcl:#fffffd +iyr:2027 +byr:1987 hgt:186cm cid:135 pid:005852205 +eyr:2021 + +byr:2020 +ecl:grn +pid:91200233 +iyr:2014 eyr:2020 hgt:179cm hcl:be0c95 + +ecl:gmt iyr:2010 pid:171cm byr:2010 eyr:2036 hgt:159in hcl:424df0 + +ecl:gry iyr:2013 hcl:#7d3b0c hgt:175cm pid:337611432 byr:1953 eyr:2021 + +byr:1926 pid:678688040 +hcl:#cfa07d +cid:311 eyr:2027 hgt:183cm iyr:2018 +ecl:blu + +byr:2021 +pid:156cm +ecl:dne +hgt:156cm +hcl:#6b5442 +iyr:2027 + +pid:380639402 eyr:2025 +cid:196 +hgt:163cm +hcl:#602927 ecl:hzl +iyr:2015 + +eyr:2039 hcl:5aa018 byr:2007 ecl:dne +hgt:77 pid:#d30c1c iyr:2025 + +ecl:blu +iyr:1986 pid:3544865154 eyr:2027 byr:2007 hgt:74cm hcl:ca33b3 + +pid:#b05294 byr:1951 hcl:#ceb3a1 cid:221 +iyr:2000 hgt:110 eyr:2021 + +byr:1954 hcl:#efcc98 iyr:2018 ecl:#f4ea81 +pid:414210788 hgt:174cm eyr:2037 + +pid:#abbdd9 +hgt:164in +iyr:2003 cid:319 eyr:2035 +byr:2015 +ecl:#9b38c7 + +ecl:amb +iyr:2018 byr:1922 +hgt:157cm pid:801421993 eyr:2029 +hcl:#efcc98 + +eyr:2022 +hcl:#b6652a +ecl:amb byr:1942 +hgt:153cm iyr:2018 +pid:805225382 + +byr:1925 +hcl:#efcc98 ecl:amb pid:539625393 cid:269 +hgt:161cm iyr:2013 eyr:2025 + +cid:305 hgt:154cm +hcl:#18171d byr:1998 +eyr:2029 iyr:2011 pid:634235387 ecl:gry + +hcl:#6b5442 pid:504467634 iyr:2018 cid:96 byr:1970 +ecl:gry eyr:2023 hgt:167cm + +iyr:2020 hgt:163cm hcl:#fffffd pid:762271916 byr:2029 eyr:2022 +ecl:#12027c + +byr:1978 +cid:134 hcl:#6b5442 +iyr:2010 pid:627335191 ecl:blu eyr:2023 hgt:171cm + +pid:260340768 hcl:#a97842 byr:1947 ecl:#2150e3 iyr:2019 +cid:153 +hgt:65in eyr:2025 + +byr:1973 eyr:2022 +cid:229 pid:515108192 ecl:amb hcl:z +iyr:2013 hgt:178cm + +ecl:hzl +hgt:158cm hcl:#a97842 +pid:657117959 byr:1977 eyr:2023 iyr:2018 + +ecl:gry eyr:2024 +hgt:163cm byr:1976 iyr:2017 +pid:653769092 hcl:#18171d + +ecl:amb pid:161694953 +hcl:#602927 hgt:188cm eyr:2021 byr:1946 +iyr:2016 + +eyr:2021 +hgt:178cm ecl:grn +byr:1961 pid:472866063 iyr:2011 hcl:#cfa07d cid:160 + +eyr:2037 iyr:2011 +hgt:187cm byr:1973 pid:163cm hcl:#b6652a +ecl:brn cid:283 + +iyr:2017 hcl:#18171d eyr:2020 pid:059926864 hgt:160cm ecl:brn + +byr:2010 +hcl:8217d4 hgt:153in iyr:1989 eyr:2037 pid:#74e0a4 ecl:#ba5782 + +ecl:#28f922 +byr:1951 hgt:65cm +iyr:2025 pid:151cm hcl:z eyr:2028 + +pid:302959013 +hgt:167cm eyr:2022 ecl:hzl iyr:2014 +cid:168 +hcl:#888785 byr:1969 + +pid:013861920 hcl:#623a2f +ecl:gry +byr:1928 +iyr:2017 hgt:174cm eyr:2028 cid:250 + +byr:1997 hgt:74cm hcl:#efcc98 eyr:2039 ecl:#d3dc6a +cid:243 +iyr:2030 pid:189cm + +hgt:67cm byr:2011 eyr:2040 pid:192cm ecl:#b7a5a8 hcl:281b25 + +iyr:2014 ecl:brn byr:1954 hcl:#fffffd pid:285922660 hgt:76in eyr:2028 + +iyr:2021 byr:2028 +eyr:2023 +hgt:69in hcl:e832ef pid:714568559 ecl:#f10004 cid:208 + +ecl:brn hgt:166cm hcl:#cfa07d +cid:59 pid:4884483993 +iyr:2012 +eyr:1932 + +iyr:2029 byr:2025 +cid:238 ecl:utc +eyr:2022 +pid:887425834 hgt:177in + +pid:014383055 cid:342 hgt:183cm eyr:2025 +iyr:2014 ecl:blu byr:1969 hcl:#7d3b0c + +eyr:2033 +hcl:#341e13 +iyr:2014 +hgt:71cm ecl:#750eec +byr:1980 pid:#e2d3ac + +hgt:154cm iyr:2019 hcl:#341e13 ecl:hzl byr:1942 pid:393181243 eyr:2025 +cid:316 + +ecl:amb +hgt:158cm +eyr:2025 byr:1986 hcl:#fffffd pid:379180765 iyr:2014 + +pid:8191674491 eyr:2028 hcl:#efcc98 byr:2015 iyr:2012 +ecl:amb cid:140 + +byr:2015 hcl:8e3e81 eyr:2024 hgt:180cm iyr:1984 pid:#56cd0e +ecl:zzz + +pid:247138863 eyr:2022 hgt:176cm iyr:2014 byr:1929 +ecl:gry cid:87 hcl:#b6652a + +hcl:z pid:#c4cdee ecl:#ca97a6 byr:1971 eyr:2032 +iyr:1997 hgt:156in + +ecl:gry +hgt:167cm eyr:2030 byr:1984 hcl:#cfa07d iyr:2016 + +hcl:#a97842 hgt:163cm +pid:373461578 iyr:2017 +byr:1926 ecl:amb +eyr:2021 + +cid:161 hcl:#b6652a byr:1930 ecl:brn eyr:2028 hgt:166cm iyr:2016 + +ecl:amb cid:126 +eyr:2024 +hcl:#18171d iyr:2019 +byr:1991 hgt:183cm + +ecl:lzr iyr:2026 byr:1996 +hgt:69in pid:#ccef7e eyr:2028 +hcl:#fffffd + +hgt:68cm iyr:1945 +ecl:brn byr:2009 pid:#56e987 hcl:fdd212 eyr:2023 + +pid:72039060 eyr:2036 hgt:172cm +hcl:#fffffd iyr:2011 +byr:1944 ecl:xry cid:202 + +ecl:hzl +eyr:2025 +byr:1922 hcl:#efcc98 +pid:795790549 +iyr:2020 hgt:150cm + +hgt:155cm +hcl:#373de2 pid:#707dc6 iyr:2017 byr:2002 eyr:2038 +ecl:oth + +hcl:#888785 iyr:2011 +hgt:159cm +byr:1962 eyr:2026 ecl:amb pid:672792762 + +cid:217 eyr:2025 hgt:164cm byr:1999 pid:975218035 ecl:grn hcl:#18171d iyr:2011 + +pid:655501194 eyr:2029 byr:1999 iyr:2013 +hgt:183cm hcl:#a97842 ecl:hzl + +byr:1986 hcl:#efcc98 pid:160cm ecl:oth eyr:2022 iyr:2022 hgt:150cm +cid:63 + +hgt:69in byr:2002 pid:0528229881 ecl:blu hcl:z iyr:2022 +eyr:2033 + +iyr:2020 pid:007754028 hcl:z cid:232 ecl:dne hgt:73in + +ecl:hzl +iyr:2016 hcl:#7d3b0c byr:1948 +eyr:2021 +cid:269 hgt:173cm pid:176430746 + +cid:310 +ecl:xry +eyr:2032 hgt:64cm +pid:190cm hcl:z byr:2019 + +hgt:150cm pid:660176034 hcl:#c0946f +ecl:hzl byr:1986 eyr:2021 iyr:2019 + +pid:7876582 +eyr:2021 iyr:2020 +hgt:185cm hcl:#18171d cid:319 ecl:amb byr:1943 + +ecl:hzl hcl:#623a2f iyr:1950 byr:2012 cid:334 eyr:2028 + +eyr:2028 +byr:1992 hcl:#b6652a ecl:hzl cid:222 +hgt:189cm iyr:2016 +pid:092856842 + +hcl:a3c52a +iyr:2025 byr:2023 +hgt:182cm ecl:#be1503 pid:9311657615 eyr:2005 + +eyr:2035 +byr:1988 hgt:193cm +iyr:2028 cid:128 hcl:#18171d ecl:utc pid:9743739773 + +ecl:zzz hcl:z +hgt:64cm pid:160cm byr:2026 eyr:1943 iyr:2028 cid:74 + +ecl:oth +pid:874577361 +iyr:2010 eyr:2021 +hgt:160cm hcl:#c0946f +byr:1959 diff --git a/day4/program.js b/day4/program.js new file mode 100644 index 0000000..b176d84 --- /dev/null +++ b/day4/program.js @@ -0,0 +1,60 @@ +const fs = require('fs'); + +fs.readFile('./input.txt', 'utf-8', (e, data) => { + const items = data.split("\n"); + const rawPassports = findPassports(items); + const passports = splitPassportData(rawPassports); + + let validPassports = 0; + passports.forEach(p => { + if (validatePassport(p)) { + validPassports++; + } + }); + + console.log(`Found ${validPassports} valid passports`); + +}); + +function findPassports(data) { + const passports = []; + let passportdata = []; + data.forEach((row) => { + if (row.length === 0 && passportdata.length > 0) { + passports.push(passportdata); + passportdata = []; + } else { + passportdata.push(row); + } + }); + + return passports; +} + +function splitPassportData(raw) { + const passports = []; + raw.forEach(p => { + let passport = {}; + p.forEach(row => { + const parts = row.split(' '); + parts.forEach(part => { + let split = part.split(':'); + passport[split[0]] = split[1] + }) + }); + passports.push(passport); + }); + return passports; +} + +function validatePassport(passport) { + if (Object.keys(passport).length === 8) { + return true; + } + + if (Object.keys(passport).length === 7 && !passport.hasOwnProperty('cid')) { + return true; + } + + return false; +} \ No newline at end of file From 23366da1508542522b549811e3b33eeb9f954caa Mon Sep 17 00:00:00 2001 From: Rene Pot Date: Fri, 4 Dec 2020 11:38:50 +0000 Subject: [PATCH 05/59] added day 2 --- day4/program.js | 45 +++++++++++++++++++++++++++++++++++++++------ 1 file changed, 39 insertions(+), 6 deletions(-) diff --git a/day4/program.js b/day4/program.js index b176d84..2dcf213 100644 --- a/day4/program.js +++ b/day4/program.js @@ -3,16 +3,27 @@ const fs = require('fs'); fs.readFile('./input.txt', 'utf-8', (e, data) => { const items = data.split("\n"); const rawPassports = findPassports(items); - const passports = splitPassportData(rawPassports); + const passportsCheck1 = splitPassportData(rawPassports); + + const toValidatePart2 = []; - let validPassports = 0; - passports.forEach(p => { + passportsCheck1.forEach((p, i) => { if (validatePassport(p)) { + toValidatePart2.push(p); + } + }); + + console.log(`Part1: Found ${toValidatePart2.length} valid passports`); + + let validPassports = 0; + + toValidatePart2.forEach((p, i) => { + if (validatePassportProperties(p)){ validPassports++; } }); - console.log(`Found ${validPassports} valid passports`); + console.log(`Part2: Found ${validPassports} valid passports`); }); @@ -39,7 +50,9 @@ function splitPassportData(raw) { const parts = row.split(' '); parts.forEach(part => { let split = part.split(':'); - passport[split[0]] = split[1] + if (split[0] === 'byr' || split[0] === 'iyr' || split[0] === 'eyr' ) split[1] = parseInt(split[1]); + + passport[split[0]] = split[1]; }) }); passports.push(passport); @@ -57,4 +70,24 @@ function validatePassport(passport) { } return false; -} \ No newline at end of file +} + +function validatePassportProperties(passport) { + if (passport.byr > 2002 || passport.byr < 1920) return false; + if (passport.iyr > 2020 || passport.iyr < 2010) return false; + if (passport.eyr > 2030 || passport.eyr < 2020) return false; + if (!validateHeight(passport.hgt)) return false; + if (!passport.hcl.match(/#[0-9a-f]{6}/)) return false; + if (['amb','blu','brn','gry','grn','hzl','oth'].indexOf(passport.ecl) === -1) return false; + if (passport.pid.length != 9 || !passport.pid.match(/[0-9]{9}/)) return false; + return true; +} + +function validateHeight(height) { + let replace = height.indexOf('in') > -1 ? 'in' : 'cm'; + height.replace(replace,''); + height = parseInt(height); + if (replace === 'in' && (height > 76 || height < 59)) return false; + if (replace === 'cm' && (height > 193 || height < 150)) return false; + return true; +} \ No newline at end of file From 375842e3136823d1114bbe95902f51070bdce805 Mon Sep 17 00:00:00 2001 From: Rene Pot Date: Sat, 5 Dec 2020 18:41:38 +0000 Subject: [PATCH 06/59] add day 5 --- day4/program.js | 3 +- day5/input.txt | 888 ++++++++++++++++++++++++++++++++++++++++++++++++ day5/program.js | 60 ++++ 3 files changed, 950 insertions(+), 1 deletion(-) create mode 100644 day5/input.txt create mode 100644 day5/program.js diff --git a/day4/program.js b/day4/program.js index 2dcf213..2530f7e 100644 --- a/day4/program.js +++ b/day4/program.js @@ -1,6 +1,7 @@ const fs = require('fs'); fs.readFile('./input.txt', 'utf-8', (e, data) => { + const start = Date.now(); const items = data.split("\n"); const rawPassports = findPassports(items); const passportsCheck1 = splitPassportData(rawPassports); @@ -24,7 +25,7 @@ fs.readFile('./input.txt', 'utf-8', (e, data) => { }); console.log(`Part2: Found ${validPassports} valid passports`); - + console.log(Date.now() - start); }); function findPassports(data) { diff --git a/day5/input.txt b/day5/input.txt new file mode 100644 index 0000000..2e65bf1 --- /dev/null +++ b/day5/input.txt @@ -0,0 +1,888 @@ +BFBFBFFRRL +FFFFBBBLLL +FFFBBFBRRR +FFFFBBBRLR +FFBFFBBRRL +BFBBBBBRRR +BBFFFFFRLR +FFFFBBFRLR +BBFFFBBLLL +FBBBBFBLRL +FFBBFFBRLR +BBFFBBFRLL +BBFFFFFLRL +BBFFFFBRLR +BFFFFBFLLL +FFFBFFFRRL +FBBBBBBLLR +FFBFBBFRLL +FBBFFBFLRL +BFBFFBBRLR +BFFBFBBLRR +FFFBFFBRRL +FFBFFBFRLL +FBBBBBFLRL +FFBBFFFRRL +FFBFBFBLRR +BFFFFFBRRL +FFBFBBBRLR +FFFBFFFLRR +BBFFBFFLRR +BFFFBBBRLL +FFBBFFBLRL +BFBBFBFRRR +BFFBBBBLRL +FFBFBFBRLL +FBFFBBBRRR +FBFBBBFLLL +FBBFFBFRLR +FBBFBBFLRR +BFFBFFBLLR +FFFBBBFLLL +FBBFBBFLLR +BFBFFFBRRL +FFFFBFBRLL +BBFFBFFRRR +BFBBFBFLRL +FFBBFFBRRL +FFFBBBFLRR +BFFBFFBLLL +BFFBBFBRLL +FBFBBFBRRL +FFFFFFBRLR +BBFBFFFRRR +BBFFBBFLLL +BFFBFFFLLR +BFBFFBFLRL +FFBBFFFLLR +BFFFFBBRRL +FFBBFFBRRR +FFFFBFFLLR +BFBBFFFLRR +BBFFFBBLRL +BFFFBBBLLR +FFFBBFFRLR +FFBBBBBRLL +BBFFFBFRLR +BBFBFFBRRR +FBBBFFFRLL +FBBBBBBRLR +BFBBFFBRRR +FBFBFFBRRL +FFFBFBBRRL +FFBFFFFLLL +FBFFBFBLRR +BFFBBFFLLR +FFBBBFBRLL +BFFBFFBRRR +FBBFFBFRRR +FBFFBBFRLR +FBBBFFBLRL +BFBBBFBLRL +FFFFBFFRRR +FBBFFFFLLR +FFBFBBFRRR +FBFBBBFLRL +BFFFFFFRLL +FFFFFBFRRR +BFBFFBBRLL +FFBFFFFRLL +FFBFFBFLLL +FFBFFBBRLL +BFBFFBFLLL +BFFBFBBLRL +BFFFBFFRLL +BFFBFBBLLL +BFFFFFFLLR +FBBFBBFRRR +FFBBBBBRLR +BFFBBBBRRR +FFBBFBFRRL +BBFBFBFRRR +FBFFBFFLRR +FBFFBFBLLL +FFFBFBBLRR +BBFBFFFLLL +FFFBBFBLRR +FFBBFFBLLR +BFBBFFFRLL +BFBBFBFLLR +FBFFFFBLLL +BFBBBBFRRR +BBFFFBFRLL +FBBFBFBLRL +FBBBFFFRRR +BBFBBBBLRL +BBFFBFBRRL +BFFFBBBRRL +FBFBBBFRLL +BFBBBFBLLL +BFFBFFFLRL +FFFBBBBRRL +BBFFBFBLRL +FBBFFFFLLL +FBFFBBBLRL +BBFBFBBRLL +FBBBFBFLRL +FBFFBFBLRL +BFBBFFBRRL +FBBFFFFLRR +FFBBBBFRRL +FFBFBFBLLR +FBFFBFFRLR +FFFBBBFRRR +BFFFBFBLLR +FBBBFBFLLL +FBBBBBFRLL +FFBFFFBRLR +FBFFFBBRRL +BBFFBBBLRR +FBFBFFFLRR +BFFFFFFLRL +BBFBFBBLLL +FBFBBFFLLL +FBFFFBBLLL +BFFBBFBLLL +BBFFBBFLRR +BBFFFFFRLL +FFBFFFBLRR +FFBFFFFRRR +FBFFFBFLLL +BFFFBFFRRR +FBBFFFBLRR +FBBBFBBRLR +FFFFFFBRLL +BFBFFBFLLR +BFFFBBFLRR +FBFFBBBLLR +BBFFFFFRRR +FBFBFBBLRL +FBBFBFFLLL +BFFBFBBRLL +BFFBBBFLRR +BFBBFBFRLR +FBBFBFBRRL +FFFFFBBLLR +FFBFFBBRRR +BFFBFBFLLL +BFBBBBBLLL +BBFBBBFRLR +FFBFFBBLLL +BBFFFFBLLR +BBFFFFBLLL +FFBFBFFLLL +BFBFBBBRRR +BBFBBBFLRL +BFBBFFFRRR +FFBFBBFLRL +BBFBBBBLLR +FBFFBFFLLR +FBBFFFFLRL +FFBBFBBLRR +BBFFFFFRRL +BFBFBFBLRR +FFFBBFFLLR +FFFFFBFRLR +BFBFBBFRRL +FFFFFBBRLR +FFFFBFBLLR +FFFFBBFRRR +FFBFBFBLLL +BBFBFBFLLR +BFBFBFFLLL +BFFBBBFRLL +FFBBBBFRLR +BFBBFFFRRL +FFFFFFFRRL +FFFBFBBRLL +FBFFFFFRLR +BBFFBBFRRR +FBBFFBBLLL +BFFFBBFRLR +BFBBFFFLRL +BFFBBFFLLL +BFFFBFFLRL +FBFBBFFRRR +FFFBBBFRRL +FFFFBBFLLL +FBBFBBBRLL +BFBBFBFRLL +FBBBBFBRRL +FFBFFFBLRL +BFBBFBBRRL +BFBBFFFLLR +FBBBBFBRLR +BBFBFFFRLR +FBBFBFFLRL +FFBFBFFRRR +FFBFBFBLRL +BBFBFBBLRR +BBFBBFBRLR +BFBBBFBLRR +FFBBBFBLRR +BBFFFBFLRR +FFFBBFFRRL +BBFFBBBRLR +FFFBFBFLLL +BFBFBBBLRL +FBFBFFBRLL +FBFFBBBRRL +FFFFBBFLRR +FBFFBBFLLR +FFBFFBFLLR +BFBFFBBRRR +BFBBFFBLLR +BBFBBBBRRL +FFBFBFFRLL +FBBFFFBLLR +FFBBBBFLLR +FBFBFBFLRL +BFFBBFBLRL +BFBFFBFRLR +FFFFFFFRRR +BFBBBFFRRR +FFBBFFFRLR +FBFBBFBLRR +BFBBBBFRRL +FFFFBBFRLL +FBBBBFFRLL +FBFFFFFRRL +FBFFBFFRRL +BBFBBFBLLL +BFFFBFBRLR +FBFBFBBRRL +FFFBFFBRLR +BBFFBFFLRL +FFBFFBFLRR +FFBBBBFRLL +BFBBFBFLRR +FFBFFFBLLL +BBFBBFFLLL +FFFBFBBLRL +BFFFBFFRLR +FFFBFFFRRR +FBBFFBBRRL +BFFBFFBRLL +BFFBBBFLLL +FBFBBBBRLR +FBFFBFBRLL +FBFBBBFLLR +FFFBFFFLLL +FFFBFFBLLR +FBBFFBBLLR +FBBFBBBLLL +BFBBBFFLRR +BFBFFBBLLL +FFBFBFBRRL +FFBFBFFLLR +FBFBFFFRRL +FFBBFBBRLL +BBFFFBBLRR +FBFBFBBLRR +BFFFBFBLRR +BFBFFFFRRL +BFFFBBBLRL +FFFFFBBRRR +BBFBBFBRRR +FFBFBFBRRR +FFFFBFFLLL +BFBFFBBLLR +FBBBFBBRRL +FBBBFFFRLR +FFFBBFBLRL +FFBBBFFRLL +FFFFFBBLRL +BFBFFBFRRL +FBBFFBFLRR +BFFBFFFLLL +FBBFBFBLLL +BFBBFFBLRL +FFBBBBBLLL +FBFBFBFRLR +BBFBBFBLRR +BFBBBBBLRR +FBFBBFFLLR +FFBFBBFRRL +FFFBBFBRRL +BFFFFFFLLL +BBFBBBFLLR +FBFFBBFLLL +FBFBBFBLLR +BFBBBFBRLR +BFBFFFFRLR +FBBFBFFRLR +BBFFFFFLRR +BBFBFBBLRL +BBFBFBBRRR +FFBBFBFLLL +FBFBBFFLRL +BFBFBBFLLR +BBFBBBBLLL +FFBBFFBRLL +FFFFBBFLRL +FFBBFBFLLR +BFBBBFBRLL +FFFBFFBRRR +FBBBBFFLRL +FBFFBBBLRR +FBBBFBBLRR +FBBBFFBRRL +BFFBFBFRRR +BBFBFBBRRL +FBBFBBBLLR +FBBFBFBLRR +FBFFFFBLRR +FBFBFBBRLL +FBFFFBFLRR +BBFBBBFLRR +BFBFBBBLLL +FFBFFBFRRR +BBFFFBBRLR +BFFBBFBLLR +FBFBBFBRLL +FFBFBBBRRR +FBFFFFBRLL +FBBBFFFLRL +BFBFBFBRLR +FBBBFBBLRL +FBFFBBBLLL +FFFBBBFLLR +BFFFBBFRLL +FBFFFBFRLR +BFFFBBFRRL +BFFFFBFRRL +BBFFBBBLLR +FBBFFFFRLR +FFBFBFFRLR +BFBFBBBLRR +FFFFBBBLRR +FFBFFFBRLL +FFFFBBBLRL +FFBBBBFLRL +BBFFFFBRRL +FFFFFBFLRR +BFFFBFBRRR +BBFBBFFLRR +FFBFBBFLRR +FFFFFBBRRL +BFBFFFFLRL +BFFBBFBRLR +FBFFFFBRRL +BFBBFBBLLL +BFBBBFBRRL +BFBBBBBRLL +FFFBBBBLRR +FBBFBBFLLL +BFFFFBBLLR +FFBFFFBLLR +FBBFFBFRRL +FFBBBFFLRR +BFFFBBBRRR +FFFFBBBRRR +FFFBFFBLLL +BFFFFBBRLL +FBBBFBFRRL +FFBBBBFLLL +BBFBFBBRLR +FBFFBBFLRL +FBBFBFFRRR +BBFFFFBLRR +FBBBFBBLLR +FFFBFFBLRL +BFFBFBFRLL +FBFFFFBRLR +FFFFBFFRLR +BFBFBFBRRL +FBBFBBFRRL +BBFFBFBLLR +FFBFFFFLRR +BFFFFFBRLL +FFFFBBFRRL +FBFFFBFLRL +FFBBFBBLRL +BFFBBFBRRR +BBFBBBFLLL +FBBFBBBRRR +BFFBFBBRLR +FBBBFFBRLL +FBBFBFFLLR +BFFBFBBLLR +FFBFFFFLRL +BFFBFBFLLR +BBFBBBBRLR +FFBBBFFLRL +FBBFFFBRLR +BFFFFFBRLR +FBFFFFFLLR +FBFFFBFRRR +FFBBFBFRLL +FBFBFFFRLR +BFBFBBFRRR +BBFFFBBRRR +FBBFBFBLLR +BFFBFBFLRL +FFFBFFFRLR +FBBBFBFLLR +FFBBBFBRRR +BFBFFBBLRL +FBBBFFBLRR +BFFFFFFRRR +FFBBFFFLRR +BFBFFFBRLR +BFBFBFBRRR +BBFBFBFLLL +FBFFBFBRRL +BBFBBFFLRL +FBBBBBBLLL +FBFFBBFRRR +FFFFBFFRRL +FFFBBFBLLL +FBFFFBBLLR +FFBBBBBLRR +FBFBFFFRLL +BFFBBBBRRL +FFFBFBBLLL +FFFFFFBLLR +BBFFBFBRLL +FBBBBBFRRR +BBFBFFFRLL +FFFFBFBLRR +BFBFFFFRLL +BFBBBBFRLR +FBFBFBFRRL +FBFBFFFRRR +FBBFFFBRRR +FBBFBFFRLL +FFFBFFFLLR +FBFBBBFRLR +FFBFFFBRRL +FBBBBBFRRL +FBBFFBFLLR +FBFBBFBRRR +FBFFFFFLLL +FBFBBBFLRR +FFFBBBBLLR +FBBBFBBRRR +BBFBBFFRLL +FFFFBFBLLL +BBFBBFBRLL +BFFBBBBLLL +BBFBBFBLLR +BBFFFBBRRL +FFBBBFFRRR +BBFFBFFRLL +FBBBBBFLLR +FBBFFFFRRL +FBBFFBFRLL +FBFBFBFLLR +BBFBBBFRRR +FFFBBFBRLL +BFBBBBFLRR +BFBFFBFRRR +FFBBBFBRRL +BFBFFBBRRL +BBFFBFBRRR +FFBFBBBLLR +FBBFFBBRLR +BFBBBFFRLL +FFFBBBFRLL +FBFBFBFLLL +FFFBBFBRLR +BFBBFFBLLL +FFBBBFFRLR +BFBBFBBRLL +BFFBFFBRRL +BFFFFFBLRL +FBBFFBBLRR +BBFFFFBRLL +FBFFBFFLLL +BBFFBBBRRL +BBFBFBFRLL +BBFBFFFLLR +BFBBFBFLLL +FFBBFFBLRR +BBFBFFBRLL +FBFFFBBRLR +FFFFFBFRLL +BFFBBFBRRL +BFFBBBFRRL +FBFBFFBLLL +BFBFBBFLRR +FFBFBBFLLR +FFBFBBBRLL +FBFFBFFLRL +FBBBBBBRRL +FFFBFBFRRL +FFBFBFFRRL +BFFFBBFRRR +BFBFBBBRLR +BFFBBBFLRL +FFFBBBBLRL +BFFBBFFRRL +FBFFBBBRLL +BFFBBBFLLR +BBFFBFFLLL +BBFFBBFLRL +BFFFFBFRRR +FFFFFBBRLL +FBFFBBFRRL +FBFBBBBRRR +BBFBBFFRRL +FFBBFBFRRR +FFBFBBBLRL +BFBBFBBRRR +FBFFFFBRRR +FFFBFBBRRR +FFFBBBFRLR +BFBFBFBLLR +BFBFBBFLLL +BFBBFBBRLR +BFBFFFBLRR +FBFBBFFRLR +BFBBFFFRLR +BBFFFBFRRR +FBBFFFFRRR +BFFFBBFLLL +BBFFFFBLRL +FBBFBBBLRR +BFBBFFBRLR +FFBFFFFRRL +BBFFBFFRLR +FBFBFBBLLL +BFFBBFFRLL +FBBFBFBRLR +FBBBBFFLLR +FBFFFBBLRR +FBBBBFBRRR +BBFBBFBLRL +FFFBBBBRLR +BBFFBBBRLL +FBFBFBFLRR +FBBFBFFRRL +FBFBBFBLLL +FBFBFBBLLR +BBFFBFFRRL +FBFFBBBRLR +FFBBFBBRRL +FBBFFFBLLL +FFFBBBFLRL +FBBBFBFRLL +FFBFBFFLRR +FFBBFBBLLR +FBBFBBFRLL +FFFBBFBLLR +FFBBBBBRRL +FBFFBFFRLL +FBFBFBBRRR +BFFBBFFRLR +FBFFFBBRRR +FFBBBFFLLR +FFFBBFFRLL +BBFFBBBLRL +FBBFBBBLRL +BFFFFBBLLL +FFFBBFFRRR +FFFFBBBRRL +BFBBBFFLLL +FFFBBBBRRR +BFFFBBBRLR +FFFBBFFLRL +BFFBBBBRLR +BFBBBFFRRL +BBFFFBFLLR +BFFFFBBRRR +FFBBFFFLRL +FFFBFFFRLL +FFBBFBBRRR +BFBFBFFRLL +FBBFBBBRLR +BFBBBBBLLR +FFBBBFFLLL +BFBFBBBLLR +FBBBBFBRLL +BFBBFBFRRL +FFBFFBBLRR +BFBBFFBRLL +FFBBBFBLLR +BFFFBFFLRR +FFFBBBBRLL +FFBBBBFLRR +FFFBFBFLRL +FBBBFFFLLR +BFFFFFBLLL +FBBFBBBRRL +FFFFBFBRLR +BFBBBBFLLR +FFFFBBBLLR +FBFFFBBLRL +BFBBBFFLRL +FBFFBFFRRR +BFBBBBBLRL +FBBBFFFLLL +BFFFFFBLLR +BFBFBFBRLL +BFBBFBBLRR +BFBFBFBLRL +FBFFBFBRRR +FBFFFFFLRL +BFFFFBFLRR +BFFFBFBRRL +BBFBFFFLRR +BFBBFFFLLL +BBFFBBFRLR +FBFBBBBLLL +FBFBBBBLLR +FFFFFBFRRL +BFFBBFFLRR +FBFBFFBLLR +FBBBFFBRRR +FFFFBFBLRL +BFBFBBFLRL +BFFBFFBLRR +FBBBBBFLLL +BBFFBFBLLL +BBFBFFBLLR +FFBFFBBRLR +BFFFFBBLRR +FBFFFBBRLL +BBFBFBFLRL +BFFBBBFRLR +BFBBFBBLRL +FFFFBFFLRR +FFFBBFFLRR +FFFFBBFLLR +FFFFBFBRRL +BFBFBFFLLR +FFFFFFBLRR +FBBBFFBRLR +FBBBFFBLLR +BFFBBFBLRR +FBFBBFFRLL +FBFBBFBRLR +BFBFBFBLLL +FFFBBFFLLL +FBFBBBFRRR +FFFBFBFRRR +FFBFBBFRLR +FBFFBFBRLR +FFFFFFBRRL +FBBFBFBRRR +BFBFFFBLLR +FBBFFBBLRL +FFFBFBFRLR +BFFFFFBRRR +FFBBBFBRLR +FFFFFFBLRL +BFBBFFBLRR +BBFFFFFLLR +BFBBBBFLLL +FBBBFFFRRL +FFBBFBFLRR +BBFBBFFRLR +BFFFBFFRRL +BBFBFFBLLL +BBFBFFFLRL +BFFFFBFRLL +BFFFFBFRLR +BFFBFBFLRR +BFFBBBFRRR +FBFBBBBLRR +BBFBFFBRLR +BBFBFFBLRL +BFFFFFFLRR +BFBFBFFRRR +FFBFFFFLLR +FFBFBBFLLL +BFBFFBFLRR +FBBFFBBRLL +BFFFFBFLLR +FBBFFBFLLL +FBBFFFBRRL +FBFBBFBLRL +BBFFBBFRRL +BBFFFFBRRR +BFBFBFFRLR +FBFBFFBLRL +FBFBFFBRRR +BBFFFBFRRL +FBFBFBFRRR +BBFBFFBLRR +FBFBBFFRRL +BBFFBBBLLL +FBFBFFFLLR +BBFBBBBLRR +FBFBBBBRRL +BFFFBBBLRR +BBFFBBFLLR +FBBBBBBRRR +FFFBFFFLRL +FFFFBFFLRL +BFFFBBFLRL +FFBFFBFRRL +FFBBFBFRLR +FBBBBBBRLL +FBBFFFBRLL +BBFBFFBRRL +FFFBFFBLRR +FFBFBFFLRL +FBBFFBBRRR +BFBFFFBRRR +FBBBBFBLRR +FBBBFBBLLL +BFBBBBFRLL +BFBBBBFLRL +FFBBBBBLRL +FFBBBBFRRR +FFBFFBFLRL +FFBFFBBLLR +FFBBFFFLLL +BFBBBFBRRR +BFFFFFFRLR +FFBFBFBRLR +FFBFBBBLRR +BBFFBFBLRR +FBFFBBFLRR +BFBFFFBLRL +FBFBFBFRLL +FFBBBFFRRL +BFFBFFBRLR +BFFFFFFRRL +BFBFBBBRLL +BBFBFFFRRL +BFFFFBBLRL +FBBBFBFLRR +BFBFBFFLRR +FFFFFBFLLR +FBBBBBFRLR +FBFFFBFLLR +BBFBFBBLLR +FBFBFFBLRR +BBFFFBBLLR +BFBFBBBRRL +BFFFFFBLRR +BFFBFFFRLL +BFFFBFBRLL +FBBFBBFLRL +FBBBFBFRRR +FFBBBBBRRR +BBFBBFFLLR +BFFBBFFLRL +BFBBFBBLLR +FFBBFFBLLL +BBFBFBFRRL +BFFBFBBRRR +BFFBBBBLRR +FFBFFBFRLR +FBFBFFFLRL +FFFFBBBRLL +BFFBFFFRLR +FFBFFFFRLR +FFBBFBFLRL +BFFBFBFRRL +FBFBFFBRLR +FBBFBFFLRR +BFBFFFFLLR +BFFFBFBLLL +FFFFBFFRLL +FBFBFBBRLR +FBBBBFFRRR +BFFFBBFLLR +BBFFFFFLLL +BFFBFFFRRR +FBBBBFFRLR +BBFFFBBRLL +FFBFBBBLLL +FFFBFBFRLL +BFBFFFBRLL +FFFFFBBLLL +BFFBBFFRRR +BBFBBBFRRL +BFBFFBBLRR +FFFFFBFLRL +BFFBFBFRLR +BFFBFFBLRL +BBFFFBFLRL +FBBBBFBLLL +BFBFBFFLRL +FFFBFBFLLR +BFBFBBFRLL +BBFFBFBRLR +BFBFFBFRLL +FFFFFBBLRR +FBFFBFBLLR +BFBFFFBLLL +FBFFBBFRLL +FBBBBFFLLL +FBFFFFFRLL +BFFBFFFRRL +FBBBBBBLRL +BFFBFBBRRL +BBFBFBFRLR +FBFBBBBRLL +BBFFBBBRRR +BFFFFBBRLR +BFBBBBBRRL +FFBBFBBRLR +FFFBFBFLRR +FFFFFFBLLL +FBFBBBBLRL +FBFFFFFLRR +FBBBFFBLLL +BBFBBFFRRR +FFFBFFBRLL +FBFFFBFRRL +FBFBBBFRRL +BFBFFFFRRR +BFBBBFFLLR +FBBBBFFLRR +FFFFBFBRRR +FBBBBBFLRR +FFBFFBBLRL +FFFBFBBLLR +BFFFBFFLLR +FBBBBFFRRL +BBFFBFFLLR +BFBFFFFLLL +FBFFFBFRLL +BFBFFFFLRR +BFFFBFFLLL +FBBFBFBRLL +BFFFFBFLRL +BFFBBBBLLR +BFFBBBBRLL +FBBBBFBLLR +FBFBFFFLLL +FFBBFFFRRR +BFBBBBBRLR +FFBBFBBLLL +FBFBBFFLRR +FFBBFFFRLL +FBFFFFFRRR +BBFBBBFRLL +FBBFBBFRLR +FFBFFFBRRR +FBBFFFBLRL +FFFBFBBRLR +FBFFFFBLRL +BFBFBBFRLR +FBBBFBFRLR +BFFFBFBLRL +FFFBBBBLLL +BBFBFBFLRR +FBFFFFBLLR +BBFBBBBRLL +FFBBBBBLLR +BBFBBFBRRL +FBBFFFFRLL +FFBBBFBLRL +BFFFBBBLLL +FFFFFBFLLL +BFBBBFBLLR +FFBBBFBLLL +FFFFFFBRRR +BFBBBFFRLR +FBBBFBBRLL +FFBFBBBRRL +FBBBFFFLRR +BBFFFBFLLL +FBBBBBBLRR \ No newline at end of file diff --git a/day5/program.js b/day5/program.js new file mode 100644 index 0000000..1c13684 --- /dev/null +++ b/day5/program.js @@ -0,0 +1,60 @@ +const fs = require('fs'); + +fs.readFile('./input.txt', 'utf-8', (e, data) => { + const boardingPasses = data.split("\n"); + let maxSeatID = 0; + const seatIDs = []; + boardingPasses.forEach(boardingPassCode => { + const [seat,row] = calculateSeatAndRow(boardingPassCode); + const seatID = row * 8 + seat; + if (seatID > maxSeatID) maxSeatID = seatID; + seatIDs.push(seatID); + }); + + console.log('max seat ID', maxSeatID); + + seatIDs.sort((a,b) => { + return a > b ? 1 : -1; + }); + + const mySeat = findMissingNumber(seatIDs); + + console.log('missing seat', mySeat); +}); + +function calculateSeatAndRow(boardingCode) { + let seat = [0,7]; + let row = [0,127]; + const chars = boardingCode.split(""); + + chars.forEach(c => { + // console.log(c, row); + if (c === 'F') { + row[1] = row[1] - Math.ceil((row[1] - row[0]) / 2); + } else if (c === 'B') { + row[0] = row[0] + Math.ceil((row[1] - row[0]) / 2) + } + + if (c === 'L') { + seat[1] = seat[1] - Math.ceil((seat[1] - seat[0]) / 2); + } else if (c === 'R') { + seat[0] = seat[0] + Math.ceil((seat[1] - seat[0]) / 2) + } + }); + if (row[0] === row[1]) row = row[1]; + if (seat[0] === seat[1]) seat = seat[1]; + + return [seat, row] +} + +function findMissingNumber(seatIDs) { + let curId = 0; + let yourSeat = 0; + seatIDs.forEach(id => { + if (curId === 0) return curId = id; + console.log(curId, id); + if (id - curId > 1) yourSeat = id -1; + curId = id; + }); + return yourSeat; +} \ No newline at end of file From f19994efed3da200c2ae243175b7760d5c382be9 Mon Sep 17 00:00:00 2001 From: Rene Pot Date: Sun, 6 Dec 2020 12:30:25 +0000 Subject: [PATCH 07/59] added day 6 --- day6/input.txt | 2040 +++++++++++++++++++++++++++++++++++++++++++++++ day6/program.js | 42 + 2 files changed, 2082 insertions(+) create mode 100644 day6/input.txt create mode 100644 day6/program.js diff --git a/day6/input.txt b/day6/input.txt new file mode 100644 index 0000000..3fa5775 --- /dev/null +++ b/day6/input.txt @@ -0,0 +1,2040 @@ +gsvdkufnoawjmhp +wvhusojpnikgfadb +vshnpfedgwajkou +aujodhskfvnpgw +okpdnwhsfvjguqa + +juedvq +vqeduj +veqdju +eqduvj + +cdajbuernxm +mnucjearxbd +axrmdejuncb +jrebucmdxna + +kutplibdoqzfvhw +qcewmrkdvhl +qobdwvlkgxhpasyjn + +psbjhnatxe +pnaxesjhbt +tpxhbnseaj + +yskvjqacinfdrphwltxgzomueb +jwprnxzvkeofthuqbyimadgslc + +hzwepdg +lwf +wy +lw +rw + +sdgateubqmznhjk +xyphltd + +dbhl +hdlb +dbhl +hbld + +inkxywsbgjuvpztrecadqmhf +qkaxszcujwvmbhdietpgr +krupsdgibzecxwvhqatmj +qtpxerobhisgcumkwjvdaz + +bgakcmh +gxasvzu + +cjtrvhinaqsbpk +jvxtspaqbhkfnrc + +nab +bex +qmkudf + +uot +out +tuo +uto +out + +sbtkzf +hbkfzs +szbkf +fuzksbx +jskrzbf + +dkphfoybsagcrnq +oybunchapqrdks +bokpysdhqnarc + +bchumknwairvlf +cvbuhwzirkalfy + +bwnseiaoqyjf +josqanfbew +nealmqbfwojs +jqnbfaoesw + +sowzuji +wojizu +wzojiu +jwozui +ujiwoz + +kcopqbt +tpkudorbc +pmtwogjb + +uxkfthszqdbelomwri +tlusezbomwfqrdxhki +rsdfkbteoqilzmxhuw +bwkqmdsxhrfulietoz +izkwomsdlbfxetqhru + +kzhwyodlvpt +kvfhldwpo +lvhypokdw +opwjhvdkcl +kpahtdolvw + +cldyjpuitah +upcthlijyda +icdauhpytj +haypidtucj +jidaptcyhuo + +mi +ti +qjwiz +oudehsxyiv +bpirjl + +stlyornuk +cxapqwie + +kharunjiebzvoy +gvaihtklnqmcebf + +t +lt +t + +ohca +lznkumqfgyjsbeot +owxdivpr + +dy +yo +xsy +yo +pyrvh + +iaxp +afpikux + +hpsfqrnevzxl +fnrsvexzhqup + +cp +fpc +cp + +nbuojxgqckrwzspehf +mhguoxsfkejwcq +kedqujsomfxhwcvg +ouqefsxchgjkw +qcjohwxfseugk + +rybnlomq +fmxsngauo +embkon +nlmvob +bomhnv + +gptixlduzjeqkorsamwnh +pgzwohfjkuvbtylmc + +thcgo +vhrlxmo + +kbfgmhpzoqysac +ockazbsmhpgqfy +kmcqfyzhapgsxb +qcfdlwyarzuskhmbg + +surovlcihp +irvlpuhosc + +rd +d +td +d + +koasgulh +kroumtzl +yubkwolnpj + +dqykvasneb +easknpbovyjd + +wqvop +nwqvpo +wovfrqizh +onqpwv + +uskotfndjeplixhycbqrmw +mbxoewypcfdhistn +ydtvpbfemcnsihoxw +ynwbtosmcipxhfde + +urgvbqechawznsjltixody +swdbnevcatrflguhziyoqxj +sgiwelhanovrbjuzyqtdcx +vyenojuhxwzbtigsdqarkcl + +jxcwblszo +khrwvnbdolgjufyz + +n +r +d +r +bd + +tolrypvdwmb +lwrmopdvybt +rdybwmvplto +vlwpyrbmotd +ybolwtvprmd + +radvoplnq +lrqpondva +lpanovqrd +lpanvoqdr +dqorvalpn + +fvxca +vacfx +fvcxa + +jbeixdakgolpfhqyntw +purbsxvjfwhetlmcnz + +jztfgbmnkadiehv +djhpntcizmkgvbfe +btegdfknizvmhjl +igbdeztjfkhmnv +iqvtgejanzfdbhmk + +jpi +ijp +ijp + +kydp +viykd +dgyqmftwx +vdye + +sewpkrvh +ekorswnp + +bplerysifmzvwoncjxqk +nsbeqowitcpjymxvl + +nexbskamprd +xsmdbkaupner +dsbnekarctvmpx +nkapxcbsmrlde +ezfdhnakwrsmyxpb + +olnuzvxcgpdtfb +tgzcfdbnxp + +vjliksorxpmwecaznu +giuoxsvnzewljpmc + +fuljpkt +cplftukj +lfptjku +futpjlk + +tqcgihveyswu +ywvqecthgs +cqhwetvsyg +qvshwcegty +gyctwqsfvhe + +uhezlyxwvpcidr +hvucplszbxywer + +jchyntk +revwzsm +kdn + +cotikdlpxauzb +uxzptoksqbdiw + +nqvruwhtombs +tebfnykzmlgcj + +ciwkhzbmgfqo +uwmzgbcoihqkfs +fkwmziohcgbq + +shezgrvq +gprveokq + +jvqcdiuyrnpgh +dyjqvhrpic +xjiklpfzmthrwdsyqv +pdyvochrunaqjgi + +denpjgywacrk +jbypwarecukdgn +zacqyxdgejrmpwkfnh +uwldpkrgaenjcy + +q +mq +q + +d +c +d +d + +cdazeitlrpxnfqs +nrqxelfocsihpz +cnkveyiujlbzfgrpxq +cqznxrfliedp + +qicgkpjzlxonv +cijozlhkqxnp +pgkcnloyxzj +japmxlknszotc + +bytg +mwetjayhgiup +gyt +ygt +tyg + +zx +elxz +z +vncto + +nryw +rywn + +takqgijzforxpshm +ztmrxfqgsiphjaok + +fsaoqe +wcavsldeytn +auoekhzsi +hgseja + +whqyvldpintefaxgurjc +xluqrgsvnacykptefbdhmj + +oylknhsgmpawziqte +znhmatkpolsw +pkvmtznhlwsoa +onzamhltkpsw + +zs +zs +zs +sz + +e +a + +xmi +gahfrd +yt +jmy +nqy + +zkbtfdjom +ot +uoqtr +eot + +g +er +g +g + +ncvwupezd +cnvdwzpeu +cuwnzvedp +cdnzevwpu + +bkuwcsv +bqcsgwve +mbhcovjsw +qwrnbeycsv +lisvbwc + +vlys +omvzl +ptlejv +xylv +vxol + +mqgohwtz +rqomlcw + +rgopxhkslqcjmzbatnd +phgzmojlstadqrxkbn + +pcbziv +pivzbc +jilczbpv + +gmrecszl +zgrecslm +melzcrgs +gezcrlsm +mcsezrlg + +ceotvxaydplfiu +vbzcaxuokwd + +gy +g + +lj +neocbiqjt + +foyawivmhs +fayowsmzrv +mksfowvzayg + +sivthk +yh +lh +ybhq +hy + +fk +ka +vka +qhjxrzmckpb +kf + +s +s +s + +iyth +tyhri +yrtaih +htyi +utifydhq + +hwxd +xhwd +hxwdb + +kfhsvbjdwxcnt +dbfjhsctkvw +sogzdhjqiwmlyuvf + +v +nyx +v +i + +ncimwelvbudtp +piwvudaer + +aktpdrhm +dtapkhr +dhapktri +taprnhdko +krpdhta + +fvpaxk +zgmrwja +ar + +vxoisla +olisvxa +kioqvrlxjhsya +oixgalsv +savloix + +ac +gr +c +tl +c + +fndwqsruzagei +dwunqfaesgzri +bzarmfnqwuisgde + +jr +rj +jr +jr + +zrevhj +xigdmqatk +wjlpzvsy + +qijznvobp +nzbojivdpc +vzipojnb + +srbtecvpixam +hdvctplmfxuow + +bf +bf +bf +bfex + +g +g +g +g +mag + +b +y +b + +vmbwhdfiqteglnpkxucjoa +wmqdconxbuaetjlgphivkf +upadfnhkwtjioqcbvxelmg +gofjubptnmkelihwxacqvd + +alev +evla +alve +avel +aelv + +uceyogrhl +oqcafluvhewgr +ugcxlhorpez +nduzshrceglox +odmgbeucrplh + +ugesfliovyzja +nlizsujfadgo +lfguaszotij +osznifulgadkj +xadguljioszf + +kpgve +vqsfezungalxidb +gwteov +gpvcyjrmeh + +apuonkxtc +xithys +hfvtsx + +pgtzamyqeu +gtiuwpcqzvya +tpqauezyg + +souvmglcqbekzi +miuzvksocgqbel +gzqkmsubevolci + +ndvahciz +jaoyhepsbirw + +bghijfkotcxwu +uaokxsfbleyhgqr +hucfokpwbxg +nbfuztgovhxk + +zghianxtlq +qthdvingxalkz +wfqnixgteza + +lhzcrodupwqsv +phsvrzcldoqwu +hogspqwcvukdz +hwzpucdsqvrol + +txkqmsfbglhnoypaduiv +navlozmpthwsbkiqxdfu + +gidnojlbtfpskuwavyxczr +irvsyznbtedxougfwc +sovxhcqdbwytzmugrinf + +mcjnraketsgvqyxpbuwlhzdof +kqudanprgiejcftzlywhsoxmb +rcxmkdqfohjzgtsalbpunywe + +o +cm +rc +m + +tmkbedxgzsw +tdgmsxbzkernw +ktdbxzsemgw +gwkmestbdxz +xzdewgtmskb + +evpdgzcu +gepcvzu +vegzpuc +vpuzgec +cvpgeuz + +wfsadgtuizejmylxq +aspmuqigbxeljdtwfy + +ygbtdp +tye +fryaitjcukhl +ytdm + +jfm +m +m + +cl +cl +lc + +qbodnftrsygi +iztorbfskqdvng +onpsgqrdtif +mnrofcuqwdtils + +mhavcgzlrtbo +jrldgavzqbcxoh + +pshtdbifrvzqmklyae +tfajgrpkidzyhslebmvq + +cuzbjepnvis +isjbenvyzlcup +nagieshzcpqmfuvbj +ezvpsjrnciub + +ywgdsafzuxbrmhvqkljnoipc +hjcntvrzwdfbxksyiqolpumag +kwvpybmjeoualxcsqgidhfnrz + +zubvkn +cuwfsnv + +isknfdalujeg +hikagvpzx + +szgfhjtxid +stdgjzxfih +xghsjfdzit +gfjixszhtd +fzjshdtixg + +uibgxka +abigukx +xubakgi +gxabiuky +bkaxgui + +tjzor +slaore +gxwnoifudmcqvpk +obhr +tyo + +q +y +e +r +ifdcxzm + +fvtqrjsblkhuoiey +gyfnizlqupvscobt +bouiftlcvqsy +qdvlyfiusgotb +qvbycwsifluto + +ifmnxbcvpkylruh +nckrmfphluixvby +vbcmxyhurnpilfk +suiqbvyrxcphmfnlk +ynuxkrfvibclpmh + +pmvdyexsoilatqfgk +lpidgatmqevkxyso +gkpsaoleymqxvtdi +gmvxeyplqdoasitk +vkpdylstquegaiomx + +ymogxuswkce +vbxznpscg +xlcgs +xclbdsng + +zovwtiy +zrjlciov +ksxefuvqdam + +cwvsx +xeuwyhsfb + +hxwgolksbrdmpifye +lwpyefxmiohdnbksgr +gzoehypbldxikmwtrfs +sdlwpeymxifrbghok +glmbhykiofdxpwervs + +ndcphgqfuvsekaxozri +xofkqnbschdaveruizgp + +ptkvdhjaw +skhtapidwjn +thunakpjwd +eaglphkdtjcfw + +pnezvfgiouahmslkdxcrqb +fpiqsecxaukbvzgnorjhwdm + +emcwblgxuvnkzrdsoyjf +rvsxeugkmwzfncojlb +nhbiclvskjrupgxzfeomw +gcxlbjozeiufwnskvrm +eonjkwbzfxgpruvcmsl + +ntgia +ia +ai + +scoernukhwtigpd +bogiserhpucnkt + +eaipzg +gne +lughe + +tbipylmnrague +tbargijepmhuynl +triyzgupnbmale +prtnumgaibley +peblaytmgnrui + +rqlsepfhiv +fvelqphsri +ilfhvqerps +fheqplsvir +sfpvehirlq + +jciwxfbhqkadgzloprnuvsty +qwouetsmhykavxfbjzrglc + +fjmz +mjczf +unkzjm + +gebyncxsphfokwm +gmchsnbwkpfyxeo +fybkhcesogxpwmn + +ud +whjn + +ihm +hmi + +p +p +yp +sp + +ytrwx +yrtxw + +p +d + +ieltygdukac +yiudeakg +kpegdaiyu +audykegi +aeqydwiguk + +lb +ei + +zjvctfndgiqbeu +abfwndutvecqigz +fznbdutevigcq +qtvzfnueibdcg + +g +i +x +g +g + +qhm +lq +nq +pqsb +lvq + +qnxpslvajf +xuavcnst +nsyabxv + +ocu +uco +acoux +cluo +coun + +jtgzodebq +ojztqdgbe +oejrqzgtbda +tjzbqedgo +gzqtejobd + +ubglorcsyvmxd +oentwfgulpqikdcbzhj + +jwkmxdnyvbiz +qebnoyfz + +bepdfi +ikepbof + +cofgekndbatpruhqmwvsiy +bsqtrakeudopghvyfmcnw +qgusdwvabytmfkcnehorp +qfhruygwkvmbpaoestcdn +prmkbuvynseatdoqwfhcg + +enczdvbkiyjgruqp +bdiqvwjurpycngzk +bnrcejupvqiwgzkyd +pqgybrcjzkudonvi + +fygasxjwrb +ijsgafwyrbx +syjawbxgfr +wfbrgvsjyax + +xtp +bfnzuadh +xlce + +rxmeqcbv + +fjtdihkrbyn +htfjyinkgdrb +fibgtkdryhnj +hkbnjrftidy +intbxjrkfdyh + +nhkiqjocfgxmrvwetd +ghnfdjvqtxwermokci +xnrtfkhdwcmjvoeigq +mcvfjhwiqtnrekogdx +imhxgjwrodtcknqvef + +sabwqu +yqamws + +usei +xkvnyfi + +rcewysztbiamhpgldj +kibrfndmgeazcsh +adrzgchmwjsbie + +pnrwvx +lwjxnu +vwxinb +pfxybwng + +wnvxgfdkubzrmip +kmjhoigltwbz + +znlgbx +fla +dl +l +l + +jgeqcikplduzxrwby +kwplxgcbndjqyizuer +ewrqujilgyxpdzcbk + +guteykxsqrfwhz +mhiurkswtqbxz +sdlqxvowujrhkz + +zrejn +nzrje +jnerz +rzjen + +fvkouigderaqbjth +eqrvwjinfltzpcuag + +stqcrpy +ctsqpyr +ptyqrsc +ymsqrcaptb + +egftpqosiv +ecjdqlnmwouf +spxaqofre +epogyfqi + +oxwgtshjqef +pbtgjfeqhnoxw +jfhewygoxtq + +jwavgo +ogevbwdjai +ogvahjw +wrajvog +ogsjwarv + +rpucvg +cgpr +htfelpc + +hqrwapscubelovxntd +jisztpnbcahlfdoqmvexgk + +pmadwutiejznofcgvsbqyxh +qvmzbaisgfcunwjexhpdktyo +xtvsdnqaucyehgzbjiopwmf + +vjqih +himjwdv +hsojivb +jtrklivehyg +mvnaizoqpfxhj + +j +j +j +j +j + +dpnwmtvklc +ndjpkm +ndmpk +ndmpk +ndmpk + +ucojsptiqymhewbxvrfdkngl +ebpjwuxrdqkmsochvfgliznt + +esroiaqdbxnjhut +xibuqhmensdajo +feukjbahdxwqnsiocv + +vkxzclpmtujngerawod +azdrgcenvjxptkuolmw +onrluajvcgewpdzkmtx +xamlobkrvzwpjgnucdte +tvenjdmlzpwugkoracx + +ywpfhztklgjmoien +nyelduixgvwmojpzhtk +lehpigtmoknjyzw +gmhwzokylpnteji +tmypejhwgzlniko + +fmd +jf +fj + +l +v +ntobg + +drmzvt +rxtsfuk + +vxdlpjkrsz +dgxkprvzsl +dsklxpvzr +pdvxzlrsk + +gwip +gakpw + +kbcadn +bakcd + +mhpstqcgvoalkwxinebryzujd +qwhirveoczyatgjdsmkpxnl +mejazlincwodtshxkrpgqyv +fsaizhnkcvwolgjpdqxtmrye + +rxubznovy +yvudnrbz +zvunwcyrkb +ntzbryuav +ndvytuzrb + +utvklrxypgbnimsdofwa +fyzliqswjmtpvdka + +byctfzx +pxzf + +g +ik +ykei + +bcajzwogvetd +gedbcwtzvoaj +hcwogaxjbzvted +eoczjagtdwbv +atvdjbcozgew + +wsclketugyaz +qvfbjcxtmilgow + +amgirw +yf + +iletugq +hnoxbfkaspt + +qjdfcpvksmxzywahgn +wnzceyskgpoxdhlmravjqf +xjgvhcsqyfankpzmdw +jyncdxwsqkvphfamgz +dvznygwjkcmqsxahfp + +fkuwiezpljbdayhsr +rphwbeujdzlfiasyk +erdhpafkzbwjlusiy +jwfhkrzdeabpliusy +wfipeujhylazbsrkd + +fqmbwapvouelydgicj +uelvqwomtyfjgcpadi +qkpcsdeyjiwarovnglfum +ijvgqdauoefpcylwbm +ydmqpfewaovlicugj + +sgbq +ltqambf +djbuvn +zmtbgy + +egvifnsaztxqcrywumj +aqcxujnzvfwetrhgm +fxdmtkgawplobqjenv + +bxuwpnl +ztdkau + +ecylsbdv +cvzlsbeyd +yqcveblsd +beyvlqcsd +ebsvdycl + +eb +xpnyter + +cbhqyzresnpxfwm +cwksfvhxqperbimz +whqzpbcsjxafre + +beodiasvj +jbisdoave +iedaovbsj +jxovacsiebd + +prxsnyehgwifbzo +ozpbsxynfiwrge +ribozypewsxngf +nyoxspzbfihgewr +rxzewpbnimfoysg + +shviadjcue +weduziolmcbngp +vqdieycu +cudeif +dicyuqke + +nvcwhuo +sltchuwnq +unwhci + +ekrisbvx +rsxiev +exnrvsi +srxevi +xhsvnrei + +rs +rs +sr + +fuzjmek +tihf + +ptlzxreqfdchibogvysmku +pceyizvdkqxbhrtulsfmog +gvkrxfsbipqedlyzomhtncu +suyzgrobilxhmcfdtvkeqp + +okfvjneqyicuthwsmpxl +wdojlsqknyhmptvicfe +nyfjthmpivqgsulwkboec + +ufrpkliqjgwxeybmcztasovh +qvkpyghxblewsaitrmzuonjc +giptzywrejquxkoavslcmhb +peaywubjozmcgrihlqsvxktf +lehjpzguiksacobxywtmvrq + +egryz +ergyz +yzegr +yfcgzre + +j +j +j +p +j + +bjt +tbj +tjb +tbj +jbt + +cklp +lpck +lckp + +fea +eaf + +qgm +dz + +yri +yi +zypdi + +ekwjxhtmgiudpz +xepuhgwjizkdrmt +ezghmliwtxujdpk +wdhxpjizugkemtl + +gyokbspj +kbgsopyj +pykhdsjbgio +opjykusbg +jygbsopakc + +ixorlekwgnbcjm +lrjkwxgie +wgeikxjrlh +rlkjxipeqgw + +ecgmdrykq +myrclqdgek +guqmzyceprkd +dygckwerqm +yrcgkiqempd + +u +u + +bcwnvl +fcvsib +hcnvb +cpgveoaby +ivbcn + +n +n +n + +macuqyp +fs + +pbout +suota +cuotm +atmuo + +nlravibecfj +eilcjafn +aeibjfl +jxfeilauo +jafesdnli + +xfwroij +fxwijor +irxjofw +rfjwboxi + +dj +dvj +dj +dj + +mikhxcqensrodu +imcvkhewgljupsxonq +kceuqxltinhsom +kzqanoemcxhius +vmuoxineqpzhacbks + +hklcsoaywpfrdntmu +xirbzckwjvpfygeno + +o +to +o + +zvirefunh +ezhirnvfu +runifzhev +ezivhnrfu + +zfsoducbpai +cupdisobazf +aozbsucfdiypv +bcfazodiups + +njfprukxamlg +kpfrjgynulxma +pijflgnuxkram +pkuxalrmjfgn +nkvrlmxustpfjga + +dszgm +rsmu + +iaw +aiw +wai +aiw +iwa + +s +s +s +sl +s + +eyavhnk +keov +qeiwfkcgvrpsld +kuvze + +a +mh + +ilqchdfsog +igscolmdzq + +fnyhxmpct +lchdpamfu + +vijz +vj + +dhpxjrmyuefclvqgni +uicskweohgvfryxmdq +tqgdifymexbwckruvh + +c +c +c + +lthidumvycszw +cvpqjeuhlwrfyzg + +keocuw +uckowe +oekwcu +cwukoe + +c +c + +lkxjv +jkvxl +vxklj +jkvxlwg +zkxvjly + +sqlamxeuhpgwjbdcioy +bumyjxsiqweholpgcda +gecswjlqhadiuboxmpy +syahibgopexwlucdqjm + +igebmv +tawqvezdsmpunk +rimocvgje +evmbhc + +ykjisvfatux +jfaisyvktux +itksajfxuvy + +fclkush +slcykdbgu +fskuchl + +xjhulywagzeioq +oejlfsquhbriayxwg +jiexgylwzhuqao +wyxhqljagieou +hwladixguqejyo + +sofcbhuwyqtid +icofdwsb +dfwovimbcs +cwibodnsxf + +jqnestpyaczfmxhwrbuvldi +mxanrhbfcujvyzditwlo + +ntfgivkyszmarc +qrajdhowuvpclbex + +kliwy +ukwlryi +ilkyw + +pmgltzsk +ljmipztvgow +zltmgup +umztglp +ftzmlpgk + +twepi +teq + +ohyd +mytjrwk +hfy +exyh +ye + +rzsqhtlowavy +twvhzyrjsqaol + +yzagcqrjeimwxokh +fmxtiagboleqcwdrhzk +opvemhasrguxkcqzwi + +atcpeyosnrjbg +kcesobgua +fagsev + +ca +ac + +xahmtil +hximtla + +hyutnjdrbsmofl +dswjfyothmblrnq + +et +te +eqt +tuje + +nbhpwzgtrcx +gqcxobhriznw +hwnbugrejxtczs +cujrbxfhnwzg +gcwzhrxndjb + +qwrfxhlyzcptvmkdeauigob +zbchavlkmryxiptegwfouqd +cfhuiptgqkoalrewzmvbyxds +hudmwcgbfepyitovkaqzxrl + +eysuozkm +ndgloqyv +ignhwrovy + +iqufgnvxspdcjtylkbrozh +inuzqktrvcxyhbgfosljdp + +qhfknsyeuirzagvcwd +yfcgqnxewlkrsuazhi + +lj +jl +lj +lyj +jl + +kpholfxewrdt +opdfhtlmkwex +hpwftoxderlk +ylxhwdofnztkpe +rwfpxlhtdkoe + +ubml +yvohg +zeasf +plum +qhnjxg + +cjgzwmdyuakvixlprhfe +kmplfuxywergchzjvani +xcvlzmewyujgirhpfka +fwhgrxkjcvpeuilzyam + +eclsiqp +ivgspoe +scepi +pmiadtskyze + +akmdfivwgct +yvgcwakhdimts +lcvgirakwudtp +aftnckwmidgv + +zuqblv +blvzqu +uvbqlz +qbuzvl +bzqxvlmu + +by +betlcdvry +yb +bxy +gybjx + +waoqdxpkmfnyrhjebcuvzs +qprvfczedowxknhausmyjb +cufdqvknwrajzybospmxeh +qkjzybeadvncwhxumpfsro +nwfkjxumpabzodvqychsre + +shdfctjrkwbvemoxluyzipnqag +sgbwpeuqcilxojfynmrdhvktaz +lhgkxfwuzbevojmrpnqydsacti +gflnzjasbuyimxqcvwrdpohetk +ynwedhbskjtvoucgapiqlzfxrm + +wlmjxp +ylnxoajk +luxjidte +xjrvlcdeu + +pv +vbpw +wvuap +kceavp +rdphvoitqf + +dlxzwkhtmc +twzhlmkdc +tcylhkdwzm +zwmlkdcth +gdhikmctlwsz + +hpekwtlufyragqvb +kbrwatlupqyfvh +ucbvwlhfqatpkry +hlakvyuqrfpwbt +rubvwpfqlatkhy + +npxobl +ckuhnplvx + +edkpjycofasulrthw +rpuhcdyxlftosewa + +stuvhwaexykzdorbfpi +shjuwgpfqmtacvlbirkzd + +frph +wo +h +zumtyngcj +pfse + +zivsgurp +szirpvg +gikvsprz +zigpvsrk +nvpsgzir + +rfimu +hmqrlfxpbgu +nrmoyftu +nmujfr +rfum + +bidzwmearovjkgcl +ogdbirkzqmclejvaw +gealcqozmijkbrvdw +gzakwmdbejclrivo +eolwifvgmrbjdazkc + +iurfyqgwk +ymkvqfpwrig +aqrfywikg +bfdryxikgnwoq +cjfgkryiuwq + +jvb +x + +qkxnvfuopdytrzjgbm +bmqkuyarjgtdpfzsnox +obwjxyeqtingzmdrfkplu +gamupstryfokbzqdxnj + +ymanp +npfshjya +pundyklatc +ypfanh + +garp +grpa +arpg +argp + +inedmtpwrvub +vwibertnudmp +idurbepwtmnv + +yczoaplwmxibqgsfn +wbiuxyqzpncvgmsl +gpoltrbisqfznwxcymj + +a +a +a +a + +cgjviyufped +pcuvygzkjid +ptvigyjdcku + +u +i +tqa +j +ul + +zitbfuer +uzfithernb +uftbzire +uitefbzr + +jcwkroamnegxvqsh +kejhanqmvcrxwsog +gaqmkexjvcsnrowh + +taegslmuyqcipz +asytxrgdpfbcqliwz +tpgoschavqjlkyzi + +oc +oc +oc +co + +mrfvjlykquz +fzmvuleykqt +vykmzlgquf +kqfzuvygetml + +a +s + +ionve +eailo +jiomexwh +beziqpdco +ihtoe + +cfjvrqosnwyedaubmhgtlxzk +olxzjfwrcytkbgudasvqhnme +tuwfnckrzsvjgbxdmyhqlaeo +txnydgufbmjaqkrzlwhoevcs +bgakxqmfsdwyjvelntchzour + +njvkobzs +bsjvkwn + +qmnluxw +ovgtikpdbrya +nchfsjqez + +khtdryej +hdrtv +qnaodtm + +as +aus + +omjaixvgklq +vgkaxjihdrlq +ycxkzatpusiljqgv + +jtepylmrqbiwk +xerlpmynqtkfbjwi +timwpbkegljqry +lqijkebmgpwyrt +qrkljpbytemiw + +q +xqint +dkqb + +trjmdxpoeqcwf +tfedxqcprwom +kmftwxqporncde + +fpcmndhr +dzepjngqikcfrh +nhfpcrd + +c +c +c +y +c + +t +t +ti + +tgfspxdy +sytgpfxd + +zov +voz +ovz + +ic +ieuc + +vhesndkizjgwcpobulam +szjymxwopckfqtgdib + +jdfzgqsbrmnticl +fbcdgqtznmjri +doitrczjqfbgmn +otzbjfidmnrqcg + +cb +bc +cb +cb + +aspjvghyurx +vcarwsbh +laeshvzrb +hsrvia + +kpxzdhasfmltouvrc +duvpkascromz +vmcskupzorad + +pguayqbwm +gpyaqbwum +ywaqgpmbu + +ypdlnjse +elskbyz +jesylo +lyse + +zlokqmjiurpwgbn +xzvurhgmlkwqnibjpo + +wpzenbojcykqxvt +wnyzlbjkeoqtvcpx +itkjzydbpvoxcewnq + +gfuvenodsizwmh +hwfuvsntdg + +gkibnpalc +inkcgpal +gnpzliakfc + +ibektdpuhg +iwbgjke +iycnergfqkbo +egxadvlmbijk + +l +yjg +l + +ymuoc +oymcu +oymcu +youcm +ycomu + +wifoqy +zksfrict +bdpvhuilgejn +acoi +mqi + +qrcukhwvzdjilpto +hqrmwkupclvjtizo + +gdizlfawobuk +dihqfswcgukzrbla +gmukawbdfizlo + +zwdrpv +dzvpwr + +ycidkpfrqjelha +pjahykfecdqrli +kfqlajhdepyirc +pkhaceijlqdfry + +pwuxbqotey +okbphqutfx +xvsgodubtlpqijr +puoewaxtbmq + +qtbaoex +xpoqa +agiweqtop +nozuadmjrq + +huvqdaij +fkuvaijdhq + +biewrdlzc +rjlcikbzmdwve +leucwfpoizndbxr + +avgtnubqcpxrhwdoml +vrkqgyndcmohtupswa + +dmjqfesnxyciz +hfzudcjxsmno +mfjhrcsxznd +lcmbjnxzfadrs + +tvayrhpqskd +qrtkvhyus +epjsytzhvrqk +yzqohmvtgsrk +hvlysqtwirbk + +ieyd +aipeyg + +r +rg +rm +r + +qcweajhfmlgyzpv +ouqdxmsphkbatenr + +fba +kfba +baf + +vxpblsyjnrmkai +vpyhagcwqbzxmik +rpbytexdijnfavkom + +fpmytnk +cyaw + +jhyimdg +mhyij +hmvyij +mihezcovyj +yhmciej + +sqfaopkgze +kxsecfphozq +qsotezpfk + +ewcvoaurmjhq +cuqvjwreaohm +ewvjmqacuorh +wauhojecqmvrs + +lyieuqdjcb +vkpctdmywzsreubn +delchbujy +jbcyegdou +xduayceb + +nidxswarcqtk +kciqdarnbewsxt +acqrdkntipxlsw +ikpawtcdsqnrx + +gikrfhwltveap +yeplvatowncgxirf +griadtewmvblpf + +htjkmzxlvbygcwqioe +jzwtymxvigbheolckq +cxmvjyklobhtwgqzie +teczbxvlmgojqiwkyh +oxvejlbtiqywhzgmkc + +jkfapozdwcie +bmushwjgltrn + +rpnbxkoij +exjdri +uirjegxsa + +zawoncbymgsrhv +dvctxgeusr +cvizgyhlmrwsfp + +shnyujedctwfq +yscahxndftreq + +xrnysi +itcluvmd +niqwozjber + +gjobshlayxvctnfq +ljcxaonvbstqfgyh +ybhxgntqcsvfaojl +rjoxblqavncusgheytf +sncqlvybxfjtghao + +uozb +ldewrck +xbg +xhg +z + +yubqaznf +imwhrgnkjls + +msvgjrnkcloaup +csxjnkgrpiuoveamy +pknvrajmcudswgzo +tnupacsxrgkvmoji +bpnkfarqumsvhcojg + +bzvyuenaihfdcgwk +puchyenmzgksrijoa +ugebciktnlzhay + +cedfutpnsivjlobrkaxy +denscvpbmlkxaojrfh + +vugjrq +jqgtuwcnrv +grvkuqj +gbmvqsyxjueplzirhf +avudnjqgr + +vpidajtmgozxwuksh +ughiwmakpjszdtvox +wugipxzdvastkhmj +sxughjakmnwfpdivzt +wimvaupjhgxstkzd + +mqsuwhdxpcozfr +rsdwhfpakzxjmo +eysprldfqzowmhx +fodhrtmswxyzp + +vsmzfbjhwqxiugtlc +gcqdsfmpletnhbxr + +uxbgkfjwesmlchr +feakldxqnpwcjgvrzbhs +hjosrixfmlcgbkew + +dszv +zsvd +vsdz +zvds +sdzv + +pdw +lxudjpiwz +advnkpqw +hswpdog + +gslpira +neuzf + +ifjt +tjif +jfit +jitf +ifktj + +jrnzb +unkjshpe +njza + +ydigxaqm +iaeokqgmyhr + +bkxmngtdlyev +nmbuzoveixlprkys + +zjloghmtu +ermvzn +qzdncfm +afczxmp + +aptscynieqmfgjhbr +bmsirnafyepthgcqj + +q +qlr +fq +qk + +v +v + +ucrmbsozjkfy +buscrmofkzy +uosmfkryzbc +sqirbfzmocuynk +mbucykofrzs + +lrp +plz +lrp +lp +lp + +yfzmpgcsw +prycgfm +rfcmgpy +scgmyqpf +flcyvpohmgu + +g +g +g +e + +lxoaibjch +wudyrfvkzn +gtpmkeyqd + +zjhlwbtfuvick +wujtvblzchkif + +ksdfpvqbtxaluneo +dqofprhnxamskujeb + +hacwigyftqblx +xwlqahitbgcyf +ahyxlwgtqifbc + +mb +m +mg +m + +ecrasdtyljuqimhnwfb +qleiaydjcugrwn +jdyewaqnrcliu + +g +lqfio +adhstybz + +gryzuxenhlvopbtmfwqcas +yeqzalmogbncxpsfujwh +mflqzhoaupcseygnbwx +myswzuonfqlaxecbhpgj + +uwvzati +uzcjvtai +savuizt +atiuzv + +cozuin +abuizo +tiozua +wilfzeoqu +roictxuz + +gndpkojqu +gunkpsjoa +rtmzjpgkovwxlnuc + +lrj +rjl +mrjl + +udlpevjgzrfawitqs +qgrtiujslfeovza +surivgtfqjleaz +ezavgjtlfrusiq + +g +fx +mf +tx +iyqd + +sljgmdztynvrqexhwfi +gvwdyerlqnxthmjifsz +qgmjlfwrxztynivdhse + +zkvuir +kvruiz +vriukz +kriumzv +zruikv + +zyqgnvda +kdygvqanz +zyagvqdnu +qnwdmlaxgzyfvo +dnzgyavq + +o +s +q + +cbroy +qiyocmjdt +uyoc + +lkqj +kjql +jqlk +ljqk \ No newline at end of file diff --git a/day6/program.js b/day6/program.js new file mode 100644 index 0000000..cec0107 --- /dev/null +++ b/day6/program.js @@ -0,0 +1,42 @@ +const { group } = require('console'); +const fs = require('fs'); + +fs.readFile('./input.txt', 'utf-8', (e, data) => { + const answers = data.split("\n"); + const groups = findYesses(answers); + + let allSum = 0; + let commonSum = 0; + groups.forEach(group => { + allSum += Object.keys(group).length - 1; + const groupFilter = Object.entries(group).filter(key => key[1] === group.groupSize); + commonSum += groupFilter.length - 1; + }); + + console.log('Unique yesses', allSum); + console.log('Common answers', commonSum); + +}); + +function findYesses(data) { + const groups = []; + let groupAnswers = {groupSize: 0}; + + data.forEach(row => { + if (!row){ + groups.push(groupAnswers); + groupAnswers = {groupSize: 0}; + return; + } + + groupAnswers.groupSize++; + + const answers = row.split(""); + answers.forEach(a => { + if (groupAnswers.hasOwnProperty(a)) groupAnswers[a]++; + else groupAnswers[a] = 1; + }); + }); + groups.push(groupAnswers); + return groups; +} \ No newline at end of file From 745303ba27fa0746e7c1413045eeb4e25716e19f Mon Sep 17 00:00:00 2001 From: Rene Pot Date: Mon, 7 Dec 2020 10:34:09 +0000 Subject: [PATCH 08/59] add day 7 part 1 --- day6/program.js | 2 - day7/input.txt | 594 ++++++++++++++++++++++++++++++++++++++++++++++++ day7/program.js | 53 +++++ 3 files changed, 647 insertions(+), 2 deletions(-) create mode 100644 day7/input.txt create mode 100644 day7/program.js diff --git a/day6/program.js b/day6/program.js index cec0107..9fa0045 100644 --- a/day6/program.js +++ b/day6/program.js @@ -1,6 +1,4 @@ -const { group } = require('console'); const fs = require('fs'); - fs.readFile('./input.txt', 'utf-8', (e, data) => { const answers = data.split("\n"); const groups = findYesses(answers); diff --git a/day7/input.txt b/day7/input.txt new file mode 100644 index 0000000..a3b91d0 --- /dev/null +++ b/day7/input.txt @@ -0,0 +1,594 @@ +light gold bags contain 2 light lime bags, 1 faded green bag, 3 clear olive bags, 2 dim bronze bags. +muted beige bags contain 3 clear lime bags, 5 dark salmon bags, 1 pale olive bag. +vibrant violet bags contain 3 dark tomato bags, 3 muted indigo bags, 3 plaid turquoise bags, 3 light silver bags. +dull purple bags contain 2 wavy turquoise bags. +posh purple bags contain 4 bright lavender bags, 2 wavy chartreuse bags, 3 vibrant aqua bags. +striped gold bags contain 4 light magenta bags. +dark lime bags contain 3 plaid brown bags. +shiny salmon bags contain 5 light olive bags. +dull gold bags contain 2 dim plum bags. +dim olive bags contain 3 faded cyan bags. +faded white bags contain 2 clear brown bags, 1 mirrored green bag, 3 plaid bronze bags. +dull salmon bags contain 1 plaid gray bag, 4 vibrant aqua bags, 5 mirrored cyan bags. +striped orange bags contain 4 vibrant maroon bags, 2 dark orange bags. +dotted silver bags contain 2 posh red bags, 1 muted yellow bag, 5 light aqua bags, 3 pale red bags. +light orange bags contain 1 striped coral bag, 3 dim lime bags, 4 muted yellow bags. +wavy lime bags contain 5 light silver bags, 1 bright coral bag, 5 drab silver bags, 1 dark plum bag. +bright tan bags contain 3 clear magenta bags, 2 muted white bags, 2 drab beige bags, 5 plaid green bags. +dim violet bags contain 1 striped fuchsia bag, 2 mirrored green bags, 1 bright teal bag. +mirrored gold bags contain 1 pale aqua bag. +bright plum bags contain 1 faded fuchsia bag. +muted aqua bags contain 2 muted red bags. +plaid bronze bags contain 2 dim lime bags, 2 wavy coral bags, 1 vibrant lime bag, 1 dotted beige bag. +dim chartreuse bags contain 5 mirrored lime bags, 2 dotted tomato bags, 1 plaid turquoise bag. +muted lavender bags contain 4 faded salmon bags, 3 bright white bags, 3 posh fuchsia bags, 1 dotted green bag. +mirrored yellow bags contain 1 wavy purple bag, 5 shiny teal bags, 5 shiny cyan bags, 1 shiny crimson bag. +striped magenta bags contain 4 dim white bags, 2 pale white bags. +dull crimson bags contain 3 muted black bags, 4 dull lavender bags. +mirrored beige bags contain 2 posh indigo bags, 3 shiny gray bags. +bright blue bags contain 5 mirrored fuchsia bags. +plaid beige bags contain 3 mirrored cyan bags, 1 vibrant tan bag, 5 muted purple bags, 1 wavy red bag. +dotted indigo bags contain 5 pale fuchsia bags, 5 posh tomato bags. +muted coral bags contain 4 dim crimson bags, 3 dark brown bags, 2 drab fuchsia bags. +drab tomato bags contain 1 muted tan bag, 2 dark salmon bags, 4 faded red bags, 5 shiny olive bags. +dark tomato bags contain 5 mirrored salmon bags. +bright yellow bags contain 4 light teal bags, 1 posh white bag, 2 shiny blue bags. +dotted salmon bags contain 3 drab olive bags. +vibrant olive bags contain 2 posh teal bags, 1 clear aqua bag. +dotted gold bags contain 4 striped violet bags. +light tan bags contain 2 plaid fuchsia bags, 1 faded turquoise bag, 2 muted tomato bags. +drab orange bags contain 3 wavy violet bags, 1 dark fuchsia bag, 2 mirrored green bags. +dull coral bags contain 1 dark crimson bag. +light purple bags contain 4 dark gold bags, 3 plaid purple bags, 4 clear chartreuse bags. +wavy yellow bags contain 3 striped silver bags, 2 dull chartreuse bags. +dull tan bags contain 1 dim gold bag. +vibrant plum bags contain 4 dotted turquoise bags, 1 faded gray bag. +wavy tan bags contain 4 shiny plum bags, 5 faded white bags, 1 plaid plum bag. +dim indigo bags contain 2 clear blue bags. +muted teal bags contain 4 mirrored fuchsia bags, 5 faded black bags. +dark maroon bags contain 5 mirrored gold bags, 5 bright red bags, 1 faded gray bag. +mirrored aqua bags contain 4 faded turquoise bags, 1 mirrored tan bag. +muted violet bags contain 4 mirrored lavender bags, 3 faded salmon bags. +wavy orange bags contain 3 drab crimson bags, 5 posh indigo bags, 2 faded cyan bags, 5 light blue bags. +mirrored blue bags contain 1 dark teal bag, 4 pale orange bags. +muted silver bags contain 2 dim orange bags, 1 posh plum bag, 2 wavy fuchsia bags. +plaid magenta bags contain 3 faded blue bags, 5 vibrant lime bags, 2 faded beige bags. +dark lavender bags contain 3 clear olive bags. +posh salmon bags contain 4 dark orange bags. +dim silver bags contain 3 plaid blue bags, 1 posh brown bag, 1 striped white bag. +posh chartreuse bags contain 3 drab plum bags, 3 mirrored brown bags. +shiny cyan bags contain 4 faded plum bags, 5 wavy yellow bags, 2 drab maroon bags. +drab bronze bags contain 2 shiny turquoise bags, 4 faded white bags, 4 drab white bags. +dotted cyan bags contain 1 posh brown bag, 2 dark orange bags, 4 plaid bronze bags. +shiny beige bags contain 5 dotted cyan bags, 2 pale indigo bags. +drab violet bags contain 4 posh chartreuse bags, 1 drab fuchsia bag. +muted tomato bags contain 2 posh aqua bags. +drab plum bags contain 5 drab gold bags, 4 dark fuchsia bags, 5 pale gold bags, 3 dim olive bags. +dim brown bags contain 1 drab indigo bag, 2 pale gold bags, 5 posh fuchsia bags. +plaid cyan bags contain 1 light orange bag, 2 bright violet bags. +striped silver bags contain 2 shiny silver bags. +plaid tomato bags contain 3 drab cyan bags, 4 clear chartreuse bags, 3 dim coral bags, 4 shiny gray bags. +posh tomato bags contain 1 plaid bronze bag, 1 dim lime bag. +vibrant orange bags contain 5 bright aqua bags, 2 drab coral bags, 4 dull aqua bags, 3 vibrant lavender bags. +drab brown bags contain 1 bright orange bag, 3 drab salmon bags. +plaid crimson bags contain 3 dull red bags, 3 posh maroon bags, 2 dull beige bags. +clear aqua bags contain 5 muted cyan bags, 1 dotted teal bag. +pale magenta bags contain 2 light brown bags. +mirrored chartreuse bags contain 3 striped gold bags, 3 light silver bags, 3 dim red bags, 3 dim chartreuse bags. +mirrored plum bags contain 2 striped tomato bags, 1 posh aqua bag, 1 muted teal bag, 2 faded indigo bags. +posh teal bags contain 5 clear indigo bags, 5 plaid purple bags, 4 pale white bags, 3 drab gray bags. +wavy aqua bags contain 4 drab beige bags, 5 plaid black bags. +drab coral bags contain 3 striped tomato bags, 1 dotted cyan bag. +shiny chartreuse bags contain 2 mirrored cyan bags. +striped gray bags contain 5 striped tomato bags. +shiny orange bags contain 4 muted purple bags, 4 dim silver bags, 5 shiny gold bags, 3 pale orange bags. +dark teal bags contain no other bags. +dark magenta bags contain 4 pale gray bags, 1 dim purple bag, 4 drab coral bags. +vibrant fuchsia bags contain 4 dull olive bags. +light bronze bags contain 2 plaid gold bags, 2 dark white bags. +dotted yellow bags contain 5 bright indigo bags, 2 light silver bags, 3 wavy red bags. +muted purple bags contain 1 shiny blue bag, 5 faded red bags, 1 dim olive bag. +faded cyan bags contain 1 dark teal bag. +dull brown bags contain 5 vibrant aqua bags. +shiny white bags contain 2 dull red bags, 1 plaid orange bag, 5 muted turquoise bags. +light brown bags contain 4 dim coral bags, 3 faded red bags. +bright orange bags contain 5 dull olive bags. +light lime bags contain 4 light magenta bags, 5 muted violet bags. +shiny indigo bags contain 2 bright blue bags, 1 dotted turquoise bag, 2 clear bronze bags. +faded teal bags contain 4 bright brown bags, 1 light silver bag. +posh bronze bags contain 3 dark salmon bags, 2 plaid fuchsia bags, 1 dim white bag, 5 faded maroon bags. +shiny yellow bags contain 1 posh lime bag. +dotted beige bags contain no other bags. +vibrant blue bags contain 2 posh green bags, 1 faded white bag, 2 plaid red bags, 4 posh violet bags. +posh lime bags contain 4 bright aqua bags. +posh coral bags contain 5 plaid white bags, 3 faded coral bags. +dark yellow bags contain 3 wavy violet bags, 5 clear chartreuse bags, 5 light turquoise bags. +wavy bronze bags contain 2 clear brown bags, 2 muted cyan bags. +faded brown bags contain 5 dim lime bags, 4 dotted beige bags, 3 wavy coral bags, 1 faded gray bag. +vibrant gold bags contain 2 dotted maroon bags. +vibrant red bags contain 4 dull black bags. +clear beige bags contain 4 dim olive bags, 3 plaid bronze bags, 3 clear brown bags, 5 vibrant lime bags. +dim teal bags contain 4 plaid bronze bags, 5 striped tan bags, 1 muted olive bag. +dim aqua bags contain 1 faded lime bag, 4 faded gray bags, 1 posh coral bag. +faded tan bags contain 5 clear lime bags, 4 shiny violet bags, 2 dull aqua bags. +mirrored green bags contain no other bags. +light magenta bags contain 5 plaid gold bags. +striped white bags contain 1 wavy coral bag, 1 faded gray bag, 3 vibrant lime bags, 2 mirrored fuchsia bags. +plaid violet bags contain 3 faded indigo bags, 1 striped fuchsia bag, 5 drab salmon bags, 4 mirrored cyan bags. +dull cyan bags contain 4 dark chartreuse bags, 3 light gray bags. +light salmon bags contain 2 dark teal bags. +drab crimson bags contain 3 vibrant tan bags. +striped yellow bags contain 5 faded brown bags, 4 posh olive bags. +pale orange bags contain no other bags. +faded gold bags contain 5 light magenta bags. +faded beige bags contain 1 faded indigo bag, 5 wavy green bags, 5 faded crimson bags. +striped crimson bags contain 2 posh brown bags. +dark black bags contain 4 plaid lavender bags, 5 mirrored salmon bags. +bright beige bags contain 1 bright brown bag, 5 posh aqua bags. +bright gold bags contain 3 light lime bags, 2 shiny white bags. +bright tomato bags contain 4 dull orange bags, 4 dull blue bags. +light olive bags contain 4 dull blue bags, 4 plaid gray bags, 4 faded gray bags. +vibrant lavender bags contain 1 clear salmon bag, 2 bright lavender bags. +drab yellow bags contain 1 plaid black bag. +faded green bags contain 1 clear brown bag, 4 mirrored orange bags, 1 striped tan bag. +vibrant black bags contain 4 mirrored fuchsia bags. +bright indigo bags contain 5 plaid red bags, 1 striped chartreuse bag, 3 vibrant plum bags, 5 dark lavender bags. +dull plum bags contain 2 mirrored plum bags, 2 light silver bags, 1 pale indigo bag. +striped bronze bags contain 2 dotted blue bags. +muted magenta bags contain 2 dim silver bags, 5 clear purple bags. +striped teal bags contain 5 vibrant white bags. +dim bronze bags contain 2 dim crimson bags, 4 vibrant beige bags, 2 wavy turquoise bags. +shiny lavender bags contain 4 dim purple bags. +vibrant silver bags contain 1 dotted crimson bag, 2 dotted maroon bags. +posh yellow bags contain 4 bright salmon bags, 4 shiny lavender bags, 5 mirrored aqua bags. +faded bronze bags contain 2 posh brown bags, 3 clear lime bags, 4 dotted red bags, 2 striped white bags. +posh maroon bags contain 5 striped salmon bags, 1 light black bag. +pale aqua bags contain 2 shiny orange bags, 1 shiny silver bag, 2 dim violet bags. +plaid chartreuse bags contain 2 muted black bags, 4 muted magenta bags, 1 mirrored bronze bag, 1 posh beige bag. +dotted orange bags contain 2 drab indigo bags. +plaid gold bags contain 3 drab beige bags. +shiny silver bags contain 2 dull teal bags, 5 drab gray bags, 4 bright blue bags, 2 dotted cyan bags. +mirrored crimson bags contain 2 shiny gold bags, 5 plaid black bags, 3 drab beige bags, 1 pale beige bag. +pale gold bags contain 1 striped tomato bag, 5 striped white bags, 2 mirrored bronze bags, 5 dim orange bags. +vibrant crimson bags contain 5 faded white bags, 2 wavy coral bags. +dim yellow bags contain 1 vibrant coral bag, 5 faded red bags, 4 mirrored magenta bags, 4 posh indigo bags. +dull teal bags contain 1 plaid fuchsia bag, 3 striped blue bags. +striped red bags contain 4 dull lime bags. +muted chartreuse bags contain 5 bright crimson bags. +dim lavender bags contain 2 posh maroon bags. +wavy crimson bags contain 1 dim magenta bag, 4 dim crimson bags, 1 dull lavender bag, 3 muted fuchsia bags. +dull green bags contain 5 dull olive bags, 1 clear blue bag, 5 shiny salmon bags. +wavy red bags contain 1 dull chartreuse bag, 3 dim black bags. +pale blue bags contain 4 light olive bags, 3 vibrant chartreuse bags. +dull fuchsia bags contain 2 posh chartreuse bags. +dotted violet bags contain 1 shiny olive bag, 3 bright blue bags, 5 posh beige bags, 4 vibrant black bags. +drab white bags contain 1 plaid gold bag, 5 clear olive bags. +drab blue bags contain 3 muted bronze bags, 5 shiny gold bags, 4 dim olive bags. +plaid salmon bags contain 5 pale gold bags. +pale coral bags contain 3 plaid orange bags, 3 plaid fuchsia bags, 5 drab teal bags. +vibrant maroon bags contain 3 dim lime bags, 2 pale beige bags, 5 mirrored green bags. +mirrored magenta bags contain 2 striped blue bags. +faded blue bags contain 3 vibrant bronze bags, 2 clear maroon bags, 1 faded white bag, 3 dark cyan bags. +drab olive bags contain 5 wavy teal bags, 3 mirrored black bags, 5 dark gray bags, 5 dull lime bags. +posh white bags contain 1 plaid purple bag, 4 dark turquoise bags, 3 clear salmon bags, 1 dim orange bag. +dull red bags contain 4 vibrant plum bags, 3 plaid black bags, 4 dull orange bags. +striped tan bags contain no other bags. +posh blue bags contain 3 mirrored magenta bags, 1 dark plum bag, 4 wavy turquoise bags, 1 shiny coral bag. +drab salmon bags contain 2 bright aqua bags, 4 posh gold bags, 5 plaid blue bags. +striped green bags contain 5 dim black bags. +wavy salmon bags contain 5 pale purple bags. +vibrant cyan bags contain 1 dark gray bag, 1 vibrant beige bag, 5 drab violet bags, 5 dull coral bags. +wavy lavender bags contain 1 light magenta bag, 2 striped cyan bags. +faded maroon bags contain 5 light gray bags. +vibrant yellow bags contain 2 bright beige bags, 5 dim brown bags, 2 posh silver bags, 2 pale cyan bags. +dotted tomato bags contain 3 mirrored magenta bags, 3 wavy chartreuse bags, 2 wavy maroon bags. +striped lavender bags contain 4 shiny coral bags, 2 dim white bags, 3 faded red bags. +faded red bags contain 2 mirrored fuchsia bags, 1 light cyan bag, 2 vibrant lime bags, 1 mirrored green bag. +clear black bags contain 3 drab purple bags, 2 bright yellow bags, 2 wavy brown bags. +faded indigo bags contain 1 dim lime bag, 1 clear brown bag. +shiny tan bags contain 1 dull brown bag, 2 striped tomato bags. +drab teal bags contain 1 dotted turquoise bag, 4 posh fuchsia bags. +wavy magenta bags contain 1 dim yellow bag, 3 drab indigo bags. +mirrored turquoise bags contain no other bags. +faded lime bags contain 4 drab cyan bags, 1 clear orange bag, 5 vibrant salmon bags, 5 faded crimson bags. +vibrant coral bags contain 5 pale gray bags, 2 clear salmon bags. +muted turquoise bags contain 1 clear brown bag. +plaid aqua bags contain 3 dull coral bags. +pale indigo bags contain 1 striped brown bag, 2 bright cyan bags, 5 plaid silver bags. +faded tomato bags contain 1 pale red bag, 2 dotted tan bags. +mirrored white bags contain 4 drab fuchsia bags, 3 plaid orange bags, 4 dotted lavender bags. +shiny aqua bags contain 1 wavy silver bag, 4 drab green bags, 1 bright tomato bag. +pale cyan bags contain 1 pale gold bag, 5 dark turquoise bags. +mirrored salmon bags contain 5 light crimson bags, 5 muted bronze bags, 2 vibrant beige bags, 1 striped lavender bag. +dark gold bags contain 1 shiny olive bag. +muted blue bags contain 2 vibrant maroon bags, 5 wavy chartreuse bags. +bright fuchsia bags contain 1 posh white bag. +light blue bags contain 5 muted beige bags, 1 dark crimson bag, 5 mirrored brown bags, 1 posh orange bag. +clear salmon bags contain 1 faded brown bag, 5 dotted beige bags, 4 faded gray bags, 4 dark orange bags. +plaid red bags contain 3 drab silver bags, 2 dim green bags. +faded plum bags contain 2 posh orange bags, 5 dotted lime bags. +bright coral bags contain 3 plaid plum bags, 1 dark green bag, 2 striped crimson bags, 5 vibrant coral bags. +shiny crimson bags contain 5 bright teal bags, 4 muted magenta bags, 4 vibrant maroon bags, 3 faded cyan bags. +dim magenta bags contain 1 muted olive bag, 1 bright blue bag, 4 muted white bags, 5 posh gray bags. +pale brown bags contain 4 dotted cyan bags, 5 bright coral bags. +striped olive bags contain 2 bright brown bags, 4 pale gray bags, 5 dotted teal bags, 3 pale white bags. +posh gray bags contain 1 dark chartreuse bag. +dotted brown bags contain 3 plaid gold bags, 5 dim bronze bags. +dim lime bags contain no other bags. +clear crimson bags contain 2 posh orange bags, 2 plaid plum bags, 1 dark orange bag. +shiny turquoise bags contain 1 faded indigo bag, 3 light red bags. +striped plum bags contain 1 muted white bag. +muted crimson bags contain 1 bright teal bag. +plaid blue bags contain 3 dotted beige bags, 5 vibrant lime bags, 1 vibrant tan bag, 2 striped blue bags. +light teal bags contain 2 dotted cyan bags. +faded salmon bags contain 5 mirrored crimson bags. +shiny blue bags contain 4 posh gold bags, 3 light cyan bags, 1 clear teal bag. +plaid brown bags contain 2 dull lavender bags. +muted bronze bags contain 3 faded purple bags. +posh fuchsia bags contain 5 striped coral bags. +clear orange bags contain 1 bright blue bag, 5 posh gold bags, 5 striped crimson bags, 1 dark teal bag. +plaid plum bags contain 5 faded brown bags. +clear gray bags contain 4 mirrored fuchsia bags, 2 dim cyan bags, 3 pale gold bags, 1 dim violet bag. +bright lavender bags contain 1 mirrored purple bag, 4 wavy magenta bags, 2 dull black bags, 3 light silver bags. +pale purple bags contain 3 striped tan bags, 1 dull olive bag. +pale bronze bags contain 2 plaid aqua bags, 2 pale fuchsia bags, 4 bright lime bags. +clear blue bags contain 3 plaid beige bags. +drab silver bags contain 3 dim violet bags, 1 muted yellow bag, 1 pale beige bag. +dark silver bags contain 4 dark fuchsia bags, 4 bright green bags, 5 dim beige bags, 1 light tomato bag. +mirrored gray bags contain 2 striped black bags. +posh black bags contain 3 dull indigo bags, 3 striped beige bags, 3 dim blue bags, 2 wavy lime bags. +clear teal bags contain 2 dark orange bags, 4 pale beige bags, 5 clear beige bags, 4 dark teal bags. +pale white bags contain 2 drab gray bags, 1 muted olive bag. +muted fuchsia bags contain 2 clear brown bags, 4 mirrored green bags, 2 striped tan bags. +bright cyan bags contain 1 dotted plum bag. +light tomato bags contain 2 dim violet bags, 1 pale green bag, 4 dim orange bags, 1 dotted tomato bag. +pale turquoise bags contain 2 plaid black bags, 2 clear brown bags. +dim orange bags contain 1 plaid plum bag, 2 clear indigo bags, 1 dotted blue bag, 1 drab beige bag. +posh red bags contain 5 faded brown bags, 4 clear gray bags, 5 bright teal bags. +bright teal bags contain 4 clear beige bags. +posh lavender bags contain 1 drab beige bag, 5 dim salmon bags, 3 light crimson bags. +drab green bags contain 1 striped brown bag, 1 dull blue bag, 1 plaid coral bag. +clear coral bags contain 1 faded crimson bag, 4 light silver bags, 1 posh violet bag. +dark tan bags contain 5 faded brown bags. +vibrant aqua bags contain 1 light cyan bag, 5 bright brown bags. +dark blue bags contain 1 dark silver bag. +drab lime bags contain 3 faded white bags, 5 clear tomato bags, 1 dark turquoise bag. +faded lavender bags contain 1 bright violet bag, 4 posh gold bags. +dark orange bags contain 2 striped tan bags. +plaid orange bags contain 4 dark beige bags, 5 dull lavender bags, 4 striped white bags. +vibrant chartreuse bags contain 1 faded indigo bag, 4 clear magenta bags, 2 shiny blue bags, 2 dull teal bags. +dim white bags contain 3 faded white bags, 2 clear teal bags. +dim cyan bags contain 4 clear olive bags, 4 pale gray bags, 5 plaid bronze bags. +dotted chartreuse bags contain 1 bright magenta bag, 5 shiny maroon bags. +dull aqua bags contain 2 drab beige bags. +clear violet bags contain 3 pale teal bags, 3 posh tomato bags, 1 light silver bag, 2 faded coral bags. +pale lavender bags contain 1 drab beige bag, 2 dark teal bags. +clear tomato bags contain 5 muted beige bags, 1 plaid gold bag, 3 vibrant coral bags, 3 shiny silver bags. +clear cyan bags contain 4 faded lime bags, 2 drab tomato bags. +striped salmon bags contain 3 dim silver bags. +wavy silver bags contain 2 drab blue bags, 4 shiny green bags, 3 muted yellow bags. +dull indigo bags contain 5 mirrored plum bags. +faded coral bags contain 2 muted olive bags, 4 dark salmon bags. +muted olive bags contain 5 faded red bags, 1 dim lime bag, 1 striped white bag, 4 dark teal bags. +dotted plum bags contain 5 plaid blue bags. +striped cyan bags contain 4 mirrored plum bags, 2 wavy beige bags. +dotted olive bags contain 3 mirrored gold bags, 4 bright lavender bags, 2 dim turquoise bags. +plaid green bags contain 5 dark chartreuse bags, 5 mirrored bronze bags, 5 dark beige bags. +clear chartreuse bags contain 5 posh olive bags, 3 plaid violet bags, 3 mirrored fuchsia bags, 2 light orange bags. +wavy indigo bags contain 2 shiny teal bags, 3 clear olive bags. +shiny fuchsia bags contain 5 striped chartreuse bags, 1 light chartreuse bag. +shiny coral bags contain 4 dotted plum bags, 4 dull orange bags, 3 posh olive bags, 2 dark salmon bags. +bright black bags contain 5 drab gray bags, 1 vibrant black bag, 3 vibrant salmon bags, 3 dim silver bags. +bright salmon bags contain 1 shiny plum bag, 4 bright brown bags, 5 pale gray bags, 3 mirrored maroon bags. +faded yellow bags contain 1 light blue bag, 2 striped white bags, 3 dim lime bags, 4 wavy cyan bags. +plaid fuchsia bags contain 1 striped blue bag. +plaid lime bags contain 3 clear bronze bags, 4 dull orange bags, 1 pale aqua bag. +clear turquoise bags contain 1 posh aqua bag, 5 plaid black bags, 4 vibrant brown bags. +dull lime bags contain 3 mirrored crimson bags, 1 dotted crimson bag, 2 light lime bags, 2 light gray bags. +dull gray bags contain 5 bright lavender bags, 3 muted olive bags. +dotted turquoise bags contain 2 dim olive bags, 1 striped blue bag, 4 clear indigo bags. +vibrant purple bags contain 4 light olive bags, 4 mirrored salmon bags, 4 muted red bags. +dark cyan bags contain 2 dim lime bags, 5 light olive bags, 4 muted red bags, 3 drab indigo bags. +vibrant turquoise bags contain 4 light indigo bags. +bright bronze bags contain 2 pale green bags, 5 faded gray bags. +clear maroon bags contain 3 faded coral bags. +faded purple bags contain 5 plaid plum bags, 3 striped blue bags, 2 vibrant tan bags, 3 dark orange bags. +light indigo bags contain 2 wavy bronze bags, 5 bright lime bags, 4 drab lime bags, 2 dotted chartreuse bags. +dotted bronze bags contain 5 faded brown bags, 4 drab silver bags, 3 drab chartreuse bags. +mirrored lavender bags contain 3 dim salmon bags. +clear gold bags contain 1 dull plum bag. +vibrant beige bags contain 5 drab crimson bags. +dull yellow bags contain 5 mirrored green bags, 4 plaid bronze bags, 5 plaid blue bags, 4 dull orange bags. +dotted black bags contain 2 dull fuchsia bags, 2 light fuchsia bags, 3 mirrored lavender bags, 1 muted coral bag. +dotted maroon bags contain 3 plaid coral bags, 5 dotted cyan bags. +dim tomato bags contain 4 pale tomato bags, 3 striped beige bags. +wavy violet bags contain 4 mirrored crimson bags, 4 plaid bronze bags, 4 faded turquoise bags, 4 drab chartreuse bags. +shiny bronze bags contain 3 muted chartreuse bags, 3 drab gold bags. +faded fuchsia bags contain 1 bright blue bag, 1 dim purple bag, 1 dim magenta bag. +plaid turquoise bags contain 2 shiny olive bags, 5 dull orange bags, 2 dark fuchsia bags, 3 clear purple bags. +mirrored teal bags contain 4 drab cyan bags, 2 striped green bags. +clear purple bags contain 3 dull teal bags, 2 vibrant tan bags, 5 vibrant maroon bags. +dotted blue bags contain 2 muted white bags, 2 dark green bags, 2 faded purple bags, 2 plaid blue bags. +light violet bags contain 5 dark salmon bags, 5 striped orange bags. +light beige bags contain 2 muted chartreuse bags, 4 striped brown bags, 3 wavy maroon bags. +wavy purple bags contain 4 dark violet bags, 3 drab fuchsia bags, 4 dull lavender bags, 3 drab lime bags. +light silver bags contain 4 posh brown bags, 3 vibrant crimson bags. +wavy white bags contain 5 mirrored fuchsia bags, 2 dotted turquoise bags, 5 striped tomato bags. +striped purple bags contain 4 dull chartreuse bags. +wavy teal bags contain 1 light chartreuse bag, 3 dark green bags. +vibrant indigo bags contain 2 dim coral bags. +pale red bags contain 3 drab cyan bags, 1 muted tan bag. +dark aqua bags contain 2 faded brown bags, 1 shiny gold bag, 3 light cyan bags, 2 light green bags. +dotted tan bags contain 2 drab beige bags, 2 faded gray bags. +faded aqua bags contain 5 faded brown bags. +drab turquoise bags contain 5 drab teal bags. +dark turquoise bags contain 2 dim teal bags, 1 dim coral bag, 1 clear beige bag. +wavy maroon bags contain 1 dim violet bag, 4 clear bronze bags. +dark gray bags contain 2 bright blue bags. +mirrored coral bags contain 1 clear lime bag, 1 posh gray bag. +dim red bags contain 3 plaid aqua bags, 4 plaid salmon bags, 3 pale gray bags, 4 wavy indigo bags. +dull maroon bags contain 3 light silver bags, 1 dim lime bag, 2 striped silver bags. +vibrant salmon bags contain 1 dark gray bag, 2 dotted cyan bags, 2 drab gray bags, 3 muted tan bags. +vibrant lime bags contain no other bags. +wavy blue bags contain 5 bright maroon bags, 2 dull plum bags, 4 pale magenta bags. +dim purple bags contain 3 dull indigo bags. +muted indigo bags contain 5 posh orange bags, 4 dim yellow bags. +posh gold bags contain 2 clear beige bags, 3 vibrant lime bags. +plaid purple bags contain 4 faded brown bags, 3 shiny blue bags, 1 faded white bag. +clear lime bags contain 5 posh aqua bags, 2 posh fuchsia bags, 1 clear teal bag, 4 faded cyan bags. +bright brown bags contain 5 plaid bronze bags, 4 faded indigo bags. +striped maroon bags contain 1 faded turquoise bag, 3 drab cyan bags, 5 dark gray bags, 2 pale black bags. +faded violet bags contain 4 drab crimson bags. +muted brown bags contain 2 bright tomato bags, 3 dim gold bags, 5 dull blue bags. +posh magenta bags contain 2 dark fuchsia bags. +vibrant green bags contain 3 dark fuchsia bags. +shiny tomato bags contain 2 light turquoise bags, 5 drab green bags, 1 posh gold bag. +faded olive bags contain 1 shiny purple bag, 4 wavy tan bags, 4 wavy violet bags, 1 muted fuchsia bag. +mirrored fuchsia bags contain 1 clear brown bag. +faded magenta bags contain 3 striped white bags, 3 posh tomato bags, 3 striped lime bags. +dim crimson bags contain 5 mirrored brown bags, 1 faded black bag, 1 dark orange bag. +dark green bags contain 2 dotted beige bags, 5 plaid blue bags. +dotted purple bags contain 4 shiny black bags, 1 muted violet bag, 1 drab green bag, 3 faded yellow bags. +posh turquoise bags contain 3 shiny plum bags. +muted gray bags contain 4 dull gray bags, 4 posh teal bags, 5 plaid gray bags. +shiny teal bags contain 2 pale beige bags. +shiny olive bags contain 1 striped tan bag, 3 mirrored turquoise bags. +dull white bags contain 2 pale orange bags, 1 dim magenta bag, 4 drab maroon bags. +drab aqua bags contain 1 wavy red bag. +dotted teal bags contain 3 shiny green bags, 3 drab beige bags, 1 drab crimson bag. +light cyan bags contain 2 mirrored green bags, 5 dotted beige bags, 5 faded white bags, 3 mirrored fuchsia bags. +dim maroon bags contain 1 drab fuchsia bag, 1 mirrored salmon bag. +mirrored maroon bags contain 4 muted white bags, 2 striped tan bags, 2 dark teal bags. +dark brown bags contain 1 striped bronze bag, 5 striped plum bags, 3 muted bronze bags, 2 striped lime bags. +plaid gray bags contain 1 clear brown bag, 5 shiny orange bags, 4 posh bronze bags, 5 light cyan bags. +dim gold bags contain 4 striped tomato bags, 5 striped fuchsia bags, 4 striped white bags, 1 clear brown bag. +drab tan bags contain 5 plaid fuchsia bags, 1 dim teal bag, 4 plaid gold bags. +bright aqua bags contain 4 faded indigo bags, 3 shiny blue bags, 4 posh aqua bags, 5 wavy tan bags. +pale lime bags contain 4 muted blue bags, 5 wavy purple bags. +plaid maroon bags contain 2 dim black bags, 1 drab indigo bag. +wavy gray bags contain 4 drab orange bags. +drab gold bags contain 1 dark gray bag, 4 pale gold bags. +plaid teal bags contain 2 dim teal bags, 1 vibrant lavender bag. +dark salmon bags contain 4 plaid black bags, 2 dim lime bags, 4 pale orange bags, 3 pale beige bags. +plaid lavender bags contain 3 faded red bags, 2 plaid aqua bags. +light fuchsia bags contain 3 dim violet bags. +faded chartreuse bags contain 2 mirrored gold bags, 5 drab gold bags, 3 mirrored salmon bags. +wavy beige bags contain 2 dotted salmon bags, 4 muted white bags. +striped tomato bags contain 4 drab cyan bags. +dotted white bags contain 4 bright green bags, 1 light brown bag. +muted yellow bags contain 3 dim violet bags, 1 posh aqua bag, 2 muted teal bags. +light chartreuse bags contain 4 posh aqua bags, 2 dim coral bags. +muted maroon bags contain 1 mirrored cyan bag, 4 dim olive bags. +pale yellow bags contain 3 bright olive bags. +dull bronze bags contain 2 plaid maroon bags, 2 vibrant bronze bags. +shiny gold bags contain 5 clear brown bags, 5 plaid fuchsia bags, 4 bright teal bags, 1 striped white bag. +posh crimson bags contain 4 vibrant plum bags. +clear silver bags contain 5 dim beige bags, 1 dark olive bag. +striped violet bags contain 5 posh orange bags, 1 vibrant crimson bag. +muted green bags contain 1 bright crimson bag. +shiny gray bags contain 4 striped maroon bags, 5 muted plum bags, 2 light chartreuse bags. +wavy turquoise bags contain 1 pale gold bag. +clear olive bags contain 4 plaid fuchsia bags. +drab indigo bags contain 1 clear purple bag, 4 light silver bags, 2 mirrored cyan bags, 2 clear lime bags. +dim salmon bags contain 1 pale aqua bag, 5 posh fuchsia bags, 4 plaid coral bags, 1 pale orange bag. +light black bags contain 3 muted chartreuse bags. +plaid indigo bags contain 3 plaid fuchsia bags, 2 muted tomato bags, 3 muted bronze bags, 1 drab white bag. +light crimson bags contain 2 striped chartreuse bags, 4 bright teal bags, 3 striped fuchsia bags. +bright purple bags contain 2 shiny violet bags. +dark bronze bags contain 3 striped violet bags, 4 clear beige bags. +dark white bags contain 5 faded white bags, 5 striped fuchsia bags, 2 vibrant lime bags, 5 striped tan bags. +mirrored orange bags contain 4 wavy aqua bags. +mirrored cyan bags contain 5 bright bronze bags. +dull blue bags contain 2 bright brown bags, 2 dim plum bags. +posh indigo bags contain 1 posh lime bag. +vibrant brown bags contain 1 bright indigo bag, 2 striped purple bags, 5 mirrored lime bags, 2 plaid plum bags. +wavy coral bags contain no other bags. +posh cyan bags contain 1 plaid plum bag, 2 plaid gold bags, 3 shiny plum bags. +vibrant tan bags contain 5 mirrored turquoise bags, 3 faded gray bags, 5 posh brown bags, 3 clear brown bags. +mirrored black bags contain 5 striped fuchsia bags, 1 striped tan bag, 3 pale green bags. +bright olive bags contain 1 bright orange bag, 4 drab gold bags, 3 dim cyan bags, 2 drab plum bags. +striped blue bags contain 3 dark white bags, 1 clear beige bag, 3 dim olive bags. +dim turquoise bags contain 4 muted turquoise bags, 1 dotted tomato bag, 4 muted brown bags. +posh green bags contain 4 dim gray bags, 4 clear brown bags. +dull magenta bags contain 3 bright plum bags. +dark red bags contain 2 muted magenta bags, 2 dark beige bags, 2 shiny black bags. +pale black bags contain 2 striped bronze bags. +dotted red bags contain 2 striped blue bags, 3 dim violet bags, 3 faded maroon bags. +dark chartreuse bags contain 5 striped orange bags, 5 dark white bags. +clear lavender bags contain 2 faded crimson bags, 5 clear purple bags, 3 vibrant tan bags. +vibrant white bags contain 1 drab crimson bag, 5 dim violet bags. +drab lavender bags contain 3 clear yellow bags, 5 shiny tan bags. +wavy cyan bags contain 5 shiny violet bags. +faded black bags contain 2 posh aqua bags, 5 bright teal bags, 1 posh orange bag, 4 vibrant coral bags. +mirrored tomato bags contain 3 muted cyan bags, 3 drab brown bags, 1 striped orange bag. +faded orange bags contain 3 plaid fuchsia bags, 5 mirrored crimson bags, 2 pale aqua bags, 2 dull lavender bags. +muted salmon bags contain 1 wavy tan bag, 2 muted chartreuse bags, 2 posh green bags, 5 shiny magenta bags. +pale plum bags contain 4 dull teal bags, 1 striped violet bag, 2 wavy crimson bags, 2 posh violet bags. +shiny magenta bags contain 3 muted yellow bags, 5 light beige bags, 1 dull white bag, 4 striped lavender bags. +plaid black bags contain 4 mirrored green bags. +clear plum bags contain 5 posh violet bags. +bright silver bags contain 2 dull yellow bags, 3 striped red bags, 3 dotted olive bags, 5 bright salmon bags. +muted gold bags contain 1 dull olive bag. +vibrant tomato bags contain 4 shiny blue bags, 1 bright indigo bag. +dim black bags contain 1 plaid gold bag, 2 muted white bags. +plaid white bags contain 2 muted cyan bags, 1 mirrored magenta bag, 3 striped red bags, 2 striped violet bags. +drab maroon bags contain 1 dotted cyan bag, 3 shiny orange bags. +shiny purple bags contain 3 posh purple bags. +shiny violet bags contain 3 dark teal bags, 3 shiny olive bags, 4 dull cyan bags, 1 dim plum bag. +dull chartreuse bags contain 2 bright tan bags, 2 wavy fuchsia bags, 4 bright teal bags, 1 posh violet bag. +striped fuchsia bags contain 5 dotted beige bags. +muted lime bags contain 1 vibrant tan bag. +dotted coral bags contain 5 mirrored magenta bags, 4 wavy blue bags. +bright turquoise bags contain 5 pale indigo bags. +bright maroon bags contain 4 plaid salmon bags, 3 wavy coral bags, 4 dull orange bags, 1 pale green bag. +dim green bags contain 4 posh olive bags, 4 dim white bags, 3 clear orange bags. +mirrored bronze bags contain 4 mirrored fuchsia bags. +shiny maroon bags contain 1 wavy maroon bag, 1 drab gray bag, 1 posh white bag. +wavy olive bags contain 1 muted purple bag, 1 shiny brown bag, 5 faded tomato bags. +dotted crimson bags contain 2 shiny blue bags, 4 dotted blue bags, 5 vibrant crimson bags. +mirrored olive bags contain 3 muted bronze bags, 1 drab tomato bag, 3 drab violet bags. +light aqua bags contain 3 faded cyan bags, 4 shiny white bags. +clear fuchsia bags contain 3 bright blue bags. +light green bags contain 2 dim brown bags, 4 drab green bags. +bright magenta bags contain 1 mirrored turquoise bag, 2 dark fuchsia bags, 5 shiny plum bags. +pale fuchsia bags contain 4 wavy purple bags, 2 striped salmon bags, 4 pale black bags, 3 dotted teal bags. +posh tan bags contain 3 plaid purple bags. +dull tomato bags contain 2 clear salmon bags, 2 striped yellow bags, 5 pale indigo bags. +bright white bags contain 1 drab white bag, 4 dim violet bags. +bright gray bags contain 5 muted yellow bags, 5 vibrant crimson bags. +dull silver bags contain 2 muted purple bags. +dotted gray bags contain 2 mirrored magenta bags, 1 dark lavender bag, 1 clear blue bag, 4 faded magenta bags. +wavy gold bags contain 3 mirrored green bags, 5 pale aqua bags. +shiny plum bags contain 5 plaid blue bags, 2 muted white bags, 5 pale gray bags, 2 faded indigo bags. +posh plum bags contain 4 wavy magenta bags, 3 mirrored plum bags. +clear bronze bags contain 4 bright aqua bags, 4 dim white bags, 4 plaid blue bags, 5 plaid black bags. +vibrant teal bags contain 2 light violet bags, 4 clear orange bags, 1 shiny plum bag, 1 light cyan bag. +clear red bags contain 2 drab tan bags. +striped coral bags contain 1 shiny olive bag, 1 dark teal bag, 3 dark white bags. +striped aqua bags contain 4 wavy teal bags, 2 dull chartreuse bags, 3 mirrored cyan bags, 5 plaid gray bags. +drab purple bags contain 1 faded fuchsia bag, 5 dull chartreuse bags, 1 light white bag, 5 posh gold bags. +mirrored brown bags contain 5 bright aqua bags, 5 shiny blue bags, 5 dotted blue bags, 1 posh fuchsia bag. +dim gray bags contain 4 vibrant chartreuse bags, 5 clear beige bags, 1 shiny orange bag, 5 light chartreuse bags. +mirrored purple bags contain 3 shiny gold bags, 4 plaid aqua bags, 4 wavy gold bags. +drab black bags contain 4 faded aqua bags. +pale tomato bags contain 3 vibrant gold bags, 2 dotted cyan bags, 3 wavy brown bags, 5 bright violet bags. +muted plum bags contain 5 dull white bags, 5 drab chartreuse bags, 4 clear gray bags. +bright lime bags contain 1 light chartreuse bag. +light yellow bags contain 1 vibrant teal bag, 1 dull teal bag. +dark fuchsia bags contain 3 dim plum bags, 5 faded purple bags. +dim blue bags contain 5 striped coral bags, 3 drab fuchsia bags, 5 drab salmon bags. +posh orange bags contain 2 pale gray bags, 4 plaid bronze bags, 5 vibrant tan bags. +striped beige bags contain 3 mirrored crimson bags, 3 muted fuchsia bags. +dim fuchsia bags contain 5 clear white bags. +dull orange bags contain 2 striped crimson bags, 2 dark white bags, 1 dark turquoise bag, 3 shiny olive bags. +drab fuchsia bags contain 3 dark crimson bags, 5 clear magenta bags, 5 faded brown bags. +dim tan bags contain 3 dull indigo bags, 3 clear magenta bags. +clear green bags contain 3 bright blue bags, 4 clear teal bags, 2 pale indigo bags. +shiny black bags contain 1 mirrored brown bag. +pale maroon bags contain 2 faded lime bags, 2 wavy red bags, 1 dark orange bag. +faded crimson bags contain 1 posh aqua bag, 5 bright brown bags, 4 dull teal bags, 4 striped orange bags. +muted tan bags contain 2 pale gold bags, 3 striped magenta bags, 5 plaid gold bags, 5 striped fuchsia bags. +light turquoise bags contain 2 dull plum bags. +dull lavender bags contain 3 dark green bags, 3 light brown bags, 2 posh fuchsia bags, 5 posh bronze bags. +pale olive bags contain 5 striped blue bags, 1 striped coral bag, 2 muted white bags. +dark crimson bags contain 1 bright red bag. +vibrant gray bags contain 1 clear coral bag, 4 posh aqua bags, 5 clear brown bags, 5 dull chartreuse bags. +plaid tan bags contain 2 bright coral bags, 3 wavy salmon bags. +bright crimson bags contain 4 clear indigo bags, 3 dim plum bags, 4 posh brown bags. +dotted magenta bags contain 5 bright lime bags, 2 dotted coral bags. +posh aqua bags contain 5 vibrant lime bags, 5 plaid fuchsia bags. +striped turquoise bags contain 5 pale lavender bags. +pale chartreuse bags contain 4 mirrored tan bags, 5 mirrored black bags. +pale tan bags contain 4 plaid beige bags, 3 light tomato bags, 1 dark tan bag, 4 faded lime bags. +wavy plum bags contain 5 dark crimson bags, 4 dim black bags. +posh brown bags contain 3 dark teal bags, 5 striped white bags. +mirrored tan bags contain 3 clear maroon bags, 4 mirrored green bags, 1 dotted red bag, 1 wavy aqua bag. +dotted fuchsia bags contain 3 clear lime bags, 2 dim plum bags, 2 bright salmon bags, 5 faded violet bags. +drab cyan bags contain 4 striped coral bags, 5 faded gray bags, 2 posh orange bags. +light red bags contain 5 faded black bags. +plaid yellow bags contain 3 striped green bags, 4 striped olive bags, 1 mirrored lavender bag. +muted black bags contain 2 muted turquoise bags, 3 wavy bronze bags, 5 wavy teal bags. +plaid silver bags contain 2 drab maroon bags, 2 wavy maroon bags, 5 dark tan bags. +dark coral bags contain 1 posh bronze bag, 5 bright coral bags. +bright violet bags contain 3 posh brown bags, 4 pale orange bags, 2 muted olive bags, 2 posh orange bags. +pale silver bags contain 3 pale fuchsia bags, 4 bright cyan bags. +dim plum bags contain 1 faded brown bag. +mirrored red bags contain 3 dull magenta bags, 2 light gold bags. +posh beige bags contain 5 plaid turquoise bags, 3 clear bronze bags, 5 plaid silver bags. +faded silver bags contain 4 muted violet bags, 3 muted tomato bags, 1 bright yellow bag. +dim coral bags contain 1 faded brown bag, 4 drab cyan bags, 1 shiny olive bag. +drab beige bags contain 5 mirrored fuchsia bags, 1 faded brown bag. +dark purple bags contain 1 striped tan bag, 2 light maroon bags. +drab magenta bags contain 4 dim silver bags, 4 mirrored silver bags, 5 muted tomato bags. +muted orange bags contain 5 dim olive bags, 5 pale brown bags, 2 mirrored black bags, 3 posh green bags. +dotted aqua bags contain 2 faded turquoise bags, 4 light yellow bags, 4 dotted lavender bags. +pale salmon bags contain 4 light cyan bags, 4 bright plum bags. +bright red bags contain 3 bright coral bags, 4 clear brown bags, 1 bright teal bag. +striped lime bags contain 5 bright yellow bags, 1 drab maroon bag, 5 muted silver bags. +clear magenta bags contain 5 light teal bags, 5 dotted cyan bags, 1 pale orange bag. +dull beige bags contain 1 posh cyan bag, 5 dark orange bags, 3 pale cyan bags, 5 drab salmon bags. +striped chartreuse bags contain 4 wavy maroon bags. +pale gray bags contain 1 plaid black bag. +dull black bags contain 3 dull brown bags. +dotted green bags contain 3 shiny maroon bags. +faded turquoise bags contain 2 dark violet bags. +wavy green bags contain 5 light gray bags, 5 vibrant lime bags. +light maroon bags contain 2 dotted teal bags, 3 striped fuchsia bags. +striped indigo bags contain 2 dim crimson bags. +shiny green bags contain 5 mirrored cyan bags, 5 faded red bags, 1 light silver bag, 4 mirrored black bags. +clear indigo bags contain 2 faded gray bags, 2 mirrored green bags. +vibrant magenta bags contain 4 muted silver bags, 3 bright crimson bags. +mirrored violet bags contain 1 dull blue bag. +clear yellow bags contain 1 plaid purple bag, 2 vibrant crimson bags, 3 faded white bags, 4 plaid gold bags. +light white bags contain 4 clear magenta bags, 4 drab green bags, 2 clear chartreuse bags. +striped brown bags contain 4 drab gold bags, 4 plaid red bags, 2 dim coral bags, 4 dim teal bags. +pale crimson bags contain 4 dim green bags, 2 striped crimson bags, 1 striped coral bag, 3 dark salmon bags. +dull olive bags contain 1 striped yellow bag, 2 bright aqua bags. +dark olive bags contain 2 faded indigo bags, 4 dim orange bags, 5 shiny silver bags, 5 dotted turquoise bags. +drab chartreuse bags contain 1 shiny olive bag, 1 posh tomato bag, 1 dark turquoise bag. +pale green bags contain 3 pale gray bags, 1 dim violet bag, 3 striped crimson bags, 3 faded cyan bags. +light gray bags contain 2 pale white bags, 1 dark beige bag, 1 clear purple bag. +plaid olive bags contain 5 drab aqua bags, 1 plaid bronze bag, 4 clear brown bags. +mirrored indigo bags contain 3 striped bronze bags, 3 faded green bags, 2 dotted green bags, 3 dull olive bags. +wavy brown bags contain 4 pale maroon bags. +shiny lime bags contain 2 posh gold bags, 5 posh black bags. +mirrored silver bags contain 4 pale cyan bags, 1 bright bronze bag, 1 mirrored blue bag. +shiny red bags contain 2 wavy purple bags, 5 drab yellow bags. +light coral bags contain 2 pale gold bags. +posh olive bags contain 2 bright aqua bags. +striped black bags contain 3 bright blue bags, 1 light salmon bag, 1 mirrored salmon bag. +dotted lime bags contain 5 muted indigo bags, 2 striped coral bags, 1 shiny orange bag, 4 dim black bags. +wavy fuchsia bags contain 4 clear magenta bags. +light plum bags contain 3 shiny maroon bags. +shiny brown bags contain 1 faded brown bag, 5 light teal bags. +clear tan bags contain 3 dark teal bags, 2 bright plum bags. +pale violet bags contain 1 clear turquoise bag, 4 dark tan bags, 3 muted green bags, 3 posh magenta bags. +plaid coral bags contain 2 faded red bags, 1 faded indigo bag, 4 striped blue bags, 5 vibrant maroon bags. +drab red bags contain 3 mirrored white bags, 5 drab tomato bags, 3 vibrant chartreuse bags, 2 faded crimson bags. +wavy chartreuse bags contain 1 bright brown bag, 2 vibrant aqua bags, 2 drab teal bags. +dull turquoise bags contain 1 dotted chartreuse bag, 1 wavy lime bag, 1 faded gold bag. +wavy tomato bags contain 4 bright orange bags, 4 shiny fuchsia bags, 1 bright gray bag, 1 posh violet bag. +mirrored lime bags contain 1 vibrant salmon bag, 5 dull white bags, 5 dotted lavender bags, 1 dull yellow bag. +muted white bags contain 4 muted olive bags, 3 mirrored green bags, 2 striped coral bags. +muted red bags contain 3 pale indigo bags, 2 dim violet bags, 2 bright red bags. +dotted lavender bags contain 1 clear indigo bag, 5 muted cyan bags, 5 plaid gray bags, 2 plaid aqua bags. +light lavender bags contain 3 drab tomato bags, 1 wavy tan bag, 1 muted magenta bag, 1 striped magenta bag. +faded gray bags contain 4 faded cyan bags. +dark plum bags contain 5 dim violet bags, 1 light teal bag, 3 faded brown bags, 1 plaid gold bag. +vibrant bronze bags contain 1 drab gray bag, 2 faded gray bags. +clear white bags contain 2 dark fuchsia bags, 2 dark gray bags. +pale beige bags contain 1 mirrored fuchsia bag. +bright chartreuse bags contain 3 clear crimson bags. +drab gray bags contain 2 faded gray bags, 4 posh orange bags, 3 dull teal bags, 4 shiny plum bags. +wavy black bags contain 1 pale maroon bag. +dark beige bags contain 1 faded gray bag. +dark violet bags contain 1 muted tan bag, 5 faded brown bags, 3 plaid black bags. +dim beige bags contain 1 dotted turquoise bag, 5 dim teal bags, 3 mirrored crimson bags. +posh silver bags contain 3 striped orange bags, 4 posh teal bags. +muted cyan bags contain 2 drab salmon bags, 1 pale olive bag, 2 dark plum bags. +dark indigo bags contain 2 dim magenta bags, 3 bright orange bags, 4 clear white bags. +dull violet bags contain 2 pale bronze bags, 2 mirrored blue bags. +pale teal bags contain 5 striped maroon bags, 3 pale gray bags. +bright green bags contain 4 drab green bags, 3 drab indigo bags, 5 dull blue bags. +posh violet bags contain 5 wavy white bags. +clear brown bags contain no other bags. \ No newline at end of file diff --git a/day7/program.js b/day7/program.js new file mode 100644 index 0000000..a2fd571 --- /dev/null +++ b/day7/program.js @@ -0,0 +1,53 @@ +const fs = require('fs'); + +const data = fs.readFileSync('./input.txt', 'utf-8'); +const rules = data.split("\n"); + +const allBags = extractRules(rules); +let matches = 0; + +for (color in allBags) { + if(willContainColor(allBags[color], 'shiny gold', {})) { + matches++; + } +}; + +console.log('got matches', matches); + +function extractRules(rules) { + let bagtypes = {}; + rules.forEach(rule => { + const parts = rule.split(' contain '); + parts[1] = parts[1].replace('.',''); + parts[0] = parts[0].replace(' bags', ''); + + const nestedBags = parts[1].split(', '); + bagtypes[parts[0]] = {}; + nestedBags.forEach(bag => { + let count = bag.substr(0,bag.indexOf(' ')); + if (count === 'no') count = 0; + const bagType = bag.substr(bag.indexOf(' ')+1); + let subBagType = bagType.replace(' bags', '').replace(' bag', ''); + bagtypes[parts[0]][subBagType] = count; + + }); + }); + + return bagtypes; +} + +function willContainColor(bags, color, matched) { + for (subColor in bags) { + if (color === subColor) { + return true; + } + + if (!matched.hasOwnProperty(subColor) && bags.hasOwnProperty(subColor)) { + matched[subColor] = true; + if (willContainColor(allBags[subColor], color, matched)) { + return true; + } + } + + } +} \ No newline at end of file From 2bc342cc2f710d902976f5467b5b5596dfe86551 Mon Sep 17 00:00:00 2001 From: Rene Pot Date: Mon, 7 Dec 2020 10:36:42 +0000 Subject: [PATCH 09/59] change console.log for part 1 --- day7/program.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/day7/program.js b/day7/program.js index a2fd571..fc1934e 100644 --- a/day7/program.js +++ b/day7/program.js @@ -12,7 +12,9 @@ for (color in allBags) { } }; -console.log('got matches', matches); +console.log('bags that eventually contain a shiny gold bag', matches); + + function extractRules(rules) { let bagtypes = {}; From a231080751cd9551d16d8079205af9ce6d23029a Mon Sep 17 00:00:00 2001 From: Rene Pot Date: Mon, 7 Dec 2020 11:15:48 +0000 Subject: [PATCH 10/59] add part 2 --- day7/program.js | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/day7/program.js b/day7/program.js index fc1934e..ac959f0 100644 --- a/day7/program.js +++ b/day7/program.js @@ -14,7 +14,8 @@ for (color in allBags) { console.log('bags that eventually contain a shiny gold bag', matches); - +const nestedBags = howManyNestedBags('shiny gold'); +console.log(`We got ${nestedBags} bags nested in shiny gold`); function extractRules(rules) { let bagtypes = {}; @@ -28,6 +29,7 @@ function extractRules(rules) { nestedBags.forEach(bag => { let count = bag.substr(0,bag.indexOf(' ')); if (count === 'no') count = 0; + count = parseInt(count); const bagType = bag.substr(bag.indexOf(' ')+1); let subBagType = bagType.replace(' bags', '').replace(' bag', ''); bagtypes[parts[0]][subBagType] = count; @@ -52,4 +54,22 @@ function willContainColor(bags, color, matched) { } } +} + +function howManyNestedBags(color) { + let bagCount = 0; + + for (subColor in allBags[color]) { + if (subColor !== 'other') { + bagCount += allBags[color][subColor]; + const subColorCount = allBags[color][subColor]; + let subCount = howManyNestedBags(subColor); + if (subCount > 0) { + + subCount = subCount * subColorCount; + bagCount += subCount; + } + } + } + return bagCount; } \ No newline at end of file From 406fad898c928d7053aa8d0c5eb0dafcf34e83e8 Mon Sep 17 00:00:00 2001 From: Rene Pot Date: Mon, 7 Dec 2020 15:19:31 +0000 Subject: [PATCH 11/59] Create README.md --- README.md | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..3962d26 --- /dev/null +++ b/README.md @@ -0,0 +1,9 @@ +# adventofcode2020 + +Hi all! + +My AdventOfCode is node.js based. Step into each day folder and run `node program.js` to run it. + +Replace my input.txt with your content and see if it works for yours as well. + +I am always curious to better solutions, so feel free to PR on an existing day any improvements to the code. As long as they're actually improvements, not just for the sake of shorter. My code should be production-deployable (in my mind) so they should be easily readable. From 8ea78f31a6a3d4f96ae368eb2113a917cd711f15 Mon Sep 17 00:00:00 2001 From: Rene Pot Date: Tue, 8 Dec 2020 15:00:24 +0000 Subject: [PATCH 12/59] add day 8 --- day8/input.txt | 611 ++++++++++++++++++++++++++++++++++++++++++++++++ day8/program.js | 63 +++++ 2 files changed, 674 insertions(+) create mode 100644 day8/input.txt create mode 100644 day8/program.js diff --git a/day8/input.txt b/day8/input.txt new file mode 100644 index 0000000..d521153 --- /dev/null +++ b/day8/input.txt @@ -0,0 +1,611 @@ +acc +22 +acc +42 +nop +456 +jmp +5 +acc +31 +acc +49 +acc +10 +jmp +519 +nop +390 +jmp +418 +nop +29 +acc -4 +jmp +156 +jmp +85 +acc +5 +acc +26 +jmp +497 +acc -6 +acc -18 +acc +20 +acc +4 +jmp -8 +jmp +372 +jmp +371 +jmp -1 +jmp +1 +nop +378 +acc +18 +jmp +388 +jmp +1 +acc +29 +acc +37 +jmp +1 +jmp +425 +acc +19 +acc +13 +jmp +477 +acc +7 +jmp +469 +nop +495 +nop +141 +acc +22 +jmp +517 +jmp +125 +nop +30 +acc +37 +acc +23 +nop +238 +jmp +110 +jmp +411 +acc +2 +acc -19 +acc -19 +jmp +296 +acc +0 +acc +14 +acc +20 +jmp +75 +nop +88 +acc -16 +acc +40 +acc +27 +jmp +131 +acc +33 +nop +252 +acc +5 +acc +0 +jmp +101 +nop +219 +acc +50 +acc +40 +jmp +49 +nop +74 +jmp +327 +acc +47 +jmp +206 +acc -15 +jmp +449 +acc -17 +acc -13 +acc +46 +jmp +417 +jmp +160 +acc -7 +acc -11 +acc +16 +acc +14 +jmp -37 +acc -12 +acc +15 +acc -14 +nop +110 +jmp +1 +acc -4 +nop +287 +nop -82 +jmp +30 +jmp +490 +acc +34 +jmp +305 +nop +90 +jmp +1 +nop -4 +nop -95 +jmp -46 +acc +26 +acc +13 +acc +47 +jmp +350 +acc +11 +jmp -102 +acc -2 +jmp +489 +acc +28 +acc +24 +nop +486 +jmp +485 +nop +170 +jmp +66 +jmp +411 +acc +30 +acc +48 +acc +48 +jmp -6 +acc +11 +jmp -51 +jmp +1 +jmp -10 +nop +411 +acc -17 +acc +32 +jmp +9 +jmp +398 +nop +82 +jmp +6 +acc +45 +acc +34 +jmp -44 +acc -13 +jmp -122 +acc +25 +nop +286 +acc +5 +jmp +144 +acc +0 +jmp -122 +acc -11 +acc -6 +jmp -123 +acc +16 +acc +1 +jmp -58 +nop +242 +acc -11 +jmp +257 +nop +231 +acc +46 +jmp +301 +acc -6 +acc +20 +acc -7 +jmp +365 +acc +32 +acc +0 +jmp -66 +jmp +110 +acc -18 +jmp +118 +acc +33 +nop -125 +acc +49 +acc +36 +jmp +188 +acc +9 +acc -11 +jmp +100 +acc +35 +jmp +55 +acc +38 +acc -1 +jmp +312 +jmp +157 +acc +17 +jmp +177 +nop -126 +acc +30 +acc -3 +jmp +211 +acc -3 +jmp -164 +jmp -112 +acc +50 +jmp +268 +nop +290 +acc -8 +acc +35 +jmp -44 +acc -6 +acc +11 +nop +327 +jmp +155 +acc +10 +acc +35 +nop +233 +jmp +330 +acc +31 +acc +8 +jmp +124 +acc -5 +jmp +300 +nop +171 +nop +4 +acc +19 +acc +41 +jmp -156 +nop +179 +acc +12 +jmp +160 +jmp -92 +acc -11 +acc -10 +jmp +95 +nop +94 +acc -8 +jmp -199 +acc +16 +acc +30 +nop +73 +acc +36 +jmp -53 +jmp +1 +jmp -6 +nop +369 +acc +29 +acc +47 +jmp +32 +acc +35 +jmp -61 +acc +41 +jmp +352 +acc -1 +jmp +75 +acc -10 +acc +28 +acc -15 +jmp -187 +acc +6 +jmp +1 +nop +112 +jmp +273 +nop +186 +acc +11 +acc +40 +jmp +128 +acc +17 +acc +23 +acc -8 +nop +277 +jmp +42 +acc +11 +nop -237 +acc +36 +acc +32 +jmp +287 +acc +16 +acc -19 +jmp +115 +acc -6 +acc +16 +nop -2 +acc +23 +jmp -160 +acc -10 +acc -10 +jmp +26 +acc -7 +jmp -95 +nop -160 +acc -2 +acc +44 +jmp -236 +jmp -198 +jmp +1 +acc +1 +jmp -9 +jmp -95 +jmp +273 +acc -19 +jmp -46 +acc +12 +acc +2 +jmp -145 +acc -14 +acc +3 +acc +3 +jmp +250 +acc +4 +acc +40 +jmp +1 +jmp +17 +acc +6 +acc +47 +jmp -77 +nop -192 +acc +11 +jmp +296 +acc -14 +jmp +64 +acc +35 +jmp +134 +acc -8 +nop +228 +acc +24 +acc +15 +jmp -64 +jmp -241 +acc +19 +acc +22 +acc +49 +nop -193 +jmp +219 +acc -1 +acc -11 +nop +211 +acc +0 +jmp -106 +nop +101 +jmp -222 +acc +20 +acc +45 +jmp +70 +acc +19 +acc +21 +jmp -23 +acc +8 +nop +92 +acc +47 +jmp -144 +acc +0 +acc -1 +jmp -81 +acc +23 +jmp -274 +acc +14 +acc +26 +acc +9 +jmp +79 +acc +22 +jmp -331 +acc -10 +jmp -311 +acc +16 +acc +30 +acc -8 +jmp +176 +acc -19 +acc +43 +jmp -222 +nop -116 +jmp +18 +acc +26 +acc +23 +acc +6 +jmp -162 +acc +34 +jmp +95 +acc +27 +acc +40 +acc +9 +jmp -77 +jmp +137 +acc -13 +acc +21 +acc +17 +acc -5 +jmp +91 +jmp -95 +acc +18 +acc -1 +jmp +70 +jmp -355 +nop -166 +acc -19 +acc +16 +jmp -146 +jmp -135 +jmp +57 +acc +45 +jmp -62 +acc -14 +jmp -382 +nop -172 +acc +45 +jmp -77 +acc +13 +jmp +65 +acc -4 +jmp +112 +jmp +107 +jmp +26 +jmp -326 +acc +25 +jmp +1 +jmp +179 +acc +33 +acc +2 +jmp -222 +nop +36 +acc +25 +nop -244 +jmp -376 +jmp -203 +acc +26 +nop +109 +acc +38 +jmp +135 +acc +7 +acc +40 +acc -18 +jmp -113 +nop -294 +acc +0 +acc +40 +nop -265 +jmp +81 +jmp -99 +jmp +32 +acc -17 +acc +25 +acc -12 +acc +26 +jmp -125 +acc -3 +acc -7 +acc +25 +jmp -410 +acc +47 +acc +36 +jmp +35 +acc +2 +acc +18 +acc -3 +jmp -38 +acc +29 +acc +49 +jmp -299 +acc -4 +nop -422 +jmp +50 +acc +11 +acc +2 +acc +49 +jmp -233 +acc +12 +acc +43 +acc -19 +acc +11 +jmp -264 +jmp +124 +jmp -361 +acc +35 +jmp -118 +acc +23 +acc -16 +acc -14 +jmp -22 +jmp -135 +jmp -309 +acc +6 +jmp -44 +acc -12 +acc +0 +jmp -23 +acc +29 +acc -8 +acc +18 +acc +35 +jmp -111 +acc +22 +acc +23 +acc +0 +acc -8 +jmp -55 +acc +14 +jmp +1 +acc +44 +acc +17 +jmp -272 +acc +39 +nop +37 +acc -19 +jmp -323 +acc +24 +acc +28 +acc +29 +acc +37 +jmp +110 +jmp -386 +nop -352 +acc +23 +acc +38 +jmp -369 +acc -5 +acc -14 +jmp +83 +jmp +17 +jmp -151 +jmp -118 +jmp -104 +jmp -341 +acc +32 +acc +43 +jmp -52 +acc -4 +acc +42 +acc +5 +jmp -116 +acc +13 +jmp +1 +nop -361 +acc +41 +jmp -386 +jmp -241 +nop -449 +acc +46 +jmp -176 +acc +6 +jmp +60 +jmp +1 +jmp -3 +jmp -62 +acc -14 +acc +17 +jmp -340 +acc +31 +acc -13 +acc +7 +jmp -54 +jmp -80 +acc +14 +acc +49 +acc +34 +jmp +24 +acc +11 +jmp -158 +acc -13 +jmp -261 +acc +33 +nop -171 +jmp -106 +acc +0 +acc +9 +acc +16 +acc +34 +jmp +18 +acc -2 +acc +47 +acc +39 +jmp -232 +acc +23 +nop -229 +acc +30 +acc +32 +jmp -147 +acc -8 +jmp -460 +jmp -498 +nop -218 +acc +31 +acc +44 +acc +30 +jmp -105 +acc +8 +acc -19 +acc +45 +nop -49 +jmp -140 +nop -43 +acc +42 +jmp +1 +acc -14 +jmp -42 +jmp -389 +acc +39 +acc +26 +acc +38 +jmp -77 +acc +48 +jmp -83 +acc +5 +jmp -81 +nop -242 +acc +35 +acc +0 +acc +19 +jmp -430 +acc +11 +nop -226 +acc +13 +acc +23 +jmp -575 +acc +44 +acc +50 +nop -303 +jmp -112 +jmp -305 +acc +23 +acc -11 +nop -376 +acc +50 +jmp +1 \ No newline at end of file diff --git a/day8/program.js b/day8/program.js new file mode 100644 index 0000000..e47cd61 --- /dev/null +++ b/day8/program.js @@ -0,0 +1,63 @@ +const { exec } = require('child_process'); +const fs = require('fs'); + +const data = fs.readFileSync('./input.txt', 'utf-8'); +const readData = data.split("\n"); +execute(readData, true); + +readData.forEach((l, i) => { + const copy = JSON.parse(JSON.stringify(readData)); + + if (l.indexOf('nop') > -1) { + copy[i] = l.replace('nop','jmp'); + } else if (l.indexOf('jmp') > -1) { + copy[i] = l.replace('jmp','nop'); + } + + execute(copy); +}); + + +function execute(instructions, outputDeadEnd) { + const lines = []; + let acc = 0; + let line = 0; + let executedLines = []; + + instructions.forEach(i => { + lines.push(splitInstruction(i)); + }); + + run(); + + function splitInstruction(instruction) { + const parts = instruction.split(' '); + const type = parts[0]; + const amount = parts[1].indexOf('+') > -1 ? parseInt(parts[1].substr(1)) : parseInt(parts[1]); + return {type: type, amount: amount}; + } + + function run() { + if (executedLines.indexOf(line) > -1) { + if (outputDeadEnd) { + console.log('Part 1', acc); + } + return; + } + + const instrcution = lines[line]; + executedLines.push(line); + + if (instrcution.type === 'acc') { + acc += instrcution.amount; + line++; + } else if (instrcution.type === 'nop') { + line++; + } else if (instrcution.type === 'jmp') { + line += instrcution.amount; + } + + if (instructions[line]) return run(); + console.log('Part 2: ', acc); + } +} \ No newline at end of file From 917dd576658382a58c2cf17f39319fe08e476f49 Mon Sep 17 00:00:00 2001 From: Rene Pot Date: Tue, 8 Dec 2020 15:06:51 +0000 Subject: [PATCH 13/59] improve speed --- day8/program.js | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/day8/program.js b/day8/program.js index e47cd61..1853bc6 100644 --- a/day8/program.js +++ b/day8/program.js @@ -3,11 +3,12 @@ const fs = require('fs'); const data = fs.readFileSync('./input.txt', 'utf-8'); const readData = data.split("\n"); -execute(readData, true); + +let onlyChangeTheseLines = execute(readData, true); readData.forEach((l, i) => { const copy = JSON.parse(JSON.stringify(readData)); - + if (onlyChangeTheseLines.indexOf(i) === -1) return; if (l.indexOf('nop') > -1) { copy[i] = l.replace('nop','jmp'); } else if (l.indexOf('jmp') > -1) { @@ -22,13 +23,13 @@ function execute(instructions, outputDeadEnd) { const lines = []; let acc = 0; let line = 0; - let executedLines = []; + let executedLines = []; instructions.forEach(i => { lines.push(splitInstruction(i)); }); - run(); + return run(); function splitInstruction(instruction) { const parts = instruction.split(' '); @@ -42,7 +43,7 @@ function execute(instructions, outputDeadEnd) { if (outputDeadEnd) { console.log('Part 1', acc); } - return; + return executedLines; } const instrcution = lines[line]; From 99b990edfe1f7baa7d1b391ab209df37be2eb726 Mon Sep 17 00:00:00 2001 From: Rene Pot Date: Wed, 9 Dec 2020 13:08:00 +0000 Subject: [PATCH 14/59] remove accidental require --- day8/program.js | 1 - 1 file changed, 1 deletion(-) diff --git a/day8/program.js b/day8/program.js index 1853bc6..4715098 100644 --- a/day8/program.js +++ b/day8/program.js @@ -1,4 +1,3 @@ -const { exec } = require('child_process'); const fs = require('fs'); const data = fs.readFileSync('./input.txt', 'utf-8'); From 64e27b6388da0777f630d2f7d4d35076a6fa542e Mon Sep 17 00:00:00 2001 From: Rene Pot Date: Thu, 10 Dec 2020 11:40:23 +0000 Subject: [PATCH 15/59] add day 9 --- day9/input.txt | 1000 +++++++++++++++++++++++++++++++++++++++++++++++ day9/program.js | 71 ++++ 2 files changed, 1071 insertions(+) create mode 100644 day9/input.txt create mode 100644 day9/program.js diff --git a/day9/input.txt b/day9/input.txt new file mode 100644 index 0000000..a178437 --- /dev/null +++ b/day9/input.txt @@ -0,0 +1,1000 @@ +37 +7 +16 +34 +48 +24 +5 +40 +30 +35 +2 +45 +19 +33 +36 +49 +32 +1 +44 +21 +25 +3 +11 +38 +15 +4 +6 +7 +8 +16 +9 +10 +5 +12 +13 +17 +14 +35 +18 +19 +20 +23 +36 +53 +22 +21 +41 +28 +11 +24 +15 +25 +26 +27 +29 +64 +50 +31 +30 +34 +32 +44 +33 +47 +74 +35 +66 +37 +36 +38 +45 +39 +40 +41 +42 +57 +51 +55 +68 +70 +71 +72 +61 +88 +65 +75 +140 +77 +73 +82 +110 +81 +74 +116 +86 +80 +112 +83 +92 +128 +141 +106 +120 +146 +126 +147 +133 +134 +138 +139 +156 +209 +162 +160 +154 +155 +233 +216 +163 +313 +298 +273 +189 +198 +226 +253 +232 +265 +259 +260 +316 +267 +272 +277 +449 +428 +314 +309 +471 +318 +379 +430 +458 +387 +683 +475 +415 +421 +486 +525 +544 +575 +532 +519 +632 +539 +590 +739 +586 +623 +627 +688 +696 +697 +804 +1072 +1119 +940 +808 +896 +836 +990 +907 +1107 +1436 +1114 +1129 +1051 +1058 +1754 +1385 +1644 +1459 +1250 +2686 +1324 +2442 +1504 +1501 +1612 +1704 +1915 +1715 +1732 +1826 +1897 +2048 +2431 +2109 +3004 +2165 +2825 +2301 +3039 +2862 +3145 +2574 +2709 +2751 +3447 +4043 +3005 +4198 +3113 +3612 +4910 +3629 +3541 +4306 +4157 +4466 +4349 +4274 +5113 +5027 +5446 +6186 +7889 +8522 +5436 +5854 +5283 +5864 +6292 +6118 +6546 +6617 +6742 +6654 +7241 +7170 +7698 +8431 +11231 +8506 +8623 +9301 +9387 +10140 +10310 +12518 +11137 +10719 +11147 +11290 +11401 +11575 +12156 +12410 +12664 +16757 +13271 +13396 +19611 +14411 +14868 +17129 +16937 +29793 +17807 +17924 +18688 +27532 +23665 +21029 +21866 +23954 +22009 +22976 +30217 +34022 +25986 +27807 +29601 +30400 +26667 +27682 +28264 +40602 +29279 +31805 +34066 +41472 +45606 +41589 +47696 +48711 +55214 +43038 +57543 +69154 +45963 +77223 +66588 +68866 +55265 +115299 +58207 +54349 +95816 +68284 +62330 +115750 +61084 +100312 +90012 +116995 +100820 +84627 +139841 +94674 +89001 +97387 +98303 +190490 +178080 +109614 +112556 +113472 +115433 +116349 +225364 +116679 +122633 +194241 +123414 +145711 +158471 +150085 +173628 +268085 +179301 +198099 +182014 +183675 +186388 +391499 +207001 +207917 +222170 +223086 +229235 +323350 +228905 +530351 +233028 +239312 +262390 +304647 +308556 +389397 +295796 +344859 +415293 +352929 +380113 +430087 +405100 +365689 +370063 +393389 +545520 +431003 +530726 +445256 +456114 +462263 +533552 +524701 +472340 +846296 +535108 +674245 +763452 +604352 +640655 +758059 +697788 +718618 +733042 +1129053 +759078 +838645 +876259 +824392 +918090 +887117 +893266 +907519 +901370 +1591316 +934603 +1469711 +1359500 +1742482 +1139460 +1175763 +1245007 +1302140 +1362411 +1338443 +1571687 +1416406 +1963852 +1557434 +1583470 +1597723 +1663037 +1769525 +2032726 +1780383 +1827869 +3212193 +1808889 +2351009 +2908044 +2538174 +2384467 +3385303 +3352070 +2315223 +2420770 +2547147 +2640583 +2778817 +3886910 +2973840 +2999876 +4336251 +3140904 +3181193 +5009062 +4606686 +4229659 +5601963 +3589272 +3636758 +4124112 +4159898 +4666232 +4699690 +4735993 +4805237 +6183905 +4862370 +4955806 +4967917 +5187730 +5419400 +7370563 +5973716 +6589148 +7226030 +6322097 +10580402 +6817951 +7713384 +11509827 +7749170 +7760870 +7796656 +8824488 +8860105 +8895891 +10281770 +12554407 +15536208 +9667607 +16645061 +13548127 +9923723 +13692660 +10607130 +22222014 +12295813 +14531335 +12911245 +20092469 +19476293 +14567121 +15678056 +15462554 +15510040 +18356300 +30972594 +19141875 +34623804 +17755996 +18563498 +19591330 +25386277 +20274737 +20530853 +27240787 +22902943 +22219536 +30198460 +30667241 +25207058 +26827148 +27442580 +43742577 +32323117 +30029675 +34158451 +33218550 +33266036 +33866340 +36112296 +37347326 +36319494 +52721949 +44977607 +38154828 +39866067 +40805590 +42494273 +43433796 +68014567 +45122479 +55485572 +58425608 +52034206 +52649638 +76652724 +57472255 +128686930 +95216222 +73666820 +66484586 +67084890 +69378332 +91338595 +72431790 +137710495 +74474322 +78020895 +127917362 +84988546 +84239386 +83299863 +85928069 +111607065 +132899930 +135078332 +186342970 +104683844 +109506461 +110121893 +123956841 +124557145 +161700808 +256917030 +186081387 +146906112 +136463222 +141810122 +150452685 +158713708 +207374252 +157774185 +167539249 +168288409 +193421756 +169227932 +269381250 +197535134 +229240989 +214190305 +244584793 +214805737 +219628354 +177777905 +246585115 +286915907 +261020367 +278273344 +311038054 +335827658 +283369334 +292262807 +360961005 +396780238 +437669659 +325313434 +365074383 +448869343 +361710165 +347005837 +608295280 +392583642 +422362698 +391968210 +397406259 +424363020 +456051249 +503091339 +461147239 +893720908 +561642678 +589311398 +570536151 +675337544 +619196992 +575632141 +639268644 +707966842 +708716002 +672319271 +687023599 +821769279 +754293807 +738974047 +739589479 +1483032306 +1031683390 +789374469 +1036779380 +1233961949 +880414269 +1133466510 +964238578 +1022789917 +1809594090 +2272406775 +1164943539 +1209804795 +1214900785 +1194829133 +1247951412 +1461693740 +1359342870 +1791073187 +1411908750 +1651262177 +1478563526 +1493883286 +1821057859 +1776368859 +1753613047 +1954318008 +2156256427 +1844652847 +1903204186 +3010605047 +1987028495 +2129182117 +2187733456 +3196833290 +3284956473 +2359772672 +2404633928 +2409729918 +2442780545 +2607294282 +2771251620 +2837906396 +3920255304 +2905792036 +3747857033 +3323216373 +3247496333 +4630514001 +4802553217 +3598265894 +4510498468 +4307838114 +3831681342 +4174761951 +4116210612 +7346122927 +4316915573 +4597463374 +5652130261 +4847414473 +4764406600 +6236315270 +5050074827 +5214032165 +7618666093 +6369517514 +8918763829 +6153288369 +6229008409 +6570712706 +6921482267 +7422258284 +7714476506 +7906104008 +7915181467 +8148596915 +11663038500 +8679095815 +8290972563 +8433126185 +8914378947 +9081322173 +11168176080 +9611821073 +13362629080 +9814481427 +10264106992 +11203363196 +12382296778 +14284698981 +12522805883 +12724001075 +16834819698 +23726169079 +13492194973 +17995701120 +15136734790 +15620580514 +15821285475 +22196778205 +16439569478 +16724098748 +23306676400 +17514448358 +17347505132 +18728860374 +18693143246 +19426302500 +19875928065 +21467470188 +21017844623 +32651183148 +24905102661 +28002877292 +31949108383 +31860833538 +40450267827 +29313480448 +28628929763 +38018063680 +33616281634 +34238547106 +31441865989 +59143411073 +33163668226 +36040648378 +34071603880 +48956314347 +36243308732 +60070795752 +49020721915 +55083751822 +39302230565 +40893772688 +70744096554 +45922947284 +52907979953 +54218583109 +59951985675 +63385084328 +57942410211 +62477148674 +93101815502 +61792597989 +65680413095 +64605534215 +93919014663 +67235272106 +69204316604 +69406976958 +70112252258 +70314912612 +75545539297 +110813319904 +88322952480 +80196003253 +150800101154 +118824117324 +110098089292 +98830927237 +100141530393 +112160993320 +114170568784 +129027870095 +157729929438 +199136272384 +124269746663 +186062344652 +127473011084 +130285947310 +133809850819 +136439588710 +183374885388 +138611293562 +139519229216 +250332549120 +194366572037 +204465749916 +316348291962 +168518955733 +210481950563 +314563839208 +232640778056 +238752823955 +198972457630 +212302523713 +250610157494 +438833585871 +251742757747 +266992240300 +266084304646 +705825826171 +257758958394 +270249439529 +264095798129 +272421144381 +404848522600 +441133843782 +278130522778 +308038184949 +362885527770 +367491413363 +379000906296 +380821479446 +502352915241 +409454408193 +411274981343 +431613235686 +437725281585 +478386828359 +484723668094 +633575718009 +509501716141 +703809586231 +523843263040 +852408825125 +521854756523 +528008397923 +534345237658 +766448713370 +653242623827 +778766394706 +586168707727 +641016050548 +688859664395 +730376941133 +869844328604 +889661809702 +790275887639 +820729389536 +841067643879 +842888217029 +955456498726 +1110011970767 +1070892375821 +1573265158162 +1227184758275 +1031356472664 +1056199994181 +1045698019563 +1252231697656 +1162870807071 +1169024448471 +1264722178791 +1479135552034 +1239411331554 +1275028372122 +1427236351606 +1510860379152 +2589147522801 +2054998066430 +2180904346588 +1611005277175 +1631343531518 +1776185888262 +1683955860908 +1798344715755 +2077054492227 +2087556466845 +2116590395384 +3761010353135 +2101898013744 +2194227279735 +2208568826634 +2402282138625 +3878083902006 +2331895255542 +4408949747769 +3458949458526 +2514439703676 +2666647683160 +2702264723728 +2938096730758 +3121865656327 +3460141749170 +3242348808693 +4325159222018 +5090292990044 +3315299392426 +3482300576663 +5330434482961 +3992571995490 +4631030099060 +6603177027504 +4218488409128 +4296125293479 +6148948259823 +4402796106369 +6364214465020 +5884582715288 +4846334959218 +4998542938702 +5181087386836 +6017564116154 +5216704427404 +9033826205429 +5640361454486 +8698921399848 +6582007405497 +6557648201119 +9936627949262 +7718095498795 +9199882107714 +7307871387916 +9961464582021 +8838906954708 +10215247366106 +9477365058278 +8514613702607 +20151875315368 +9142460252697 +9401339045071 +9583883493205 +15142551968857 +19249073571535 +11234268543558 +10179630325538 +10397791814240 +15983346450568 +26198593816674 +12198009655605 +12948232842402 +15781889513211 +15724467658194 +13865519589035 +15025966886711 +17679560080816 +15822485090523 +16146778342624 +25939715024300 +30924441482068 +24924349765908 +17657073955304 +18098497195812 +18543799297768 +28913828624374 +18985222538276 +19763513818743 +20577422139778 +31707814108762 +21413898869096 +34325688810979 +27922477313799 +25146242498007 +38256982220594 +32409318886803 +31545079669851 +28891486475746 +53838178390282 +29688004679558 +30848451977234 +39957698166864 +50472467153603 +33803852297928 +68570964349415 +57805315100120 +37083719734088 +35755571151116 +36642296493580 +63239517435353 +38748736357019 +66735007697782 +44909756316750 +79219213969216 +46560141367103 +49336376182895 +57555561384810 +64647057626862 +78706434523883 +115861510462796 +62097323566361 +114974785120332 +78227862658641 +60536456656792 +66771724413646 \ No newline at end of file diff --git a/day9/program.js b/day9/program.js new file mode 100644 index 0000000..9b73d4f --- /dev/null +++ b/day9/program.js @@ -0,0 +1,71 @@ +const fs = require('fs'); + +const data = fs.readFileSync('./input.txt', 'utf-8'); +const itemsToCheck = 25; + +loopData(data.split("\n")); + +function loopData(rows) { + let last25 = []; + + rows.forEach((row, i) => { + if (last25.length === itemsToCheck+1) last25.splice(0,1); + if (last25.length === itemsToCheck) { + if (!hasSum(parseInt(row), last25)) { + console.log(i, 'part 1 FAIL', row); + + findSum(rows, parseInt(row)); + } + } + last25.push(parseInt(row)); + }); +} + +function hasSum(num, nums) { + for (let i = 0; i < nums.length; i++) { + const n1 = nums[i]; + for (let j = 0; j < nums.length; j++) { + const n2 = nums[j]; + const sum = parseInt(n1+n2); + if (num === sum) { + return true; + } + } + } + return false; +} + +function findSum(nums, sumToFind) { + let sum = 0; + let uses = []; + let found = false; + + nums.forEach(n => { + if (found) return; + if (sumOfArray(uses) > sumToFind && uses.length > 1) uses = stripToBelow(sumToFind, uses); + + if (sumOfArray(uses) === sumToFind) { + found = true; + uses.sort((a,b) => { return a > b ? 1 : -1}); + console.log('part 2 gotcha!', uses[0] + uses[uses.length - 1] , uses); + } + uses.push(parseInt(n)); + }); +} + +function stripToBelow(sumToFind, items) { + + items.splice(0, 1); + if (sumOfArray(items) > sumToFind && items.length > 1) { + return stripToBelow(sumToFind, items); + } + return items; +} + +function sumOfArray(items) { + let sum = 0; + items.forEach(i => { + sum += i; + }) + return sum; +} \ No newline at end of file From 1139396043c6a2f1187448ae24d80835cb2a536c Mon Sep 17 00:00:00 2001 From: Rene Pot Date: Thu, 10 Dec 2020 11:53:45 +0000 Subject: [PATCH 16/59] part 1 day 10 --- day10/input.txt | 104 +++++++++++++++++++++++++++++++++++++++++++++++ day10/program.js | 27 ++++++++++++ 2 files changed, 131 insertions(+) create mode 100644 day10/input.txt create mode 100644 day10/program.js diff --git a/day10/input.txt b/day10/input.txt new file mode 100644 index 0000000..e15aff5 --- /dev/null +++ b/day10/input.txt @@ -0,0 +1,104 @@ +2 +49 +78 +116 +143 +42 +142 +87 +132 +86 +67 +44 +136 +82 +125 +1 +108 +123 +46 +37 +137 +148 +106 +121 +10 +64 +165 +17 +102 +156 +22 +117 +31 +38 +24 +69 +131 +144 +162 +63 +171 +153 +90 +9 +107 +79 +7 +55 +138 +34 +52 +77 +152 +3 +158 +100 +45 +129 +130 +135 +23 +93 +96 +103 +124 +95 +8 +62 +39 +118 +164 +172 +75 +122 +20 +145 +14 +112 +61 +43 +141 +30 +85 +101 +151 +29 +113 +94 +68 +58 +76 +97 +28 +111 +128 +21 +11 +163 +161 +4 +168 +157 +27 +72 \ No newline at end of file diff --git a/day10/program.js b/day10/program.js new file mode 100644 index 0000000..942945a --- /dev/null +++ b/day10/program.js @@ -0,0 +1,27 @@ +const fs = require('fs'); + +const data = fs.readFileSync('./input.txt', 'utf-8'); +let adapters = data.split("\n"); + +adapters.forEach((a, i) => { + adapters[i] = parseInt(a); +}); + +findAdapterJumps(adapters); + + +function findAdapterJumps(items) { + items.sort((a,b) => { return a > b ? 1 : -1}); + + let jump1 = 0; + let jump3 = 1; + let currentCharge = 0; + + items.forEach(i => { + if (i - currentCharge === 1) jump1++; + if (i - currentCharge === 3) jump3++; + currentCharge = i; + }); + + console.log(jump1, jump3, 'answer part 1: ', jump1 * jump3); +} \ No newline at end of file From 37ff8fb9401ddedfd45e4824815ad6b25a681d4b Mon Sep 17 00:00:00 2001 From: Rene Pot Date: Thu, 10 Dec 2020 16:28:14 +0000 Subject: [PATCH 17/59] add part 2 --- day10/program.js | 34 ++++++++++++++++++++++++++++++---- day9/program.js | 1 - 2 files changed, 30 insertions(+), 5 deletions(-) diff --git a/day10/program.js b/day10/program.js index 942945a..691869b 100644 --- a/day10/program.js +++ b/day10/program.js @@ -7,21 +7,47 @@ adapters.forEach((a, i) => { adapters[i] = parseInt(a); }); +adapters.sort((a,b) => { return a > b ? 1 : -1}); findAdapterJumps(adapters); - +calculateArrangements(adapters); function findAdapterJumps(items) { - items.sort((a,b) => { return a > b ? 1 : -1}); - let jump1 = 0; let jump3 = 1; let currentCharge = 0; items.forEach(i => { if (i - currentCharge === 1) jump1++; - if (i - currentCharge === 3) jump3++; + else if (i - currentCharge === 3) jump3++; currentCharge = i; }); console.log(jump1, jump3, 'answer part 1: ', jump1 * jump3); +} + +function calculateArrangements(items) { + let sequenceLength = 1; + let lastNum = 0; + + let multi = { + 1: 0, + 2: 0, + 3: 0, + 4: 0, + 5: 0 + } + + items.forEach(item => { + if (item - lastNum === 1) sequenceLength++; + else { + multi[sequenceLength]++; + sequenceLength = 1; + } + lastNum = item; + }); + multi[sequenceLength]++; + + // 2,4 & 7 are hardcoded. Calculation is on todo here + let res = Math.pow(2,multi[3])*Math.pow(4,multi[4])*Math.pow(7,multi[5]); + console.log('part 2', res); } \ No newline at end of file diff --git a/day9/program.js b/day9/program.js index 9b73d4f..3df59f8 100644 --- a/day9/program.js +++ b/day9/program.js @@ -36,7 +36,6 @@ function hasSum(num, nums) { } function findSum(nums, sumToFind) { - let sum = 0; let uses = []; let found = false; From c173b7ddd5720f1f13836d3c76fc04731f41e4e8 Mon Sep 17 00:00:00 2001 From: Rene Pot Date: Wed, 1 Dec 2021 15:58:56 +0100 Subject: [PATCH 18/59] bootstrapping --- README.md | 15 +- day1/input.txt | 2180 +++++++++++++++++++++++++++++++++++++++++---- day1/program.js | 38 +- day10/input.txt | 104 --- day10/program.js | 53 -- day2/input.txt | 1000 --------------------- day2/program.js | 68 -- day3/input.txt | 323 ------- day3/program.js | 35 - day4/input.txt | 1169 ------------------------ day4/program.js | 94 -- day5/input.txt | 888 ------------------ day5/program.js | 60 -- day6/input.txt | 2040 ------------------------------------------ day6/program.js | 40 - day7/input.txt | 594 ------------ day7/program.js | 75 -- day8/input.txt | 611 ------------- day8/program.js | 63 -- day9/input.txt | 1000 --------------------- day9/program.js | 70 -- helper.js | 6 + index.js | 11 + package-lock.json | 6 + package.json | 20 + 25 files changed, 2047 insertions(+), 8516 deletions(-) delete mode 100644 day10/input.txt delete mode 100644 day10/program.js delete mode 100644 day2/input.txt delete mode 100644 day2/program.js delete mode 100644 day3/input.txt delete mode 100644 day3/program.js delete mode 100644 day4/input.txt delete mode 100644 day4/program.js delete mode 100644 day5/input.txt delete mode 100644 day5/program.js delete mode 100644 day6/input.txt delete mode 100644 day6/program.js delete mode 100644 day7/input.txt delete mode 100644 day7/program.js delete mode 100644 day8/input.txt delete mode 100644 day8/program.js delete mode 100644 day9/input.txt delete mode 100644 day9/program.js create mode 100644 helper.js create mode 100644 index.js create mode 100644 package-lock.json create mode 100644 package.json diff --git a/README.md b/README.md index 3962d26..b330d78 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,18 @@ -# adventofcode2020 +# Advent of Code Hi all! -My AdventOfCode is node.js based. Step into each day folder and run `node program.js` to run it. +My AdventOfCode is `node.js` based. -Replace my input.txt with your content and see if it works for yours as well. +To run any day, type `node index.js ` and it will execute the day you inputted. Make sure you fill the relevant `input.txt` file with the input for that day if you want to see your own code. + +The current main branch is 2021, but my code from last year is also available in branch 2020. I didn't get further than day 10 yet though. + + +For 2020: Step into each day folder and run `node program.js` to run it. + +In any solution you can replace my input.txt with your content and see if it works for yours as well. I am always curious to better solutions, so feel free to PR on an existing day any improvements to the code. As long as they're actually improvements, not just for the sake of shorter. My code should be production-deployable (in my mind) so they should be easily readable. + +For this purpose, also read [my article about 1-liners](https://javascript.plainenglish.io/we-need-to-talk-about-the-one-liners-58f460c05fc5?source=friends_link&sk=102a7a363db7988174bfb87666f63ecb). I would say I prefer longer code as long as it is readable. If something can be faster, then of course it should be. diff --git a/day1/input.txt b/day1/input.txt index ea74611..b6b18e5 100644 --- a/day1/input.txt +++ b/day1/input.txt @@ -1,200 +1,2000 @@ -1918 -1869 -1821 -1852 -1981 -1987 -1989 -1597 -1634 -1537 -1991 -1603 -1543 -1949 -1879 -1800 -1761 -2010 -1810 -1458 -1755 -1938 +176 +184 +196 +199 +204 +206 +219 +215 +216 +217 +218 +230 +231 +214 +210 +189 +174 +170 +162 +167 +173 +182 +177 +179 +180 +182 +198 +201 +200 +207 +203 +213 +231 +222 +223 +224 +209 +217 +228 +236 +243 +241 +260 +262 +258 +260 +254 +270 +271 +278 +264 +263 +262 +260 +261 +234 +229 +233 +208 +210 +211 +210 +206 +207 +209 +199 +201 +218 +210 +206 +207 +218 +221 +229 +233 +234 +235 +246 +253 +254 +260 +259 +253 +254 +275 +277 +295 +296 +299 +333 +334 +336 +337 +339 +347 +374 +369 +371 +376 +371 +374 +375 +371 +374 +381 +383 +384 +395 +396 +400 +395 +397 +399 +389 +396 +390 +404 +411 +412 +428 +424 +433 +431 +437 +473 +489 +486 +488 +479 +480 +484 +474 +475 +471 +492 +493 +501 +512 +509 +506 +519 +523 +522 +521 +535 +548 +531 +519 +523 +522 +516 +512 +522 +547 +581 +582 +580 +579 +580 +600 +595 +592 +587 +588 +591 +592 +583 +586 +584 +597 +610 +592 +581 +583 +578 +575 +582 +579 +587 +594 +592 +593 +599 +605 +609 +610 +609 +601 +604 +608 +609 +613 +614 +612 +614 +626 +627 +636 +656 +652 +655 +656 +678 +680 +686 +687 +654 +663 +669 +664 +668 +647 +652 +659 +653 +654 +656 +637 +638 +621 +620 +621 +609 +604 +612 +616 +612 +617 +614 +610 +607 +608 +613 +617 +624 +625 +622 +604 +606 +610 +609 +607 +605 +618 +622 +635 +636 +640 +667 +668 +664 +674 +675 +682 +694 +698 +704 +717 +723 +724 +699 +695 +693 +674 +670 +683 +685 +683 +676 +675 +678 +677 +675 +657 +670 +675 +673 +658 +660 +673 +685 +675 +676 +677 +671 +689 +688 +690 +691 +692 +709 +713 +712 +715 +739 +731 +734 +762 +764 +746 +728 +729 +727 +730 +745 +773 +781 +787 +806 +807 +808 +815 +822 +837 +844 +842 +841 +850 +853 +838 +841 +845 +846 +844 +849 +846 +847 +859 +851 +854 +857 +873 +882 +892 +896 +883 +896 +895 +886 +879 +878 +877 +878 +881 +891 +898 +913 +914 +920 +922 +928 +929 +915 +917 +918 +913 +926 +929 +937 +939 +940 +936 +938 +939 +948 +946 +951 +950 +918 +917 +924 +917 +918 +921 +919 +917 +929 +950 +985 +988 +991 +996 +1002 +995 +990 +999 +989 +990 +991 +992 +991 +992 +993 +991 +994 +996 +997 +989 +993 +975 +973 +972 +973 +971 +969 +976 +983 +980 +987 +1003 +1002 +1000 +993 +994 +993 +972 +970 +991 +988 +989 +993 +996 +1002 +1003 +1008 +1007 +1014 +1015 +1022 +1012 +1029 +1030 +1029 +1030 +1025 +1026 +1010 +1006 +1008 +1006 +1012 +1015 +1029 +1067 +1102 +1107 +1108 +1103 +1108 +1103 +1120 +1119 +1118 +1119 +1118 +1119 +1132 +1137 +1148 +1150 +1153 +1166 +1169 +1199 +1205 +1208 +1216 +1210 +1217 +1216 +1217 +1218 +1198 +1199 +1197 +1198 +1193 +1202 +1241 +1242 +1239 +1241 +1238 +1233 +1234 +1235 +1237 +1228 +1229 +1235 +1218 +1236 +1237 +1208 +1246 +1251 +1246 +1248 +1242 +1241 +1243 +1231 +1226 +1224 +1221 +1220 +1224 +1219 +1227 +1214 +1237 +1261 +1271 +1268 +1292 +1304 +1303 +1312 +1287 +1286 +1292 +1295 +1297 +1304 +1311 +1312 +1309 +1314 +1307 +1316 +1320 +1319 +1316 +1333 +1332 +1316 +1315 +1320 +1321 +1335 +1355 +1353 +1356 +1325 +1333 +1335 +1339 +1360 +1361 +1362 +1364 +1361 +1363 +1362 +1363 +1364 +1392 +1397 +1398 +1405 +1406 +1408 +1406 +1394 +1391 +1407 +1413 +1415 +1413 +1419 +1422 +1416 +1422 +1421 +1431 +1433 +1437 +1439 +1443 +1446 +1449 +1439 +1444 +1452 +1460 +1468 +1469 +1486 1500 -2005 -818 -1493 -1618 -1923 -1283 -1952 -1373 +1507 +1513 +1512 +1511 +1531 +1532 +1541 +1550 +1557 +1561 +1557 +1560 +1563 +1564 +1565 +1588 +1589 +1592 +1591 +1593 +1598 +1603 +1590 +1604 +1608 +1610 +1623 +1598 +1592 +1601 +1598 +1600 +1601 +1599 +1609 +1607 +1608 +1613 1605 -1230 -1321 -1873 -1853 -1886 -1372 -1913 -1871 -159 -733 -1400 -1880 -1462 -2007 -1801 -1982 -1728 -1640 -1442 -1525 -1953 -1791 -1906 -1946 +1601 +1605 +1610 +1611 +1609 +1608 +1615 +1620 +1629 +1628 +1641 +1632 +1630 +1635 +1634 +1629 +1630 +1632 +1630 1641 -2009 +1661 +1655 +1657 +1653 +1619 +1629 +1607 +1600 +1603 +1591 +1596 +1599 +1601 +1582 +1591 +1593 +1596 +1597 +1600 +1596 +1597 +1603 +1624 +1630 +1628 +1626 +1628 +1631 +1628 +1629 +1625 1627 -1935 -1936 -1908 -1826 -1291 -1978 -1884 -1799 -1464 -1538 -1365 +1620 +1613 +1614 +1638 +1637 +1626 +1624 +1623 +1621 +1620 +1621 +1598 +1610 +1611 +1622 +1629 +1646 +1655 +1677 1678 -1872 -1964 -1863 -1388 -1912 -1928 -1471 -1632 -1336 -1396 -1948 -1974 -1331 -1290 -1992 -1096 -1889 -1874 -1341 -757 -1351 -1876 -1674 -2002 -1504 -1865 -1469 -1792 -1920 -1925 -1898 -1899 -1435 -405 -1488 -1319 -1322 -1749 -1867 -1957 -1944 +1679 +1699 +1702 +1715 +1710 +1722 +1719 +1715 +1716 +1724 +1735 +1734 1727 -1293 -1739 -1285 -1917 -1897 +1743 +1748 +1745 +1742 +1755 +1754 +1734 +1738 +1729 +1732 +1733 +1726 +1723 +1744 +1745 +1746 +1748 +1778 +1777 +1780 +1792 +1798 +1799 +1800 +1793 +1794 +1797 +1802 +1796 +1800 +1820 +1823 +1824 +1823 +1828 +1827 +1824 +1847 +1842 +1846 +1847 1844 -1966 -1921 -1905 -1830 -1484 -1364 -1782 -1415 -1412 -1413 -833 -1857 -1370 -1890 -1393 -1262 -1311 -2008 -1545 -1896 -1362 -1862 -1617 -1864 -608 -1868 -1689 -1784 -1806 -1976 +1833 +1826 +1834 +1839 +1846 +1854 +1842 +1845 +1860 +1874 +1869 +1871 +1869 1870 -1973 +1874 +1875 +1891 +1893 +1894 +1886 +1885 +1853 +1871 +1868 +1866 +1875 +1885 +1882 +1883 +1879 +1884 +1893 +1918 +1919 +1932 +1933 +1930 +1949 +1952 +1949 +1945 +1944 +1930 +1950 +1952 +1951 +1981 +1980 +1992 1993 -1986 -1998 -1414 -1858 -1990 -1841 -1895 -1779 -1850 -2001 -1590 -1902 -1487 -943 -1808 -782 -1546 -2004 -1656 -154 -1661 -1688 -1731 -1466 -1927 -1438 -1387 -1576 -1793 -1797 +1981 1979 -1903 -1638 -1940 -1911 -1301 -1669 -1409 -1578 -1887 -1860 -1619 -1939 -1625 -1941 -1374 -1766 -1407 \ No newline at end of file +2007 +1989 +1987 +1996 +2006 +2012 +2028 +2037 +2041 +2039 +2046 +2047 +2055 +2058 +2079 +2086 +2087 +2088 +2079 +2080 +2079 +2082 +2089 +2092 +2097 +2113 +2115 +2119 +2109 +2111 +2110 +2108 +2100 +2099 +2107 +2103 +2104 +2115 +2110 +2116 +2117 +2113 +2120 +2128 +2129 +2115 +2114 +2125 +2148 +2145 +2147 +2160 +2159 +2162 +2155 +2161 +2162 +2160 +2162 +2149 +2150 +2152 +2170 +2171 +2172 +2171 +2186 +2187 +2186 +2188 +2196 +2185 +2195 +2196 +2200 +2197 +2195 +2190 +2191 +2189 +2199 +2200 +2208 +2204 +2203 +2209 +2231 +2234 +2247 +2245 +2277 +2279 +2281 +2282 +2279 +2294 +2296 +2304 +2287 +2294 +2293 +2297 +2311 +2339 +2343 +2344 +2323 +2360 +2369 +2371 +2372 +2373 +2372 +2384 +2383 +2390 +2412 +2419 +2421 +2432 +2428 +2427 +2449 +2459 +2456 +2457 +2459 +2469 +2472 +2474 +2472 +2475 +2487 +2479 +2481 +2482 +2481 +2502 +2492 +2493 +2496 +2522 +2529 +2550 +2551 +2549 +2547 +2546 +2551 +2553 +2555 +2552 +2547 +2536 +2534 +2518 +2517 +2513 +2511 +2495 +2508 +2500 +2501 +2514 +2524 +2551 +2552 +2561 +2563 +2571 +2573 +2565 +2559 +2564 +2565 +2568 +2570 +2556 +2546 +2552 +2554 +2581 +2574 +2573 +2572 +2575 +2577 +2578 +2579 +2580 +2579 +2589 +2586 +2587 +2611 +2615 +2614 +2618 +2619 +2618 +2626 +2630 +2623 +2627 +2628 +2627 +2628 +2657 +2658 +2672 +2673 +2685 +2668 +2658 +2660 +2668 +2669 +2671 +2673 +2669 +2668 +2675 +2668 +2669 +2652 +2672 +2675 +2678 +2677 +2699 +2700 +2701 +2712 +2710 +2712 +2711 +2710 +2721 +2722 +2727 +2731 +2733 +2731 +2734 +2738 +2751 +2745 +2744 +2750 +2765 +2767 +2773 +2771 +2770 +2773 +2778 +2782 +2792 +2796 +2794 +2806 +2807 +2820 +2823 +2836 +2834 +2827 +2826 +2830 +2828 +2829 +2831 +2838 +2845 +2846 +2863 +2860 +2862 +2861 +2862 +2863 +2864 +2871 +2873 +2874 +2875 +2893 +2892 +2893 +2898 +2924 +2942 +2956 +2950 +2952 +2990 +2993 +2994 +3001 +3017 +3022 +3017 +3016 +3017 +3012 +3018 +3019 +3018 +3048 +3058 +3059 +3062 +3072 +3073 +3071 +3072 +3065 +3093 +3094 +3095 +3094 +3100 +3101 +3084 +3085 +3079 +3077 +3099 +3100 +3117 +3118 +3121 +3122 +3137 +3108 +3110 +3109 +3108 +3113 +3102 +3103 +3119 +3122 +3126 +3132 +3137 +3132 +3152 +3153 +3163 +3164 +3176 +3175 +3181 +3190 +3191 +3198 +3195 +3177 +3178 +3177 +3183 +3202 +3203 +3192 +3184 +3185 +3191 +3196 +3195 +3173 +3183 +3182 +3184 +3185 +3193 +3210 +3208 +3207 +3214 +3221 +3234 +3233 +3263 +3284 +3283 +3284 +3270 +3259 +3268 +3253 +3259 +3246 +3251 +3246 +3251 +3256 +3249 +3251 +3261 +3260 +3259 +3267 +3277 +3273 +3282 +3286 +3284 +3285 +3288 +3295 +3270 +3269 +3277 +3276 +3281 +3280 +3292 +3293 +3301 +3306 +3335 +3336 +3310 +3309 +3312 +3318 +3324 +3340 +3368 +3371 +3369 +3370 +3368 +3367 +3386 +3388 +3416 +3420 +3423 +3433 +3427 +3438 +3457 +3469 +3474 +3479 +3489 +3507 +3471 +3468 +3480 +3486 +3490 +3493 +3495 +3496 +3495 +3479 +3480 +3485 +3490 +3489 +3491 +3488 +3494 +3493 +3515 +3517 +3526 +3519 +3520 +3525 +3515 +3516 +3517 +3508 +3510 +3512 +3515 +3536 +3535 +3530 +3540 +3542 +3550 +3530 +3550 +3553 +3537 +3536 +3542 +3547 +3544 +3562 +3561 +3551 +3546 +3547 +3562 +3561 +3586 +3593 +3582 +3586 +3589 +3600 +3604 +3605 +3607 +3608 +3613 +3624 +3626 +3652 +3668 +3669 +3666 +3674 +3677 +3668 +3671 +3673 +3675 +3657 +3666 +3655 +3658 +3662 +3659 +3660 +3657 +3655 +3662 +3657 +3660 +3661 +3664 +3675 +3677 +3661 +3663 +3669 +3645 +3646 +3644 +3645 +3666 +3677 +3685 +3686 +3689 +3697 +3694 +3703 +3672 +3676 +3675 +3706 +3726 +3742 +3744 +3765 +3792 +3793 +3802 +3805 +3813 +3816 +3817 +3826 +3827 +3828 +3830 +3826 +3825 +3824 +3816 +3821 +3820 +3821 +3825 +3846 +3848 +3847 +3846 +3849 +3854 +3844 +3860 +3859 +3861 +3863 +3848 +3845 +3846 +3853 +3851 +3850 +3863 +3865 +3885 +3912 +3913 +3914 +3913 +3901 +3897 +3927 +3928 +3927 +3929 +3931 +3925 +3912 +3915 +3919 +3920 +3896 +3900 +3904 +3909 +3919 +3922 +3923 +3925 +3944 +3938 +3937 +3936 +3944 +3943 +3942 +3955 +3944 +3945 +3948 +3946 +3939 +3955 +3957 +3951 +3950 +3954 +3966 +3974 +3987 +3991 +3987 +3985 +3981 +3983 +3986 +3996 +4002 +4012 +4031 +4030 +4031 +4034 +4018 +4020 +4007 +4009 +4019 +4006 +4011 +4018 +4022 +4012 +4014 +4012 +4013 +4031 +4046 +4051 +4054 +4065 +4070 +4074 +4080 +4081 +4080 +4051 +4058 +4056 +4054 +4049 +4054 +4048 +4065 +4078 +4082 +4086 +4099 +4100 +4106 +4126 +4118 +4145 +4141 +4142 +4153 +4168 +4176 +4168 +4167 +4171 +4172 +4173 +4137 +4154 +4150 +4134 +4137 +4138 +4137 +4148 +4151 +4129 +4131 +4130 +4132 +4129 +4155 +4156 +4157 +4162 +4179 +4185 +4187 +4186 +4177 +4167 +4174 +4178 +4176 +4174 +4177 +4180 +4192 +4206 +4212 +4192 +4201 +4193 +4213 +4194 +4201 +4181 +4184 +4181 +4192 +4195 +4205 +4209 +4199 +4201 +4200 +4201 +4219 +4218 +4220 +4221 +4235 +4236 +4229 +4235 +4233 +4234 +4240 +4239 +4211 +4216 +4223 +4210 +4224 +4225 +4223 +4224 +4223 +4233 +4232 +4240 +4248 +4240 +4241 +4246 +4247 +4244 +4245 +4246 +4256 +4261 +4274 +4268 +4288 +4289 +4290 +4301 +4299 +4303 +4304 +4303 +4297 +4299 +4288 +4296 +4293 +4296 +4295 +4302 +4303 +4319 +4313 +4315 +4320 +4322 +4326 +4328 +4337 +4338 +4351 +4370 +4381 +4388 +4413 +4418 +4417 +4416 +4415 +4436 +4440 +4441 +4464 +4461 +4468 +4469 +4471 +4480 +4496 +4495 +4496 +4497 +4494 +4461 +4462 +4461 +4462 +4461 +4457 +4466 +4467 +4468 +4469 +4491 +4497 +4510 +4500 +4485 +4497 +4508 +4506 +4500 +4501 +4514 +4516 +4517 +4516 +4543 +4549 +4529 +4523 +4522 +4540 +4539 +4540 +4543 +4545 +4530 +4532 +4531 +4533 +4535 +4511 +4517 +4520 +4521 +4523 +4517 +4525 +4526 +4538 +4566 +4567 +4564 +4575 +4577 +4576 +4574 +4580 +4594 +4595 +4596 +4621 +4622 +4629 +4632 +4641 +4642 +4658 +4659 +4660 +4685 +4687 +4708 +4727 +4735 +4739 +4745 +4744 +4753 +4755 +4757 +4759 +4782 +4785 +4777 +4783 +4786 +4789 +4794 +4802 +4803 +4833 +4849 +4857 +4865 +4866 +4872 +4869 +4876 +4874 +4877 +4899 +4900 +4901 +4893 +4892 +4904 +4907 +4900 +4907 +4908 +4903 +4890 +4895 +4896 +4876 +4880 +4888 +4889 +4894 +4893 +4924 +4927 +4922 +4893 +4901 +4891 +4908 +4916 +4915 +4920 +4931 +4954 +4943 +4953 +4954 +4959 +4949 +4952 +4936 +4935 +4916 +4922 +4923 +4922 +4928 +4929 +4930 +4927 +4923 +4926 +4924 +4931 +4935 +4955 +4966 +4987 +4988 +4990 +4992 +4991 +4999 +5001 +5006 +5007 +5021 +5034 +5047 +5050 +5055 +5091 +5096 +5101 +5100 +5105 +5108 +5117 +5114 +5127 +5129 +5127 +5153 +5152 +5154 +5155 +5156 +5142 +5154 +5180 +5177 +5183 +5184 +5201 +5204 +5205 +5222 +5212 +5217 +5222 +5251 +5278 +5277 +5302 +5319 +5326 +5333 +5327 +5321 +5337 +5361 +5362 +5368 +5369 +5366 +5368 +5385 +5383 +5384 +5393 +5403 +5427 +5428 +5429 +5428 +5459 +5442 +5441 +5433 +5436 +5428 +5429 +5428 +5427 +5433 +5418 +5419 +5421 +5425 +5426 +5435 +5441 +5445 +5442 +5446 +5454 +5458 +5454 +5456 +5452 +5423 +5426 +5425 +5418 +5417 +5420 +5425 +5420 +5438 +5447 +5450 +5451 +5453 +5450 +5453 +5449 +5457 +5464 +5455 +5460 +5443 +5439 +5425 +5423 +5434 +5438 +5437 +5412 +5408 +5405 +5407 +5420 +5426 +5452 +5459 +5460 +5490 +5498 +5508 +5528 +5531 +5516 +5517 +5512 +5524 +5529 +5511 +5525 +5527 +5538 +5539 +5546 +5550 +5549 +5552 +5554 +5559 +5551 +5552 +5556 +5559 +5579 +5584 +5590 +5593 +5592 +5595 +5604 +5600 +5586 +5591 +5572 +5571 +5583 +5584 +5578 +5579 +5580 +5579 +5570 +5571 +5574 +5577 +5583 +5584 +5569 +5586 +5582 +5561 +5550 +5554 +5544 +5550 +5529 +5538 +5551 +5569 +5570 +5584 +5588 +5596 \ No newline at end of file diff --git a/day1/program.js b/day1/program.js index fa54b97..f1a1539 100644 --- a/day1/program.js +++ b/day1/program.js @@ -1,37 +1,3 @@ -const fs = require('fs'); - -function findSumPart2(nums) { - nums.forEach(num => { - nums.forEach(num2 => { - nums.forEach(num3 => { - if (num + num2 + num3 === 2020) { - console.log('2: found match', num, num2, num3, num*num2*num3); - } - }); - }); - - }); +export default function Day(data) { + console.log(data); } - -function findSumPart1(nums) { - nums.forEach(num => { - nums.forEach(num2 => { - if (num + num2 === 2020) { - console.log('1: found match', num, num2, num*num2); - } - }); - - }); -} - -fs.readFile('./input.txt', 'utf-8', (e, data) =>{ - const items = data.split("\n"); - items.forEach((num, i) => { - items[i] = parseInt(num); - }) - findSumPart1(items); - findSumPart2(items); -}) - - - diff --git a/day10/input.txt b/day10/input.txt deleted file mode 100644 index e15aff5..0000000 --- a/day10/input.txt +++ /dev/null @@ -1,104 +0,0 @@ -2 -49 -78 -116 -143 -42 -142 -87 -132 -86 -67 -44 -136 -82 -125 -1 -108 -123 -46 -37 -137 -148 -106 -121 -10 -64 -165 -17 -102 -156 -22 -117 -31 -38 -24 -69 -131 -144 -162 -63 -171 -153 -90 -9 -107 -79 -7 -55 -138 -34 -52 -77 -152 -3 -158 -100 -45 -129 -130 -135 -23 -93 -96 -103 -124 -95 -8 -62 -39 -118 -164 -172 -75 -122 -20 -145 -14 -112 -61 -43 -141 -30 -85 -101 -151 -29 -113 -94 -68 -58 -76 -97 -28 -111 -128 -21 -11 -163 -161 -4 -168 -157 -27 -72 \ No newline at end of file diff --git a/day10/program.js b/day10/program.js deleted file mode 100644 index 691869b..0000000 --- a/day10/program.js +++ /dev/null @@ -1,53 +0,0 @@ -const fs = require('fs'); - -const data = fs.readFileSync('./input.txt', 'utf-8'); -let adapters = data.split("\n"); - -adapters.forEach((a, i) => { - adapters[i] = parseInt(a); -}); - -adapters.sort((a,b) => { return a > b ? 1 : -1}); -findAdapterJumps(adapters); -calculateArrangements(adapters); - -function findAdapterJumps(items) { - let jump1 = 0; - let jump3 = 1; - let currentCharge = 0; - - items.forEach(i => { - if (i - currentCharge === 1) jump1++; - else if (i - currentCharge === 3) jump3++; - currentCharge = i; - }); - - console.log(jump1, jump3, 'answer part 1: ', jump1 * jump3); -} - -function calculateArrangements(items) { - let sequenceLength = 1; - let lastNum = 0; - - let multi = { - 1: 0, - 2: 0, - 3: 0, - 4: 0, - 5: 0 - } - - items.forEach(item => { - if (item - lastNum === 1) sequenceLength++; - else { - multi[sequenceLength]++; - sequenceLength = 1; - } - lastNum = item; - }); - multi[sequenceLength]++; - - // 2,4 & 7 are hardcoded. Calculation is on todo here - let res = Math.pow(2,multi[3])*Math.pow(4,multi[4])*Math.pow(7,multi[5]); - console.log('part 2', res); -} \ No newline at end of file diff --git a/day2/input.txt b/day2/input.txt deleted file mode 100644 index f7a1314..0000000 --- a/day2/input.txt +++ /dev/null @@ -1,1000 +0,0 @@ -2-4 r: prrmspx -5-6 p: hpzplphxb -5-8 t: ttttbtttttc -1-6 k: kkkkkk -1-3 q: qqqq -4-8 t: pctpfqtrtttmvptvfmws -3-5 z: zznzslv -12-14 h: hhhhhhhhhhhhhhhh -14-15 v: vvvvvvvvhvvvvdmvv -8-17 x: xxxxxxdxxxxxxxckxx -11-12 f: gkfjnffjfcmfwk -10-12 s: xsgsssshbmsbnss -6-15 s: sssssnsssssssss -2-8 d: qnqtrqdrnvq -5-7 k: lhxkkkk -4-5 k: xkkkk -10-16 v: vvvvvvvvvcvvvvvpvv -1-6 f: ffffflfffffff -4-5 x: fxdnq -10-12 p: mkspmhlldqjh -10-12 r: rcvzzcbdgrcr -4-7 r: rxbkrrrzrrrtrrr -18-19 k: kkkkkkkkkkkkkkkkkkk -1-2 f: sfffffffffffffffff -1-5 z: mhkzwdxklf -2-3 r: qzbgrghkmlpxdvd -2-3 q: mqqpcxbqdf -7-8 r: rrrrfrrj -1-9 x: vmxsmwhnxccf -9-10 t: ttttttttppt -2-4 x: rxxqxx -16-17 k: jkfmnwkkztnxvlkkw -3-4 c: ccbpccccczpcccc -5-8 g: ggggjggg -1-3 z: szzzzz -8-9 l: xnllznclz -4-10 m: pkmmptjvgsnwmxm -1-2 r: mbrrtkrjdr -1-3 c: ccqscsxcnctwlvm -4-6 p: ppppppppp -3-5 d: wdddxvmnbdhvzdgqbdm -5-7 n: nnwbsnqnnvn -2-11 j: sgbxjvqnbmq -5-13 q: qqqkpqqqsqqqxqqqq -2-12 m: kvwlwmmvhbpgmnzfddms -2-4 j: kjgcpgxgcphkqjjmbwd -3-6 v: tdvlvv -10-20 n: tnmhnlznnpnmnfnngnnn -4-7 h: hhhhhhhh -9-11 m: mmmmmmmmrmm -7-9 b: mbnbbbbqk -9-10 z: fqzzzmzzzzj -3-15 s: chdpzcpgsgrkhss -3-4 k: kklz -1-5 q: ltqqqxcndqrq -9-17 m: mmmmmmmmqdlmmxbmtmmm -14-16 k: kkkkkkmkkkkkjtkkk -8-9 k: kkkkkqkkxlk -2-6 n: kbhhjhdmgtn -3-8 w: rcwwwkqwbwkwmdqtwmw -10-11 x: snkbxmwqwxp -2-5 m: pmhmp -6-7 b: bbbbbbq -3-7 l: cfqmljq -9-13 q: qzqqqqqqqlqdt -2-10 w: kmwqwtwkssd -4-13 t: ttblttttttttftt -14-17 l: llllllwllllllwllclll -3-4 p: xzps -10-14 b: bjbbbbbpbdbbbb -5-7 v: jlvhjtvx -6-9 r: bscrrrrcrphffdw -5-7 r: brrvjrxfrljwxp -15-16 b: bbbbbbbbbbbbbbbb -7-8 h: bchfxxshh -2-13 z: zzqzzzzzzzzzzzz -1-5 b: bbbbrbbhbbbbbcb -2-3 k: zkkzjld -4-6 f: fnffffff -8-11 d: qdvdddddndphdndmgdkp -17-18 q: qqqkqqqqqqcqqqqtqq -11-16 m: mmmwmwxvmmmmmmmmmmm -12-13 v: vvvvfxvgblvvk -4-6 v: vsvvvvv -2-4 p: rqgm -7-8 r: rrrrrfrf -2-4 j: xpjjl -7-8 b: wdpbvwbb -15-16 k: fkkkskkkmkkkkkkk -10-14 s: shkscsqjszstssv -3-4 l: lllw -2-4 n: gjbnlsxvqmvxgcwntvvs -6-12 l: lclllgllllllll -16-17 b: bbbbbbbbbbbbbbbbbbb -7-8 q: pqqqqqwq -1-2 r: rrzsr -1-3 r: rrfr -16-17 f: fffcfffffjfmrzqffnr -15-17 h: bhzhhfndwgdhlhhhjh -7-11 t: vtwnrwzczmtwn -3-6 v: vvvvvmvvvvvv -4-5 s: ssptsss -1-3 t: ttntq -5-9 g: ggggtgggcg -7-8 h: hcjdkphhb -15-17 j: jjjjjmjjjjtjgvnxk -3-4 q: qqqq -5-7 g: lggsjqlg -11-18 m: mmmmmmmmmmqmmmmmmf -1-14 x: xxxxcxxxxxxxxxxxxx -7-8 f: ffffffbffff -3-4 t: xmct -3-4 x: xxtcd -1-11 x: xcnxxxxvxlxkmcrxn -8-11 h: hgnhkhhshhnhhzdhllw -8-10 z: zdzzzzzrpvvzzqz -6-7 r: lrbrrprrxr -6-10 n: fnnwnpnnjnhmnntqn -10-15 b: bbbbbbbbbwbbbbbbbbbb -13-16 z: zzzzzzzwzzzzvvzkztjz -5-6 t: xntkwthxbdtlmxtpzz -5-13 r: njrlghrrxfrfv -11-14 s: vssnzksspscrss -7-10 c: gtrkbcxccccccchch -6-11 v: vvsvvvvvvvvvvvvv -17-18 b: bbbbbbbqbbbsbbbbsnbb -13-15 x: smxxxjxmmkxxxmxx -10-11 h: hpqqwkxnfhd -15-16 j: jjjjjjjjjjjjzgjjwjjj -3-5 f: cjcff -3-4 z: hnfzzzmq -11-14 c: cccccccccczcckc -2-7 t: tstmdtk -2-3 f: wffkfm -7-16 w: tvgdzjjqlwzknwvwgzh -1-2 d: dzdqpn -8-14 j: jjzqjxjjsjrngzfj -6-9 h: xknzmlzpbpzcth -2-5 j: njmnj -10-15 z: kfqlljdfzzczzmp -7-12 g: gcqwnmgjhcrjnzwcmw -3-4 h: hhjhh -5-16 d: ddddddvddddddddddd -1-2 p: fwwtpllzbmjbwcnkbh -10-18 p: vhpwpppxfppppvppdh -2-6 x: rqgqgx -11-12 m: mhpmmmmmmmmmmm -3-4 z: lzzf -5-8 w: vfwwmlwfvwwwwlh -3-10 t: ltgtztzlct -7-8 k: kkkkkkmk -10-13 b: ndflbblbchkbq -18-19 z: zzzzzzzzzzzzszzzzzzz -2-5 n: nlzrmkhz -14-15 v: vwvvvvvvvvvjvmcvvv -13-15 p: ppppppppwpppxph -6-9 k: jvhxzwkkwkzv -9-11 s: snspssslkss -13-18 j: jgjrjjjjjqjjjhjtjj -5-7 v: vgvrhzvvv -1-7 t: ttttttttttttt -8-9 n: nnnnfnnnj -2-5 x: dxcrxhstqwldt -6-12 s: dkshssdsltspgcb -2-7 k: kkkkkkkk -7-13 d: vbjsdddfstdhtdxl -12-17 r: nrrgrrsrrrrkrrrdt -3-5 w: wwwjw -5-8 l: mlfldllll -4-5 m: mmmqm -9-10 j: sjtmlxjrzl -2-14 h: hhhhhhhhhhhhrnhhwh -3-4 b: bbbw -12-13 g: gggggggggggzg -13-14 t: tttgtttrztstltlhb -14-17 s: fhdxfshbglsvjsgbs -9-13 x: xxxxlxxtxxxxxxx -2-3 j: jjtn -12-13 n: nnnnnsnwnnvmq -3-6 z: gzzzbzmzzzmz -3-4 d: ddnt -2-7 s: pswmrnsrgb -8-9 q: qqqqqqqdv -5-6 s: sdlcqs -6-10 f: jffwjfhfff -4-5 p: pmpppps -9-14 p: pppppppppppvpppppppc -3-9 n: nsnpnmmnnwtnvb -3-4 b: bhzh -7-9 g: ggggggggng -10-11 x: xwxxxkxxxjxqxxxbbxx -17-18 k: kkkkkkkkkkkckkkkkk -3-4 v: vvrv -12-14 s: vdsrgdsghxcblflbwj -8-13 h: gxzhhbkdgfdglfqqcls -4-6 m: mmmvmfmmmmm -2-13 b: lbtzwffqfrfhbwb -1-3 r: lrcr -3-6 j: cjtcjj -5-8 z: zzztzmzz -4-12 t: wttrttvtgttztttdttst -6-7 n: zbfvmngknrzfzqpwhtx -12-14 g: gggggggggggggbgg -6-10 k: jkkkkkrkmbkdh -14-19 m: mmmmmmmmmmmmmmmmmmfm -2-4 d: sdft -4-10 g: bgtgsbjcqgt -2-4 t: trtqt -7-11 b: wjbbsqsvpkpb -12-14 z: zcfqlkxghjjpjzsc -3-4 g: ggjt -5-7 r: zdrrqrrrrrr -15-16 p: brpvpplmhvnbxppc -15-16 b: bbxbbbbbbbbbbbbb -8-11 c: hscggrpcpbxrxwgsv -10-15 j: jjjjjjjjjnjjjjmjjjj -4-6 g: bgkghgc -9-15 c: ccjcccsbcccspxc -2-3 v: fjzb -2-3 h: hhhxlchhwmjjzj -4-11 x: xxxxlxxxxcxxxxk -6-11 d: dvpdmdddzch -5-6 j: jjjjjjdjwj -6-12 p: pppppxpppppbppp -1-7 q: xqqqqqqqqqqqqq -5-6 w: xwwrtwjpwgsw -11-13 k: kkkkkkkkkkckfkkk -2-3 m: qbmnxlwmldmmc -2-3 w: jqlwws -6-8 k: kkkjbkmz -10-12 m: mmmmmmmmmvbm -6-13 n: hqnkdmwnxnwndnxgl -1-5 j: jjjjb -16-17 x: gxxxxxsxxbxxxxxmp -3-10 s: ssrsssssss -3-4 s: rslpsx -1-10 g: qgggjgwqzggvzflmj -8-9 g: gggbngqghg -1-3 q: qqqfj -3-5 m: mmmmzmmmmm -7-8 q: qqqxqqgqq -1-2 j: rpdjrrt -7-10 v: mdzpkvvdpv -12-14 m: xzmmjmhmmmmktmtmmmm -6-9 m: mmvbmvmzm -7-9 c: gcccqmlhc -6-8 z: zzzzzznrz -4-7 w: wwwmwwww -1-4 h: vhhhhh -13-14 z: xzzzjzzzzzzfzz -1-3 l: jlqml -10-12 f: wdbfzsbwffgf -4-8 p: vjpppfppxppjmctw -18-19 x: zkxbllxbtbzggncfxxx -5-6 x: xxxxhxxx -2-6 v: tvdprvvrvv -5-14 k: jkdhkhdhjgmtkk -1-2 k: sskk -5-12 w: mvqtkwwmcwwlkw -2-6 v: gvmlvv -12-13 p: ppppppppppppbp -3-4 r: frrrr -13-15 r: qrrrrrrrrbrrrrr -5-10 b: bxkbrbkdtwwrbkskjpc -4-5 x: bxrcx -12-15 f: ffffftjfffffffzfff -6-7 g: ggggggzgvxggg -10-11 w: kgwhvwwwwtcwp -9-10 j: jjjjjjjjpjj -5-12 t: pnbsttwccrtvttm -2-8 c: wcccccxfccnkvrllg -2-9 j: frddhfbkkj -9-11 m: mmmmmmmmtmmm -9-10 m: mmhmmmmmtm -2-4 r: crtr -14-15 v: vvvvvvvvvvvvvlrv -5-6 c: wccwctch -1-13 c: lcccccccccccfccc -12-15 x: zppxdwxtplfvzfxlwl -4-18 c: cccccccccccccccccc -2-3 c: xcccc -1-7 q: qvfbcfqx -6-9 k: lkbkhkkmsjlk -7-15 w: wwwwwwwwwwwwrwwwwwww -2-5 s: lscsssqsn -16-17 n: nnnnnnnnnnnnnnnnznnn -4-5 g: ggggggg -2-3 w: mfdw -4-5 r: rfrqh -3-7 f: vfpfbzf -8-9 j: jjjjjjjcbj -10-13 p: pppppzpppppppp -8-10 t: tntbgchftpttttttfttt -4-7 r: rlrbsmhnrqrbxrnlrm -13-17 m: vkmmmdhfkmtmgmxhk -9-11 t: ttttttttttt -16-17 g: gggggmgggfgggggsggvg -5-7 w: wpffgdw -3-7 r: rrzklzbmrrr -2-3 l: tllcqnlwfvlfmcgssg -3-4 q: qqqp -3-7 x: xnxxxzcxrqwx -7-18 s: shssssfwssssssksmss -1-4 r: rrrrmbc -2-6 t: tttdmsmtg -3-5 h: tmhbh -4-15 c: ccccccccccccccccr -8-10 v: vvvkvvvhvk -3-6 r: rsmzcrhqnxljrnnd -2-3 s: msss -10-18 w: wwwwwwwwwwwwwwwwwnw -11-13 j: hmwdjqjhjbfdrhj -5-17 x: hxpnccxhwlsxxdmxxd -4-5 t: ttznj -6-7 l: llllllqll -1-3 q: qsqnhqm -4-6 t: tdtttthc -16-17 x: xxxxkxxxxxlmxxvxfx -7-11 r: prtrxrprrrrr -5-7 j: mjjqjjg -3-8 l: rnllnklplllllllll -10-15 p: pppppppppdppppp -2-6 g: grgggx -3-4 s: ssqss -1-4 t: tttq -6-9 w: fxvvndkmwlskw -11-12 c: cccccccccccp -4-9 b: bbblbbbbbbbbbb -2-3 g: hggnbw -17-20 x: xxxpxxxxxxhxxxxxfxxx -1-2 f: bpvf -3-5 j: wjbfjw -13-19 m: srmmmmmmmmfhmgmmmqs -10-16 c: cccgcczcccccccbcfcct -11-15 b: bzpqpffbfqslknb -2-5 t: stnztmvjg -3-9 h: hqxhxxhhwh -2-4 r: rvrz -2-3 p: pppk -7-8 s: sskssjdss -5-9 x: xzvjjkmqzthpht -12-13 p: pstcvcjlnwsqphwnsr -3-15 p: lnfhbvnpmfztbqppcf -14-18 l: lllljllllllllllgld -4-5 g: gctggxhgpxkx -7-8 q: qqqqqqrdq -10-13 c: ccccccccccccc -4-9 s: sssnssskwsbfssssss -10-12 g: zgpgghbggjqgggkggjg -3-18 m: mmmmmmmmmmmmmmmmmkmm -1-3 z: jzzzz -1-4 k: fqqwmd -4-8 r: wzbrhxrw -2-13 x: fzvhrqwcrjjzxprnxlk -9-10 q: qqjqqqhqqr -4-10 g: mnlggbkdhrgtndk -4-19 w: wksmppsqrpppfkdzlrg -6-7 k: kkkkkxwkk -15-18 t: tttttttttttttthtttt -8-13 k: kkkkzkkvkkkktkkk -1-5 j: jjlqrwsjzkjbl -6-9 m: gmmmdmmmbmmdxmg -4-5 r: gdbfmxnrmc -3-4 h: rhhhh -2-8 n: nnnnnnnln -4-9 x: fxgwflwxblgnwxv -3-6 x: xmkxxvxxs -1-15 g: jgggggpgggggggpg -2-7 n: nwnnnnnn -2-4 r: hrwcr -5-8 x: tbbtxltxdsftztx -3-11 r: rzrwrdbqkhrbldrgph -2-10 j: jljxrjjxjv -17-18 b: bbbbbbwbbbbbbcbbtb -10-11 w: wwwjwwwwwrw -1-2 h: qbhh -2-3 r: rvjr -10-13 b: bfbbbjxbbjbbwblc -2-4 j: qjdt -4-5 j: jjjjjjbfjj -11-14 d: pssdgpplqjdzxr -4-8 x: zxgxfxjhjxgv -6-7 g: gdnhggz -3-14 f: fbfffsjffffffgfffff -2-7 f: qtxmpvfscrbgxfq -6-8 w: wwwwwlqwwswww -2-9 g: gbnwwncws -1-4 t: ttbctt -3-4 g: gggbl -5-8 h: hhhhhhhhh -9-16 n: nnnnnnnnnnnnnnnnn -3-4 x: xxxxxx -3-4 l: psgl -4-7 p: pppntst -4-13 m: mvdmnfnnpxjtmgnwgc -9-15 p: pprtppppwnphlhf -7-10 v: vlvvbvqtvp -11-15 k: jmckdsmvzptdslkkjqf -2-3 p: cwkf -8-9 r: rrrrmrrhhrr -7-8 h: vhhhhhhjh -4-5 z: zzhznzk -10-13 n: qnnnksnsnvnnnnt -1-4 m: jmmmmm -5-8 w: jpcmlxtwzvhww -10-12 k: kkkkkkkkkkkkk -11-14 g: ggggggrgmgggnhgggg -1-5 z: zzzwz -2-4 x: xxxxxxx -6-14 c: cccccvccccccckc -11-12 z: zzzkzzbzzcvz -13-18 p: pppppppppppppppppxpp -9-14 c: tcnphlfkczmcpc -7-8 n: wnzmjcnn -7-11 p: ppspppmdppp -2-6 w: wdwwwww -2-4 w: qzvw -8-9 j: njbvchssj -2-7 b: fnbbbnp -3-4 c: ccqv -1-5 x: xxqxdxx -3-9 w: wzwptwtwwwswbqmk -17-18 x: xxhplchxxxxxxxxxgm -4-5 g: fsggvmg -1-12 w: lwwwwwwwwwwwwwww -3-4 b: kbnvg -2-7 t: ztttmfftttrtttt -2-3 n: wqvnsn -1-6 z: qfddndzzg -15-17 z: nfzxdmgdvjzzpqdjt -1-5 g: mggglgggg -5-13 x: xxxxgxxxxxxxrxxb -12-13 x: xxxxxxxxxxxcx -5-6 r: prrvrrrrh -13-14 h: hhhhhhhlhhhhmz -8-10 j: jjjjjjnlbjhjzjljj -1-7 w: wwwwvwkwwb -4-5 h: hpshh -2-12 f: vhptghgvhqsf -16-17 w: wwwwwwwwwwwwwswzww -16-19 x: jltfxxfgkkxnnxjkrxz -3-13 s: ssfpvsssshssrxss -4-9 q: qsqqrqqqqjkqqkqv -9-11 h: djhvttnrjzh -2-3 j: jjjz -3-7 j: jtjqgmj -4-8 p: ppnpcpppspgpc -9-13 s: sssskslspdsnss -6-10 m: mxzlmmmpvgm -10-11 c: cccccccccwnc -6-8 f: klkqkthgzfbb -7-9 t: tttttttmx -2-13 r: nrlmjrhxwnjsrwfx -12-13 x: xthxxwpxsdxmj -3-11 r: nqgznrmqhcm -3-4 c: rqcxmgc -12-14 f: ffffffffrdfjffff -14-15 d: vdddxdddddddddddd -4-8 m: mmmcmkmmmmmkh -3-4 g: ggcggsm -7-10 p: pppppphppw -11-17 f: fffftfxbffffffffrff -1-18 f: ffffffffffffffffffff -4-6 x: mxnxkx -3-7 g: ggrlrmhggl -1-2 b: pbblqxtlztwcbt -4-5 c: ccccz -1-4 k: kqkhkkkk -9-12 v: vtvvgvvxvvvvv -3-4 g: ncgbnrvdbrm -9-12 t: tttttttttttttttt -14-17 c: crncccqdsjcclcxcmdw -8-10 h: hvhpghvhnfhhh -4-12 p: ppplpppppplnpppp -4-5 l: lrlllllnlllq -3-14 p: ppnppppppppppcpppppp -2-5 v: vmvvbv -6-7 v: vcvvvqvvvvvjvv -4-5 l: llllhl -5-12 h: hjhphkxhkcqh -6-7 f: fbskrlff -4-5 k: rkfnrk -1-4 q: tqqkqkqqcxq -6-7 p: pppppxp -1-2 f: fnfffffffffw -5-18 p: ppfpppppppppppppppp -1-5 d: dwndd -8-9 h: hhhhhhhhh -3-6 l: llllllllll -9-10 r: gvhwsfbckr -7-16 h: hhhhhhhhhhhhhhhhh -1-2 j: tjjlj -5-9 b: tsvwbmbvbk -1-8 r: vrrkbsrrrrkrrcrr -1-5 b: hbbbbbs -7-8 j: zgjwjcmnjjjljnvjjgj -11-15 z: zqzzzxvzzdmzzzzz -2-13 q: tqqnzjjxvcsvqksl -6-10 f: fqqczfhfmf -2-14 v: vcvvvvvvvvvvvvvv -1-5 c: kgcdcckbc -3-5 r: rrdrr -15-16 f: ffffffffffffffmbf -10-11 s: ssssssssssssxssnss -9-10 j: jjwjjjjjtkj -4-5 v: vfdvv -2-13 z: znkpztzzzzzzznlwzz -3-4 r: lrrm -15-16 n: nnnnnnnnnnnnnnsnn -6-12 n: nxnnxnnnpnnnnvn -4-8 q: lqsqdcqq -15-16 x: xxxxxxxxxmxxxxxtxrx -6-17 h: hhhhhhhhhhhhpjhhh -11-15 c: cccccjccccpcccc -11-12 r: rrmrhvzgrtrd -3-7 b: bwmbbblb -8-13 v: zlvhjhjhtwtkbxqqw -6-9 p: pppppfpppppk -2-5 r: rcrrjr -14-19 f: gfbrfsffprfffhrffzm -3-6 r: rrsrrtr -4-6 j: jjzjbz -1-4 l: jllnl -6-7 z: zzzzzppzzzzzz -17-18 h: xjvnmlhhnlxltrdltgr -2-14 z: xhtwcgngdxlzhnv -3-5 v: xvvrvvv -11-14 v: dnhpmxjvmwrknvvpr -8-17 w: vnwpmbbpmcwwgpwlwh -4-5 f: fffjl -13-16 v: vzvgvvvwvvvvvvvjvvgk -8-9 n: nnnnnknnn -18-19 g: gjgggkggggkxgpgdglh -2-4 t: ptkzwltkr -17-18 q: qbmbqqlqqjqqhtqfqq -3-6 r: rfkmhfd -4-7 h: fghxhhhh -4-5 s: spsxv -3-5 k: dkpkzkl -7-10 n: nzpnnnlnnsnnn -3-4 h: hhnh -19-20 r: rsrkmcrhkqfrfdqmlvxq -9-10 m: mmhmwmwmmvm -3-9 j: jdjjjjbjwjjjjjjjjjj -1-2 s: mpsscts -3-4 g: nghj -6-10 x: xxxxxnxxxhxx -10-13 t: tttttttttqttvtttt -12-13 s: nssssssnsjrss -7-9 z: hjkzxlzrczhhmm -16-17 s: sssssssssssssssfpsss -4-5 x: xxxxx -2-4 c: bppcccfwqs -4-11 w: wwwwwwwwwwwkw -6-8 m: hdxjhkpjdjmrql -2-19 k: zkhcfxztkgltmqbdqxj -1-3 n: gnqnnnnnrnnn -11-13 f: ffffffffgfmfkf -1-5 z: lwzkxzjzv -11-12 m: mhlxvjmrcffn -2-7 z: cqhbjlbzh -3-18 k: kdkkkfbkgwkdknkkkzjk -9-10 b: bbrbbbkcbbbbbzll -5-6 l: llplkl -9-15 c: vcgcngchvkvjsgcf -3-6 q: qqqqqwq -9-11 k: kxkjrpkkckkkkkskk -9-18 k: hbkrrwvctstksttkwrvf -2-3 j: jtjj -1-5 n: nnnnln -1-6 b: jpmbbbbqkd -5-7 w: wwkwwws -3-10 m: pxpwzblsvrlsxjpvpslt -11-12 j: ljjjjkjjjcmc -10-11 q: qqqqqqqqqqq -2-7 h: hqqhkbh -7-9 l: lllclmfslldrlsl -8-9 h: jhtvlvrhhhkhh -3-6 k: kkjkkkk -1-5 l: vllllc -1-2 q: vqqq -5-6 q: mkqhjp -7-14 l: lllllllrdlmlckll -3-4 k: kxkkrjk -6-8 l: pslrqlbl -1-8 t: gtzthtct -5-7 d: lhxkdrddf -2-3 h: hmhh -7-9 p: ppppvppppvwp -9-11 q: jhzvqqbqfnql -9-14 r: rrrrrrrrtrrrglrrz -11-12 s: shsssssssssbs -1-7 t: qtttttt -11-16 s: spgsmwbrshhldcsvvx -5-6 l: lkmlll -2-9 h: vdchgpmlhvxzjcp -4-7 k: xfkkkkkckmkk -1-3 w: wwww -13-14 c: cccccccgcwcccxdc -12-15 w: wrlwwxwwwlwwwfwcw -5-13 m: jmtjqmvkmpxdmt -7-11 m: nxnkxfgzcpfm -8-10 m: mmmmbhmmmk -11-13 z: khcksspxzwmznpl -6-7 x: xkxxcxj -8-11 s: sssrssssssss -6-12 h: wkzcnspbtjwchv -8-9 b: bbbbbbbkb -7-8 d: hxsjqfddxdb -15-16 g: gggggwgggggggggg -8-10 q: gqqzqmltqqlkqwtzgfn -11-16 j: kjsjjjjjjjckjjjj -2-4 s: vbfqcmgssqb -16-17 r: rrrrrrrrrrrrrrrrr -7-11 d: ddhdddrddtdd -2-3 x: gvpcx -4-10 t: mbftjndbttv -13-14 j: zjjfmsgqtgwdhd -6-11 s: qlqhssgsbvnsts -9-15 t: ttdttttvttttqttvs -3-6 l: lcvlll -3-5 x: mpdsxrhqlbcdx -1-4 q: kjqz -2-3 p: pncmptpppgp -2-6 l: tlbvnpllvxlgxhn -14-17 q: lgdsvqxwmhdwzhjsq -13-19 m: mmmmzmmsmmmmmmmmmmc -4-5 x: xxxxzl -2-4 n: nnrn -8-9 n: nnnnnnnns -11-14 l: bpmrcbhslcmxxv -7-12 p: ppmpvpppppkpfpp -4-10 k: kkkqkkkkkfkkkkk -8-11 s: sssfssssnssssss -8-16 l: xklrjlllrqlxhrkl -2-12 r: rrcrqrprhcrrrvrph -14-15 h: jrhhjhhhhhhzhmp -8-12 m: mmmmmcmmvwmmx -2-9 f: ffdffffmfqpffffffff -8-12 x: xxxxxxxgxxxr -5-6 z: zzzzzxz -14-17 j: jjjjjjjjjjjjjzjjs -1-3 f: qfjmrf -6-7 t: ttbttdq -8-9 x: xfxxxxxxxxbxxxq -4-6 q: qqpgwqbr -5-12 l: lqzqrtgjmzml -5-7 w: wwwnwjwwfw -5-6 x: znxdtx -4-5 x: qqxhvmxxxxz -1-5 n: nnnnnn -2-5 s: gxsnj -5-7 s: gssjssszst -9-14 h: zjhrdpjwhkppdf -2-8 t: ftgttpcttxtvnttntjs -1-4 t: lttl -8-10 f: fffffffffrf -3-6 q: qvqxrhd -9-10 j: zrfxvmhgzcnkthzs -5-7 q: rqtqxqq -2-4 j: jxnj -7-8 c: fccccczkc -1-2 x: xktx -5-6 t: tttqkt -3-4 m: crbhwmq -5-7 d: ddddhdcd -3-4 w: wwcn -2-7 d: dmdddcd -6-7 l: llzllfg -5-8 l: llxllllllf -3-4 s: lspsb -1-6 k: kkkkkdk -6-12 x: ztxxmxxqxrxxxcxx -5-12 p: fpngpxprbqhprvj -1-11 k: kvkkkkkkkkkkkkkkk -2-11 x: qxxnxxxxxxxmxfxjsg -12-14 r: wzrrfztrbrrrztgrgrm -1-4 r: rbrlrj -14-16 d: dddddddddddddsddd -8-15 l: lzllmllclllljlll -7-8 l: qkgqklzzllqclqlfjl -1-4 g: vggggg -12-13 c: krbpskrctrvtc -3-6 t: btttttmkt -8-12 t: tttttttttttltttt -10-16 k: kkkkkqkkkkkkkkkw -5-6 d: ddldvkd -10-14 v: vvbrvvvkbvgvvr -4-13 v: vvvcvvqcvflrph -7-17 x: qxfxxxxvzslqzzbcx -9-10 g: ggggggggvjggggggggg -3-4 p: hpppkp -1-3 s: lstcssssv -4-6 n: nnnsnmnnn -2-6 k: kkkknkvkg -1-2 c: cccccc -8-13 h: hhhhhhhhhzhhv -10-13 h: hwvhhhhjhhthhhhlxh -15-18 p: pzpgpppppgpxpppbppnp -10-11 n: nffrjnmbnxj -5-9 l: lllldrllbzljsw -4-8 j: jjmjjjrjsjjjjj -2-9 v: vtzlvvdjv -2-3 g: ggcf -9-15 b: psxgbbcjbbhbntb -15-16 q: qqqqqqqqqqqqqqqz -11-12 c: dvgckwdtcccc -5-11 s: nskssssssfwb -2-7 p: pdfdnpqppzpp -3-7 d: dcdwnmdgnstt -13-14 w: hwdsrqmdmxhlkm -5-7 l: lzzdzlvrtgzllcn -5-6 t: bttttvt -6-8 c: crcczxckcc -5-7 g: gmvgggg -7-9 g: gggggglgqgg -5-6 t: ttttrt -2-3 g: sntggpm -4-6 m: flmmsm -9-12 w: wwwwwwwwwwjw -6-13 x: cfxrwlljbnzlb -13-16 v: wvfcgrgfvggjcbqv -7-8 n: sdnrsnhn -1-3 q: qqqrqmjfq -4-6 s: bzdsslss -1-5 f: rfffcf -4-5 s: sssss -4-5 h: xhkhhh -10-11 g: ggjdgpvggggx -9-10 v: vvvvvvvvjvvvjvwvv -3-7 b: fbbmzbblqzvfgpnrl -6-11 h: hhhhhlhhhhchhhhh -3-4 l: llllstmhwlchzd -3-7 t: xthsjgtcblcszn -2-17 f: kfjwdtmhzjzlvhpjf -2-5 b: rbtbg -9-15 z: mzzzcfzzzwvtzqgbzjzm -6-12 f: qgtzmktjffmfn -11-17 f: flcffsqwlfjvbcffb -5-6 r: gsdrrr -13-14 b: bbbbbbnbbbnbbbbbsb -2-9 b: bcbrvbvbbbzb -3-5 t: tkttft -6-7 v: vcvlqvdcvdh -7-13 w: wwwxwwwwhwwwlqwh -5-6 z: zkhpzzjtnkjzf -7-9 p: pppppppppppkppppp -4-7 p: spppfjmc -8-9 k: sxnkplwfz -4-5 r: clpgrr -7-8 m: mmmntmmmpmmmmrmpk -4-5 j: jxbjnxj -3-10 b: jwbclnqzdbnb -5-6 r: rxbxlnsmrrfr -3-4 f: fvfsbq -2-4 x: sxxxd -7-8 p: qpppppprpp -3-4 q: qqqq -6-8 n: njwgnqntnnn -6-10 z: zdzzgzzzzj -6-9 d: rwdlfdrtd -5-6 l: skllpxslll -5-7 d: dwdznhddttljdnvkdws -1-3 d: dhdc -1-11 s: sqgzsrrvgms -8-14 w: wvvwrwwlwwmwwwn -11-12 t: ttbttttttttttttt -17-18 f: lfffffmfffffffffkff -17-19 k: kkkmzkkkrkfspllkckb -4-7 f: fxfjtdfcxff -4-10 h: hhhrhhhhhhhhhh -6-7 p: ppkpppppp -5-10 c: hccpcgbkbctctp -5-11 l: llllvljllltlllplll -5-6 c: kcntkj -16-18 m: mmxmmmmmmmlmmmmwmmm -4-7 b: bbvbbrbb -6-7 n: dbrqnnn -3-4 h: hhhht -11-13 s: sssssssssvlwxsfj -3-9 g: zrsdrgrzgghxj -14-15 f: ffzgnqfrclzgxfffff -7-8 c: cccccccbc -5-8 s: ssssssssss -8-15 k: klkkkppksvdrknd -4-6 h: hfhhjljh -8-15 c: cxljcccvhpklxcr -3-7 h: kpnttrczt -14-16 p: tqxpdpddrwfxgjvc -12-15 j: cjjjmwjdbtpwjmjcg -11-17 n: nnnnnnnnnnnnnnnnln -1-8 s: sssswsms -9-10 w: wwwwwwwwww -6-16 v: gvfjvvvvvqlsbrvvd -3-8 q: rvfnrfvsmjk -4-6 w: wvpwtww -7-10 c: xcctfssplcdqrpqs -4-10 j: mjcjjwvjwjm -7-11 w: qmwjfrjpjkqww -6-18 r: qvvthtbxlkrnvqzvlf -10-12 f: ffglffjffffctfffff -6-7 x: xxhxtfpqxxx -9-10 t: tttttttxtt -3-10 j: cpqxwljhgjldfns -15-16 q: mqqnqfqjfqqqzqqt -4-12 f: fffffffffffvf -4-10 s: ssssssszst -1-6 x: xgxxxxxxkx -2-4 z: zzzb -11-13 j: jjjjjjjjjjjjv -1-2 j: hjjd -4-12 h: hhljhhxhxnhr -6-10 b: bbbbbkbbbv -7-8 m: mmmmmmgvmm -9-15 h: hhhhhhhhwhhhwhhh -1-2 g: gvglg -4-10 v: gkbvgntvrvv -9-10 p: mjpppbppnpjv -1-3 w: wwwtww -1-7 v: vmvsgjdfdpwtvqqfsh -10-12 c: ccccccccclmcccjc -13-14 g: gggggglgrggqzgggvbgg -1-6 p: mhptnp -10-11 n: nnnnnnjnnpxxn -2-5 l: tllcc -13-14 j: zbvlwljjgljwjj -10-11 p: ppppppvpppjppvp -12-18 c: cccccccccctdccccch -15-16 j: jjjjjjjjjjjjrjjj -5-8 t: gjkttztjt -5-9 k: kjkhwdvkk -5-7 p: pjvpppp -2-4 w: wwwhwlwwm -4-5 m: mmljm -6-15 b: rbbncbrvmdvbbqb -13-15 n: nnnrnnpdfnnqnnncnfnn -2-11 r: srfhtxczprbx -3-6 n: nnnnnh -15-16 v: vvvvvrvvvvvvvvvvr -7-8 m: jphmmmmft -4-6 p: pppjpvp -1-4 g: dggkgg -1-2 p: zppsp -6-7 b: bbbbbbbbbbb -3-4 x: vxsv -9-13 t: pqtqttttkxtghv -10-19 v: vvvvvvvvvvvvvvvvvvxv -6-13 z: wnmzkzzqftzmc -6-13 l: vklgsrjrkjpzlqll -3-6 h: mwhllh -1-8 l: blllllltl -3-9 v: glxlzpffvgvmb -2-5 s: sssstss -3-9 t: tfptcrhtlzqxcv -9-10 t: ttttttttttjttt -9-14 h: ktwphtsnkmlzwd -3-5 z: zzznz -2-3 t: twtt -3-5 f: ffffsf -17-18 w: wwhwwwwwvwwwwwwwnsw -3-13 w: wwwwwwwvhwwwwpwww -7-8 n: pjnxnnnntpwnbsjnnz -2-4 v: vvvjhvv -2-9 d: dmddwcpnqdddszpb -3-4 q: qqrqqh -1-2 d: czdd -1-4 d: xsdzrms -1-3 n: znxnnn -5-7 r: rrrrnrzrr -2-5 c: ccccxcc -6-7 c: nccccdc -1-4 s: bslsrvgjdfsgf -10-11 j: jcjnjjpjlhh -8-12 k: lzrvvhtkkpbkfwjzcmz -10-13 b: bbbbbbbrsnbbmb -2-9 s: hswtzhlss -6-7 j: cpnjjjf -11-15 p: pgppqsfjcpbnmqp -4-6 k: kkkfwq -10-11 c: rccccccccccccc -5-14 d: bmfppdgvccmbdqpx -7-8 v: vqnvvqvvvvjvv -7-16 f: ffffffkfffffffffff -14-15 r: nbdlfkrbcrxbcts -13-14 v: vvfvvvvvzgvvvvmvv -1-12 l: glwdllllpllltll -3-9 x: mnxpljmxnm -4-5 h: rjqhbxnvkc -13-14 z: zzjzkzzlcbzpjzzz -2-6 p: tnpppp -8-12 n: kpjfjwpnwlzqhwbz -2-15 q: jqkjkbzcwvvqbxq -2-3 l: llllll -15-19 l: llllllllllfllllllll -1-3 p: pkzkpsvdptz -1-8 f: fffffffvfrf -1-11 j: prdqjlhjdvljjvjmhnm -10-16 v: stshngzvzvvvnffv -10-11 m: nmmtmqmmmmb -4-9 t: nzttkfcvrnd -18-20 t: bbttltktrgtntgtzhtct -4-6 p: pppglp -7-13 g: vgrccggpbvxgl -5-7 l: lqllvld -7-10 w: wswwwwqrww -7-8 c: cncczcmlcmcx -1-9 d: ggjtdddcqcmpd -4-7 q: vdkqwnqkbsdqxwwth -5-6 s: ptjwxsz -7-14 v: vvgbvtvvxvzvwvvc -4-8 h: tmjhhrndwlh -6-7 w: wwjvswf -2-9 v: vvvvvvvmv -2-4 c: hcgc -2-3 x: xxxx -6-15 h: vnbhwhhwtzztrlh -13-16 k: kkknkkkkkkkkkkkrkk -2-7 b: nbfxslbqblbbbbbbl -9-11 k: kkrqkzkkkvkshqkbkkhk -9-13 j: qjjjjjjvmrjjjjjjjj -7-15 h: zhqhhhjbhdhhmhfn -3-5 t: vtvstkkttftttt -7-8 h: hdhhhqhhnnfqwhzhdlsx -16-19 k: kkkkkkkkkkkkkkkfkkd -3-4 f: qfjsxfnsfq -13-14 t: ttjftttcttttptttt -8-9 f: gjmfffgrq -9-10 m: mmpmmljmmmmmm -9-10 k: skttkrjkkb -3-4 k: kkgk -1-6 h: vhhhhvhh -11-19 z: zzhzzzzzzzzvznzzzzgz -9-11 z: mzzzzzzlzzbz -7-16 c: tpcwtwcbljrnztwrsdd -13-15 b: hnrbfgqwqwqhpnc -2-4 g: fgsdg -2-3 k: kklkkqkhklkkqb -8-9 g: tgrfdbvgfzqvsf -3-12 j: jmjvwqrpsjvc -4-10 v: zvhjvtpjgvvd -5-6 p: fgplzd -9-13 r: csngrmrxrqvhdwfkvns -7-13 q: qqqqqqqqqqqqqqqqq -11-16 l: cvlxgkdmltldzsplzz -8-11 z: znmhzzcpbzz -13-14 x: xxxxxxxxxxxxxhxx -11-20 c: qmhcvthqctdtscfcjcck -14-15 l: lnllllslwjlllll -5-7 p: qppptqm -1-7 f: chffvqfrdffbcmqf -8-14 h: hhhbhhrshhphhl -16-19 j: tgsjqjwjjjbcjtjjjjj -3-4 p: jzppdrzpkgcxdljgm -5-6 z: zzzzgzzz -3-8 t: nvzdttst -4-6 x: qfkznxh -9-18 d: ddddddddzddddddddl -11-17 x: xcxrxxxxxqzrxxxxxxx -3-4 l: lmll -10-13 f: fffffffffffffff -7-9 v: mccgvfvlh -9-10 m: ddmlmtmgmmgmprmbmpqm -5-10 v: vvvvjvvvvvvvvvx -3-10 v: dwxdfjhxgsznhzqsqnd -1-3 k: xkrkkkkkkmp -2-5 c: dcrscf -1-10 p: ppwpwppppppljtppr -3-7 r: rrrrrrbrdr -5-9 t: ttttjtttttttttt -4-5 w: wwwxr -6-11 f: rtwzsffhxplnwrzpwwj -3-9 c: klcdzfchcnxcccnccpc -3-4 g: mgnlg -1-5 f: kffgpffft -3-4 l: qlsvllnl -2-5 w: vwwwwwwrf -11-12 n: qcgnnznfnmnt -6-13 d: rbbzghqwwmrdkssgn -1-3 x: hdxnqxtphtmk -10-13 w: xwwwxwcwrfcwm -9-10 p: tpppfxvbppppgpnvfzcv -8-13 h: nhqhqhthmpmnhlch -11-13 z: hjkftzgzlfhjjh -9-10 t: tttthttpzt -2-8 g: vghggdbfggrfggrgggrt -11-16 g: gjzgfnggggsgggzh -6-10 r: srmjvrrrlrrrhrl -2-11 d: ddddddddbddddd -5-6 j: jjfjjjj -8-11 s: ssssssssssqssmssss -4-5 v: vvvhp -5-7 c: ccqxvklbc -8-9 q: qnqfgqvqqqdwzqmcq -3-5 q: zbqqq -6-9 g: kkgzgwpvgt -1-14 h: hhhhhhhhhhhhhhh -9-10 w: swwwwwwwjq -1-13 j: xjwjjljjjjdjjjjmjj -11-13 m: smmhmmcmmmkmdmmmmm -15-17 p: ppppppppppppppsps diff --git a/day2/program.js b/day2/program.js deleted file mode 100644 index 6d50394..0000000 --- a/day2/program.js +++ /dev/null @@ -1,68 +0,0 @@ -const fs = require('fs'); - -function split(item) { - let parts = item.split(" "); - if (parts.length < 2) return false; - parts[0] = parts[0].split('-'); - - parts[0][0] = parseInt(parts[0][0]); - parts[0][1] = parseInt(parts[0][1]); - return parts; -} - -function isValidPart1(item) { - const parts = split(item); - if (!parts) return; - - const char = parts[1].substr(0,1); - const regex = new RegExp(char, 'g'); - const matches = parts[2].match(regex); - - if (matches && matches.length >= parts[0][0] && matches.length <= parts[0][1]) { - return true; - } - return false; - -} - - -function isValidPart2(item) { - const parts = split(item); - if (!parts) return; - - const char = parts[1].substr(0,1); - const pw = parts[2]; - - const char1 = pw.substr(parts[0][0] - 1, 1); - const char2 = pw.substr(parts[0][1] - 1, 1); - - if (char1 === char2) return false; - if (char1 === char || char2 === char) return true; - - return false; - -} - -function parseItems(input) { - let validItems1 = 0; - let validItems2 = 0; - - input.forEach(item => { - if (isValidPart1(item)) { - validItems1++; - } - if (isValidPart2(item)){ - validItems2++; - } - }); - - console.log('part 1: found valid items: ', validItems1); - console.log('part 2: found valid items: ', validItems2); -} - - -fs.readFile('./input.txt', 'utf-8', (e, data) =>{ - const items = data.split("\n"); - - const pws = parseItems(items); -}) \ No newline at end of file diff --git a/day3/input.txt b/day3/input.txt deleted file mode 100644 index 8285f03..0000000 --- a/day3/input.txt +++ /dev/null @@ -1,323 +0,0 @@ -.....#....#...#.#..........#... -...#.................#......... -......#...#.#.#.....#..#.....#. -.........#.#.............##.... -#..####..#..#.##.....#......... -...#........#..##...........#.. -..##.#.#..#....#..#......#.#... -.......#.##....#.....###....#.# -.#..#...#......#..#....##.#.... -...#...............#.#.....#... -..#............#..#.........#.# -#.#.#.............##.#......#.. -#...#..............##...#.#.... -...#....#................#.#..# -..#.#..#.#.#..#.....#.........# -#.............#..#..........#.. -.#...#.#........###.#....#...#. -#......#....#.#..#.##..#....... -.##......###.#......#..##...#.. -#..#....#........#......#.#.... -.#..................#.....#.### -.#......#.#.#.....#...#.#...... -....#.............#.#.......... -....#..#.#........#..###....... -.....#....#...#........#....... -...........#.###....##.......#. -....#...........#.#..#...#..... -...........#.....#.#........... -.....#........#.....#.#..#....# -#.#......#.......#.......#..... -..........#.............#.#.#.. -#...#..........#....#....#..... -.#.#......#..##...#.....#...##. -.#....#...#.#.......#.#........ -....#....##.##...#............. -#...#....#..#.........#........ -...#.....#.#...#.......#..#.... -#.......#...#....##........#..# -####........#........#....#.#.. -............##..........#...... -.......#.....#.#.#.##..#...#... -..........#....#...##.........# -..##..####.......##......#.##.. -.....#.#......##...#..#...#.... -....#.#.#.........#........#... -...........###...#.........##.. -.......#.#....#......#.##...##. -.................#...##.#...##. -.......#.......#..#.#.......... -.#....#..#....#........#....... -...............#.##..#...##..#. -.###.#....#......#...#.#.....#. -.#.....##.......#.......#...... -....#..#.....#.....#........... -.......#....#.................# -.......#.##...#...#......#..... -.#.....#...####.............#.. -......#.........#..........#... -.........#....#....#........### -....#.........#......##.....#.. -....#........##...##.....##...# -.#..#....#..........#...#.###.# -#..#......#...#........#....... -...#.........................#. -.............#........#........ -.......#.#.#.....##.....#..#... -..##..##.........#............. -.#...#..#......#...##..##..###. -.....#....#...#...##.##........ -.#.#..#...........#..#..#...... -##..#...#..#...##..#....#...... -...#...#...#.........#....###.. -...##..#....#.#.#.......#...#.. -..#.#.....#..#....#..##.......# -.....#.#.....#......#....#.#... -.......##....#.....#...#.....#. -..##..#.................#.#.... -..............##....##.#..##... -.#..#.....#....#.#.#........... -......#.#.#..#..#...#.....#..## -..#.........#.#.......###...##. -#.....#...........#.....#.##.#. -#..........#....#....#..#....#. -.#.....#...#.......###......#.. -....##..##......#....#....#.... -.......#.#.............#....#.# -.#..#.##.##.##....#.#.....##.## -....#..##.#..#.............##.. -....#...........#...#....#..#.. -...........#..#....#....##.#.## -......#....#....#.....#......#. -.##.##....#.....#.#......#...#. -.....##.......#.#.#........##.. -#..........##..#....#..#.#....# -...#........................... -...#..#...#..#.#.#.#.......#.#. -.....#.........#..###.......... -...#.#......##....#......#..### -#..............#....#.......#.. -.........##......###..###...... -..#......##...........#.##..... -#.#..#......#...##............. -......#.#.............#....#..# -#.....##..#.#.................# -..##....#.....#....#.....###... -.#.#.##.....#.................. -.#......#.#.#.....#..#....#.... -..#.#.....##.#...#..#.#.##..... -..#.#..#......##.#.#..........# -.......##.....#..#...#....##.#. -...#.....#..........#.......... -......................##......# -...###.........##.........#.... -....#..................#.....#. -.##..#.............#........##. -....#....#...###..........#.... -.....#.#..........###.......... -..#......##......#.#.##.#..#... -##...........#.#..#.....#..#... -.........#......#..........#.#. -...#.##.#..#..###..#........... -....##.#.##...........#.....##. -....#...................###.... -#.......#......#......#.....#.. -#..........##.................. -...#..#.#....#..#.........##.#. -......#...##.#...............#. -.........#....#.#...#..#..#.... -...#......###..#......#.....#.# -#..###.#.............#......... -......#...........#............ -..#..#.##.....#......#.#..#...# -.........#..............#...... -........#.....#..#...#.....#..# -.....................#........# -.##.......##...#.###.........#. -.#...#.......#.#....##....#.... -........#......#...........#.#. -....#......##...#.....#...#...# -..#.........#.#...............# -....#.....#......#............. -.............##.....#....#..... -........#......#.#.....#....#.. -#.........#...#......#....#...# -.#........###...#.#.#...#....#. -.###...........#..#............ -....##.........#..#...##.#..### -.####..#.#...............##.#.. -#.....#...#....#.......##....#. -..#.....##...##.#...#..#....... -..#.###.......#.....#.......#.. -...........#.......#....##....# -..#...#....##........###......# -...#..#..............#...#..... -##.#.............#....##.#..##. -##.#..#..............#.#....... -.......#....#....##............ -.##..##.#..........#.#...#.#... -.........##.......##...#...#... -............#...##....#...#.... -........#...#..#...#.##......#. -..#...#.#.........#.#....#..... -..#...#.#..#.......#.#......... -.......#.....#...#.#..###....#. -.#......#.#....#.#.####....#... -.......##..#......#...#......## -#####.....#........#.#.......#. -.....#...#..#...#.#.....#..#... -....#...#....##.....##....#.#.. -.#..#......#.####.....#....#..# -...#.......#..#.....##........# -.#.....#.#.#.....##...#..#..... -.............#...#..#.....#.... -...#.....##.......#...##..#...# -..#.............#...#..#..##... -...#........#........#...#...#. -##..........#.#.#.............# -....#....#..............#..#... -....#..####..##....#.......#.#. -.#..#.....##....#.#.....#...#.. -#............##..#..#.#......#. -....#..........##..#........... -..#.##.#.......#...#.##....#... -....#.#.............#.#.##....# -...#..#.#.#......#..#....#....# -.............#...........#..#.. -#.............##.......#..###.. -..##....#.#.#...#...#....#...#. -##.......####........##..#..... -.###..#..#..#..#...#.#......... -............#............#..... -#...#.....#.#.##.##...#.......# -#........#....#...#.........#.. -#....#.#......#.............#.. -....#............#......##...#. -.......#........#..#.......#..# -#.#...#.#.#..#..#........#....# -#.#.##...........#.....#.....#. -.#...##.#..#................... -###...#.#.....................# -.#....##...##.#....#..#........ -........###...#.#....##...#..## -...#..#..........###..#.......# -..#..##.............#.....#.... -....##..#..............#....... -...##...##.#....#.#...#...#.#.# -..#..........#.....##........#. -.#.#.....#......#..#....#...... -...##.#....#.......#......#.... -...##..#........##......#..##.. -#..###...#...........#.#....... -..##...#...#.#.#...#.#.....#... -..#.....##.#....#.....#..#..... -..#.#......#.......#........... -....##......##.............#..# -.......#.........##...#..#...#. -.#........#.##.#.....#.#....... -#..#...#..#.....##...........#. -..##..............#....#....... -.#..#....#.#...........#..##.#. -#....#..###..........#...#..... -.......#...##........#.#...###. -....#..#......##......#.....#.. -.#..##..#..#......#......#.##.. -....#.#...........#..#.#.##.#.. -.....#......#.....#.....#..#... -..........#...........#...##... -#..#.#.#..#....#.....##......## -..#.....#.....#................ -...#.#..##.........#..#..##.... -.#.....##..#.#.#.#.....#....... -...........##...#.............. -...#.#....##..#.............### -...#.#...........#.........#... -#.....#.....##..#.#.#.#....#... -##..................##.##...... -......#.....#....#.....#..#...# -.............#.......#....#..## -.#..#.##..#..#.........##...#.. -..#.#....#........#....#....##. -.#.#.#.#.#.......#.......#..#.. -#.....#..##..#.........#....... -.............#.#..............# -.........#......#....#.#......# -.........#.#...##..#.#......... -...........#..........#........ -.......#...#...#......#..#..... -#.....#...............#.....#.# -..#....#..........#.#...#..#... -#....##..#..#.....#.#..#.#..... -.#....#..###............##..... -......#.##...........#....#..#. -...#........##....#...#...#.... -..#.#.#.....#..#.#..........##. -..................#...........# -##........#.#......#.#.......#. -......#..#.............##...... -.#..###..#...###......#....#..# -..#...........#...#...##..#...# -..#..........#..............#.. -.....#......................... -..#.#..##...........##...#..... -...........#......##.....##.... -......#.......#................ -.........#.......#.#........... -#......#...#........##.....##.. -...#.....#....#..#.....#....... -....#.#......#...#..#.##.##...# -..#..#.#.....#...#...........#. -.#....##.####.....#..........## -...##.##.....##..###...#....... -.......#.#...#....#.......#..#. -.#..#.###.#.............#...... -.###.........####..#........... -#..#.#.###.....#.......#....... -.#.....#.....#.....#.........#. -..#...#......#.......##.###.... -.......##.............##.#..... -.....................#.....##.# -##.#...#........#..##........#. -...#..........#.#.#..#......### -.#....#.#.#..........##........ -....#....####....#.#....#..#.#. -..#.........#....##..........## -...##.#.......##.#.......#.#... -........#..#......#...#.#.....# -.....##............#.#.......#. -.........##...##..#.....#..#... -#...#....#........#...#....##.# -..#.....#..........#...##.....# -.##..#.........#...........#... -.....##.#.#.#.#..#...#.....#.#. -.#..#..##.........#.......#...# -#....#.....#...#....#.........# -...#..#.......#.........#...... -.#....##..#......##.#.#......#. -....##.##...........#...#...... -..#.#....#.##...#......#....... -...#........#.............#.... -...##....................#.###. -.#.......#.........#......##... -....#..#..............#....#... -....##.#............#.......... -.#...#....#...##..........#.... -....#............#.....#....... -.......#........#.............. -....#.#....#.#..#..#........... -......................#.#...... -#......##.....#..#.......##.... -...#........#........#.#...##.. -##.#....##....#................ -#..#....#..............#.##.... -......#........#...........#... -#....##.##...#...#..#...##..... -............#............#..#.. -#....#...#..#..#.#...........#. -.......#..........#..........## -.....#......#....##.#.......... -.#....#....#....#....#..#...#.. -.....###....#...#.#.#........#. -.......#...#..........##..#...# -..##........................##. -.....#....#..............#....# diff --git a/day3/program.js b/day3/program.js deleted file mode 100644 index 6c2aae4..0000000 --- a/day3/program.js +++ /dev/null @@ -1,35 +0,0 @@ -const fs = require('fs'); -let items; - -fs.readFile('./input.txt', 'utf-8', (e, data) => { - items = data.split("\n"); - const resultPart1 = progress(0, 0, 0, [3,1]); - const resultPart2 = checkPart2(); - - console.log('result!', resultPart1, resultPart2); -}); - -function checkPart2() { - const oneone = progress(0, 0, 0, [1,1]); - const threeone = progress(0, 0, 0, [3,1]); - const fiveone = progress(0, 0, 0, [5,1]); - const sevenone = progress(0, 0, 0, [7,1]); - const onetwo = progress(0, 0, 0, [1,2]); - return oneone*threeone*fiveone*sevenone*onetwo; -} - -function progress(trees, currentRow, currentColumn, nextStep) { - const block = items[currentRow].substr(currentColumn, 1); - if (block === '#') trees++; - - currentRow += nextStep[1]; - if (!items[currentRow]) return trees; - - currentColumn += nextStep[0]; - - if (currentColumn > items[currentRow].length - 1) { - currentColumn -= items[currentRow].length; - } - - return progress(trees, currentRow, currentColumn, nextStep); -} \ No newline at end of file diff --git a/day4/input.txt b/day4/input.txt deleted file mode 100644 index 646dcfe..0000000 --- a/day4/input.txt +++ /dev/null @@ -1,1169 +0,0 @@ -byr:2024 iyr:2016 -eyr:2034 ecl:zzz pid:985592671 hcl:033b48 -hgt:181 cid:166 - -hgt:66cm -pid:152cm -hcl:cfb18a eyr:1947 -byr:2020 ecl:zzz iyr:2029 - -ecl:gry hcl:#888785 eyr:2023 cid:63 -iyr:2019 hgt:177cm -pid:656793259 - -pid:#5e832a -ecl:dne hcl:#7d3b0c byr:2018 eyr:1928 hgt:61cm iyr:1936 cid:241 - -hcl:#888785 ecl:oth eyr:2025 -pid:597580472 -iyr:2017 hgt:187cm byr:1957 cid:247 - -eyr:2029 cid:145 iyr:2026 pid:178cm hgt:162in ecl:gry -hcl:#a5d09f byr:2002 - -eyr:2024 -ecl:amb -pid:349191561 iyr:2018 hgt:156cm byr:1972 -hcl:#341e13 - -byr:1998 pid:408617933 -hcl:#fffffd hgt:193cm eyr:2021 ecl:brn iyr:2013 - -eyr:1964 byr:2026 -hcl:#cfa07d hgt:154cm pid:175cm cid:85 iyr:2018 ecl:gmt - -hgt:161cm -pid:021086946 -iyr:2020 ecl:blu eyr:2024 -byr:1921 - -pid:173cm cid:235 eyr:1935 iyr:1952 ecl:utc byr:2015 hgt:187 -hcl:6239ed - -iyr:2015 hcl:#18171d pid:2691566700 ecl:gmt hgt:68cm eyr:2032 byr:2016 -cid:341 - -hcl:#c0946f -iyr:2010 pid:941290886 eyr:2023 ecl:brn -hgt:190cm -byr:1927 - -pid:423210256 eyr:2026 iyr:2011 byr:1926 hcl:#efcc98 -ecl:grn -hgt:185cm cid:135 - -ecl:blu eyr:2030 -byr:1996 hgt:154cm iyr:2019 pid:809421142 -hcl:#b6652a -cid:250 - -hcl:39615c iyr:1934 byr:2009 pid:7752456272 hgt:191cm -eyr:2024 ecl:#5b7a58 - -iyr:1938 hgt:160in hcl:#623a2f eyr:2031 -ecl:grn pid:169cm byr:1964 - -ecl:grt byr:2004 hcl:026249 hgt:176in iyr:1933 eyr:2023 -pid:176cm - -hgt:167cm -pid:023312072 ecl:oth iyr:2018 hcl:#866857 eyr:2024 byr:1994 - -hcl:#c0946f -ecl:blu iyr:2016 -eyr:2023 hgt:193cm -pid:190756361 byr:1943 -cid:306 - -iyr:2013 hgt:179cm ecl:oth -cid:290 eyr:2020 pid:953948851 -hcl:#6b5442 -byr:1973 - -pid:795414848 -cid:51 -ecl:oth iyr:2020 hcl:#ceb3a1 eyr:2026 byr:1995 hgt:186cm - -iyr:2020 -byr:1993 hgt:159cm pid:905121332 -ecl:brn eyr:2023 -hcl:#341e13 - -ecl:hzl iyr:2017 eyr:2020 hcl:z byr:2003 hgt:163 - -eyr:2038 -cid:342 hgt:116 iyr:2019 hcl:73db63 byr:1973 ecl:gry pid:468207739 - -pid:022772899 eyr:2040 hgt:181cm -ecl:dne -hcl:#866857 -byr:1931 iyr:2012 - -pid:36127238 eyr:2038 cid:227 iyr:1985 hgt:103 byr:2004 -hcl:z ecl:#45a680 - -hgt:183cm -iyr:2013 byr:1933 cid:112 -eyr:2024 pid:795616425 -hcl:#7d3b0c -ecl:gry - -cid:236 byr:1985 hgt:160cm -hcl:#6b5442 eyr:2028 -ecl:gmt pid:277781460 iyr:2018 - -ecl:amb -byr:1948 pid:750948701 eyr:2025 iyr:2013 hgt:62in hcl:#7d3b0c - -eyr:2029 iyr:2020 pid:385941629 byr:1998 hgt:153cm cid:321 -hcl:#623a2f - -byr:1966 hgt:69in iyr:2012 -pid:423254216 -eyr:2020 hcl:#602927 ecl:blu - -byr:2004 pid:14257358 cid:338 iyr:2010 -ecl:gry -hcl:#602927 -hgt:152cm - -ecl:gry eyr:2027 hcl:#341e13 -iyr:2018 pid:298762877 hgt:162cm byr:1968 - -hcl:#ceb3a1 -iyr:2019 ecl:brn eyr:2020 pid:575413143 byr:2030 hgt:185cm -cid:159 - -eyr:2025 pid:628251539 ecl:blu byr:1953 hgt:63in hcl:#18171d iyr:2016 - -pid:973247326 byr:1925 hcl:#341e13 ecl:grn eyr:2028 hgt:156cm -iyr:2014 - -byr:1957 hgt:154cm -hcl:#7d3b0c -pid:062760305 eyr:2023 ecl:brn -iyr:2012 - -ecl:brn eyr:2029 -cid:250 -pid:477431667 hgt:177cm -byr:1993 iyr:2020 hcl:#ceb3a1 - -pid:155471269 iyr:2010 byr:1985 hgt:169cm eyr:2026 hcl:#694b7d cid:337 ecl:gry - -ecl:grt hgt:152in byr:2012 -pid:#b9d022 iyr:2030 -eyr:2037 hcl:z cid:201 - -hcl:9270b3 eyr:2028 -hgt:71cm iyr:2017 pid:#6c7af7 ecl:grn byr:1971 - -pid:#0ab7e1 hgt:166cm byr:1929 -cid:289 -hcl:#623a2f iyr:2005 -ecl:amb - -pid:967754435 -hgt:175cm hcl:#341e13 ecl:utc iyr:2023 eyr:1949 byr:1988 - -byr:1942 ecl:brn eyr:2023 pid:898126666 hgt:182cm cid:138 -hcl:#866857 -iyr:2010 - -eyr:2027 iyr:2019 byr:1953 pid:760664328 hcl:#b6652a -ecl:grn hgt:155cm - -iyr:2018 -ecl:brn hcl:#18171d pid:953129359 hgt:167cm eyr:2030 byr:1974 - -cid:77 -pid:975070417 hcl:#b6652a ecl:amb iyr:2013 byr:1995 -eyr:2025 hgt:184cm - -hgt:168cm -eyr:2026 byr:1938 ecl:gry pid:037135813 hcl:#6b5442 -iyr:2010 - -iyr:2017 hcl:4cc74b byr:1980 hgt:176in -pid:460622356 ecl:xry eyr:2030 - -hcl:z -ecl:oth pid:872514537 hgt:175in eyr:1984 iyr:2011 cid:145 byr:2024 - -iyr:2014 ecl:blu -pid:332729196 hgt:63in -eyr:2020 -hcl:#602927 - -hcl:#7d3b0c pid:369981570 byr:1996 ecl:gry -eyr:2024 iyr:2017 - -pid:446117373 hgt:158cm -iyr:2010 ecl:gry eyr:2024 hcl:#e54715 - -cid:341 pid:842156559 -hgt:167cm hcl:#602927 byr:1939 ecl:amb iyr:2016 - -byr:2017 -cid:176 -ecl:#9e42ae iyr:2029 pid:8965345 eyr:2038 hcl:z -hgt:116 - -eyr:2027 iyr:2014 hcl:#ceb3a1 -cid:280 pid:871521406 ecl:oth byr:1957 hgt:166cm - -cid:303 iyr:2019 -eyr:2021 pid:579593282 ecl:gry hcl:011a46 byr:1981 -hgt:184cm - -iyr:2015 byr:1936 cid:61 ecl:brn pid:307248029 hgt:172cm hcl:#18171d eyr:2029 - -pid:708687506 ecl:brn hcl:#602927 -iyr:2014 byr:1987 -hgt:193cm -eyr:2021 - -ecl:gry -iyr:2015 hcl:#efcc98 byr:1950 -cid:150 eyr:2023 pid:569864726 -hgt:161cm - -byr:1920 hcl:#602927 iyr:2018 -ecl:gry eyr:2020 -hgt:192cm pid:020336420 - -hcl:#539335 byr:1949 -hgt:152cm -cid:95 pid:002018679 -eyr:2030 iyr:2015 ecl:brn - -hcl:#b6652a eyr:2023 -pid:515291463 iyr:2013 byr:1990 -ecl:blu hgt:160cm - -eyr:2030 iyr:2012 -ecl:grn pid:416049447 hgt:188cm -hcl:#a97842 byr:1976 - -iyr:2017 hgt:61in ecl:oth byr:2001 eyr:2028 -hcl:#733820 -pid:078720467 - -eyr:2021 hgt:151cm iyr:2020 -hcl:#efcc98 ecl:oth -byr:1985 -pid:876231883 - -iyr:2019 hcl:#ceb3a1 hgt:156in -eyr:2004 pid:093465895 ecl:amb byr:2026 - -pid:103964845 hgt:178cm cid:320 ecl:oth -hcl:#fffffd byr:2002 eyr:2021 iyr:2019 - -ecl:brn byr:1920 pid:499363957 -cid:217 hcl:#341e13 hgt:164cm -iyr:2017 eyr:2028 - -ecl:brn pid:5837609946 iyr:2011 -byr:1971 eyr:2030 hgt:189cm -hcl:#866857 - -byr:1974 iyr:2015 hcl:#cfa07d -hgt:190cm ecl:grn pid:330115418 eyr:2020 cid:173 - -iyr:2010 -eyr:2024 byr:1943 pid:227557868 -cid:102 hgt:72in -hcl:#6b5442 - -hgt:151cm byr:1994 -pid:050723476 -cid:104 iyr:2010 hcl:#b6652a -ecl:brn eyr:2030 - -ecl:gry byr:1942 -hcl:#c5e354 hgt:192cm iyr:2019 -eyr:2027 pid:192177566 - -ecl:hzl hcl:#c0946f byr:1997 pid:853199076 hgt:166cm -iyr:2019 -eyr:2020 -cid:329 - -eyr:2027 iyr:2029 hcl:#602927 -pid:#1b8593 byr:2028 hgt:172in ecl:grn - -eyr:2036 iyr:2030 ecl:utc -pid:22330365 hcl:z byr:2016 hgt:65cm - -pid:936740771 -ecl:grn byr:1976 -hcl:#602927 -iyr:2017 hgt:192cm -cid:257 eyr:2027 - -eyr:2021 pid:415535681 -hcl:#b6652a hgt:191cm -ecl:hzl -iyr:2013 byr:1985 - -hgt:193cm -pid:499609129 -iyr:2014 ecl:oth -eyr:2029 hcl:#cfa07d byr:1973 - -ecl:gry byr:1996 cid:85 hgt:174cm iyr:2013 pid:444611265 hcl:#6b5442 eyr:2028 - -pid:170343402 -iyr:2029 -hgt:167cm -byr:2016 eyr:2034 ecl:hzl hcl:z cid:254 - -hcl:4893d5 ecl:blu byr:1960 -eyr:2027 pid:573029479 iyr:1952 hgt:74in - -eyr:2021 hgt:192cm pid:729836929 iyr:2020 byr:1973 -cid:155 ecl:grn hcl:#602927 - -hcl:#a97842 byr:1946 -iyr:2018 cid:172 hgt:162cm eyr:2030 ecl:amb pid:028768413 - -iyr:2020 hcl:#c0946f ecl:grn pid:601040247 cid:237 hgt:177cm eyr:2024 -byr:1941 - -iyr:2014 byr:1959 -eyr:2028 -hcl:#fffffd -ecl:#7df42b cid:165 hgt:68cm - -byr:1944 hcl:#18171d -pid:009636175 hgt:155cm ecl:amb eyr:2032 iyr:2015 - -byr:1987 hgt:150cm -hcl:#b6652a eyr:2021 -ecl:blu -pid:723709387 iyr:2017 - -byr:1937 ecl:oth eyr:2022 hcl:#733820 pid:143694811 cid:175 hgt:150cm - -pid:562911401 -cid:80 hgt:61in byr:1922 eyr:2027 ecl:amb iyr:2014 -hcl:#602927 - -iyr:2013 ecl:amb pid:826291674 hcl:#ceb3a1 eyr:2021 byr:1968 hgt:75in - -hcl:#5e0e07 -hgt:164cm pid:572114080 eyr:2028 iyr:2016 -byr:1922 ecl:oth - -ecl:blu eyr:2029 hgt:155cm -byr:1950 hcl:#866857 cid:271 iyr:2015 -pid:216813084 - -iyr:2018 byr:2009 cid:212 ecl:#71a98c pid:3467231102 hcl:z hgt:173cm -eyr:2026 - -eyr:1945 cid:302 iyr:2030 -hcl:z pid:0411732179 -byr:2004 hgt:165in -ecl:grt - -iyr:2010 hgt:169cm -hcl:#ceb3a1 -eyr:2022 pid:659709686 ecl:hzl -byr:1931 - -hcl:z pid:5077677466 -eyr:2021 hgt:184cm -iyr:1973 -byr:2009 ecl:#35575e - -hgt:190cm cid:103 iyr:2018 -byr:1970 ecl:gry -eyr:2028 -pid:549406360 hcl:#18171d - -byr:1964 eyr:2023 iyr:2015 hgt:174cm pid:305268492 -hcl:#b98e00 ecl:blu - -hgt:162cm -ecl:brn iyr:2019 byr:1951 -cid:169 pid:755632568 eyr:2030 hcl:#ceb3a1 - -iyr:2010 ecl:oth hgt:192cm eyr:2025 -hcl:#efcc98 pid:003868873 byr:1925 - -hcl:z -ecl:gmt hgt:62 eyr:1991 -byr:2012 -iyr:2025 pid:1835041269 - -hgt:162 -iyr:2026 byr:2024 -pid:6463124513 hcl:#602927 ecl:oth eyr:2028 - -hcl:bfb027 iyr:1945 byr:1989 eyr:1944 pid:826897563 ecl:dne cid:117 hgt:177 - -hcl:#b6652a iyr:2013 -ecl:blu byr:1952 eyr:2020 pid:737726601 cid:308 -hgt:167cm - -eyr:2028 iyr:2012 hcl:#6b5442 -byr:1986 ecl:blu -pid:365821409 hgt:180cm - -hgt:101 eyr:2037 pid:2457985649 -ecl:gmt -hcl:4c0784 iyr:2029 - -hcl:#341e13 iyr:1954 ecl:dne byr:2007 -eyr:2028 pid:552497791 hgt:189cm cid:263 - -ecl:blu -hgt:71in pid:360012597 eyr:2029 hcl:#18171d byr:1949 -iyr:2014 - -hgt:164cm cid:237 iyr:2016 byr:1966 -hcl:#623a2f ecl:oth -pid:129809894 eyr:2027 - -hcl:a2243b eyr:2031 -ecl:#de9183 -byr:1982 hgt:109 iyr:1968 pid:848311277 - -eyr:1950 -hcl:45470a byr:1983 -pid:82580746 cid:321 -hgt:191cm ecl:dne iyr:2013 - -iyr:2018 ecl:blu eyr:2021 -byr:1983 pid:045613120 - -hgt:164cm byr:1926 -hcl:#cfa07d -eyr:2030 -iyr:2010 -pid:360787918 cid:61 ecl:amb - -pid:#d6dddd iyr:1967 ecl:gmt hcl:z byr:1947 eyr:1943 cid:93 hgt:97 - -ecl:oth hgt:172cm -hcl:#efcc98 byr:1957 -pid:729531506 iyr:2017 -eyr:2030 - -ecl:#5a51b9 byr:2023 eyr:2021 iyr:2027 -pid:174cm hgt:80 hcl:6b4f6e - -hgt:157cm -ecl:amb -eyr:2020 pid:994733990 iyr:2020 cid:174 byr:1966 -hcl:#7d3b0c - -eyr:1986 -byr:2020 hcl:#c0946f -pid:499981246 -iyr:1926 cid:214 ecl:amb hgt:161cm - -hcl:#18171d byr:1971 -pid:#ef8a06 -eyr:2019 ecl:blu -hgt:158cm iyr:2011 - -byr:1959 cid:298 pid:876132993 -ecl:blu iyr:2011 hgt:176cm -hcl:#6b5442 eyr:2030 - -eyr:2030 -byr:1926 hcl:#733820 iyr:2017 -hgt:150cm pid:165cm ecl:blu - -byr:1991 eyr:2027 -hgt:183cm -pid:178cm -ecl:grn hcl:8a6142 iyr:2017 -cid:265 - -hgt:183cm -eyr:2027 hcl:#602927 pid:530884763 byr:1959 ecl:brn iyr:2013 - -hcl:#b6652a eyr:2030 hgt:171cm cid:97 byr:2002 pid:166795809 -ecl:hzl -iyr:2016 - -pid:479944517 hgt:166cm byr:1976 eyr:2022 hcl:#a97842 -ecl:grn iyr:2018 - -byr:1949 -eyr:2013 -hcl:z ecl:hzl -pid:152cm hgt:139 iyr:1962 - -pid:278193062 hcl:#c0946f iyr:2013 byr:1950 eyr:2020 hgt:167cm -ecl:oth - -eyr:1955 -iyr:2018 pid:#ffd4de byr:1922 hgt:178cm hcl:z -ecl:lzr -cid:154 - -ecl:grn hcl:#a189d5 byr:1977 pid:120286096 -eyr:1966 -hgt:178cm -iyr:2011 - -eyr:2028 -hcl:#fffffd iyr:2013 byr:1956 pid:565425333 cid:207 ecl:gry hgt:67in - -hgt:188cm eyr:2028 cid:90 -iyr:2019 pid:574624890 hcl:#b6652a byr:1937 ecl:oth - -hcl:#efcc98 hgt:152cm ecl:hzl iyr:2010 cid:217 byr:1936 eyr:2027 pid:857984889 - -hgt:124 iyr:2015 byr:1989 ecl:oth eyr:2023 hcl:#ceb3a1 pid:917440765 - -ecl:#61e880 cid:82 -pid:165cm byr:2019 eyr:1930 hgt:152in hcl:z iyr:2030 - -byr:1974 -hgt:60in ecl:gry -hcl:#c0946f -pid:215085889 -iyr:2017 eyr:2020 - -ecl:grn hcl:#ceb3a1 -pid:602147794 hgt:180cm eyr:2028 byr:1927 iyr:2018 - -hcl:#ceb3a1 byr:1958 ecl:gry -pid:210246609 iyr:2018 hgt:169cm -eyr:2023 -cid:255 - -eyr:2025 -byr:1950 hgt:177cm -ecl:gry pid:547034188 -iyr:2018 -cid:218 hcl:#341e13 - -pid:380369950 -eyr:2022 hgt:65in iyr:2019 ecl:brn -byr:1996 - -hgt:167cm -iyr:2014 -eyr:2029 cid:199 pid:144048588 byr:1963 ecl:oth hcl:#733820 - -byr:1962 ecl:brn hgt:161cm eyr:2022 hcl:#cfa07d -pid:247699670 iyr:2016 - -hgt:192cm ecl:#8bdb3e pid:#b152a9 hcl:#18171d iyr:2012 byr:2011 cid:335 eyr:2040 - -hcl:11f8f4 ecl:#86f885 iyr:2022 -hgt:75in -pid:920078124 byr:1952 eyr:1994 - -pid:718378772 cid:282 -hcl:#fffffd hgt:166cm eyr:2023 iyr:2019 byr:1944 -ecl:grn - -eyr:1963 pid:562051556 -ecl:#793853 -hcl:z byr:2030 iyr:2026 - -byr:1980 -cid:143 hgt:161cm eyr:2022 -pid:778422225 -hcl:#7d3b0c iyr:2011 ecl:blu - -byr:1940 eyr:2021 hgt:74in cid:161 hcl:#a97842 ecl:blu -pid:864682628 iyr:2014 - -byr:1991 pid:163871357 ecl:oth -hgt:189cm cid:229 eyr:2024 -hcl:#efcc98 -iyr:2012 - -iyr:2013 hcl:#ceb3a1 ecl:hzl byr:1985 pid:801995950 hgt:73in -eyr:2029 - -byr:1931 hcl:#ceb3a1 iyr:2013 -cid:289 eyr:2027 ecl:blu -hgt:150cm pid:969679765 - -iyr:2015 hgt:176cm eyr:2025 ecl:blu -byr:1935 pid:388582890 hcl:#efcc98 - -iyr:1956 eyr:2034 pid:049440894 ecl:xry byr:1950 cid:228 -hgt:186cm - -iyr:2014 hcl:#fffffd byr:1985 -eyr:2022 -hgt:176cm pid:556889061 ecl:amb - -pid:994755123 hgt:165cm -ecl:brn -eyr:2022 byr:1937 iyr:2011 - -byr:2012 -hcl:z cid:217 iyr:1958 -ecl:brn hgt:160cm -pid:871866608 -eyr:2027 - -hcl:#a97842 -ecl:hzl byr:1929 -iyr:2016 -eyr:2029 pid:220410871 hgt:192cm - -pid:332596122 byr:1986 -hcl:#cfa07d -eyr:2022 hgt:189cm ecl:grn iyr:2016 - -hgt:167cm -hcl:#6b5442 eyr:2026 -iyr:2020 ecl:grn cid:231 pid:521486150 - -cid:299 -hgt:178cm byr:1945 ecl:brn iyr:2012 -hcl:#fffffd eyr:2022 -pid:264693268 - -ecl:lzr pid:157cm hcl:f0a766 -iyr:2029 hgt:175in byr:2004 - -hcl:#888785 -hgt:159cm eyr:2025 -iyr:2012 ecl:oth -byr:1995 pid:135442622 - -eyr:2024 hcl:#a97842 -iyr:2013 pid:186863004 ecl:brn byr:1929 hgt:162cm - -pid:518619727 ecl:grn -hcl:#866857 byr:1954 -iyr:2016 -hgt:69in - -eyr:2022 iyr:2018 -byr:1926 -ecl:oth pid:073817633 -hgt:167cm hcl:#b6652a - -hgt:190cm iyr:2019 -ecl:dne byr:2010 eyr:2023 pid:979671212 - -hgt:190 -ecl:#5ddbda byr:2025 iyr:1973 pid:#a082dc eyr:1998 cid:177 hcl:z - -iyr:1976 eyr:2026 pid:4862485 hgt:71in -byr:1975 ecl:#41855f hcl:#ceb3a1 - -ecl:brn -byr:1927 iyr:2012 hgt:67in -pid:479646443 eyr:2039 hcl:z - -pid:779458123 -cid:263 hcl:#efcc98 -byr:1951 -hgt:153cm iyr:2011 -ecl:amb eyr:2030 - -hgt:187cm -eyr:2028 -byr:1957 -hcl:#b6652a iyr:2015 pid:616963706 ecl:brn - -hgt:154cm byr:1947 -pid:51196404 -eyr:2020 iyr:2001 -ecl:hzl - -hgt:157cm iyr:2013 eyr:2021 -ecl:blu hcl:d9e6e0 -byr:2023 - -iyr:2010 -hcl:#866857 -ecl:brn eyr:2022 -cid:163 byr:1962 pid:458396337 hgt:160cm - -ecl:amb eyr:2027 -byr:1987 -hgt:184cm -pid:125222897 cid:214 -iyr:2020 - -ecl:grt eyr:1942 -iyr:2023 -hcl:901862 hgt:159in -byr:2009 - -eyr:2028 -byr:1973 hgt:151cm iyr:2013 ecl:hzl pid:229165831 - -eyr:2024 hgt:190cm ecl:grn byr:1962 iyr:1921 pid:531272718 hcl:#ceb3a1 - -hgt:169in pid:1747598652 ecl:dne -iyr:1974 eyr:2031 hcl:#602927 byr:2030 - -hgt:177cm iyr:1963 eyr:2006 -cid:276 hcl:#7d3b0c -pid:192cm -ecl:grn byr:2022 - -pid:893346945 hcl:#733820 ecl:oth iyr:2013 byr:1973 hgt:186cm eyr:2025 - -hgt:177cm -eyr:2025 -byr:1997 hcl:#733820 -cid:295 iyr:2016 pid:019887743 ecl:grn - -iyr:2019 -byr:1982 eyr:2030 ecl:brn pid:041140029 hcl:#a97842 hgt:189cm - -pid:165cm iyr:1962 hcl:e5c590 ecl:#e394a4 -eyr:2040 -hgt:70cm byr:2006 - -byr:1940 eyr:2025 iyr:2020 hcl:#a97842 ecl:brn pid:502841851 cid:121 -hgt:160cm - -eyr:2015 ecl:zzz hgt:174 pid:154cm iyr:2021 -hcl:z -cid:113 -byr:2003 - -iyr:2020 -eyr:2023 pid:402183362 hcl:#120eb2 -ecl:amb -hgt:150in -byr:1921 - -pid:059311672 cid:290 hcl:#7d3b0c byr:1996 -iyr:2021 hgt:155cm ecl:hzl eyr:2030 - -pid:790768270 hgt:167cm ecl:gry -byr:1973 -hcl:#b6652a eyr:2028 iyr:2017 - -hcl:#18171d eyr:2024 pid:062349624 -byr:2002 iyr:2019 cid:230 ecl:oth - -iyr:2015 -hgt:170cm -cid:193 -eyr:2025 ecl:hzl byr:1947 -pid:484823445 -hcl:#623a2f - -pid:5792950369 cid:343 -hcl:1d16b7 eyr:2024 -hgt:185in iyr:1965 -ecl:gmt byr:1948 - -pid:#a1a101 -ecl:grn -byr:1945 -iyr:2013 hcl:#ceb3a1 hgt:156cm cid:279 eyr:2026 - -pid:936593230 eyr:2026 hgt:179cm -hcl:#7d3b0c -iyr:2015 byr:1976 -ecl:gry - -eyr:2021 pid:210678956 hgt:153cm cid:72 iyr:2018 ecl:grn - -pid:995512119 -byr:1937 eyr:2021 hcl:#4d8fe2 ecl:brn -iyr:2019 -hgt:187cm - -hcl:#341e13 pid:282336259 eyr:2022 -cid:95 byr:1977 hgt:101 ecl:#955529 -iyr:2029 - -pid:934992980 hcl:#fffffd iyr:2028 eyr:1945 ecl:gry byr:1926 - -iyr:2018 ecl:gry -hgt:179cm hcl:#866857 pid:573616710 -byr:1987 - -byr:2010 eyr:2021 hcl:z pid:018180068 hgt:74 -cid:183 iyr:2027 ecl:dne - -iyr:2020 hgt:160cm -pid:760124779 hcl:#b6652a ecl:grn eyr:2030 byr:1951 - -pid:354858055 ecl:hzl hgt:192cm -hcl:#ceb3a1 byr:1983 cid:314 -iyr:2016 eyr:2027 - -eyr:2028 iyr:2013 hgt:171cm hcl:54be83 ecl:xry byr:2021 -pid:89895052 - -byr:1963 iyr:2019 -pid:298992037 eyr:2024 -hgt:63in hcl:#341e13 - -hgt:64cm -pid:7645482607 ecl:#c94773 cid:231 hcl:621e9d eyr:2000 byr:2013 - -hcl:#ceb3a1 ecl:gry iyr:2015 hgt:178cm byr:1945 -pid:416960939 - -hgt:178cm -cid:121 -byr:1961 iyr:2019 hcl:#6b5442 -eyr:2028 pid:098226989 - -iyr:2015 eyr:2028 -ecl:amb -hgt:154cm -pid:364426658 byr:1960 -hcl:#623a2f - -byr:1998 -pid:#e5ab03 hcl:z ecl:grn -iyr:2006 hgt:61cm eyr:2038 - -hcl:#866857 eyr:2020 -hgt:187in -pid:#8239dc iyr:2010 ecl:#6259e7 byr:1939 - -pid:#6082fa eyr:2028 ecl:gry hcl:937410 iyr:2010 -hgt:173cm - -eyr:1922 ecl:grt pid:228396726 hgt:65cm -hcl:#6b5442 byr:2024 iyr:2010 - -hcl:#c0946f iyr:2016 byr:1978 -pid:774430678 eyr:2026 -ecl:oth hgt:61in - -cid:208 pid:714195768 iyr:2019 eyr:2022 byr:1937 ecl:gry hcl:#ceb3a1 hgt:159cm - -eyr:2028 ecl:gry iyr:2010 byr:2001 hgt:163cm pid:409136005 hcl:#623a2f cid:200 - -pid:471094613 eyr:2028 hgt:165cm iyr:2010 ecl:amb byr:1995 hcl:#a97842 - -ecl:oth iyr:2011 pid:907249487 eyr:2020 -byr:1924 cid:68 hcl:#a97842 -hgt:155cm - -byr:1983 -hgt:69cm -eyr:2027 iyr:2010 hcl:#866857 -pid:671371092 -ecl:amb - -hgt:97 pid:168cm cid:67 -eyr:1957 hcl:#623a2f byr:2027 ecl:gry iyr:2019 - -ecl:blu iyr:2012 pid:287999130 hgt:178cm eyr:2020 -byr:1940 -hcl:#888785 - -hcl:z hgt:63cm ecl:grt -iyr:2024 eyr:2031 pid:167cm -byr:2013 - -hgt:65in hcl:z cid:300 ecl:amb pid:58257193 -byr:1969 iyr:2011 eyr:1985 - -hcl:#341e13 eyr:2036 hgt:189in -pid:58541401 -ecl:#d793f2 iyr:2010 byr:2006 - -cid:259 ecl:grn -hcl:#a97842 -hgt:167cm -pid:641690548 eyr:2021 -byr:1930 -iyr:2010 - -eyr:2027 -hgt:75in -cid:335 hcl:#602927 iyr:2012 ecl:blu pid:724014178 -byr:1928 - -eyr:2027 -hcl:#8345d8 ecl:grn byr:1965 pid:728151722 -hgt:182cm iyr:2016 - -iyr:2020 pid:794922933 -hcl:#341e13 -ecl:oth -byr:1985 -hgt:71in -eyr:2022 - -ecl:#025c94 -hcl:#fffffd -iyr:2027 -byr:1987 hgt:186cm cid:135 pid:005852205 -eyr:2021 - -byr:2020 -ecl:grn -pid:91200233 -iyr:2014 eyr:2020 hgt:179cm hcl:be0c95 - -ecl:gmt iyr:2010 pid:171cm byr:2010 eyr:2036 hgt:159in hcl:424df0 - -ecl:gry iyr:2013 hcl:#7d3b0c hgt:175cm pid:337611432 byr:1953 eyr:2021 - -byr:1926 pid:678688040 -hcl:#cfa07d -cid:311 eyr:2027 hgt:183cm iyr:2018 -ecl:blu - -byr:2021 -pid:156cm -ecl:dne -hgt:156cm -hcl:#6b5442 -iyr:2027 - -pid:380639402 eyr:2025 -cid:196 -hgt:163cm -hcl:#602927 ecl:hzl -iyr:2015 - -eyr:2039 hcl:5aa018 byr:2007 ecl:dne -hgt:77 pid:#d30c1c iyr:2025 - -ecl:blu -iyr:1986 pid:3544865154 eyr:2027 byr:2007 hgt:74cm hcl:ca33b3 - -pid:#b05294 byr:1951 hcl:#ceb3a1 cid:221 -iyr:2000 hgt:110 eyr:2021 - -byr:1954 hcl:#efcc98 iyr:2018 ecl:#f4ea81 -pid:414210788 hgt:174cm eyr:2037 - -pid:#abbdd9 -hgt:164in -iyr:2003 cid:319 eyr:2035 -byr:2015 -ecl:#9b38c7 - -ecl:amb -iyr:2018 byr:1922 -hgt:157cm pid:801421993 eyr:2029 -hcl:#efcc98 - -eyr:2022 -hcl:#b6652a -ecl:amb byr:1942 -hgt:153cm iyr:2018 -pid:805225382 - -byr:1925 -hcl:#efcc98 ecl:amb pid:539625393 cid:269 -hgt:161cm iyr:2013 eyr:2025 - -cid:305 hgt:154cm -hcl:#18171d byr:1998 -eyr:2029 iyr:2011 pid:634235387 ecl:gry - -hcl:#6b5442 pid:504467634 iyr:2018 cid:96 byr:1970 -ecl:gry eyr:2023 hgt:167cm - -iyr:2020 hgt:163cm hcl:#fffffd pid:762271916 byr:2029 eyr:2022 -ecl:#12027c - -byr:1978 -cid:134 hcl:#6b5442 -iyr:2010 pid:627335191 ecl:blu eyr:2023 hgt:171cm - -pid:260340768 hcl:#a97842 byr:1947 ecl:#2150e3 iyr:2019 -cid:153 -hgt:65in eyr:2025 - -byr:1973 eyr:2022 -cid:229 pid:515108192 ecl:amb hcl:z -iyr:2013 hgt:178cm - -ecl:hzl -hgt:158cm hcl:#a97842 -pid:657117959 byr:1977 eyr:2023 iyr:2018 - -ecl:gry eyr:2024 -hgt:163cm byr:1976 iyr:2017 -pid:653769092 hcl:#18171d - -ecl:amb pid:161694953 -hcl:#602927 hgt:188cm eyr:2021 byr:1946 -iyr:2016 - -eyr:2021 -hgt:178cm ecl:grn -byr:1961 pid:472866063 iyr:2011 hcl:#cfa07d cid:160 - -eyr:2037 iyr:2011 -hgt:187cm byr:1973 pid:163cm hcl:#b6652a -ecl:brn cid:283 - -iyr:2017 hcl:#18171d eyr:2020 pid:059926864 hgt:160cm ecl:brn - -byr:2010 -hcl:8217d4 hgt:153in iyr:1989 eyr:2037 pid:#74e0a4 ecl:#ba5782 - -ecl:#28f922 -byr:1951 hgt:65cm -iyr:2025 pid:151cm hcl:z eyr:2028 - -pid:302959013 -hgt:167cm eyr:2022 ecl:hzl iyr:2014 -cid:168 -hcl:#888785 byr:1969 - -pid:013861920 hcl:#623a2f -ecl:gry -byr:1928 -iyr:2017 hgt:174cm eyr:2028 cid:250 - -byr:1997 hgt:74cm hcl:#efcc98 eyr:2039 ecl:#d3dc6a -cid:243 -iyr:2030 pid:189cm - -hgt:67cm byr:2011 eyr:2040 pid:192cm ecl:#b7a5a8 hcl:281b25 - -iyr:2014 ecl:brn byr:1954 hcl:#fffffd pid:285922660 hgt:76in eyr:2028 - -iyr:2021 byr:2028 -eyr:2023 -hgt:69in hcl:e832ef pid:714568559 ecl:#f10004 cid:208 - -ecl:brn hgt:166cm hcl:#cfa07d -cid:59 pid:4884483993 -iyr:2012 -eyr:1932 - -iyr:2029 byr:2025 -cid:238 ecl:utc -eyr:2022 -pid:887425834 hgt:177in - -pid:014383055 cid:342 hgt:183cm eyr:2025 -iyr:2014 ecl:blu byr:1969 hcl:#7d3b0c - -eyr:2033 -hcl:#341e13 -iyr:2014 -hgt:71cm ecl:#750eec -byr:1980 pid:#e2d3ac - -hgt:154cm iyr:2019 hcl:#341e13 ecl:hzl byr:1942 pid:393181243 eyr:2025 -cid:316 - -ecl:amb -hgt:158cm -eyr:2025 byr:1986 hcl:#fffffd pid:379180765 iyr:2014 - -pid:8191674491 eyr:2028 hcl:#efcc98 byr:2015 iyr:2012 -ecl:amb cid:140 - -byr:2015 hcl:8e3e81 eyr:2024 hgt:180cm iyr:1984 pid:#56cd0e -ecl:zzz - -pid:247138863 eyr:2022 hgt:176cm iyr:2014 byr:1929 -ecl:gry cid:87 hcl:#b6652a - -hcl:z pid:#c4cdee ecl:#ca97a6 byr:1971 eyr:2032 -iyr:1997 hgt:156in - -ecl:gry -hgt:167cm eyr:2030 byr:1984 hcl:#cfa07d iyr:2016 - -hcl:#a97842 hgt:163cm -pid:373461578 iyr:2017 -byr:1926 ecl:amb -eyr:2021 - -cid:161 hcl:#b6652a byr:1930 ecl:brn eyr:2028 hgt:166cm iyr:2016 - -ecl:amb cid:126 -eyr:2024 -hcl:#18171d iyr:2019 -byr:1991 hgt:183cm - -ecl:lzr iyr:2026 byr:1996 -hgt:69in pid:#ccef7e eyr:2028 -hcl:#fffffd - -hgt:68cm iyr:1945 -ecl:brn byr:2009 pid:#56e987 hcl:fdd212 eyr:2023 - -pid:72039060 eyr:2036 hgt:172cm -hcl:#fffffd iyr:2011 -byr:1944 ecl:xry cid:202 - -ecl:hzl -eyr:2025 -byr:1922 hcl:#efcc98 -pid:795790549 -iyr:2020 hgt:150cm - -hgt:155cm -hcl:#373de2 pid:#707dc6 iyr:2017 byr:2002 eyr:2038 -ecl:oth - -hcl:#888785 iyr:2011 -hgt:159cm -byr:1962 eyr:2026 ecl:amb pid:672792762 - -cid:217 eyr:2025 hgt:164cm byr:1999 pid:975218035 ecl:grn hcl:#18171d iyr:2011 - -pid:655501194 eyr:2029 byr:1999 iyr:2013 -hgt:183cm hcl:#a97842 ecl:hzl - -byr:1986 hcl:#efcc98 pid:160cm ecl:oth eyr:2022 iyr:2022 hgt:150cm -cid:63 - -hgt:69in byr:2002 pid:0528229881 ecl:blu hcl:z iyr:2022 -eyr:2033 - -iyr:2020 pid:007754028 hcl:z cid:232 ecl:dne hgt:73in - -ecl:hzl -iyr:2016 hcl:#7d3b0c byr:1948 -eyr:2021 -cid:269 hgt:173cm pid:176430746 - -cid:310 -ecl:xry -eyr:2032 hgt:64cm -pid:190cm hcl:z byr:2019 - -hgt:150cm pid:660176034 hcl:#c0946f -ecl:hzl byr:1986 eyr:2021 iyr:2019 - -pid:7876582 -eyr:2021 iyr:2020 -hgt:185cm hcl:#18171d cid:319 ecl:amb byr:1943 - -ecl:hzl hcl:#623a2f iyr:1950 byr:2012 cid:334 eyr:2028 - -eyr:2028 -byr:1992 hcl:#b6652a ecl:hzl cid:222 -hgt:189cm iyr:2016 -pid:092856842 - -hcl:a3c52a -iyr:2025 byr:2023 -hgt:182cm ecl:#be1503 pid:9311657615 eyr:2005 - -eyr:2035 -byr:1988 hgt:193cm -iyr:2028 cid:128 hcl:#18171d ecl:utc pid:9743739773 - -ecl:zzz hcl:z -hgt:64cm pid:160cm byr:2026 eyr:1943 iyr:2028 cid:74 - -ecl:oth -pid:874577361 -iyr:2010 eyr:2021 -hgt:160cm hcl:#c0946f -byr:1959 diff --git a/day4/program.js b/day4/program.js deleted file mode 100644 index 2530f7e..0000000 --- a/day4/program.js +++ /dev/null @@ -1,94 +0,0 @@ -const fs = require('fs'); - -fs.readFile('./input.txt', 'utf-8', (e, data) => { - const start = Date.now(); - const items = data.split("\n"); - const rawPassports = findPassports(items); - const passportsCheck1 = splitPassportData(rawPassports); - - const toValidatePart2 = []; - - passportsCheck1.forEach((p, i) => { - if (validatePassport(p)) { - toValidatePart2.push(p); - } - }); - - console.log(`Part1: Found ${toValidatePart2.length} valid passports`); - - let validPassports = 0; - - toValidatePart2.forEach((p, i) => { - if (validatePassportProperties(p)){ - validPassports++; - } - }); - - console.log(`Part2: Found ${validPassports} valid passports`); - console.log(Date.now() - start); -}); - -function findPassports(data) { - const passports = []; - let passportdata = []; - data.forEach((row) => { - if (row.length === 0 && passportdata.length > 0) { - passports.push(passportdata); - passportdata = []; - } else { - passportdata.push(row); - } - }); - - return passports; -} - -function splitPassportData(raw) { - const passports = []; - raw.forEach(p => { - let passport = {}; - p.forEach(row => { - const parts = row.split(' '); - parts.forEach(part => { - let split = part.split(':'); - if (split[0] === 'byr' || split[0] === 'iyr' || split[0] === 'eyr' ) split[1] = parseInt(split[1]); - - passport[split[0]] = split[1]; - }) - }); - passports.push(passport); - }); - return passports; -} - -function validatePassport(passport) { - if (Object.keys(passport).length === 8) { - return true; - } - - if (Object.keys(passport).length === 7 && !passport.hasOwnProperty('cid')) { - return true; - } - - return false; -} - -function validatePassportProperties(passport) { - if (passport.byr > 2002 || passport.byr < 1920) return false; - if (passport.iyr > 2020 || passport.iyr < 2010) return false; - if (passport.eyr > 2030 || passport.eyr < 2020) return false; - if (!validateHeight(passport.hgt)) return false; - if (!passport.hcl.match(/#[0-9a-f]{6}/)) return false; - if (['amb','blu','brn','gry','grn','hzl','oth'].indexOf(passport.ecl) === -1) return false; - if (passport.pid.length != 9 || !passport.pid.match(/[0-9]{9}/)) return false; - return true; -} - -function validateHeight(height) { - let replace = height.indexOf('in') > -1 ? 'in' : 'cm'; - height.replace(replace,''); - height = parseInt(height); - if (replace === 'in' && (height > 76 || height < 59)) return false; - if (replace === 'cm' && (height > 193 || height < 150)) return false; - return true; -} \ No newline at end of file diff --git a/day5/input.txt b/day5/input.txt deleted file mode 100644 index 2e65bf1..0000000 --- a/day5/input.txt +++ /dev/null @@ -1,888 +0,0 @@ -BFBFBFFRRL -FFFFBBBLLL -FFFBBFBRRR -FFFFBBBRLR -FFBFFBBRRL -BFBBBBBRRR -BBFFFFFRLR -FFFFBBFRLR -BBFFFBBLLL -FBBBBFBLRL -FFBBFFBRLR -BBFFBBFRLL -BBFFFFFLRL -BBFFFFBRLR -BFFFFBFLLL -FFFBFFFRRL -FBBBBBBLLR -FFBFBBFRLL -FBBFFBFLRL -BFBFFBBRLR -BFFBFBBLRR -FFFBFFBRRL -FFBFFBFRLL -FBBBBBFLRL -FFBBFFFRRL -FFBFBFBLRR -BFFFFFBRRL -FFBFBBBRLR -FFFBFFFLRR -BBFFBFFLRR -BFFFBBBRLL -FFBBFFBLRL -BFBBFBFRRR -BFFBBBBLRL -FFBFBFBRLL -FBFFBBBRRR -FBFBBBFLLL -FBBFFBFRLR -FBBFBBFLRR -BFFBFFBLLR -FFFBBBFLLL -FBBFBBFLLR -BFBFFFBRRL -FFFFBFBRLL -BBFFBFFRRR -BFBBFBFLRL -FFBBFFBRRL -FFFBBBFLRR -BFFBFFBLLL -BFFBBFBRLL -FBFBBFBRRL -FFFFFFBRLR -BBFBFFFRRR -BBFFBBFLLL -BFFBFFFLLR -BFBFFBFLRL -FFBBFFFLLR -BFFFFBBRRL -FFBBFFBRRR -FFFFBFFLLR -BFBBFFFLRR -BBFFFBBLRL -BFFFBBBLLR -FFFBBFFRLR -FFBBBBBRLL -BBFFFBFRLR -BBFBFFBRRR -FBBBFFFRLL -FBBBBBBRLR -BFBBFFBRRR -FBFBFFBRRL -FFFBFBBRRL -FFBFFFFLLL -FBFFBFBLRR -BFFBBFFLLR -FFBBBFBRLL -BFFBFFBRRR -FBBFFBFRRR -FBFFBBFRLR -FBBBFFBLRL -BFBBBFBLRL -FFFFBFFRRR -FBBFFFFLLR -FFBFBBFRRR -FBFBBBFLRL -BFFFFFFRLL -FFFFFBFRRR -BFBFFBBRLL -FFBFFFFRLL -FFBFFBFLLL -FFBFFBBRLL -BFBFFBFLLL -BFFBFBBLRL -BFFFBFFRLL -BFFBFBBLLL -BFFFFFFLLR -FBBFBBFRRR -FFBBBBBRLR -BFFBBBBRRR -FFBBFBFRRL -BBFBFBFRRR -FBFFBFFLRR -FBFFBFBLLL -FFFBFBBLRR -BBFBFFFLLL -FFFBBFBLRR -FFBBFFBLLR -BFBBFFFRLL -BFBBFBFLLR -FBFFFFBLLL -BFBBBBFRRR -BBFFFBFRLL -FBBFBFBLRL -FBBBFFFRRR -BBFBBBBLRL -BBFFBFBRRL -BFFFBBBRRL -FBFBBBFRLL -BFBBBFBLLL -BFFBFFFLRL -FFFBBBBRRL -BBFFBFBLRL -FBBFFFFLLL -FBFFBBBLRL -BBFBFBBRLL -FBBBFBFLRL -FBFFBFBLRL -BFBBFFBRRL -FBBFFFFLRR -FFBBBBFRRL -FFBFBFBLLR -FBFFBFFRLR -FFFBBBFRRR -BFFFBFBLLR -FBBBFBFLLL -FBBBBBFRLL -FFBFFFBRLR -FBFFFBBRRL -BBFFBBBLRR -FBFBFFFLRR -BFFFFFFLRL -BBFBFBBLLL -FBFBBFFLLL -FBFFFBBLLL -BFFBBFBLLL -BBFFBBFLRR -BBFFFFFRLL -FFBFFFBLRR -FFBFFFFRRR -FBFFFBFLLL -BFFFBFFRRR -FBBFFFBLRR -FBBBFBBRLR -FFFFFFBRLL -BFBFFBFLLR -BFFFBBFLRR -FBFFBBBLLR -BBFFFFFRRR -FBFBFBBLRL -FBBFBFFLLL -BFFBFBBRLL -BFFBBBFLRR -BFBBFBFRLR -FBBFBFBRRL -FFFFFBBLLR -FFBFFBBRRR -BFFBFBFLLL -BFBBBBBLLL -BBFBBBFRLR -FFBFFBBLLL -BBFFFFBLLR -BBFFFFBLLL -FFBFBFFLLL -BFBFBBBRRR -BBFBBBFLRL -BFBBFFFRRR -FFBFBBFLRL -BBFBBBBLLR -FBFFBFFLLR -FBBFFFFLRL -FFBBFBBLRR -BBFFFFFRRL -BFBFBFBLRR -FFFBBFFLLR -FFFFFBFRLR -BFBFBBFRRL -FFFFFBBRLR -FFFFBFBLLR -FFFFBBFRRR -FFBFBFBLLL -BBFBFBFLLR -BFBFBFFLLL -BFFBBBFRLL -FFBBBBFRLR -BFBBFFFRRL -FFFFFFFRRL -FFFBFBBRLL -FBFFFFFRLR -BBFFBBFRRR -FBBFFBBLLL -BFFFBBFRLR -BFBBFFFLRL -BFFBBFFLLL -BFFFBFFLRL -FBFBBFFRRR -FFFBBBFRRL -FFFFBBFLLL -FBBFBBBRLL -BFBBFBFRLL -FBBBBFBRRL -FFBFFFBLRL -BFBBFBBRRL -BFBBFFFLLR -FBBBBFBRLR -BBFBFFFRLR -FBBFBFFLRL -FFBFBFFRRR -FFBFBFBLRL -BBFBFBBLRR -BBFBBFBRLR -BFBBBFBLRR -FFBBBFBLRR -BBFFFBFLRR -FFFBBFFRRL -BBFFBBBRLR -FFFBFBFLLL -BFBFBBBLRL -FBFBFFBRLL -FBFFBBBRRL -FFFFBBFLRR -FBFFBBFLLR -FFBFFBFLLR -BFBFFBBRRR -BFBBFFBLLR -BBFBBBBRRL -FFBFBFFRLL -FBBFFFBLLR -FFBBBBFLLR -FBFBFBFLRL -BFFBBFBLRL -BFBFFBFRLR -FFFFFFFRRR -BFBBBFFRRR -FFBBFFFRLR -FBFBBFBLRR -BFBBBBFRRL -FFFFBBFRLL -FBBBBFFRLL -FBFFFFFRRL -FBFFBFFRRL -BBFBBFBLLL -BFFFBFBRLR -FBFBFBBRRL -FFFBFFBRLR -BBFFBFFLRL -FFBFFBFLRR -FFBBBBFRLL -BFBBFBFLRR -FFBFFFBLLL -BBFBBFFLLL -FFFBFBBLRL -BFFFBFFRLR -FFFBFFFRRR -FBBFFBBRRL -BFFBFFBRLL -BFFBBBFLLL -FBFBBBBRLR -FBFFBFBRLL -FBFBBBFLLR -FFFBFFFLLL -FFFBFFBLLR -FBBFFBBLLR -FBBFBBBLLL -BFBBBFFLRR -BFBFFBBLLL -FFBFBFBRRL -FFBFBFFLLR -FBFBFFFRRL -FFBBFBBRLL -BBFFFBBLRR -FBFBFBBLRR -BFFFBFBLRR -BFBFFFFRRL -BFFFBBBLRL -FFFFFBBRRR -BBFBBFBRRR -FFBFBFBRRR -FFFFBFFLLL -BFBFFBBLLR -FBBBFBBRRL -FBBBFFFRLR -FFFBBFBLRL -FFBBBFFRLL -FFFFFBBLRL -BFBFFBFRRL -FBBFFBFLRR -BFFBFFFLLL -FBBFBFBLLL -BFBBFFBLRL -FFBBBBBLLL -FBFBFBFRLR -BBFBBFBLRR -BFBBBBBLRR -FBFBBFFLLR -FFBFBBFRRL -FFFBBFBRRL -BFFFFFFLLL -BBFBBBFLLR -FBFFBBFLLL -FBFBBFBLLR -BFBBBFBRLR -BFBFFFFRLR -FBBFBFFRLR -BBFFFFFLRR -BBFBFBBLRL -BBFBFBBRRR -FFBBFBFLLL -FBFBBFFLRL -BFBFBBFLLR -BBFBBBBLLL -FFBBFFBRLL -FFFFBBFLRL -FFBBFBFLLR -BFBBBFBRLL -FFFBFFBRRR -FBBBBFFLRL -FBFFBBBLRR -FBBBFBBLRR -FBBBFFBRRL -BFFBFBFRRR -BBFBFBBRRL -FBBFBBBLLR -FBBFBFBLRR -FBFFFFBLRR -FBFBFBBRLL -FBFFFBFLRR -BBFBBBFLRR -BFBFBBBLLL -FFBFFBFRRR -BBFFFBBRLR -BFFBBFBLLR -FBFBBFBRLL -FFBFBBBRRR -FBFFFFBRLL -FBBBFFFLRL -BFBFBFBRLR -FBBBFBBLRL -FBFFBBBLLL -FFFBBBFLLR -BFFFBBFRLL -FBFFFBFRLR -BFFFBBFRRL -BFFFFBFRRL -BBFFBBBLLR -FBBFFFFRLR -FFBFBFFRLR -BFBFBBBLRR -FFFFBBBLRR -FFBFFFBRLL -FFFFBBBLRL -FFBBBBFLRL -BBFFFFBRRL -FFFFFBFLRR -BFFFBFBRRR -BBFBBFFLRR -FFBFBBFLRR -FFFFFBBRRL -BFBFFFFLRL -BFFBBFBRLR -FBFFFFBRRL -BFBBFBBLLL -BFBBBFBRRL -BFBBBBBRLL -FFFBBBBLRR -FBBFBBFLLL -BFFFFBBLLR -FFBFFFBLLR -FBBFFBFRRL -FFBBBFFLRR -BFFFBBBRRR -FFFFBBBRRR -FFFBFFBLLL -BFFFFBBRLL -FBBBFBFRRL -FFBBBBFLLL -BBFBFBBRLR -FBFFBBFLRL -FBBFBFFRRR -BBFFFFBLRR -FBBBFBBLLR -FFFBFFBLRL -BFFBFBFRLL -FBFFFFBRLR -FFFFBFFRLR -BFBFBFBRRL -FBBFBBFRRL -BBFFBFBLLR -FFBFFFFLRR -BFFFFFBRLL -FFFFBBFRRL -FBFFFBFLRL -FFBBFBBLRL -BFFBBFBRRR -BBFBBBFLLL -FBBFBBBRRR -BFFBFBBRLR -FBBBFFBRLL -FBBFBFFLLR -BFFBFBBLLR -FFBFFFFLRL -BFFBFBFLLR -BBFBBBBRLR -FFBBBFFLRL -FBBFFFBRLR -BFFFFFBRLR -FBFFFFFLLR -FBFFFBFRRR -FFBBFBFRLL -FBFBFFFRLR -BFBFBBFRRR -BBFFFBBRRR -FBBFBFBLLR -BFFBFBFLRL -FFFBFFFRLR -FBBBFBFLLR -FFBBBFBRRR -BFBFFBBLRL -FBBBFFBLRR -BFFFFFFRRR -FFBBFFFLRR -BFBFFFBRLR -BFBFBFBRRR -BBFBFBFLLL -FBFFBFBRRL -BBFBBFFLRL -FBBBBBBLLL -FBFFBBFRRR -FFFFBFFRRL -FFFBBFBLLL -FBFFFBBLLR -FFBBBBBLRR -FBFBFFFRLL -BFFBBBBRRL -FFFBFBBLLL -FFFFFFBLLR -BBFFBFBRLL -FBBBBBFRRR -BBFBFFFRLL -FFFFBFBLRR -BFBFFFFRLL -BFBBBBFRLR -FBFBFBFRRL -FBFBFFFRRR -FBBFFFBRRR -FBBFBFFRLL -FFFBFFFLLR -FBFBBBFRLR -FFBFFFBRRL -FBBBBBFRRL -FBBFFBFLLR -FBFBBFBRRR -FBFFFFFLLL -FBFBBBFLRR -FFFBBBBLLR -FBBBFBBRRR -BBFBBFFRLL -FFFFBFBLLL -BBFBBFBRLL -BFFBBBBLLL -BBFBBFBLLR -BBFFFBBRRL -FFBBBFFRRR -BBFFBFFRLL -FBBBBBFLLR -FBBFFFFRRL -FBBFFBFRLL -FBFBFBFLLR -BBFBBBFRRR -FFFBBFBRLL -BFBBBBFLRR -BFBFFBFRRR -FFBBBFBRRL -BFBFFBBRRL -BBFFBFBRRR -FFBFBBBLLR -FBBFFBBRLR -BFBBBFFRLL -FFFBBBFRLL -FBFBFBFLLL -FFFBBFBRLR -BFBBFFBLLL -FFBBBFFRLR -BFBBFBBRLL -BFFBFFBRRL -BFFFFFBLRL -FBBFFBBLRR -BBFFFFBRLL -FBFFBFFLLL -BBFFBBBRRL -BBFBFBFRLL -BBFBFFFLLR -BFBBFBFLLL -FFBBFFBLRR -BBFBFFBRLL -FBFFFBBRLR -FFFFFBFRLL -BFFBBFBRRL -BFFBBBFRRL -FBFBFFBLLL -BFBFBBFLRR -FFBFBBFLLR -FFBFBBBRLL -FBFFBFFLRL -FBBBBBBRRL -FFFBFBFRRL -FFBFBFFRRL -BFFFBBFRRR -BFBFBBBRLR -BFFBBBFLRL -FFFBBBBLRL -BFFBBFFRRL -FBFFBBBRLL -BFFBBBFLLR -BBFFBFFLLL -BBFFBBFLRL -BFFFFBFRRR -FFFFFBBRLL -FBFFBBFRRL -FBFBBBBRRR -BBFBBFFRRL -FFBBFBFRRR -FFBFBBBLRL -BFBBFBBRRR -FBFFFFBRRR -FFFBFBBRRR -FFFBBBFRLR -BFBFBFBLLR -BFBFBBFLLL -BFBBFBBRLR -BFBFFFBLRR -FBFBBFFRLR -BFBBFFFRLR -BBFFFBFRRR -FBBFFFFRRR -BFFFBBFLLL -BBFFFFBLRL -FBBFBBBLRR -BFBBFFBRLR -FFBFFFFRRL -BBFFBFFRLR -FBFBFBBLLL -BFFBBFFRLL -FBBFBFBRLR -FBBBBFFLLR -FBFFFBBLRR -FBBBBFBRRR -BBFBBFBLRL -FFFBBBBRLR -BBFFBBBRLL -FBFBFBFLRR -FBBFBFFRRL -FBFBBFBLLL -FBFBFBBLLR -BBFFBFFRRL -FBFFBBBRLR -FFBBFBBRRL -FBBFFFBLLL -FFFBBBFLRL -FBBBFBFRLL -FFBFBFFLRR -FFBBFBBLLR -FBBFBBFRLL -FFFBBFBLLR -FFBBBBBRRL -FBFFBFFRLL -FBFBFBBRRR -BFFBBFFRLR -FBFFFBBRRR -FFBBBFFLLR -FFFBBFFRLL -BBFFBBBLRL -FBBFBBBLRL -BFFFFBBLLL -FFFBBFFRRR -FFFFBBBRRL -BFBBBFFLLL -FFFBBBBRRR -BFFFBBBRLR -FFFBBFFLRL -BFFBBBBRLR -BFBBBFFRRL -BBFFFBFLLR -BFFFFBBRRR -FFBBFFFLRL -FFFBFFFRLL -FFBBFBBRRR -BFBFBFFRLL -FBBFBBBRLR -BFBBBBBLLR -FFBBBFFLLL -BFBFBBBLLR -FBBBBFBRLL -BFBBFBFRRL -FFBFFBBLRR -BFBBFFBRLL -FFBBBFBLLR -BFFFBFFLRR -FFFBBBBRLL -FFBBBBFLRR -FFFBFBFLRL -FBBBFFFLLR -BFFFFFBLLL -FBBFBBBRRL -FFFFBFBRLR -BFBBBBFLLR -FFFFBBBLLR -FBFFFBBLRL -BFBBBFFLRL -FBFFBFFRRR -BFBBBBBLRL -FBBBFFFLLL -BFFFFFBLLR -BFBFBFBRLL -BFBBFBBLRR -BFBFBFBLRL -FBFFBFBRRR -FBFFFFFLRL -BFFFFBFLRR -BFFFBFBRRL -BBFBFFFLRR -BFBBFFFLLL -BBFFBBFRLR -FBFBBBBLLL -FBFBBBBLLR -FFFFFBFRRL -BFFBBFFLRR -FBFBFFBLLR -FBBBFFBRRR -FFFFBFBLRL -BFBFBBFLRL -BFFBFFBLRR -FBBBBBFLLL -BBFFBFBLLL -BBFBFFBLLR -FFBFFBBRLR -BFFFFBBLRR -FBFFFBBRLL -BBFBFBFLRL -BFFBBBFRLR -BFBBFBBLRL -FFFFBFFLRR -FFFBBFFLRR -FFFFBBFLLR -FFFFBFBRRL -BFBFBFFLLR -FFFFFFBLRR -FBBBFFBRLR -FBBBFFBLLR -BFFBBFBLRR -FBFBBFFRLL -FBFBBFBRLR -BFBFBFBLLL -FFFBBFFLLL -FBFBBBFRRR -FFFBFBFRRR -FFBFBBFRLR -FBFFBFBRLR -FFFFFFBRRL -FBBFBFBRRR -BFBFFFBLLR -FBBFFBBLRL -FFFBFBFRLR -BFFFFFBRRR -FFBBBFBRLR -FFFFFFBLRL -BFBBFFBLRR -BBFFFFFLLR -BFBBBBFLLL -FBBBFFFRRL -FFBBFBFLRR -BBFBBFFRLR -BFFFBFFRRL -BBFBFFBLLL -BBFBFFFLRL -BFFFFBFRLL -BFFFFBFRLR -BFFBFBFLRR -BFFBBBFRRR -FBFBBBBLRR -BBFBFFBRLR -BBFBFFBLRL -BFFFFFFLRR -BFBFBFFRRR -FFBFFFFLLR -FFBFBBFLLL -BFBFFBFLRR -FBBFFBBRLL -BFFFFBFLLR -FBBFFBFLLL -FBBFFFBRRL -FBFBBFBLRL -BBFFBBFRRL -BBFFFFBRRR -BFBFBFFRLR -FBFBFFBLRL -FBFBFFBRRR -BBFFFBFRRL -FBFBFBFRRR -BBFBFFBLRR -FBFBBFFRRL -BBFFBBBLLL -FBFBFFFLLR -BBFBBBBLRR -FBFBBBBRRL -BFFFBBBLRR -BBFFBBFLLR -FBBBBBBRRR -FFFBFFFLRL -FFFFBFFLRL -BFFFBBFLRL -FFBFFBFRRL -FFBBFBFRLR -FBBBBBBRLL -FBBFFFBRLL -BBFBFFBRRL -FFFBFFBLRR -FFBFBFFLRL -FBBFFBBRRR -BFBFFFBRRR -FBBBBFBLRR -FBBBFBBLLL -BFBBBBFRLL -BFBBBBFLRL -FFBBBBBLRL -FFBBBBFRRR -FFBFFBFLRL -FFBFFBBLLR -FFBBFFFLLL -BFBBBFBRRR -BFFFFFFRLR -FFBFBFBRLR -FFBFBBBLRR -BBFFBFBLRR -FBFFBBFLRR -BFBFFFBLRL -FBFBFBFRLL -FFBBBFFRRL -BFFBFFBRLR -BFFFFFFRRL -BFBFBBBRLL -BBFBFFFRRL -BFFFFBBLRL -FBBBFBFLRR -BFBFBFFLRR -FFFFFBFLLR -FBBBBBFRLR -FBFFFBFLLR -BBFBFBBLLR -FBFBFFBLRR -BBFFFBBLLR -BFBFBBBRRL -BFFFFFBLRR -BFFBFFFRLL -BFFFBFBRLL -FBBFBBFLRL -FBBBFBFRRR -FFBBBBBRRR -BBFBBFFLLR -BFFBBFFLRL -BFBBFBBLLR -FFBBFFBLLL -BBFBFBFRRL -BFFBFBBRRR -BFFBBBBLRR -FFBFFBFRLR -FBFBFFFLRL -FFFFBBBRLL -BFFBFFFRLR -FFBFFFFRLR -FFBBFBFLRL -BFFBFBFRRL -FBFBFFBRLR -FBBFBFFLRR -BFBFFFFLLR -BFFFBFBLLL -FFFFBFFRLL -FBFBFBBRLR -FBBBBFFRRR -BFFFBBFLLR -BBFFFFFLLL -BFFBFFFRRR -FBBBBFFRLR -BBFFFBBRLL -FFBFBBBLLL -FFFBFBFRLL -BFBFFFBRLL -FFFFFBBLLL -BFFBBFFRRR -BBFBBBFRRL -BFBFFBBLRR -FFFFFBFLRL -BFFBFBFRLR -BFFBFFBLRL -BBFFFBFLRL -FBBBBFBLLL -BFBFBFFLRL -FFFBFBFLLR -BFBFBBFRLL -BBFFBFBRLR -BFBFFBFRLL -FFFFFBBLRR -FBFFBFBLLR -BFBFFFBLLL -FBFFBBFRLL -FBBBBFFLLL -FBFFFFFRLL -BFFBFFFRRL -FBBBBBBLRL -BFFBFBBRRL -BBFBFBFRLR -FBFBBBBRLL -BBFFBBBRRR -BFFFFBBRLR -BFBBBBBRRL -FFBBFBBRLR -FFFBFBFLRR -FFFFFFBLLL -FBFBBBBLRL -FBFFFFFLRR -FBBBFFBLLL -BBFBBFFRRR -FFFBFFBRLL -FBFFFBFRRL -FBFBBBFRRL -BFBFFFFRRR -BFBBBFFLLR -FBBBBFFLRR -FFFFBFBRRR -FBBBBBFLRR -FFBFFBBLRL -FFFBFBBLLR -BFFFBFFLLR -FBBBBFFRRL -BBFFBFFLLR -BFBFFFFLLL -FBFFFBFRLL -BFBFFFFLRR -BFFFBFFLLL -FBBFBFBRLL -BFFFFBFLRL -BFFBBBBLLR -BFFBBBBRLL -FBBBBFBLLR -FBFBFFFLLL -FFBBFFFRRR -BFBBBBBRLR -FFBBFBBLLL -FBFBBFFLRR -FFBBFFFRLL -FBFFFFFRRR -BBFBBBFRLL -FBBFBBFRLR -FFBFFFBRRR -FBBFFFBLRL -FFFBFBBRLR -FBFFFFBLRL -BFBFBBFRLR -FBBBFBFRLR -BFFFBFBLRL -FFFBBBBLLL -BBFBFBFLRR -FBFFFFBLLR -BBFBBBBRLL -FFBBBBBLLR -BBFBBFBRRL -FBBFFFFRLL -FFBBBFBLRL -BFFFBBBLLL -FFFFFBFLLL -BFBBBFBLLR -FFBBBFBLLL -FFFFFFBRRR -BFBBBFFRLR -FBBBFBBRLL -FFBFBBBRRL -FBBBFFFLRR -BBFFFBFLLL -FBBBBBBLRR \ No newline at end of file diff --git a/day5/program.js b/day5/program.js deleted file mode 100644 index 1c13684..0000000 --- a/day5/program.js +++ /dev/null @@ -1,60 +0,0 @@ -const fs = require('fs'); - -fs.readFile('./input.txt', 'utf-8', (e, data) => { - const boardingPasses = data.split("\n"); - let maxSeatID = 0; - const seatIDs = []; - boardingPasses.forEach(boardingPassCode => { - const [seat,row] = calculateSeatAndRow(boardingPassCode); - const seatID = row * 8 + seat; - if (seatID > maxSeatID) maxSeatID = seatID; - seatIDs.push(seatID); - }); - - console.log('max seat ID', maxSeatID); - - seatIDs.sort((a,b) => { - return a > b ? 1 : -1; - }); - - const mySeat = findMissingNumber(seatIDs); - - console.log('missing seat', mySeat); -}); - -function calculateSeatAndRow(boardingCode) { - let seat = [0,7]; - let row = [0,127]; - const chars = boardingCode.split(""); - - chars.forEach(c => { - // console.log(c, row); - if (c === 'F') { - row[1] = row[1] - Math.ceil((row[1] - row[0]) / 2); - } else if (c === 'B') { - row[0] = row[0] + Math.ceil((row[1] - row[0]) / 2) - } - - if (c === 'L') { - seat[1] = seat[1] - Math.ceil((seat[1] - seat[0]) / 2); - } else if (c === 'R') { - seat[0] = seat[0] + Math.ceil((seat[1] - seat[0]) / 2) - } - }); - if (row[0] === row[1]) row = row[1]; - if (seat[0] === seat[1]) seat = seat[1]; - - return [seat, row] -} - -function findMissingNumber(seatIDs) { - let curId = 0; - let yourSeat = 0; - seatIDs.forEach(id => { - if (curId === 0) return curId = id; - console.log(curId, id); - if (id - curId > 1) yourSeat = id -1; - curId = id; - }); - return yourSeat; -} \ No newline at end of file diff --git a/day6/input.txt b/day6/input.txt deleted file mode 100644 index 3fa5775..0000000 --- a/day6/input.txt +++ /dev/null @@ -1,2040 +0,0 @@ -gsvdkufnoawjmhp -wvhusojpnikgfadb -vshnpfedgwajkou -aujodhskfvnpgw -okpdnwhsfvjguqa - -juedvq -vqeduj -veqdju -eqduvj - -cdajbuernxm -mnucjearxbd -axrmdejuncb -jrebucmdxna - -kutplibdoqzfvhw -qcewmrkdvhl -qobdwvlkgxhpasyjn - -psbjhnatxe -pnaxesjhbt -tpxhbnseaj - -yskvjqacinfdrphwltxgzomueb -jwprnxzvkeofthuqbyimadgslc - -hzwepdg -lwf -wy -lw -rw - -sdgateubqmznhjk -xyphltd - -dbhl -hdlb -dbhl -hbld - -inkxywsbgjuvpztrecadqmhf -qkaxszcujwvmbhdietpgr -krupsdgibzecxwvhqatmj -qtpxerobhisgcumkwjvdaz - -bgakcmh -gxasvzu - -cjtrvhinaqsbpk -jvxtspaqbhkfnrc - -nab -bex -qmkudf - -uot -out -tuo -uto -out - -sbtkzf -hbkfzs -szbkf -fuzksbx -jskrzbf - -dkphfoybsagcrnq -oybunchapqrdks -bokpysdhqnarc - -bchumknwairvlf -cvbuhwzirkalfy - -bwnseiaoqyjf -josqanfbew -nealmqbfwojs -jqnbfaoesw - -sowzuji -wojizu -wzojiu -jwozui -ujiwoz - -kcopqbt -tpkudorbc -pmtwogjb - -uxkfthszqdbelomwri -tlusezbomwfqrdxhki -rsdfkbteoqilzmxhuw -bwkqmdsxhrfulietoz -izkwomsdlbfxetqhru - -kzhwyodlvpt -kvfhldwpo -lvhypokdw -opwjhvdkcl -kpahtdolvw - -cldyjpuitah -upcthlijyda -icdauhpytj -haypidtucj -jidaptcyhuo - -mi -ti -qjwiz -oudehsxyiv -bpirjl - -stlyornuk -cxapqwie - -kharunjiebzvoy -gvaihtklnqmcebf - -t -lt -t - -ohca -lznkumqfgyjsbeot -owxdivpr - -dy -yo -xsy -yo -pyrvh - -iaxp -afpikux - -hpsfqrnevzxl -fnrsvexzhqup - -cp -fpc -cp - -nbuojxgqckrwzspehf -mhguoxsfkejwcq -kedqujsomfxhwcvg -ouqefsxchgjkw -qcjohwxfseugk - -rybnlomq -fmxsngauo -embkon -nlmvob -bomhnv - -gptixlduzjeqkorsamwnh -pgzwohfjkuvbtylmc - -thcgo -vhrlxmo - -kbfgmhpzoqysac -ockazbsmhpgqfy -kmcqfyzhapgsxb -qcfdlwyarzuskhmbg - -surovlcihp -irvlpuhosc - -rd -d -td -d - -koasgulh -kroumtzl -yubkwolnpj - -dqykvasneb -easknpbovyjd - -wqvop -nwqvpo -wovfrqizh -onqpwv - -uskotfndjeplixhycbqrmw -mbxoewypcfdhistn -ydtvpbfemcnsihoxw -ynwbtosmcipxhfde - -urgvbqechawznsjltixody -swdbnevcatrflguhziyoqxj -sgiwelhanovrbjuzyqtdcx -vyenojuhxwzbtigsdqarkcl - -jxcwblszo -khrwvnbdolgjufyz - -n -r -d -r -bd - -tolrypvdwmb -lwrmopdvybt -rdybwmvplto -vlwpyrbmotd -ybolwtvprmd - -radvoplnq -lrqpondva -lpanovqrd -lpanvoqdr -dqorvalpn - -fvxca -vacfx -fvcxa - -jbeixdakgolpfhqyntw -purbsxvjfwhetlmcnz - -jztfgbmnkadiehv -djhpntcizmkgvbfe -btegdfknizvmhjl -igbdeztjfkhmnv -iqvtgejanzfdbhmk - -jpi -ijp -ijp - -kydp -viykd -dgyqmftwx -vdye - -sewpkrvh -ekorswnp - -bplerysifmzvwoncjxqk -nsbeqowitcpjymxvl - -nexbskamprd -xsmdbkaupner -dsbnekarctvmpx -nkapxcbsmrlde -ezfdhnakwrsmyxpb - -olnuzvxcgpdtfb -tgzcfdbnxp - -vjliksorxpmwecaznu -giuoxsvnzewljpmc - -fuljpkt -cplftukj -lfptjku -futpjlk - -tqcgihveyswu -ywvqecthgs -cqhwetvsyg -qvshwcegty -gyctwqsfvhe - -uhezlyxwvpcidr -hvucplszbxywer - -jchyntk -revwzsm -kdn - -cotikdlpxauzb -uxzptoksqbdiw - -nqvruwhtombs -tebfnykzmlgcj - -ciwkhzbmgfqo -uwmzgbcoihqkfs -fkwmziohcgbq - -shezgrvq -gprveokq - -jvqcdiuyrnpgh -dyjqvhrpic -xjiklpfzmthrwdsyqv -pdyvochrunaqjgi - -denpjgywacrk -jbypwarecukdgn -zacqyxdgejrmpwkfnh -uwldpkrgaenjcy - -q -mq -q - -d -c -d -d - -cdazeitlrpxnfqs -nrqxelfocsihpz -cnkveyiujlbzfgrpxq -cqznxrfliedp - -qicgkpjzlxonv -cijozlhkqxnp -pgkcnloyxzj -japmxlknszotc - -bytg -mwetjayhgiup -gyt -ygt -tyg - -zx -elxz -z -vncto - -nryw -rywn - -takqgijzforxpshm -ztmrxfqgsiphjaok - -fsaoqe -wcavsldeytn -auoekhzsi -hgseja - -whqyvldpintefaxgurjc -xluqrgsvnacykptefbdhmj - -oylknhsgmpawziqte -znhmatkpolsw -pkvmtznhlwsoa -onzamhltkpsw - -zs -zs -zs -sz - -e -a - -xmi -gahfrd -yt -jmy -nqy - -zkbtfdjom -ot -uoqtr -eot - -g -er -g -g - -ncvwupezd -cnvdwzpeu -cuwnzvedp -cdnzevwpu - -bkuwcsv -bqcsgwve -mbhcovjsw -qwrnbeycsv -lisvbwc - -vlys -omvzl -ptlejv -xylv -vxol - -mqgohwtz -rqomlcw - -rgopxhkslqcjmzbatnd -phgzmojlstadqrxkbn - -pcbziv -pivzbc -jilczbpv - -gmrecszl -zgrecslm -melzcrgs -gezcrlsm -mcsezrlg - -ceotvxaydplfiu -vbzcaxuokwd - -gy -g - -lj -neocbiqjt - -foyawivmhs -fayowsmzrv -mksfowvzayg - -sivthk -yh -lh -ybhq -hy - -fk -ka -vka -qhjxrzmckpb -kf - -s -s -s - -iyth -tyhri -yrtaih -htyi -utifydhq - -hwxd -xhwd -hxwdb - -kfhsvbjdwxcnt -dbfjhsctkvw -sogzdhjqiwmlyuvf - -v -nyx -v -i - -ncimwelvbudtp -piwvudaer - -aktpdrhm -dtapkhr -dhapktri -taprnhdko -krpdhta - -fvpaxk -zgmrwja -ar - -vxoisla -olisvxa -kioqvrlxjhsya -oixgalsv -savloix - -ac -gr -c -tl -c - -fndwqsruzagei -dwunqfaesgzri -bzarmfnqwuisgde - -jr -rj -jr -jr - -zrevhj -xigdmqatk -wjlpzvsy - -qijznvobp -nzbojivdpc -vzipojnb - -srbtecvpixam -hdvctplmfxuow - -bf -bf -bf -bfex - -g -g -g -g -mag - -b -y -b - -vmbwhdfiqteglnpkxucjoa -wmqdconxbuaetjlgphivkf -upadfnhkwtjioqcbvxelmg -gofjubptnmkelihwxacqvd - -alev -evla -alve -avel -aelv - -uceyogrhl -oqcafluvhewgr -ugcxlhorpez -nduzshrceglox -odmgbeucrplh - -ugesfliovyzja -nlizsujfadgo -lfguaszotij -osznifulgadkj -xadguljioszf - -kpgve -vqsfezungalxidb -gwteov -gpvcyjrmeh - -apuonkxtc -xithys -hfvtsx - -pgtzamyqeu -gtiuwpcqzvya -tpqauezyg - -souvmglcqbekzi -miuzvksocgqbel -gzqkmsubevolci - -ndvahciz -jaoyhepsbirw - -bghijfkotcxwu -uaokxsfbleyhgqr -hucfokpwbxg -nbfuztgovhxk - -zghianxtlq -qthdvingxalkz -wfqnixgteza - -lhzcrodupwqsv -phsvrzcldoqwu -hogspqwcvukdz -hwzpucdsqvrol - -txkqmsfbglhnoypaduiv -navlozmpthwsbkiqxdfu - -gidnojlbtfpskuwavyxczr -irvsyznbtedxougfwc -sovxhcqdbwytzmugrinf - -mcjnraketsgvqyxpbuwlhzdof -kqudanprgiejcftzlywhsoxmb -rcxmkdqfohjzgtsalbpunywe - -o -cm -rc -m - -tmkbedxgzsw -tdgmsxbzkernw -ktdbxzsemgw -gwkmestbdxz -xzdewgtmskb - -evpdgzcu -gepcvzu -vegzpuc -vpuzgec -cvpgeuz - -wfsadgtuizejmylxq -aspmuqigbxeljdtwfy - -ygbtdp -tye -fryaitjcukhl -ytdm - -jfm -m -m - -cl -cl -lc - -qbodnftrsygi -iztorbfskqdvng -onpsgqrdtif -mnrofcuqwdtils - -mhavcgzlrtbo -jrldgavzqbcxoh - -pshtdbifrvzqmklyae -tfajgrpkidzyhslebmvq - -cuzbjepnvis -isjbenvyzlcup -nagieshzcpqmfuvbj -ezvpsjrnciub - -ywgdsafzuxbrmhvqkljnoipc -hjcntvrzwdfbxksyiqolpumag -kwvpybmjeoualxcsqgidhfnrz - -zubvkn -cuwfsnv - -isknfdalujeg -hikagvpzx - -szgfhjtxid -stdgjzxfih -xghsjfdzit -gfjixszhtd -fzjshdtixg - -uibgxka -abigukx -xubakgi -gxabiuky -bkaxgui - -tjzor -slaore -gxwnoifudmcqvpk -obhr -tyo - -q -y -e -r -ifdcxzm - -fvtqrjsblkhuoiey -gyfnizlqupvscobt -bouiftlcvqsy -qdvlyfiusgotb -qvbycwsifluto - -ifmnxbcvpkylruh -nckrmfphluixvby -vbcmxyhurnpilfk -suiqbvyrxcphmfnlk -ynuxkrfvibclpmh - -pmvdyexsoilatqfgk -lpidgatmqevkxyso -gkpsaoleymqxvtdi -gmvxeyplqdoasitk -vkpdylstquegaiomx - -ymogxuswkce -vbxznpscg -xlcgs -xclbdsng - -zovwtiy -zrjlciov -ksxefuvqdam - -cwvsx -xeuwyhsfb - -hxwgolksbrdmpifye -lwpyefxmiohdnbksgr -gzoehypbldxikmwtrfs -sdlwpeymxifrbghok -glmbhykiofdxpwervs - -ndcphgqfuvsekaxozri -xofkqnbschdaveruizgp - -ptkvdhjaw -skhtapidwjn -thunakpjwd -eaglphkdtjcfw - -pnezvfgiouahmslkdxcrqb -fpiqsecxaukbvzgnorjhwdm - -emcwblgxuvnkzrdsoyjf -rvsxeugkmwzfncojlb -nhbiclvskjrupgxzfeomw -gcxlbjozeiufwnskvrm -eonjkwbzfxgpruvcmsl - -ntgia -ia -ai - -scoernukhwtigpd -bogiserhpucnkt - -eaipzg -gne -lughe - -tbipylmnrague -tbargijepmhuynl -triyzgupnbmale -prtnumgaibley -peblaytmgnrui - -rqlsepfhiv -fvelqphsri -ilfhvqerps -fheqplsvir -sfpvehirlq - -jciwxfbhqkadgzloprnuvsty -qwouetsmhykavxfbjzrglc - -fjmz -mjczf -unkzjm - -gebyncxsphfokwm -gmchsnbwkpfyxeo -fybkhcesogxpwmn - -ud -whjn - -ihm -hmi - -p -p -yp -sp - -ytrwx -yrtxw - -p -d - -ieltygdukac -yiudeakg -kpegdaiyu -audykegi -aeqydwiguk - -lb -ei - -zjvctfndgiqbeu -abfwndutvecqigz -fznbdutevigcq -qtvzfnueibdcg - -g -i -x -g -g - -qhm -lq -nq -pqsb -lvq - -qnxpslvajf -xuavcnst -nsyabxv - -ocu -uco -acoux -cluo -coun - -jtgzodebq -ojztqdgbe -oejrqzgtbda -tjzbqedgo -gzqtejobd - -ubglorcsyvmxd -oentwfgulpqikdcbzhj - -jwkmxdnyvbiz -qebnoyfz - -bepdfi -ikepbof - -cofgekndbatpruhqmwvsiy -bsqtrakeudopghvyfmcnw -qgusdwvabytmfkcnehorp -qfhruygwkvmbpaoestcdn -prmkbuvynseatdoqwfhcg - -enczdvbkiyjgruqp -bdiqvwjurpycngzk -bnrcejupvqiwgzkyd -pqgybrcjzkudonvi - -fygasxjwrb -ijsgafwyrbx -syjawbxgfr -wfbrgvsjyax - -xtp -bfnzuadh -xlce - -rxmeqcbv - -fjtdihkrbyn -htfjyinkgdrb -fibgtkdryhnj -hkbnjrftidy -intbxjrkfdyh - -nhkiqjocfgxmrvwetd -ghnfdjvqtxwermokci -xnrtfkhdwcmjvoeigq -mcvfjhwiqtnrekogdx -imhxgjwrodtcknqvef - -sabwqu -yqamws - -usei -xkvnyfi - -rcewysztbiamhpgldj -kibrfndmgeazcsh -adrzgchmwjsbie - -pnrwvx -lwjxnu -vwxinb -pfxybwng - -wnvxgfdkubzrmip -kmjhoigltwbz - -znlgbx -fla -dl -l -l - -jgeqcikplduzxrwby -kwplxgcbndjqyizuer -ewrqujilgyxpdzcbk - -guteykxsqrfwhz -mhiurkswtqbxz -sdlqxvowujrhkz - -zrejn -nzrje -jnerz -rzjen - -fvkouigderaqbjth -eqrvwjinfltzpcuag - -stqcrpy -ctsqpyr -ptyqrsc -ymsqrcaptb - -egftpqosiv -ecjdqlnmwouf -spxaqofre -epogyfqi - -oxwgtshjqef -pbtgjfeqhnoxw -jfhewygoxtq - -jwavgo -ogevbwdjai -ogvahjw -wrajvog -ogsjwarv - -rpucvg -cgpr -htfelpc - -hqrwapscubelovxntd -jisztpnbcahlfdoqmvexgk - -pmadwutiejznofcgvsbqyxh -qvmzbaisgfcunwjexhpdktyo -xtvsdnqaucyehgzbjiopwmf - -vjqih -himjwdv -hsojivb -jtrklivehyg -mvnaizoqpfxhj - -j -j -j -j -j - -dpnwmtvklc -ndjpkm -ndmpk -ndmpk -ndmpk - -ucojsptiqymhewbxvrfdkngl -ebpjwuxrdqkmsochvfgliznt - -esroiaqdbxnjhut -xibuqhmensdajo -feukjbahdxwqnsiocv - -vkxzclpmtujngerawod -azdrgcenvjxptkuolmw -onrluajvcgewpdzkmtx -xamlobkrvzwpjgnucdte -tvenjdmlzpwugkoracx - -ywpfhztklgjmoien -nyelduixgvwmojpzhtk -lehpigtmoknjyzw -gmhwzokylpnteji -tmypejhwgzlniko - -fmd -jf -fj - -l -v -ntobg - -drmzvt -rxtsfuk - -vxdlpjkrsz -dgxkprvzsl -dsklxpvzr -pdvxzlrsk - -gwip -gakpw - -kbcadn -bakcd - -mhpstqcgvoalkwxinebryzujd -qwhirveoczyatgjdsmkpxnl -mejazlincwodtshxkrpgqyv -fsaizhnkcvwolgjpdqxtmrye - -rxubznovy -yvudnrbz -zvunwcyrkb -ntzbryuav -ndvytuzrb - -utvklrxypgbnimsdofwa -fyzliqswjmtpvdka - -byctfzx -pxzf - -g -ik -ykei - -bcajzwogvetd -gedbcwtzvoaj -hcwogaxjbzvted -eoczjagtdwbv -atvdjbcozgew - -wsclketugyaz -qvfbjcxtmilgow - -amgirw -yf - -iletugq -hnoxbfkaspt - -qjdfcpvksmxzywahgn -wnzceyskgpoxdhlmravjqf -xjgvhcsqyfankpzmdw -jyncdxwsqkvphfamgz -dvznygwjkcmqsxahfp - -fkuwiezpljbdayhsr -rphwbeujdzlfiasyk -erdhpafkzbwjlusiy -jwfhkrzdeabpliusy -wfipeujhylazbsrkd - -fqmbwapvouelydgicj -uelvqwomtyfjgcpadi -qkpcsdeyjiwarovnglfum -ijvgqdauoefpcylwbm -ydmqpfewaovlicugj - -sgbq -ltqambf -djbuvn -zmtbgy - -egvifnsaztxqcrywumj -aqcxujnzvfwetrhgm -fxdmtkgawplobqjenv - -bxuwpnl -ztdkau - -ecylsbdv -cvzlsbeyd -yqcveblsd -beyvlqcsd -ebsvdycl - -eb -xpnyter - -cbhqyzresnpxfwm -cwksfvhxqperbimz -whqzpbcsjxafre - -beodiasvj -jbisdoave -iedaovbsj -jxovacsiebd - -prxsnyehgwifbzo -ozpbsxynfiwrge -ribozypewsxngf -nyoxspzbfihgewr -rxzewpbnimfoysg - -shviadjcue -weduziolmcbngp -vqdieycu -cudeif -dicyuqke - -nvcwhuo -sltchuwnq -unwhci - -ekrisbvx -rsxiev -exnrvsi -srxevi -xhsvnrei - -rs -rs -sr - -fuzjmek -tihf - -ptlzxreqfdchibogvysmku -pceyizvdkqxbhrtulsfmog -gvkrxfsbipqedlyzomhtncu -suyzgrobilxhmcfdtvkeqp - -okfvjneqyicuthwsmpxl -wdojlsqknyhmptvicfe -nyfjthmpivqgsulwkboec - -ufrpkliqjgwxeybmcztasovh -qvkpyghxblewsaitrmzuonjc -giptzywrejquxkoavslcmhb -peaywubjozmcgrihlqsvxktf -lehjpzguiksacobxywtmvrq - -egryz -ergyz -yzegr -yfcgzre - -j -j -j -p -j - -bjt -tbj -tjb -tbj -jbt - -cklp -lpck -lckp - -fea -eaf - -qgm -dz - -yri -yi -zypdi - -ekwjxhtmgiudpz -xepuhgwjizkdrmt -ezghmliwtxujdpk -wdhxpjizugkemtl - -gyokbspj -kbgsopyj -pykhdsjbgio -opjykusbg -jygbsopakc - -ixorlekwgnbcjm -lrjkwxgie -wgeikxjrlh -rlkjxipeqgw - -ecgmdrykq -myrclqdgek -guqmzyceprkd -dygckwerqm -yrcgkiqempd - -u -u - -bcwnvl -fcvsib -hcnvb -cpgveoaby -ivbcn - -n -n -n - -macuqyp -fs - -pbout -suota -cuotm -atmuo - -nlravibecfj -eilcjafn -aeibjfl -jxfeilauo -jafesdnli - -xfwroij -fxwijor -irxjofw -rfjwboxi - -dj -dvj -dj -dj - -mikhxcqensrodu -imcvkhewgljupsxonq -kceuqxltinhsom -kzqanoemcxhius -vmuoxineqpzhacbks - -hklcsoaywpfrdntmu -xirbzckwjvpfygeno - -o -to -o - -zvirefunh -ezhirnvfu -runifzhev -ezivhnrfu - -zfsoducbpai -cupdisobazf -aozbsucfdiypv -bcfazodiups - -njfprukxamlg -kpfrjgynulxma -pijflgnuxkram -pkuxalrmjfgn -nkvrlmxustpfjga - -dszgm -rsmu - -iaw -aiw -wai -aiw -iwa - -s -s -s -sl -s - -eyavhnk -keov -qeiwfkcgvrpsld -kuvze - -a -mh - -ilqchdfsog -igscolmdzq - -fnyhxmpct -lchdpamfu - -vijz -vj - -dhpxjrmyuefclvqgni -uicskweohgvfryxmdq -tqgdifymexbwckruvh - -c -c -c - -lthidumvycszw -cvpqjeuhlwrfyzg - -keocuw -uckowe -oekwcu -cwukoe - -c -c - -lkxjv -jkvxl -vxklj -jkvxlwg -zkxvjly - -sqlamxeuhpgwjbdcioy -bumyjxsiqweholpgcda -gecswjlqhadiuboxmpy -syahibgopexwlucdqjm - -igebmv -tawqvezdsmpunk -rimocvgje -evmbhc - -ykjisvfatux -jfaisyvktux -itksajfxuvy - -fclkush -slcykdbgu -fskuchl - -xjhulywagzeioq -oejlfsquhbriayxwg -jiexgylwzhuqao -wyxhqljagieou -hwladixguqejyo - -sofcbhuwyqtid -icofdwsb -dfwovimbcs -cwibodnsxf - -jqnestpyaczfmxhwrbuvldi -mxanrhbfcujvyzditwlo - -ntfgivkyszmarc -qrajdhowuvpclbex - -kliwy -ukwlryi -ilkyw - -pmgltzsk -ljmipztvgow -zltmgup -umztglp -ftzmlpgk - -twepi -teq - -ohyd -mytjrwk -hfy -exyh -ye - -rzsqhtlowavy -twvhzyrjsqaol - -yzagcqrjeimwxokh -fmxtiagboleqcwdrhzk -opvemhasrguxkcqzwi - -atcpeyosnrjbg -kcesobgua -fagsev - -ca -ac - -xahmtil -hximtla - -hyutnjdrbsmofl -dswjfyothmblrnq - -et -te -eqt -tuje - -nbhpwzgtrcx -gqcxobhriznw -hwnbugrejxtczs -cujrbxfhnwzg -gcwzhrxndjb - -qwrfxhlyzcptvmkdeauigob -zbchavlkmryxiptegwfouqd -cfhuiptgqkoalrewzmvbyxds -hudmwcgbfepyitovkaqzxrl - -eysuozkm -ndgloqyv -ignhwrovy - -iqufgnvxspdcjtylkbrozh -inuzqktrvcxyhbgfosljdp - -qhfknsyeuirzagvcwd -yfcgqnxewlkrsuazhi - -lj -jl -lj -lyj -jl - -kpholfxewrdt -opdfhtlmkwex -hpwftoxderlk -ylxhwdofnztkpe -rwfpxlhtdkoe - -ubml -yvohg -zeasf -plum -qhnjxg - -cjgzwmdyuakvixlprhfe -kmplfuxywergchzjvani -xcvlzmewyujgirhpfka -fwhgrxkjcvpeuilzyam - -eclsiqp -ivgspoe -scepi -pmiadtskyze - -akmdfivwgct -yvgcwakhdimts -lcvgirakwudtp -aftnckwmidgv - -zuqblv -blvzqu -uvbqlz -qbuzvl -bzqxvlmu - -by -betlcdvry -yb -bxy -gybjx - -waoqdxpkmfnyrhjebcuvzs -qprvfczedowxknhausmyjb -cufdqvknwrajzybospmxeh -qkjzybeadvncwhxumpfsro -nwfkjxumpabzodvqychsre - -shdfctjrkwbvemoxluyzipnqag -sgbwpeuqcilxojfynmrdhvktaz -lhgkxfwuzbevojmrpnqydsacti -gflnzjasbuyimxqcvwrdpohetk -ynwedhbskjtvoucgapiqlzfxrm - -wlmjxp -ylnxoajk -luxjidte -xjrvlcdeu - -pv -vbpw -wvuap -kceavp -rdphvoitqf - -dlxzwkhtmc -twzhlmkdc -tcylhkdwzm -zwmlkdcth -gdhikmctlwsz - -hpekwtlufyragqvb -kbrwatlupqyfvh -ucbvwlhfqatpkry -hlakvyuqrfpwbt -rubvwpfqlatkhy - -npxobl -ckuhnplvx - -edkpjycofasulrthw -rpuhcdyxlftosewa - -stuvhwaexykzdorbfpi -shjuwgpfqmtacvlbirkzd - -frph -wo -h -zumtyngcj -pfse - -zivsgurp -szirpvg -gikvsprz -zigpvsrk -nvpsgzir - -rfimu -hmqrlfxpbgu -nrmoyftu -nmujfr -rfum - -bidzwmearovjkgcl -ogdbirkzqmclejvaw -gealcqozmijkbrvdw -gzakwmdbejclrivo -eolwifvgmrbjdazkc - -iurfyqgwk -ymkvqfpwrig -aqrfywikg -bfdryxikgnwoq -cjfgkryiuwq - -jvb -x - -qkxnvfuopdytrzjgbm -bmqkuyarjgtdpfzsnox -obwjxyeqtingzmdrfkplu -gamupstryfokbzqdxnj - -ymanp -npfshjya -pundyklatc -ypfanh - -garp -grpa -arpg -argp - -inedmtpwrvub -vwibertnudmp -idurbepwtmnv - -yczoaplwmxibqgsfn -wbiuxyqzpncvgmsl -gpoltrbisqfznwxcymj - -a -a -a -a - -cgjviyufped -pcuvygzkjid -ptvigyjdcku - -u -i -tqa -j -ul - -zitbfuer -uzfithernb -uftbzire -uitefbzr - -jcwkroamnegxvqsh -kejhanqmvcrxwsog -gaqmkexjvcsnrowh - -taegslmuyqcipz -asytxrgdpfbcqliwz -tpgoschavqjlkyzi - -oc -oc -oc -co - -mrfvjlykquz -fzmvuleykqt -vykmzlgquf -kqfzuvygetml - -a -s - -ionve -eailo -jiomexwh -beziqpdco -ihtoe - -cfjvrqosnwyedaubmhgtlxzk -olxzjfwrcytkbgudasvqhnme -tuwfnckrzsvjgbxdmyhqlaeo -txnydgufbmjaqkrzlwhoevcs -bgakxqmfsdwyjvelntchzour - -njvkobzs -bsjvkwn - -qmnluxw -ovgtikpdbrya -nchfsjqez - -khtdryej -hdrtv -qnaodtm - -as -aus - -omjaixvgklq -vgkaxjihdrlq -ycxkzatpusiljqgv - -jtepylmrqbiwk -xerlpmynqtkfbjwi -timwpbkegljqry -lqijkebmgpwyrt -qrkljpbytemiw - -q -xqint -dkqb - -trjmdxpoeqcwf -tfedxqcprwom -kmftwxqporncde - -fpcmndhr -dzepjngqikcfrh -nhfpcrd - -c -c -c -y -c - -t -t -ti - -tgfspxdy -sytgpfxd - -zov -voz -ovz - -ic -ieuc - -vhesndkizjgwcpobulam -szjymxwopckfqtgdib - -jdfzgqsbrmnticl -fbcdgqtznmjri -doitrczjqfbgmn -otzbjfidmnrqcg - -cb -bc -cb -cb - -aspjvghyurx -vcarwsbh -laeshvzrb -hsrvia - -kpxzdhasfmltouvrc -duvpkascromz -vmcskupzorad - -pguayqbwm -gpyaqbwum -ywaqgpmbu - -ypdlnjse -elskbyz -jesylo -lyse - -zlokqmjiurpwgbn -xzvurhgmlkwqnibjpo - -wpzenbojcykqxvt -wnyzlbjkeoqtvcpx -itkjzydbpvoxcewnq - -gfuvenodsizwmh -hwfuvsntdg - -gkibnpalc -inkcgpal -gnpzliakfc - -ibektdpuhg -iwbgjke -iycnergfqkbo -egxadvlmbijk - -l -yjg -l - -ymuoc -oymcu -oymcu -youcm -ycomu - -wifoqy -zksfrict -bdpvhuilgejn -acoi -mqi - -qrcukhwvzdjilpto -hqrmwkupclvjtizo - -gdizlfawobuk -dihqfswcgukzrbla -gmukawbdfizlo - -zwdrpv -dzvpwr - -ycidkpfrqjelha -pjahykfecdqrli -kfqlajhdepyirc -pkhaceijlqdfry - -pwuxbqotey -okbphqutfx -xvsgodubtlpqijr -puoewaxtbmq - -qtbaoex -xpoqa -agiweqtop -nozuadmjrq - -huvqdaij -fkuvaijdhq - -biewrdlzc -rjlcikbzmdwve -leucwfpoizndbxr - -avgtnubqcpxrhwdoml -vrkqgyndcmohtupswa - -dmjqfesnxyciz -hfzudcjxsmno -mfjhrcsxznd -lcmbjnxzfadrs - -tvayrhpqskd -qrtkvhyus -epjsytzhvrqk -yzqohmvtgsrk -hvlysqtwirbk - -ieyd -aipeyg - -r -rg -rm -r - -qcweajhfmlgyzpv -ouqdxmsphkbatenr - -fba -kfba -baf - -vxpblsyjnrmkai -vpyhagcwqbzxmik -rpbytexdijnfavkom - -fpmytnk -cyaw - -jhyimdg -mhyij -hmvyij -mihezcovyj -yhmciej - -sqfaopkgze -kxsecfphozq -qsotezpfk - -ewcvoaurmjhq -cuqvjwreaohm -ewvjmqacuorh -wauhojecqmvrs - -lyieuqdjcb -vkpctdmywzsreubn -delchbujy -jbcyegdou -xduayceb - -nidxswarcqtk -kciqdarnbewsxt -acqrdkntipxlsw -ikpawtcdsqnrx - -gikrfhwltveap -yeplvatowncgxirf -griadtewmvblpf - -htjkmzxlvbygcwqioe -jzwtymxvigbheolckq -cxmvjyklobhtwgqzie -teczbxvlmgojqiwkyh -oxvejlbtiqywhzgmkc - -jkfapozdwcie -bmushwjgltrn - -rpnbxkoij -exjdri -uirjegxsa - -zawoncbymgsrhv -dvctxgeusr -cvizgyhlmrwsfp - -shnyujedctwfq -yscahxndftreq - -xrnysi -itcluvmd -niqwozjber - -gjobshlayxvctnfq -ljcxaonvbstqfgyh -ybhxgntqcsvfaojl -rjoxblqavncusgheytf -sncqlvybxfjtghao - -uozb -ldewrck -xbg -xhg -z - -yubqaznf -imwhrgnkjls - -msvgjrnkcloaup -csxjnkgrpiuoveamy -pknvrajmcudswgzo -tnupacsxrgkvmoji -bpnkfarqumsvhcojg - -bzvyuenaihfdcgwk -puchyenmzgksrijoa -ugebciktnlzhay - -cedfutpnsivjlobrkaxy -denscvpbmlkxaojrfh - -vugjrq -jqgtuwcnrv -grvkuqj -gbmvqsyxjueplzirhf -avudnjqgr - -vpidajtmgozxwuksh -ughiwmakpjszdtvox -wugipxzdvastkhmj -sxughjakmnwfpdivzt -wimvaupjhgxstkzd - -mqsuwhdxpcozfr -rsdwhfpakzxjmo -eysprldfqzowmhx -fodhrtmswxyzp - -vsmzfbjhwqxiugtlc -gcqdsfmpletnhbxr - -uxbgkfjwesmlchr -feakldxqnpwcjgvrzbhs -hjosrixfmlcgbkew - -dszv -zsvd -vsdz -zvds -sdzv - -pdw -lxudjpiwz -advnkpqw -hswpdog - -gslpira -neuzf - -ifjt -tjif -jfit -jitf -ifktj - -jrnzb -unkjshpe -njza - -ydigxaqm -iaeokqgmyhr - -bkxmngtdlyev -nmbuzoveixlprkys - -zjloghmtu -ermvzn -qzdncfm -afczxmp - -aptscynieqmfgjhbr -bmsirnafyepthgcqj - -q -qlr -fq -qk - -v -v - -ucrmbsozjkfy -buscrmofkzy -uosmfkryzbc -sqirbfzmocuynk -mbucykofrzs - -lrp -plz -lrp -lp -lp - -yfzmpgcsw -prycgfm -rfcmgpy -scgmyqpf -flcyvpohmgu - -g -g -g -e - -lxoaibjch -wudyrfvkzn -gtpmkeyqd - -zjhlwbtfuvick -wujtvblzchkif - -ksdfpvqbtxaluneo -dqofprhnxamskujeb - -hacwigyftqblx -xwlqahitbgcyf -ahyxlwgtqifbc - -mb -m -mg -m - -ecrasdtyljuqimhnwfb -qleiaydjcugrwn -jdyewaqnrcliu - -g -lqfio -adhstybz - -gryzuxenhlvopbtmfwqcas -yeqzalmogbncxpsfujwh -mflqzhoaupcseygnbwx -myswzuonfqlaxecbhpgj - -uwvzati -uzcjvtai -savuizt -atiuzv - -cozuin -abuizo -tiozua -wilfzeoqu -roictxuz - -gndpkojqu -gunkpsjoa -rtmzjpgkovwxlnuc - -lrj -rjl -mrjl - -udlpevjgzrfawitqs -qgrtiujslfeovza -surivgtfqjleaz -ezavgjtlfrusiq - -g -fx -mf -tx -iyqd - -sljgmdztynvrqexhwfi -gvwdyerlqnxthmjifsz -qgmjlfwrxztynivdhse - -zkvuir -kvruiz -vriukz -kriumzv -zruikv - -zyqgnvda -kdygvqanz -zyagvqdnu -qnwdmlaxgzyfvo -dnzgyavq - -o -s -q - -cbroy -qiyocmjdt -uyoc - -lkqj -kjql -jqlk -ljqk \ No newline at end of file diff --git a/day6/program.js b/day6/program.js deleted file mode 100644 index 9fa0045..0000000 --- a/day6/program.js +++ /dev/null @@ -1,40 +0,0 @@ -const fs = require('fs'); -fs.readFile('./input.txt', 'utf-8', (e, data) => { - const answers = data.split("\n"); - const groups = findYesses(answers); - - let allSum = 0; - let commonSum = 0; - groups.forEach(group => { - allSum += Object.keys(group).length - 1; - const groupFilter = Object.entries(group).filter(key => key[1] === group.groupSize); - commonSum += groupFilter.length - 1; - }); - - console.log('Unique yesses', allSum); - console.log('Common answers', commonSum); - -}); - -function findYesses(data) { - const groups = []; - let groupAnswers = {groupSize: 0}; - - data.forEach(row => { - if (!row){ - groups.push(groupAnswers); - groupAnswers = {groupSize: 0}; - return; - } - - groupAnswers.groupSize++; - - const answers = row.split(""); - answers.forEach(a => { - if (groupAnswers.hasOwnProperty(a)) groupAnswers[a]++; - else groupAnswers[a] = 1; - }); - }); - groups.push(groupAnswers); - return groups; -} \ No newline at end of file diff --git a/day7/input.txt b/day7/input.txt deleted file mode 100644 index a3b91d0..0000000 --- a/day7/input.txt +++ /dev/null @@ -1,594 +0,0 @@ -light gold bags contain 2 light lime bags, 1 faded green bag, 3 clear olive bags, 2 dim bronze bags. -muted beige bags contain 3 clear lime bags, 5 dark salmon bags, 1 pale olive bag. -vibrant violet bags contain 3 dark tomato bags, 3 muted indigo bags, 3 plaid turquoise bags, 3 light silver bags. -dull purple bags contain 2 wavy turquoise bags. -posh purple bags contain 4 bright lavender bags, 2 wavy chartreuse bags, 3 vibrant aqua bags. -striped gold bags contain 4 light magenta bags. -dark lime bags contain 3 plaid brown bags. -shiny salmon bags contain 5 light olive bags. -dull gold bags contain 2 dim plum bags. -dim olive bags contain 3 faded cyan bags. -faded white bags contain 2 clear brown bags, 1 mirrored green bag, 3 plaid bronze bags. -dull salmon bags contain 1 plaid gray bag, 4 vibrant aqua bags, 5 mirrored cyan bags. -striped orange bags contain 4 vibrant maroon bags, 2 dark orange bags. -dotted silver bags contain 2 posh red bags, 1 muted yellow bag, 5 light aqua bags, 3 pale red bags. -light orange bags contain 1 striped coral bag, 3 dim lime bags, 4 muted yellow bags. -wavy lime bags contain 5 light silver bags, 1 bright coral bag, 5 drab silver bags, 1 dark plum bag. -bright tan bags contain 3 clear magenta bags, 2 muted white bags, 2 drab beige bags, 5 plaid green bags. -dim violet bags contain 1 striped fuchsia bag, 2 mirrored green bags, 1 bright teal bag. -mirrored gold bags contain 1 pale aqua bag. -bright plum bags contain 1 faded fuchsia bag. -muted aqua bags contain 2 muted red bags. -plaid bronze bags contain 2 dim lime bags, 2 wavy coral bags, 1 vibrant lime bag, 1 dotted beige bag. -dim chartreuse bags contain 5 mirrored lime bags, 2 dotted tomato bags, 1 plaid turquoise bag. -muted lavender bags contain 4 faded salmon bags, 3 bright white bags, 3 posh fuchsia bags, 1 dotted green bag. -mirrored yellow bags contain 1 wavy purple bag, 5 shiny teal bags, 5 shiny cyan bags, 1 shiny crimson bag. -striped magenta bags contain 4 dim white bags, 2 pale white bags. -dull crimson bags contain 3 muted black bags, 4 dull lavender bags. -mirrored beige bags contain 2 posh indigo bags, 3 shiny gray bags. -bright blue bags contain 5 mirrored fuchsia bags. -plaid beige bags contain 3 mirrored cyan bags, 1 vibrant tan bag, 5 muted purple bags, 1 wavy red bag. -dotted indigo bags contain 5 pale fuchsia bags, 5 posh tomato bags. -muted coral bags contain 4 dim crimson bags, 3 dark brown bags, 2 drab fuchsia bags. -drab tomato bags contain 1 muted tan bag, 2 dark salmon bags, 4 faded red bags, 5 shiny olive bags. -dark tomato bags contain 5 mirrored salmon bags. -bright yellow bags contain 4 light teal bags, 1 posh white bag, 2 shiny blue bags. -dotted salmon bags contain 3 drab olive bags. -vibrant olive bags contain 2 posh teal bags, 1 clear aqua bag. -dotted gold bags contain 4 striped violet bags. -light tan bags contain 2 plaid fuchsia bags, 1 faded turquoise bag, 2 muted tomato bags. -drab orange bags contain 3 wavy violet bags, 1 dark fuchsia bag, 2 mirrored green bags. -dull coral bags contain 1 dark crimson bag. -light purple bags contain 4 dark gold bags, 3 plaid purple bags, 4 clear chartreuse bags. -wavy yellow bags contain 3 striped silver bags, 2 dull chartreuse bags. -dull tan bags contain 1 dim gold bag. -vibrant plum bags contain 4 dotted turquoise bags, 1 faded gray bag. -wavy tan bags contain 4 shiny plum bags, 5 faded white bags, 1 plaid plum bag. -dim indigo bags contain 2 clear blue bags. -muted teal bags contain 4 mirrored fuchsia bags, 5 faded black bags. -dark maroon bags contain 5 mirrored gold bags, 5 bright red bags, 1 faded gray bag. -mirrored aqua bags contain 4 faded turquoise bags, 1 mirrored tan bag. -muted violet bags contain 4 mirrored lavender bags, 3 faded salmon bags. -wavy orange bags contain 3 drab crimson bags, 5 posh indigo bags, 2 faded cyan bags, 5 light blue bags. -mirrored blue bags contain 1 dark teal bag, 4 pale orange bags. -muted silver bags contain 2 dim orange bags, 1 posh plum bag, 2 wavy fuchsia bags. -plaid magenta bags contain 3 faded blue bags, 5 vibrant lime bags, 2 faded beige bags. -dark lavender bags contain 3 clear olive bags. -posh salmon bags contain 4 dark orange bags. -dim silver bags contain 3 plaid blue bags, 1 posh brown bag, 1 striped white bag. -posh chartreuse bags contain 3 drab plum bags, 3 mirrored brown bags. -shiny cyan bags contain 4 faded plum bags, 5 wavy yellow bags, 2 drab maroon bags. -drab bronze bags contain 2 shiny turquoise bags, 4 faded white bags, 4 drab white bags. -dotted cyan bags contain 1 posh brown bag, 2 dark orange bags, 4 plaid bronze bags. -shiny beige bags contain 5 dotted cyan bags, 2 pale indigo bags. -drab violet bags contain 4 posh chartreuse bags, 1 drab fuchsia bag. -muted tomato bags contain 2 posh aqua bags. -drab plum bags contain 5 drab gold bags, 4 dark fuchsia bags, 5 pale gold bags, 3 dim olive bags. -dim brown bags contain 1 drab indigo bag, 2 pale gold bags, 5 posh fuchsia bags. -plaid cyan bags contain 1 light orange bag, 2 bright violet bags. -striped silver bags contain 2 shiny silver bags. -plaid tomato bags contain 3 drab cyan bags, 4 clear chartreuse bags, 3 dim coral bags, 4 shiny gray bags. -posh tomato bags contain 1 plaid bronze bag, 1 dim lime bag. -vibrant orange bags contain 5 bright aqua bags, 2 drab coral bags, 4 dull aqua bags, 3 vibrant lavender bags. -drab brown bags contain 1 bright orange bag, 3 drab salmon bags. -plaid crimson bags contain 3 dull red bags, 3 posh maroon bags, 2 dull beige bags. -clear aqua bags contain 5 muted cyan bags, 1 dotted teal bag. -pale magenta bags contain 2 light brown bags. -mirrored chartreuse bags contain 3 striped gold bags, 3 light silver bags, 3 dim red bags, 3 dim chartreuse bags. -mirrored plum bags contain 2 striped tomato bags, 1 posh aqua bag, 1 muted teal bag, 2 faded indigo bags. -posh teal bags contain 5 clear indigo bags, 5 plaid purple bags, 4 pale white bags, 3 drab gray bags. -wavy aqua bags contain 4 drab beige bags, 5 plaid black bags. -drab coral bags contain 3 striped tomato bags, 1 dotted cyan bag. -shiny chartreuse bags contain 2 mirrored cyan bags. -striped gray bags contain 5 striped tomato bags. -shiny orange bags contain 4 muted purple bags, 4 dim silver bags, 5 shiny gold bags, 3 pale orange bags. -dark teal bags contain no other bags. -dark magenta bags contain 4 pale gray bags, 1 dim purple bag, 4 drab coral bags. -vibrant fuchsia bags contain 4 dull olive bags. -light bronze bags contain 2 plaid gold bags, 2 dark white bags. -dotted yellow bags contain 5 bright indigo bags, 2 light silver bags, 3 wavy red bags. -muted purple bags contain 1 shiny blue bag, 5 faded red bags, 1 dim olive bag. -faded cyan bags contain 1 dark teal bag. -dull brown bags contain 5 vibrant aqua bags. -shiny white bags contain 2 dull red bags, 1 plaid orange bag, 5 muted turquoise bags. -light brown bags contain 4 dim coral bags, 3 faded red bags. -bright orange bags contain 5 dull olive bags. -light lime bags contain 4 light magenta bags, 5 muted violet bags. -shiny indigo bags contain 2 bright blue bags, 1 dotted turquoise bag, 2 clear bronze bags. -faded teal bags contain 4 bright brown bags, 1 light silver bag. -posh bronze bags contain 3 dark salmon bags, 2 plaid fuchsia bags, 1 dim white bag, 5 faded maroon bags. -shiny yellow bags contain 1 posh lime bag. -dotted beige bags contain no other bags. -vibrant blue bags contain 2 posh green bags, 1 faded white bag, 2 plaid red bags, 4 posh violet bags. -posh lime bags contain 4 bright aqua bags. -posh coral bags contain 5 plaid white bags, 3 faded coral bags. -dark yellow bags contain 3 wavy violet bags, 5 clear chartreuse bags, 5 light turquoise bags. -wavy bronze bags contain 2 clear brown bags, 2 muted cyan bags. -faded brown bags contain 5 dim lime bags, 4 dotted beige bags, 3 wavy coral bags, 1 faded gray bag. -vibrant gold bags contain 2 dotted maroon bags. -vibrant red bags contain 4 dull black bags. -clear beige bags contain 4 dim olive bags, 3 plaid bronze bags, 3 clear brown bags, 5 vibrant lime bags. -dim teal bags contain 4 plaid bronze bags, 5 striped tan bags, 1 muted olive bag. -dim aqua bags contain 1 faded lime bag, 4 faded gray bags, 1 posh coral bag. -faded tan bags contain 5 clear lime bags, 4 shiny violet bags, 2 dull aqua bags. -mirrored green bags contain no other bags. -light magenta bags contain 5 plaid gold bags. -striped white bags contain 1 wavy coral bag, 1 faded gray bag, 3 vibrant lime bags, 2 mirrored fuchsia bags. -plaid violet bags contain 3 faded indigo bags, 1 striped fuchsia bag, 5 drab salmon bags, 4 mirrored cyan bags. -dull cyan bags contain 4 dark chartreuse bags, 3 light gray bags. -light salmon bags contain 2 dark teal bags. -drab crimson bags contain 3 vibrant tan bags. -striped yellow bags contain 5 faded brown bags, 4 posh olive bags. -pale orange bags contain no other bags. -faded gold bags contain 5 light magenta bags. -faded beige bags contain 1 faded indigo bag, 5 wavy green bags, 5 faded crimson bags. -striped crimson bags contain 2 posh brown bags. -dark black bags contain 4 plaid lavender bags, 5 mirrored salmon bags. -bright beige bags contain 1 bright brown bag, 5 posh aqua bags. -bright gold bags contain 3 light lime bags, 2 shiny white bags. -bright tomato bags contain 4 dull orange bags, 4 dull blue bags. -light olive bags contain 4 dull blue bags, 4 plaid gray bags, 4 faded gray bags. -vibrant lavender bags contain 1 clear salmon bag, 2 bright lavender bags. -drab yellow bags contain 1 plaid black bag. -faded green bags contain 1 clear brown bag, 4 mirrored orange bags, 1 striped tan bag. -vibrant black bags contain 4 mirrored fuchsia bags. -bright indigo bags contain 5 plaid red bags, 1 striped chartreuse bag, 3 vibrant plum bags, 5 dark lavender bags. -dull plum bags contain 2 mirrored plum bags, 2 light silver bags, 1 pale indigo bag. -striped bronze bags contain 2 dotted blue bags. -muted magenta bags contain 2 dim silver bags, 5 clear purple bags. -striped teal bags contain 5 vibrant white bags. -dim bronze bags contain 2 dim crimson bags, 4 vibrant beige bags, 2 wavy turquoise bags. -shiny lavender bags contain 4 dim purple bags. -vibrant silver bags contain 1 dotted crimson bag, 2 dotted maroon bags. -posh yellow bags contain 4 bright salmon bags, 4 shiny lavender bags, 5 mirrored aqua bags. -faded bronze bags contain 2 posh brown bags, 3 clear lime bags, 4 dotted red bags, 2 striped white bags. -posh maroon bags contain 5 striped salmon bags, 1 light black bag. -pale aqua bags contain 2 shiny orange bags, 1 shiny silver bag, 2 dim violet bags. -plaid chartreuse bags contain 2 muted black bags, 4 muted magenta bags, 1 mirrored bronze bag, 1 posh beige bag. -dotted orange bags contain 2 drab indigo bags. -plaid gold bags contain 3 drab beige bags. -shiny silver bags contain 2 dull teal bags, 5 drab gray bags, 4 bright blue bags, 2 dotted cyan bags. -mirrored crimson bags contain 2 shiny gold bags, 5 plaid black bags, 3 drab beige bags, 1 pale beige bag. -pale gold bags contain 1 striped tomato bag, 5 striped white bags, 2 mirrored bronze bags, 5 dim orange bags. -vibrant crimson bags contain 5 faded white bags, 2 wavy coral bags. -dim yellow bags contain 1 vibrant coral bag, 5 faded red bags, 4 mirrored magenta bags, 4 posh indigo bags. -dull teal bags contain 1 plaid fuchsia bag, 3 striped blue bags. -striped red bags contain 4 dull lime bags. -muted chartreuse bags contain 5 bright crimson bags. -dim lavender bags contain 2 posh maroon bags. -wavy crimson bags contain 1 dim magenta bag, 4 dim crimson bags, 1 dull lavender bag, 3 muted fuchsia bags. -dull green bags contain 5 dull olive bags, 1 clear blue bag, 5 shiny salmon bags. -wavy red bags contain 1 dull chartreuse bag, 3 dim black bags. -pale blue bags contain 4 light olive bags, 3 vibrant chartreuse bags. -dull fuchsia bags contain 2 posh chartreuse bags. -dotted violet bags contain 1 shiny olive bag, 3 bright blue bags, 5 posh beige bags, 4 vibrant black bags. -drab white bags contain 1 plaid gold bag, 5 clear olive bags. -drab blue bags contain 3 muted bronze bags, 5 shiny gold bags, 4 dim olive bags. -plaid salmon bags contain 5 pale gold bags. -pale coral bags contain 3 plaid orange bags, 3 plaid fuchsia bags, 5 drab teal bags. -vibrant maroon bags contain 3 dim lime bags, 2 pale beige bags, 5 mirrored green bags. -mirrored magenta bags contain 2 striped blue bags. -faded blue bags contain 3 vibrant bronze bags, 2 clear maroon bags, 1 faded white bag, 3 dark cyan bags. -drab olive bags contain 5 wavy teal bags, 3 mirrored black bags, 5 dark gray bags, 5 dull lime bags. -posh white bags contain 1 plaid purple bag, 4 dark turquoise bags, 3 clear salmon bags, 1 dim orange bag. -dull red bags contain 4 vibrant plum bags, 3 plaid black bags, 4 dull orange bags. -striped tan bags contain no other bags. -posh blue bags contain 3 mirrored magenta bags, 1 dark plum bag, 4 wavy turquoise bags, 1 shiny coral bag. -drab salmon bags contain 2 bright aqua bags, 4 posh gold bags, 5 plaid blue bags. -striped green bags contain 5 dim black bags. -wavy salmon bags contain 5 pale purple bags. -vibrant cyan bags contain 1 dark gray bag, 1 vibrant beige bag, 5 drab violet bags, 5 dull coral bags. -wavy lavender bags contain 1 light magenta bag, 2 striped cyan bags. -faded maroon bags contain 5 light gray bags. -vibrant yellow bags contain 2 bright beige bags, 5 dim brown bags, 2 posh silver bags, 2 pale cyan bags. -dotted tomato bags contain 3 mirrored magenta bags, 3 wavy chartreuse bags, 2 wavy maroon bags. -striped lavender bags contain 4 shiny coral bags, 2 dim white bags, 3 faded red bags. -faded red bags contain 2 mirrored fuchsia bags, 1 light cyan bag, 2 vibrant lime bags, 1 mirrored green bag. -clear black bags contain 3 drab purple bags, 2 bright yellow bags, 2 wavy brown bags. -faded indigo bags contain 1 dim lime bag, 1 clear brown bag. -shiny tan bags contain 1 dull brown bag, 2 striped tomato bags. -drab teal bags contain 1 dotted turquoise bag, 4 posh fuchsia bags. -wavy magenta bags contain 1 dim yellow bag, 3 drab indigo bags. -mirrored turquoise bags contain no other bags. -faded lime bags contain 4 drab cyan bags, 1 clear orange bag, 5 vibrant salmon bags, 5 faded crimson bags. -vibrant coral bags contain 5 pale gray bags, 2 clear salmon bags. -muted turquoise bags contain 1 clear brown bag. -plaid aqua bags contain 3 dull coral bags. -pale indigo bags contain 1 striped brown bag, 2 bright cyan bags, 5 plaid silver bags. -faded tomato bags contain 1 pale red bag, 2 dotted tan bags. -mirrored white bags contain 4 drab fuchsia bags, 3 plaid orange bags, 4 dotted lavender bags. -shiny aqua bags contain 1 wavy silver bag, 4 drab green bags, 1 bright tomato bag. -pale cyan bags contain 1 pale gold bag, 5 dark turquoise bags. -mirrored salmon bags contain 5 light crimson bags, 5 muted bronze bags, 2 vibrant beige bags, 1 striped lavender bag. -dark gold bags contain 1 shiny olive bag. -muted blue bags contain 2 vibrant maroon bags, 5 wavy chartreuse bags. -bright fuchsia bags contain 1 posh white bag. -light blue bags contain 5 muted beige bags, 1 dark crimson bag, 5 mirrored brown bags, 1 posh orange bag. -clear salmon bags contain 1 faded brown bag, 5 dotted beige bags, 4 faded gray bags, 4 dark orange bags. -plaid red bags contain 3 drab silver bags, 2 dim green bags. -faded plum bags contain 2 posh orange bags, 5 dotted lime bags. -bright coral bags contain 3 plaid plum bags, 1 dark green bag, 2 striped crimson bags, 5 vibrant coral bags. -shiny crimson bags contain 5 bright teal bags, 4 muted magenta bags, 4 vibrant maroon bags, 3 faded cyan bags. -dim magenta bags contain 1 muted olive bag, 1 bright blue bag, 4 muted white bags, 5 posh gray bags. -pale brown bags contain 4 dotted cyan bags, 5 bright coral bags. -striped olive bags contain 2 bright brown bags, 4 pale gray bags, 5 dotted teal bags, 3 pale white bags. -posh gray bags contain 1 dark chartreuse bag. -dotted brown bags contain 3 plaid gold bags, 5 dim bronze bags. -dim lime bags contain no other bags. -clear crimson bags contain 2 posh orange bags, 2 plaid plum bags, 1 dark orange bag. -shiny turquoise bags contain 1 faded indigo bag, 3 light red bags. -striped plum bags contain 1 muted white bag. -muted crimson bags contain 1 bright teal bag. -plaid blue bags contain 3 dotted beige bags, 5 vibrant lime bags, 1 vibrant tan bag, 2 striped blue bags. -light teal bags contain 2 dotted cyan bags. -faded salmon bags contain 5 mirrored crimson bags. -shiny blue bags contain 4 posh gold bags, 3 light cyan bags, 1 clear teal bag. -plaid brown bags contain 2 dull lavender bags. -muted bronze bags contain 3 faded purple bags. -posh fuchsia bags contain 5 striped coral bags. -clear orange bags contain 1 bright blue bag, 5 posh gold bags, 5 striped crimson bags, 1 dark teal bag. -plaid plum bags contain 5 faded brown bags. -clear gray bags contain 4 mirrored fuchsia bags, 2 dim cyan bags, 3 pale gold bags, 1 dim violet bag. -bright lavender bags contain 1 mirrored purple bag, 4 wavy magenta bags, 2 dull black bags, 3 light silver bags. -pale purple bags contain 3 striped tan bags, 1 dull olive bag. -pale bronze bags contain 2 plaid aqua bags, 2 pale fuchsia bags, 4 bright lime bags. -clear blue bags contain 3 plaid beige bags. -drab silver bags contain 3 dim violet bags, 1 muted yellow bag, 1 pale beige bag. -dark silver bags contain 4 dark fuchsia bags, 4 bright green bags, 5 dim beige bags, 1 light tomato bag. -mirrored gray bags contain 2 striped black bags. -posh black bags contain 3 dull indigo bags, 3 striped beige bags, 3 dim blue bags, 2 wavy lime bags. -clear teal bags contain 2 dark orange bags, 4 pale beige bags, 5 clear beige bags, 4 dark teal bags. -pale white bags contain 2 drab gray bags, 1 muted olive bag. -muted fuchsia bags contain 2 clear brown bags, 4 mirrored green bags, 2 striped tan bags. -bright cyan bags contain 1 dotted plum bag. -light tomato bags contain 2 dim violet bags, 1 pale green bag, 4 dim orange bags, 1 dotted tomato bag. -pale turquoise bags contain 2 plaid black bags, 2 clear brown bags. -dim orange bags contain 1 plaid plum bag, 2 clear indigo bags, 1 dotted blue bag, 1 drab beige bag. -posh red bags contain 5 faded brown bags, 4 clear gray bags, 5 bright teal bags. -bright teal bags contain 4 clear beige bags. -posh lavender bags contain 1 drab beige bag, 5 dim salmon bags, 3 light crimson bags. -drab green bags contain 1 striped brown bag, 1 dull blue bag, 1 plaid coral bag. -clear coral bags contain 1 faded crimson bag, 4 light silver bags, 1 posh violet bag. -dark tan bags contain 5 faded brown bags. -vibrant aqua bags contain 1 light cyan bag, 5 bright brown bags. -dark blue bags contain 1 dark silver bag. -drab lime bags contain 3 faded white bags, 5 clear tomato bags, 1 dark turquoise bag. -faded lavender bags contain 1 bright violet bag, 4 posh gold bags. -dark orange bags contain 2 striped tan bags. -plaid orange bags contain 4 dark beige bags, 5 dull lavender bags, 4 striped white bags. -vibrant chartreuse bags contain 1 faded indigo bag, 4 clear magenta bags, 2 shiny blue bags, 2 dull teal bags. -dim white bags contain 3 faded white bags, 2 clear teal bags. -dim cyan bags contain 4 clear olive bags, 4 pale gray bags, 5 plaid bronze bags. -dotted chartreuse bags contain 1 bright magenta bag, 5 shiny maroon bags. -dull aqua bags contain 2 drab beige bags. -clear violet bags contain 3 pale teal bags, 3 posh tomato bags, 1 light silver bag, 2 faded coral bags. -pale lavender bags contain 1 drab beige bag, 2 dark teal bags. -clear tomato bags contain 5 muted beige bags, 1 plaid gold bag, 3 vibrant coral bags, 3 shiny silver bags. -clear cyan bags contain 4 faded lime bags, 2 drab tomato bags. -striped salmon bags contain 3 dim silver bags. -wavy silver bags contain 2 drab blue bags, 4 shiny green bags, 3 muted yellow bags. -dull indigo bags contain 5 mirrored plum bags. -faded coral bags contain 2 muted olive bags, 4 dark salmon bags. -muted olive bags contain 5 faded red bags, 1 dim lime bag, 1 striped white bag, 4 dark teal bags. -dotted plum bags contain 5 plaid blue bags. -striped cyan bags contain 4 mirrored plum bags, 2 wavy beige bags. -dotted olive bags contain 3 mirrored gold bags, 4 bright lavender bags, 2 dim turquoise bags. -plaid green bags contain 5 dark chartreuse bags, 5 mirrored bronze bags, 5 dark beige bags. -clear chartreuse bags contain 5 posh olive bags, 3 plaid violet bags, 3 mirrored fuchsia bags, 2 light orange bags. -wavy indigo bags contain 2 shiny teal bags, 3 clear olive bags. -shiny fuchsia bags contain 5 striped chartreuse bags, 1 light chartreuse bag. -shiny coral bags contain 4 dotted plum bags, 4 dull orange bags, 3 posh olive bags, 2 dark salmon bags. -bright black bags contain 5 drab gray bags, 1 vibrant black bag, 3 vibrant salmon bags, 3 dim silver bags. -bright salmon bags contain 1 shiny plum bag, 4 bright brown bags, 5 pale gray bags, 3 mirrored maroon bags. -faded yellow bags contain 1 light blue bag, 2 striped white bags, 3 dim lime bags, 4 wavy cyan bags. -plaid fuchsia bags contain 1 striped blue bag. -plaid lime bags contain 3 clear bronze bags, 4 dull orange bags, 1 pale aqua bag. -clear turquoise bags contain 1 posh aqua bag, 5 plaid black bags, 4 vibrant brown bags. -dull lime bags contain 3 mirrored crimson bags, 1 dotted crimson bag, 2 light lime bags, 2 light gray bags. -dull gray bags contain 5 bright lavender bags, 3 muted olive bags. -dotted turquoise bags contain 2 dim olive bags, 1 striped blue bag, 4 clear indigo bags. -vibrant purple bags contain 4 light olive bags, 4 mirrored salmon bags, 4 muted red bags. -dark cyan bags contain 2 dim lime bags, 5 light olive bags, 4 muted red bags, 3 drab indigo bags. -vibrant turquoise bags contain 4 light indigo bags. -bright bronze bags contain 2 pale green bags, 5 faded gray bags. -clear maroon bags contain 3 faded coral bags. -faded purple bags contain 5 plaid plum bags, 3 striped blue bags, 2 vibrant tan bags, 3 dark orange bags. -light indigo bags contain 2 wavy bronze bags, 5 bright lime bags, 4 drab lime bags, 2 dotted chartreuse bags. -dotted bronze bags contain 5 faded brown bags, 4 drab silver bags, 3 drab chartreuse bags. -mirrored lavender bags contain 3 dim salmon bags. -clear gold bags contain 1 dull plum bag. -vibrant beige bags contain 5 drab crimson bags. -dull yellow bags contain 5 mirrored green bags, 4 plaid bronze bags, 5 plaid blue bags, 4 dull orange bags. -dotted black bags contain 2 dull fuchsia bags, 2 light fuchsia bags, 3 mirrored lavender bags, 1 muted coral bag. -dotted maroon bags contain 3 plaid coral bags, 5 dotted cyan bags. -dim tomato bags contain 4 pale tomato bags, 3 striped beige bags. -wavy violet bags contain 4 mirrored crimson bags, 4 plaid bronze bags, 4 faded turquoise bags, 4 drab chartreuse bags. -shiny bronze bags contain 3 muted chartreuse bags, 3 drab gold bags. -faded fuchsia bags contain 1 bright blue bag, 1 dim purple bag, 1 dim magenta bag. -plaid turquoise bags contain 2 shiny olive bags, 5 dull orange bags, 2 dark fuchsia bags, 3 clear purple bags. -mirrored teal bags contain 4 drab cyan bags, 2 striped green bags. -clear purple bags contain 3 dull teal bags, 2 vibrant tan bags, 5 vibrant maroon bags. -dotted blue bags contain 2 muted white bags, 2 dark green bags, 2 faded purple bags, 2 plaid blue bags. -light violet bags contain 5 dark salmon bags, 5 striped orange bags. -light beige bags contain 2 muted chartreuse bags, 4 striped brown bags, 3 wavy maroon bags. -wavy purple bags contain 4 dark violet bags, 3 drab fuchsia bags, 4 dull lavender bags, 3 drab lime bags. -light silver bags contain 4 posh brown bags, 3 vibrant crimson bags. -wavy white bags contain 5 mirrored fuchsia bags, 2 dotted turquoise bags, 5 striped tomato bags. -striped purple bags contain 4 dull chartreuse bags. -wavy teal bags contain 1 light chartreuse bag, 3 dark green bags. -vibrant indigo bags contain 2 dim coral bags. -pale red bags contain 3 drab cyan bags, 1 muted tan bag. -dark aqua bags contain 2 faded brown bags, 1 shiny gold bag, 3 light cyan bags, 2 light green bags. -dotted tan bags contain 2 drab beige bags, 2 faded gray bags. -faded aqua bags contain 5 faded brown bags. -drab turquoise bags contain 5 drab teal bags. -dark turquoise bags contain 2 dim teal bags, 1 dim coral bag, 1 clear beige bag. -wavy maroon bags contain 1 dim violet bag, 4 clear bronze bags. -dark gray bags contain 2 bright blue bags. -mirrored coral bags contain 1 clear lime bag, 1 posh gray bag. -dim red bags contain 3 plaid aqua bags, 4 plaid salmon bags, 3 pale gray bags, 4 wavy indigo bags. -dull maroon bags contain 3 light silver bags, 1 dim lime bag, 2 striped silver bags. -vibrant salmon bags contain 1 dark gray bag, 2 dotted cyan bags, 2 drab gray bags, 3 muted tan bags. -vibrant lime bags contain no other bags. -wavy blue bags contain 5 bright maroon bags, 2 dull plum bags, 4 pale magenta bags. -dim purple bags contain 3 dull indigo bags. -muted indigo bags contain 5 posh orange bags, 4 dim yellow bags. -posh gold bags contain 2 clear beige bags, 3 vibrant lime bags. -plaid purple bags contain 4 faded brown bags, 3 shiny blue bags, 1 faded white bag. -clear lime bags contain 5 posh aqua bags, 2 posh fuchsia bags, 1 clear teal bag, 4 faded cyan bags. -bright brown bags contain 5 plaid bronze bags, 4 faded indigo bags. -striped maroon bags contain 1 faded turquoise bag, 3 drab cyan bags, 5 dark gray bags, 2 pale black bags. -faded violet bags contain 4 drab crimson bags. -muted brown bags contain 2 bright tomato bags, 3 dim gold bags, 5 dull blue bags. -posh magenta bags contain 2 dark fuchsia bags. -vibrant green bags contain 3 dark fuchsia bags. -shiny tomato bags contain 2 light turquoise bags, 5 drab green bags, 1 posh gold bag. -faded olive bags contain 1 shiny purple bag, 4 wavy tan bags, 4 wavy violet bags, 1 muted fuchsia bag. -mirrored fuchsia bags contain 1 clear brown bag. -faded magenta bags contain 3 striped white bags, 3 posh tomato bags, 3 striped lime bags. -dim crimson bags contain 5 mirrored brown bags, 1 faded black bag, 1 dark orange bag. -dark green bags contain 2 dotted beige bags, 5 plaid blue bags. -dotted purple bags contain 4 shiny black bags, 1 muted violet bag, 1 drab green bag, 3 faded yellow bags. -posh turquoise bags contain 3 shiny plum bags. -muted gray bags contain 4 dull gray bags, 4 posh teal bags, 5 plaid gray bags. -shiny teal bags contain 2 pale beige bags. -shiny olive bags contain 1 striped tan bag, 3 mirrored turquoise bags. -dull white bags contain 2 pale orange bags, 1 dim magenta bag, 4 drab maroon bags. -drab aqua bags contain 1 wavy red bag. -dotted teal bags contain 3 shiny green bags, 3 drab beige bags, 1 drab crimson bag. -light cyan bags contain 2 mirrored green bags, 5 dotted beige bags, 5 faded white bags, 3 mirrored fuchsia bags. -dim maroon bags contain 1 drab fuchsia bag, 1 mirrored salmon bag. -mirrored maroon bags contain 4 muted white bags, 2 striped tan bags, 2 dark teal bags. -dark brown bags contain 1 striped bronze bag, 5 striped plum bags, 3 muted bronze bags, 2 striped lime bags. -plaid gray bags contain 1 clear brown bag, 5 shiny orange bags, 4 posh bronze bags, 5 light cyan bags. -dim gold bags contain 4 striped tomato bags, 5 striped fuchsia bags, 4 striped white bags, 1 clear brown bag. -drab tan bags contain 5 plaid fuchsia bags, 1 dim teal bag, 4 plaid gold bags. -bright aqua bags contain 4 faded indigo bags, 3 shiny blue bags, 4 posh aqua bags, 5 wavy tan bags. -pale lime bags contain 4 muted blue bags, 5 wavy purple bags. -plaid maroon bags contain 2 dim black bags, 1 drab indigo bag. -wavy gray bags contain 4 drab orange bags. -drab gold bags contain 1 dark gray bag, 4 pale gold bags. -plaid teal bags contain 2 dim teal bags, 1 vibrant lavender bag. -dark salmon bags contain 4 plaid black bags, 2 dim lime bags, 4 pale orange bags, 3 pale beige bags. -plaid lavender bags contain 3 faded red bags, 2 plaid aqua bags. -light fuchsia bags contain 3 dim violet bags. -faded chartreuse bags contain 2 mirrored gold bags, 5 drab gold bags, 3 mirrored salmon bags. -wavy beige bags contain 2 dotted salmon bags, 4 muted white bags. -striped tomato bags contain 4 drab cyan bags. -dotted white bags contain 4 bright green bags, 1 light brown bag. -muted yellow bags contain 3 dim violet bags, 1 posh aqua bag, 2 muted teal bags. -light chartreuse bags contain 4 posh aqua bags, 2 dim coral bags. -muted maroon bags contain 1 mirrored cyan bag, 4 dim olive bags. -pale yellow bags contain 3 bright olive bags. -dull bronze bags contain 2 plaid maroon bags, 2 vibrant bronze bags. -shiny gold bags contain 5 clear brown bags, 5 plaid fuchsia bags, 4 bright teal bags, 1 striped white bag. -posh crimson bags contain 4 vibrant plum bags. -clear silver bags contain 5 dim beige bags, 1 dark olive bag. -striped violet bags contain 5 posh orange bags, 1 vibrant crimson bag. -muted green bags contain 1 bright crimson bag. -shiny gray bags contain 4 striped maroon bags, 5 muted plum bags, 2 light chartreuse bags. -wavy turquoise bags contain 1 pale gold bag. -clear olive bags contain 4 plaid fuchsia bags. -drab indigo bags contain 1 clear purple bag, 4 light silver bags, 2 mirrored cyan bags, 2 clear lime bags. -dim salmon bags contain 1 pale aqua bag, 5 posh fuchsia bags, 4 plaid coral bags, 1 pale orange bag. -light black bags contain 3 muted chartreuse bags. -plaid indigo bags contain 3 plaid fuchsia bags, 2 muted tomato bags, 3 muted bronze bags, 1 drab white bag. -light crimson bags contain 2 striped chartreuse bags, 4 bright teal bags, 3 striped fuchsia bags. -bright purple bags contain 2 shiny violet bags. -dark bronze bags contain 3 striped violet bags, 4 clear beige bags. -dark white bags contain 5 faded white bags, 5 striped fuchsia bags, 2 vibrant lime bags, 5 striped tan bags. -mirrored orange bags contain 4 wavy aqua bags. -mirrored cyan bags contain 5 bright bronze bags. -dull blue bags contain 2 bright brown bags, 2 dim plum bags. -posh indigo bags contain 1 posh lime bag. -vibrant brown bags contain 1 bright indigo bag, 2 striped purple bags, 5 mirrored lime bags, 2 plaid plum bags. -wavy coral bags contain no other bags. -posh cyan bags contain 1 plaid plum bag, 2 plaid gold bags, 3 shiny plum bags. -vibrant tan bags contain 5 mirrored turquoise bags, 3 faded gray bags, 5 posh brown bags, 3 clear brown bags. -mirrored black bags contain 5 striped fuchsia bags, 1 striped tan bag, 3 pale green bags. -bright olive bags contain 1 bright orange bag, 4 drab gold bags, 3 dim cyan bags, 2 drab plum bags. -striped blue bags contain 3 dark white bags, 1 clear beige bag, 3 dim olive bags. -dim turquoise bags contain 4 muted turquoise bags, 1 dotted tomato bag, 4 muted brown bags. -posh green bags contain 4 dim gray bags, 4 clear brown bags. -dull magenta bags contain 3 bright plum bags. -dark red bags contain 2 muted magenta bags, 2 dark beige bags, 2 shiny black bags. -pale black bags contain 2 striped bronze bags. -dotted red bags contain 2 striped blue bags, 3 dim violet bags, 3 faded maroon bags. -dark chartreuse bags contain 5 striped orange bags, 5 dark white bags. -clear lavender bags contain 2 faded crimson bags, 5 clear purple bags, 3 vibrant tan bags. -vibrant white bags contain 1 drab crimson bag, 5 dim violet bags. -drab lavender bags contain 3 clear yellow bags, 5 shiny tan bags. -wavy cyan bags contain 5 shiny violet bags. -faded black bags contain 2 posh aqua bags, 5 bright teal bags, 1 posh orange bag, 4 vibrant coral bags. -mirrored tomato bags contain 3 muted cyan bags, 3 drab brown bags, 1 striped orange bag. -faded orange bags contain 3 plaid fuchsia bags, 5 mirrored crimson bags, 2 pale aqua bags, 2 dull lavender bags. -muted salmon bags contain 1 wavy tan bag, 2 muted chartreuse bags, 2 posh green bags, 5 shiny magenta bags. -pale plum bags contain 4 dull teal bags, 1 striped violet bag, 2 wavy crimson bags, 2 posh violet bags. -shiny magenta bags contain 3 muted yellow bags, 5 light beige bags, 1 dull white bag, 4 striped lavender bags. -plaid black bags contain 4 mirrored green bags. -clear plum bags contain 5 posh violet bags. -bright silver bags contain 2 dull yellow bags, 3 striped red bags, 3 dotted olive bags, 5 bright salmon bags. -muted gold bags contain 1 dull olive bag. -vibrant tomato bags contain 4 shiny blue bags, 1 bright indigo bag. -dim black bags contain 1 plaid gold bag, 2 muted white bags. -plaid white bags contain 2 muted cyan bags, 1 mirrored magenta bag, 3 striped red bags, 2 striped violet bags. -drab maroon bags contain 1 dotted cyan bag, 3 shiny orange bags. -shiny purple bags contain 3 posh purple bags. -shiny violet bags contain 3 dark teal bags, 3 shiny olive bags, 4 dull cyan bags, 1 dim plum bag. -dull chartreuse bags contain 2 bright tan bags, 2 wavy fuchsia bags, 4 bright teal bags, 1 posh violet bag. -striped fuchsia bags contain 5 dotted beige bags. -muted lime bags contain 1 vibrant tan bag. -dotted coral bags contain 5 mirrored magenta bags, 4 wavy blue bags. -bright turquoise bags contain 5 pale indigo bags. -bright maroon bags contain 4 plaid salmon bags, 3 wavy coral bags, 4 dull orange bags, 1 pale green bag. -dim green bags contain 4 posh olive bags, 4 dim white bags, 3 clear orange bags. -mirrored bronze bags contain 4 mirrored fuchsia bags. -shiny maroon bags contain 1 wavy maroon bag, 1 drab gray bag, 1 posh white bag. -wavy olive bags contain 1 muted purple bag, 1 shiny brown bag, 5 faded tomato bags. -dotted crimson bags contain 2 shiny blue bags, 4 dotted blue bags, 5 vibrant crimson bags. -mirrored olive bags contain 3 muted bronze bags, 1 drab tomato bag, 3 drab violet bags. -light aqua bags contain 3 faded cyan bags, 4 shiny white bags. -clear fuchsia bags contain 3 bright blue bags. -light green bags contain 2 dim brown bags, 4 drab green bags. -bright magenta bags contain 1 mirrored turquoise bag, 2 dark fuchsia bags, 5 shiny plum bags. -pale fuchsia bags contain 4 wavy purple bags, 2 striped salmon bags, 4 pale black bags, 3 dotted teal bags. -posh tan bags contain 3 plaid purple bags. -dull tomato bags contain 2 clear salmon bags, 2 striped yellow bags, 5 pale indigo bags. -bright white bags contain 1 drab white bag, 4 dim violet bags. -bright gray bags contain 5 muted yellow bags, 5 vibrant crimson bags. -dull silver bags contain 2 muted purple bags. -dotted gray bags contain 2 mirrored magenta bags, 1 dark lavender bag, 1 clear blue bag, 4 faded magenta bags. -wavy gold bags contain 3 mirrored green bags, 5 pale aqua bags. -shiny plum bags contain 5 plaid blue bags, 2 muted white bags, 5 pale gray bags, 2 faded indigo bags. -posh plum bags contain 4 wavy magenta bags, 3 mirrored plum bags. -clear bronze bags contain 4 bright aqua bags, 4 dim white bags, 4 plaid blue bags, 5 plaid black bags. -vibrant teal bags contain 2 light violet bags, 4 clear orange bags, 1 shiny plum bag, 1 light cyan bag. -clear red bags contain 2 drab tan bags. -striped coral bags contain 1 shiny olive bag, 1 dark teal bag, 3 dark white bags. -striped aqua bags contain 4 wavy teal bags, 2 dull chartreuse bags, 3 mirrored cyan bags, 5 plaid gray bags. -drab purple bags contain 1 faded fuchsia bag, 5 dull chartreuse bags, 1 light white bag, 5 posh gold bags. -mirrored brown bags contain 5 bright aqua bags, 5 shiny blue bags, 5 dotted blue bags, 1 posh fuchsia bag. -dim gray bags contain 4 vibrant chartreuse bags, 5 clear beige bags, 1 shiny orange bag, 5 light chartreuse bags. -mirrored purple bags contain 3 shiny gold bags, 4 plaid aqua bags, 4 wavy gold bags. -drab black bags contain 4 faded aqua bags. -pale tomato bags contain 3 vibrant gold bags, 2 dotted cyan bags, 3 wavy brown bags, 5 bright violet bags. -muted plum bags contain 5 dull white bags, 5 drab chartreuse bags, 4 clear gray bags. -bright lime bags contain 1 light chartreuse bag. -light yellow bags contain 1 vibrant teal bag, 1 dull teal bag. -dark fuchsia bags contain 3 dim plum bags, 5 faded purple bags. -dim blue bags contain 5 striped coral bags, 3 drab fuchsia bags, 5 drab salmon bags. -posh orange bags contain 2 pale gray bags, 4 plaid bronze bags, 5 vibrant tan bags. -striped beige bags contain 3 mirrored crimson bags, 3 muted fuchsia bags. -dim fuchsia bags contain 5 clear white bags. -dull orange bags contain 2 striped crimson bags, 2 dark white bags, 1 dark turquoise bag, 3 shiny olive bags. -drab fuchsia bags contain 3 dark crimson bags, 5 clear magenta bags, 5 faded brown bags. -dim tan bags contain 3 dull indigo bags, 3 clear magenta bags. -clear green bags contain 3 bright blue bags, 4 clear teal bags, 2 pale indigo bags. -shiny black bags contain 1 mirrored brown bag. -pale maroon bags contain 2 faded lime bags, 2 wavy red bags, 1 dark orange bag. -faded crimson bags contain 1 posh aqua bag, 5 bright brown bags, 4 dull teal bags, 4 striped orange bags. -muted tan bags contain 2 pale gold bags, 3 striped magenta bags, 5 plaid gold bags, 5 striped fuchsia bags. -light turquoise bags contain 2 dull plum bags. -dull lavender bags contain 3 dark green bags, 3 light brown bags, 2 posh fuchsia bags, 5 posh bronze bags. -pale olive bags contain 5 striped blue bags, 1 striped coral bag, 2 muted white bags. -dark crimson bags contain 1 bright red bag. -vibrant gray bags contain 1 clear coral bag, 4 posh aqua bags, 5 clear brown bags, 5 dull chartreuse bags. -plaid tan bags contain 2 bright coral bags, 3 wavy salmon bags. -bright crimson bags contain 4 clear indigo bags, 3 dim plum bags, 4 posh brown bags. -dotted magenta bags contain 5 bright lime bags, 2 dotted coral bags. -posh aqua bags contain 5 vibrant lime bags, 5 plaid fuchsia bags. -striped turquoise bags contain 5 pale lavender bags. -pale chartreuse bags contain 4 mirrored tan bags, 5 mirrored black bags. -pale tan bags contain 4 plaid beige bags, 3 light tomato bags, 1 dark tan bag, 4 faded lime bags. -wavy plum bags contain 5 dark crimson bags, 4 dim black bags. -posh brown bags contain 3 dark teal bags, 5 striped white bags. -mirrored tan bags contain 3 clear maroon bags, 4 mirrored green bags, 1 dotted red bag, 1 wavy aqua bag. -dotted fuchsia bags contain 3 clear lime bags, 2 dim plum bags, 2 bright salmon bags, 5 faded violet bags. -drab cyan bags contain 4 striped coral bags, 5 faded gray bags, 2 posh orange bags. -light red bags contain 5 faded black bags. -plaid yellow bags contain 3 striped green bags, 4 striped olive bags, 1 mirrored lavender bag. -muted black bags contain 2 muted turquoise bags, 3 wavy bronze bags, 5 wavy teal bags. -plaid silver bags contain 2 drab maroon bags, 2 wavy maroon bags, 5 dark tan bags. -dark coral bags contain 1 posh bronze bag, 5 bright coral bags. -bright violet bags contain 3 posh brown bags, 4 pale orange bags, 2 muted olive bags, 2 posh orange bags. -pale silver bags contain 3 pale fuchsia bags, 4 bright cyan bags. -dim plum bags contain 1 faded brown bag. -mirrored red bags contain 3 dull magenta bags, 2 light gold bags. -posh beige bags contain 5 plaid turquoise bags, 3 clear bronze bags, 5 plaid silver bags. -faded silver bags contain 4 muted violet bags, 3 muted tomato bags, 1 bright yellow bag. -dim coral bags contain 1 faded brown bag, 4 drab cyan bags, 1 shiny olive bag. -drab beige bags contain 5 mirrored fuchsia bags, 1 faded brown bag. -dark purple bags contain 1 striped tan bag, 2 light maroon bags. -drab magenta bags contain 4 dim silver bags, 4 mirrored silver bags, 5 muted tomato bags. -muted orange bags contain 5 dim olive bags, 5 pale brown bags, 2 mirrored black bags, 3 posh green bags. -dotted aqua bags contain 2 faded turquoise bags, 4 light yellow bags, 4 dotted lavender bags. -pale salmon bags contain 4 light cyan bags, 4 bright plum bags. -bright red bags contain 3 bright coral bags, 4 clear brown bags, 1 bright teal bag. -striped lime bags contain 5 bright yellow bags, 1 drab maroon bag, 5 muted silver bags. -clear magenta bags contain 5 light teal bags, 5 dotted cyan bags, 1 pale orange bag. -dull beige bags contain 1 posh cyan bag, 5 dark orange bags, 3 pale cyan bags, 5 drab salmon bags. -striped chartreuse bags contain 4 wavy maroon bags. -pale gray bags contain 1 plaid black bag. -dull black bags contain 3 dull brown bags. -dotted green bags contain 3 shiny maroon bags. -faded turquoise bags contain 2 dark violet bags. -wavy green bags contain 5 light gray bags, 5 vibrant lime bags. -light maroon bags contain 2 dotted teal bags, 3 striped fuchsia bags. -striped indigo bags contain 2 dim crimson bags. -shiny green bags contain 5 mirrored cyan bags, 5 faded red bags, 1 light silver bag, 4 mirrored black bags. -clear indigo bags contain 2 faded gray bags, 2 mirrored green bags. -vibrant magenta bags contain 4 muted silver bags, 3 bright crimson bags. -mirrored violet bags contain 1 dull blue bag. -clear yellow bags contain 1 plaid purple bag, 2 vibrant crimson bags, 3 faded white bags, 4 plaid gold bags. -light white bags contain 4 clear magenta bags, 4 drab green bags, 2 clear chartreuse bags. -striped brown bags contain 4 drab gold bags, 4 plaid red bags, 2 dim coral bags, 4 dim teal bags. -pale crimson bags contain 4 dim green bags, 2 striped crimson bags, 1 striped coral bag, 3 dark salmon bags. -dull olive bags contain 1 striped yellow bag, 2 bright aqua bags. -dark olive bags contain 2 faded indigo bags, 4 dim orange bags, 5 shiny silver bags, 5 dotted turquoise bags. -drab chartreuse bags contain 1 shiny olive bag, 1 posh tomato bag, 1 dark turquoise bag. -pale green bags contain 3 pale gray bags, 1 dim violet bag, 3 striped crimson bags, 3 faded cyan bags. -light gray bags contain 2 pale white bags, 1 dark beige bag, 1 clear purple bag. -plaid olive bags contain 5 drab aqua bags, 1 plaid bronze bag, 4 clear brown bags. -mirrored indigo bags contain 3 striped bronze bags, 3 faded green bags, 2 dotted green bags, 3 dull olive bags. -wavy brown bags contain 4 pale maroon bags. -shiny lime bags contain 2 posh gold bags, 5 posh black bags. -mirrored silver bags contain 4 pale cyan bags, 1 bright bronze bag, 1 mirrored blue bag. -shiny red bags contain 2 wavy purple bags, 5 drab yellow bags. -light coral bags contain 2 pale gold bags. -posh olive bags contain 2 bright aqua bags. -striped black bags contain 3 bright blue bags, 1 light salmon bag, 1 mirrored salmon bag. -dotted lime bags contain 5 muted indigo bags, 2 striped coral bags, 1 shiny orange bag, 4 dim black bags. -wavy fuchsia bags contain 4 clear magenta bags. -light plum bags contain 3 shiny maroon bags. -shiny brown bags contain 1 faded brown bag, 5 light teal bags. -clear tan bags contain 3 dark teal bags, 2 bright plum bags. -pale violet bags contain 1 clear turquoise bag, 4 dark tan bags, 3 muted green bags, 3 posh magenta bags. -plaid coral bags contain 2 faded red bags, 1 faded indigo bag, 4 striped blue bags, 5 vibrant maroon bags. -drab red bags contain 3 mirrored white bags, 5 drab tomato bags, 3 vibrant chartreuse bags, 2 faded crimson bags. -wavy chartreuse bags contain 1 bright brown bag, 2 vibrant aqua bags, 2 drab teal bags. -dull turquoise bags contain 1 dotted chartreuse bag, 1 wavy lime bag, 1 faded gold bag. -wavy tomato bags contain 4 bright orange bags, 4 shiny fuchsia bags, 1 bright gray bag, 1 posh violet bag. -mirrored lime bags contain 1 vibrant salmon bag, 5 dull white bags, 5 dotted lavender bags, 1 dull yellow bag. -muted white bags contain 4 muted olive bags, 3 mirrored green bags, 2 striped coral bags. -muted red bags contain 3 pale indigo bags, 2 dim violet bags, 2 bright red bags. -dotted lavender bags contain 1 clear indigo bag, 5 muted cyan bags, 5 plaid gray bags, 2 plaid aqua bags. -light lavender bags contain 3 drab tomato bags, 1 wavy tan bag, 1 muted magenta bag, 1 striped magenta bag. -faded gray bags contain 4 faded cyan bags. -dark plum bags contain 5 dim violet bags, 1 light teal bag, 3 faded brown bags, 1 plaid gold bag. -vibrant bronze bags contain 1 drab gray bag, 2 faded gray bags. -clear white bags contain 2 dark fuchsia bags, 2 dark gray bags. -pale beige bags contain 1 mirrored fuchsia bag. -bright chartreuse bags contain 3 clear crimson bags. -drab gray bags contain 2 faded gray bags, 4 posh orange bags, 3 dull teal bags, 4 shiny plum bags. -wavy black bags contain 1 pale maroon bag. -dark beige bags contain 1 faded gray bag. -dark violet bags contain 1 muted tan bag, 5 faded brown bags, 3 plaid black bags. -dim beige bags contain 1 dotted turquoise bag, 5 dim teal bags, 3 mirrored crimson bags. -posh silver bags contain 3 striped orange bags, 4 posh teal bags. -muted cyan bags contain 2 drab salmon bags, 1 pale olive bag, 2 dark plum bags. -dark indigo bags contain 2 dim magenta bags, 3 bright orange bags, 4 clear white bags. -dull violet bags contain 2 pale bronze bags, 2 mirrored blue bags. -pale teal bags contain 5 striped maroon bags, 3 pale gray bags. -bright green bags contain 4 drab green bags, 3 drab indigo bags, 5 dull blue bags. -posh violet bags contain 5 wavy white bags. -clear brown bags contain no other bags. \ No newline at end of file diff --git a/day7/program.js b/day7/program.js deleted file mode 100644 index ac959f0..0000000 --- a/day7/program.js +++ /dev/null @@ -1,75 +0,0 @@ -const fs = require('fs'); - -const data = fs.readFileSync('./input.txt', 'utf-8'); -const rules = data.split("\n"); - -const allBags = extractRules(rules); -let matches = 0; - -for (color in allBags) { - if(willContainColor(allBags[color], 'shiny gold', {})) { - matches++; - } -}; - -console.log('bags that eventually contain a shiny gold bag', matches); - -const nestedBags = howManyNestedBags('shiny gold'); -console.log(`We got ${nestedBags} bags nested in shiny gold`); - -function extractRules(rules) { - let bagtypes = {}; - rules.forEach(rule => { - const parts = rule.split(' contain '); - parts[1] = parts[1].replace('.',''); - parts[0] = parts[0].replace(' bags', ''); - - const nestedBags = parts[1].split(', '); - bagtypes[parts[0]] = {}; - nestedBags.forEach(bag => { - let count = bag.substr(0,bag.indexOf(' ')); - if (count === 'no') count = 0; - count = parseInt(count); - const bagType = bag.substr(bag.indexOf(' ')+1); - let subBagType = bagType.replace(' bags', '').replace(' bag', ''); - bagtypes[parts[0]][subBagType] = count; - - }); - }); - - return bagtypes; -} - -function willContainColor(bags, color, matched) { - for (subColor in bags) { - if (color === subColor) { - return true; - } - - if (!matched.hasOwnProperty(subColor) && bags.hasOwnProperty(subColor)) { - matched[subColor] = true; - if (willContainColor(allBags[subColor], color, matched)) { - return true; - } - } - - } -} - -function howManyNestedBags(color) { - let bagCount = 0; - - for (subColor in allBags[color]) { - if (subColor !== 'other') { - bagCount += allBags[color][subColor]; - const subColorCount = allBags[color][subColor]; - let subCount = howManyNestedBags(subColor); - if (subCount > 0) { - - subCount = subCount * subColorCount; - bagCount += subCount; - } - } - } - return bagCount; -} \ No newline at end of file diff --git a/day8/input.txt b/day8/input.txt deleted file mode 100644 index d521153..0000000 --- a/day8/input.txt +++ /dev/null @@ -1,611 +0,0 @@ -acc +22 -acc +42 -nop +456 -jmp +5 -acc +31 -acc +49 -acc +10 -jmp +519 -nop +390 -jmp +418 -nop +29 -acc -4 -jmp +156 -jmp +85 -acc +5 -acc +26 -jmp +497 -acc -6 -acc -18 -acc +20 -acc +4 -jmp -8 -jmp +372 -jmp +371 -jmp -1 -jmp +1 -nop +378 -acc +18 -jmp +388 -jmp +1 -acc +29 -acc +37 -jmp +1 -jmp +425 -acc +19 -acc +13 -jmp +477 -acc +7 -jmp +469 -nop +495 -nop +141 -acc +22 -jmp +517 -jmp +125 -nop +30 -acc +37 -acc +23 -nop +238 -jmp +110 -jmp +411 -acc +2 -acc -19 -acc -19 -jmp +296 -acc +0 -acc +14 -acc +20 -jmp +75 -nop +88 -acc -16 -acc +40 -acc +27 -jmp +131 -acc +33 -nop +252 -acc +5 -acc +0 -jmp +101 -nop +219 -acc +50 -acc +40 -jmp +49 -nop +74 -jmp +327 -acc +47 -jmp +206 -acc -15 -jmp +449 -acc -17 -acc -13 -acc +46 -jmp +417 -jmp +160 -acc -7 -acc -11 -acc +16 -acc +14 -jmp -37 -acc -12 -acc +15 -acc -14 -nop +110 -jmp +1 -acc -4 -nop +287 -nop -82 -jmp +30 -jmp +490 -acc +34 -jmp +305 -nop +90 -jmp +1 -nop -4 -nop -95 -jmp -46 -acc +26 -acc +13 -acc +47 -jmp +350 -acc +11 -jmp -102 -acc -2 -jmp +489 -acc +28 -acc +24 -nop +486 -jmp +485 -nop +170 -jmp +66 -jmp +411 -acc +30 -acc +48 -acc +48 -jmp -6 -acc +11 -jmp -51 -jmp +1 -jmp -10 -nop +411 -acc -17 -acc +32 -jmp +9 -jmp +398 -nop +82 -jmp +6 -acc +45 -acc +34 -jmp -44 -acc -13 -jmp -122 -acc +25 -nop +286 -acc +5 -jmp +144 -acc +0 -jmp -122 -acc -11 -acc -6 -jmp -123 -acc +16 -acc +1 -jmp -58 -nop +242 -acc -11 -jmp +257 -nop +231 -acc +46 -jmp +301 -acc -6 -acc +20 -acc -7 -jmp +365 -acc +32 -acc +0 -jmp -66 -jmp +110 -acc -18 -jmp +118 -acc +33 -nop -125 -acc +49 -acc +36 -jmp +188 -acc +9 -acc -11 -jmp +100 -acc +35 -jmp +55 -acc +38 -acc -1 -jmp +312 -jmp +157 -acc +17 -jmp +177 -nop -126 -acc +30 -acc -3 -jmp +211 -acc -3 -jmp -164 -jmp -112 -acc +50 -jmp +268 -nop +290 -acc -8 -acc +35 -jmp -44 -acc -6 -acc +11 -nop +327 -jmp +155 -acc +10 -acc +35 -nop +233 -jmp +330 -acc +31 -acc +8 -jmp +124 -acc -5 -jmp +300 -nop +171 -nop +4 -acc +19 -acc +41 -jmp -156 -nop +179 -acc +12 -jmp +160 -jmp -92 -acc -11 -acc -10 -jmp +95 -nop +94 -acc -8 -jmp -199 -acc +16 -acc +30 -nop +73 -acc +36 -jmp -53 -jmp +1 -jmp -6 -nop +369 -acc +29 -acc +47 -jmp +32 -acc +35 -jmp -61 -acc +41 -jmp +352 -acc -1 -jmp +75 -acc -10 -acc +28 -acc -15 -jmp -187 -acc +6 -jmp +1 -nop +112 -jmp +273 -nop +186 -acc +11 -acc +40 -jmp +128 -acc +17 -acc +23 -acc -8 -nop +277 -jmp +42 -acc +11 -nop -237 -acc +36 -acc +32 -jmp +287 -acc +16 -acc -19 -jmp +115 -acc -6 -acc +16 -nop -2 -acc +23 -jmp -160 -acc -10 -acc -10 -jmp +26 -acc -7 -jmp -95 -nop -160 -acc -2 -acc +44 -jmp -236 -jmp -198 -jmp +1 -acc +1 -jmp -9 -jmp -95 -jmp +273 -acc -19 -jmp -46 -acc +12 -acc +2 -jmp -145 -acc -14 -acc +3 -acc +3 -jmp +250 -acc +4 -acc +40 -jmp +1 -jmp +17 -acc +6 -acc +47 -jmp -77 -nop -192 -acc +11 -jmp +296 -acc -14 -jmp +64 -acc +35 -jmp +134 -acc -8 -nop +228 -acc +24 -acc +15 -jmp -64 -jmp -241 -acc +19 -acc +22 -acc +49 -nop -193 -jmp +219 -acc -1 -acc -11 -nop +211 -acc +0 -jmp -106 -nop +101 -jmp -222 -acc +20 -acc +45 -jmp +70 -acc +19 -acc +21 -jmp -23 -acc +8 -nop +92 -acc +47 -jmp -144 -acc +0 -acc -1 -jmp -81 -acc +23 -jmp -274 -acc +14 -acc +26 -acc +9 -jmp +79 -acc +22 -jmp -331 -acc -10 -jmp -311 -acc +16 -acc +30 -acc -8 -jmp +176 -acc -19 -acc +43 -jmp -222 -nop -116 -jmp +18 -acc +26 -acc +23 -acc +6 -jmp -162 -acc +34 -jmp +95 -acc +27 -acc +40 -acc +9 -jmp -77 -jmp +137 -acc -13 -acc +21 -acc +17 -acc -5 -jmp +91 -jmp -95 -acc +18 -acc -1 -jmp +70 -jmp -355 -nop -166 -acc -19 -acc +16 -jmp -146 -jmp -135 -jmp +57 -acc +45 -jmp -62 -acc -14 -jmp -382 -nop -172 -acc +45 -jmp -77 -acc +13 -jmp +65 -acc -4 -jmp +112 -jmp +107 -jmp +26 -jmp -326 -acc +25 -jmp +1 -jmp +179 -acc +33 -acc +2 -jmp -222 -nop +36 -acc +25 -nop -244 -jmp -376 -jmp -203 -acc +26 -nop +109 -acc +38 -jmp +135 -acc +7 -acc +40 -acc -18 -jmp -113 -nop -294 -acc +0 -acc +40 -nop -265 -jmp +81 -jmp -99 -jmp +32 -acc -17 -acc +25 -acc -12 -acc +26 -jmp -125 -acc -3 -acc -7 -acc +25 -jmp -410 -acc +47 -acc +36 -jmp +35 -acc +2 -acc +18 -acc -3 -jmp -38 -acc +29 -acc +49 -jmp -299 -acc -4 -nop -422 -jmp +50 -acc +11 -acc +2 -acc +49 -jmp -233 -acc +12 -acc +43 -acc -19 -acc +11 -jmp -264 -jmp +124 -jmp -361 -acc +35 -jmp -118 -acc +23 -acc -16 -acc -14 -jmp -22 -jmp -135 -jmp -309 -acc +6 -jmp -44 -acc -12 -acc +0 -jmp -23 -acc +29 -acc -8 -acc +18 -acc +35 -jmp -111 -acc +22 -acc +23 -acc +0 -acc -8 -jmp -55 -acc +14 -jmp +1 -acc +44 -acc +17 -jmp -272 -acc +39 -nop +37 -acc -19 -jmp -323 -acc +24 -acc +28 -acc +29 -acc +37 -jmp +110 -jmp -386 -nop -352 -acc +23 -acc +38 -jmp -369 -acc -5 -acc -14 -jmp +83 -jmp +17 -jmp -151 -jmp -118 -jmp -104 -jmp -341 -acc +32 -acc +43 -jmp -52 -acc -4 -acc +42 -acc +5 -jmp -116 -acc +13 -jmp +1 -nop -361 -acc +41 -jmp -386 -jmp -241 -nop -449 -acc +46 -jmp -176 -acc +6 -jmp +60 -jmp +1 -jmp -3 -jmp -62 -acc -14 -acc +17 -jmp -340 -acc +31 -acc -13 -acc +7 -jmp -54 -jmp -80 -acc +14 -acc +49 -acc +34 -jmp +24 -acc +11 -jmp -158 -acc -13 -jmp -261 -acc +33 -nop -171 -jmp -106 -acc +0 -acc +9 -acc +16 -acc +34 -jmp +18 -acc -2 -acc +47 -acc +39 -jmp -232 -acc +23 -nop -229 -acc +30 -acc +32 -jmp -147 -acc -8 -jmp -460 -jmp -498 -nop -218 -acc +31 -acc +44 -acc +30 -jmp -105 -acc +8 -acc -19 -acc +45 -nop -49 -jmp -140 -nop -43 -acc +42 -jmp +1 -acc -14 -jmp -42 -jmp -389 -acc +39 -acc +26 -acc +38 -jmp -77 -acc +48 -jmp -83 -acc +5 -jmp -81 -nop -242 -acc +35 -acc +0 -acc +19 -jmp -430 -acc +11 -nop -226 -acc +13 -acc +23 -jmp -575 -acc +44 -acc +50 -nop -303 -jmp -112 -jmp -305 -acc +23 -acc -11 -nop -376 -acc +50 -jmp +1 \ No newline at end of file diff --git a/day8/program.js b/day8/program.js deleted file mode 100644 index 4715098..0000000 --- a/day8/program.js +++ /dev/null @@ -1,63 +0,0 @@ -const fs = require('fs'); - -const data = fs.readFileSync('./input.txt', 'utf-8'); -const readData = data.split("\n"); - -let onlyChangeTheseLines = execute(readData, true); - -readData.forEach((l, i) => { - const copy = JSON.parse(JSON.stringify(readData)); - if (onlyChangeTheseLines.indexOf(i) === -1) return; - if (l.indexOf('nop') > -1) { - copy[i] = l.replace('nop','jmp'); - } else if (l.indexOf('jmp') > -1) { - copy[i] = l.replace('jmp','nop'); - } - - execute(copy); -}); - - -function execute(instructions, outputDeadEnd) { - const lines = []; - let acc = 0; - let line = 0; - let executedLines = []; - - instructions.forEach(i => { - lines.push(splitInstruction(i)); - }); - - return run(); - - function splitInstruction(instruction) { - const parts = instruction.split(' '); - const type = parts[0]; - const amount = parts[1].indexOf('+') > -1 ? parseInt(parts[1].substr(1)) : parseInt(parts[1]); - return {type: type, amount: amount}; - } - - function run() { - if (executedLines.indexOf(line) > -1) { - if (outputDeadEnd) { - console.log('Part 1', acc); - } - return executedLines; - } - - const instrcution = lines[line]; - executedLines.push(line); - - if (instrcution.type === 'acc') { - acc += instrcution.amount; - line++; - } else if (instrcution.type === 'nop') { - line++; - } else if (instrcution.type === 'jmp') { - line += instrcution.amount; - } - - if (instructions[line]) return run(); - console.log('Part 2: ', acc); - } -} \ No newline at end of file diff --git a/day9/input.txt b/day9/input.txt deleted file mode 100644 index a178437..0000000 --- a/day9/input.txt +++ /dev/null @@ -1,1000 +0,0 @@ -37 -7 -16 -34 -48 -24 -5 -40 -30 -35 -2 -45 -19 -33 -36 -49 -32 -1 -44 -21 -25 -3 -11 -38 -15 -4 -6 -7 -8 -16 -9 -10 -5 -12 -13 -17 -14 -35 -18 -19 -20 -23 -36 -53 -22 -21 -41 -28 -11 -24 -15 -25 -26 -27 -29 -64 -50 -31 -30 -34 -32 -44 -33 -47 -74 -35 -66 -37 -36 -38 -45 -39 -40 -41 -42 -57 -51 -55 -68 -70 -71 -72 -61 -88 -65 -75 -140 -77 -73 -82 -110 -81 -74 -116 -86 -80 -112 -83 -92 -128 -141 -106 -120 -146 -126 -147 -133 -134 -138 -139 -156 -209 -162 -160 -154 -155 -233 -216 -163 -313 -298 -273 -189 -198 -226 -253 -232 -265 -259 -260 -316 -267 -272 -277 -449 -428 -314 -309 -471 -318 -379 -430 -458 -387 -683 -475 -415 -421 -486 -525 -544 -575 -532 -519 -632 -539 -590 -739 -586 -623 -627 -688 -696 -697 -804 -1072 -1119 -940 -808 -896 -836 -990 -907 -1107 -1436 -1114 -1129 -1051 -1058 -1754 -1385 -1644 -1459 -1250 -2686 -1324 -2442 -1504 -1501 -1612 -1704 -1915 -1715 -1732 -1826 -1897 -2048 -2431 -2109 -3004 -2165 -2825 -2301 -3039 -2862 -3145 -2574 -2709 -2751 -3447 -4043 -3005 -4198 -3113 -3612 -4910 -3629 -3541 -4306 -4157 -4466 -4349 -4274 -5113 -5027 -5446 -6186 -7889 -8522 -5436 -5854 -5283 -5864 -6292 -6118 -6546 -6617 -6742 -6654 -7241 -7170 -7698 -8431 -11231 -8506 -8623 -9301 -9387 -10140 -10310 -12518 -11137 -10719 -11147 -11290 -11401 -11575 -12156 -12410 -12664 -16757 -13271 -13396 -19611 -14411 -14868 -17129 -16937 -29793 -17807 -17924 -18688 -27532 -23665 -21029 -21866 -23954 -22009 -22976 -30217 -34022 -25986 -27807 -29601 -30400 -26667 -27682 -28264 -40602 -29279 -31805 -34066 -41472 -45606 -41589 -47696 -48711 -55214 -43038 -57543 -69154 -45963 -77223 -66588 -68866 -55265 -115299 -58207 -54349 -95816 -68284 -62330 -115750 -61084 -100312 -90012 -116995 -100820 -84627 -139841 -94674 -89001 -97387 -98303 -190490 -178080 -109614 -112556 -113472 -115433 -116349 -225364 -116679 -122633 -194241 -123414 -145711 -158471 -150085 -173628 -268085 -179301 -198099 -182014 -183675 -186388 -391499 -207001 -207917 -222170 -223086 -229235 -323350 -228905 -530351 -233028 -239312 -262390 -304647 -308556 -389397 -295796 -344859 -415293 -352929 -380113 -430087 -405100 -365689 -370063 -393389 -545520 -431003 -530726 -445256 -456114 -462263 -533552 -524701 -472340 -846296 -535108 -674245 -763452 -604352 -640655 -758059 -697788 -718618 -733042 -1129053 -759078 -838645 -876259 -824392 -918090 -887117 -893266 -907519 -901370 -1591316 -934603 -1469711 -1359500 -1742482 -1139460 -1175763 -1245007 -1302140 -1362411 -1338443 -1571687 -1416406 -1963852 -1557434 -1583470 -1597723 -1663037 -1769525 -2032726 -1780383 -1827869 -3212193 -1808889 -2351009 -2908044 -2538174 -2384467 -3385303 -3352070 -2315223 -2420770 -2547147 -2640583 -2778817 -3886910 -2973840 -2999876 -4336251 -3140904 -3181193 -5009062 -4606686 -4229659 -5601963 -3589272 -3636758 -4124112 -4159898 -4666232 -4699690 -4735993 -4805237 -6183905 -4862370 -4955806 -4967917 -5187730 -5419400 -7370563 -5973716 -6589148 -7226030 -6322097 -10580402 -6817951 -7713384 -11509827 -7749170 -7760870 -7796656 -8824488 -8860105 -8895891 -10281770 -12554407 -15536208 -9667607 -16645061 -13548127 -9923723 -13692660 -10607130 -22222014 -12295813 -14531335 -12911245 -20092469 -19476293 -14567121 -15678056 -15462554 -15510040 -18356300 -30972594 -19141875 -34623804 -17755996 -18563498 -19591330 -25386277 -20274737 -20530853 -27240787 -22902943 -22219536 -30198460 -30667241 -25207058 -26827148 -27442580 -43742577 -32323117 -30029675 -34158451 -33218550 -33266036 -33866340 -36112296 -37347326 -36319494 -52721949 -44977607 -38154828 -39866067 -40805590 -42494273 -43433796 -68014567 -45122479 -55485572 -58425608 -52034206 -52649638 -76652724 -57472255 -128686930 -95216222 -73666820 -66484586 -67084890 -69378332 -91338595 -72431790 -137710495 -74474322 -78020895 -127917362 -84988546 -84239386 -83299863 -85928069 -111607065 -132899930 -135078332 -186342970 -104683844 -109506461 -110121893 -123956841 -124557145 -161700808 -256917030 -186081387 -146906112 -136463222 -141810122 -150452685 -158713708 -207374252 -157774185 -167539249 -168288409 -193421756 -169227932 -269381250 -197535134 -229240989 -214190305 -244584793 -214805737 -219628354 -177777905 -246585115 -286915907 -261020367 -278273344 -311038054 -335827658 -283369334 -292262807 -360961005 -396780238 -437669659 -325313434 -365074383 -448869343 -361710165 -347005837 -608295280 -392583642 -422362698 -391968210 -397406259 -424363020 -456051249 -503091339 -461147239 -893720908 -561642678 -589311398 -570536151 -675337544 -619196992 -575632141 -639268644 -707966842 -708716002 -672319271 -687023599 -821769279 -754293807 -738974047 -739589479 -1483032306 -1031683390 -789374469 -1036779380 -1233961949 -880414269 -1133466510 -964238578 -1022789917 -1809594090 -2272406775 -1164943539 -1209804795 -1214900785 -1194829133 -1247951412 -1461693740 -1359342870 -1791073187 -1411908750 -1651262177 -1478563526 -1493883286 -1821057859 -1776368859 -1753613047 -1954318008 -2156256427 -1844652847 -1903204186 -3010605047 -1987028495 -2129182117 -2187733456 -3196833290 -3284956473 -2359772672 -2404633928 -2409729918 -2442780545 -2607294282 -2771251620 -2837906396 -3920255304 -2905792036 -3747857033 -3323216373 -3247496333 -4630514001 -4802553217 -3598265894 -4510498468 -4307838114 -3831681342 -4174761951 -4116210612 -7346122927 -4316915573 -4597463374 -5652130261 -4847414473 -4764406600 -6236315270 -5050074827 -5214032165 -7618666093 -6369517514 -8918763829 -6153288369 -6229008409 -6570712706 -6921482267 -7422258284 -7714476506 -7906104008 -7915181467 -8148596915 -11663038500 -8679095815 -8290972563 -8433126185 -8914378947 -9081322173 -11168176080 -9611821073 -13362629080 -9814481427 -10264106992 -11203363196 -12382296778 -14284698981 -12522805883 -12724001075 -16834819698 -23726169079 -13492194973 -17995701120 -15136734790 -15620580514 -15821285475 -22196778205 -16439569478 -16724098748 -23306676400 -17514448358 -17347505132 -18728860374 -18693143246 -19426302500 -19875928065 -21467470188 -21017844623 -32651183148 -24905102661 -28002877292 -31949108383 -31860833538 -40450267827 -29313480448 -28628929763 -38018063680 -33616281634 -34238547106 -31441865989 -59143411073 -33163668226 -36040648378 -34071603880 -48956314347 -36243308732 -60070795752 -49020721915 -55083751822 -39302230565 -40893772688 -70744096554 -45922947284 -52907979953 -54218583109 -59951985675 -63385084328 -57942410211 -62477148674 -93101815502 -61792597989 -65680413095 -64605534215 -93919014663 -67235272106 -69204316604 -69406976958 -70112252258 -70314912612 -75545539297 -110813319904 -88322952480 -80196003253 -150800101154 -118824117324 -110098089292 -98830927237 -100141530393 -112160993320 -114170568784 -129027870095 -157729929438 -199136272384 -124269746663 -186062344652 -127473011084 -130285947310 -133809850819 -136439588710 -183374885388 -138611293562 -139519229216 -250332549120 -194366572037 -204465749916 -316348291962 -168518955733 -210481950563 -314563839208 -232640778056 -238752823955 -198972457630 -212302523713 -250610157494 -438833585871 -251742757747 -266992240300 -266084304646 -705825826171 -257758958394 -270249439529 -264095798129 -272421144381 -404848522600 -441133843782 -278130522778 -308038184949 -362885527770 -367491413363 -379000906296 -380821479446 -502352915241 -409454408193 -411274981343 -431613235686 -437725281585 -478386828359 -484723668094 -633575718009 -509501716141 -703809586231 -523843263040 -852408825125 -521854756523 -528008397923 -534345237658 -766448713370 -653242623827 -778766394706 -586168707727 -641016050548 -688859664395 -730376941133 -869844328604 -889661809702 -790275887639 -820729389536 -841067643879 -842888217029 -955456498726 -1110011970767 -1070892375821 -1573265158162 -1227184758275 -1031356472664 -1056199994181 -1045698019563 -1252231697656 -1162870807071 -1169024448471 -1264722178791 -1479135552034 -1239411331554 -1275028372122 -1427236351606 -1510860379152 -2589147522801 -2054998066430 -2180904346588 -1611005277175 -1631343531518 -1776185888262 -1683955860908 -1798344715755 -2077054492227 -2087556466845 -2116590395384 -3761010353135 -2101898013744 -2194227279735 -2208568826634 -2402282138625 -3878083902006 -2331895255542 -4408949747769 -3458949458526 -2514439703676 -2666647683160 -2702264723728 -2938096730758 -3121865656327 -3460141749170 -3242348808693 -4325159222018 -5090292990044 -3315299392426 -3482300576663 -5330434482961 -3992571995490 -4631030099060 -6603177027504 -4218488409128 -4296125293479 -6148948259823 -4402796106369 -6364214465020 -5884582715288 -4846334959218 -4998542938702 -5181087386836 -6017564116154 -5216704427404 -9033826205429 -5640361454486 -8698921399848 -6582007405497 -6557648201119 -9936627949262 -7718095498795 -9199882107714 -7307871387916 -9961464582021 -8838906954708 -10215247366106 -9477365058278 -8514613702607 -20151875315368 -9142460252697 -9401339045071 -9583883493205 -15142551968857 -19249073571535 -11234268543558 -10179630325538 -10397791814240 -15983346450568 -26198593816674 -12198009655605 -12948232842402 -15781889513211 -15724467658194 -13865519589035 -15025966886711 -17679560080816 -15822485090523 -16146778342624 -25939715024300 -30924441482068 -24924349765908 -17657073955304 -18098497195812 -18543799297768 -28913828624374 -18985222538276 -19763513818743 -20577422139778 -31707814108762 -21413898869096 -34325688810979 -27922477313799 -25146242498007 -38256982220594 -32409318886803 -31545079669851 -28891486475746 -53838178390282 -29688004679558 -30848451977234 -39957698166864 -50472467153603 -33803852297928 -68570964349415 -57805315100120 -37083719734088 -35755571151116 -36642296493580 -63239517435353 -38748736357019 -66735007697782 -44909756316750 -79219213969216 -46560141367103 -49336376182895 -57555561384810 -64647057626862 -78706434523883 -115861510462796 -62097323566361 -114974785120332 -78227862658641 -60536456656792 -66771724413646 \ No newline at end of file diff --git a/day9/program.js b/day9/program.js deleted file mode 100644 index 3df59f8..0000000 --- a/day9/program.js +++ /dev/null @@ -1,70 +0,0 @@ -const fs = require('fs'); - -const data = fs.readFileSync('./input.txt', 'utf-8'); -const itemsToCheck = 25; - -loopData(data.split("\n")); - -function loopData(rows) { - let last25 = []; - - rows.forEach((row, i) => { - if (last25.length === itemsToCheck+1) last25.splice(0,1); - if (last25.length === itemsToCheck) { - if (!hasSum(parseInt(row), last25)) { - console.log(i, 'part 1 FAIL', row); - - findSum(rows, parseInt(row)); - } - } - last25.push(parseInt(row)); - }); -} - -function hasSum(num, nums) { - for (let i = 0; i < nums.length; i++) { - const n1 = nums[i]; - for (let j = 0; j < nums.length; j++) { - const n2 = nums[j]; - const sum = parseInt(n1+n2); - if (num === sum) { - return true; - } - } - } - return false; -} - -function findSum(nums, sumToFind) { - let uses = []; - let found = false; - - nums.forEach(n => { - if (found) return; - if (sumOfArray(uses) > sumToFind && uses.length > 1) uses = stripToBelow(sumToFind, uses); - - if (sumOfArray(uses) === sumToFind) { - found = true; - uses.sort((a,b) => { return a > b ? 1 : -1}); - console.log('part 2 gotcha!', uses[0] + uses[uses.length - 1] , uses); - } - uses.push(parseInt(n)); - }); -} - -function stripToBelow(sumToFind, items) { - - items.splice(0, 1); - if (sumOfArray(items) > sumToFind && items.length > 1) { - return stripToBelow(sumToFind, items); - } - return items; -} - -function sumOfArray(items) { - let sum = 0; - items.forEach(i => { - sum += i; - }) - return sum; -} \ No newline at end of file diff --git a/helper.js b/helper.js new file mode 100644 index 0000000..ac09931 --- /dev/null +++ b/helper.js @@ -0,0 +1,6 @@ +import fs from "fs"; + +export default async function loadData(day) { + const data = await fs.readFileSync(`./${day}/input.txt`, "utf-8"); + return data.split("\n"); +} diff --git a/index.js b/index.js new file mode 100644 index 0000000..51dd72e --- /dev/null +++ b/index.js @@ -0,0 +1,11 @@ +import loadDay from "./helper.js"; + +if (process.argv[2]) { + const dayName = `day${process.argv[2]}`; + const data = loadDay(dayName); + const { default: Day } = await import(`./${dayName}/program.js`); + Day(data); +} else { + console.log("Please specify a day as a number"); + process.exit(1); +} diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..3835808 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,6 @@ +{ + "name": "adventofcode", + "lockfileVersion": 2, + "requires": true, + "packages": {} +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..97fb847 --- /dev/null +++ b/package.json @@ -0,0 +1,20 @@ +{ + "name": "adventofcode", + "version": "1.0.0", + "description": "Hi all!", + "main": "helper.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/Topener/adventofcode.git" + }, + "author": "", + "license": "ISC", + "bugs": { + "url": "https://github.com/Topener/adventofcode/issues" + }, + "homepage": "https://github.com/Topener/adventofcode#readme", + "type": "module" +} From 21960a2eadc4e4b5663fc70593148d8dcf3d1208 Mon Sep 17 00:00:00 2001 From: Rene Pot Date: Wed, 1 Dec 2021 19:39:37 +0100 Subject: [PATCH 19/59] added central loader --- helper.js | 9 +++++++++ index.js | 31 +++++++++++++++++++++++++------ 2 files changed, 34 insertions(+), 6 deletions(-) diff --git a/helper.js b/helper.js index ac09931..77d3fbe 100644 --- a/helper.js +++ b/helper.js @@ -4,3 +4,12 @@ export default async function loadData(day) { const data = await fs.readFileSync(`./${day}/input.txt`, "utf-8"); return data.split("\n"); } + +export async function fileExists(filename) { + try { + const result = await fs.existsSync(filename); + return result; + } catch (err) { + return false; + } +} diff --git a/index.js b/index.js index 51dd72e..8d9011a 100644 --- a/index.js +++ b/index.js @@ -1,11 +1,30 @@ -import loadDay from "./helper.js"; +import loadData, { fileExists } from "./helper.js"; if (process.argv[2]) { - const dayName = `day${process.argv[2]}`; - const data = loadDay(dayName); - const { default: Day } = await import(`./${dayName}/program.js`); - Day(data); + try { + const dayName = `day${process.argv[2]}`; + const filename = `./${dayName}/program.js`; + + if (await fileExists(filename)) { + console.log("found", filename); + const data = await loadData(dayName); + const { default: Day } = await import(filename); + + console.time("Day Execution"); + Day(data); + console.timeEnd("Day Execution"); + } else { + console.log("The provided day does not exist or is not yet implemented"); + } + } catch (e) { + console.log(e); + error(); + } } else { - console.log("Please specify a day as a number"); + error(); process.exit(1); } + +function error() { + console.log('Please specify a day as a number like "node index.js 1"'); +} From 198146603bda5b85d7a1c5815460f2e3c0ca7184 Mon Sep 17 00:00:00 2001 From: Rene Pot Date: Wed, 1 Dec 2021 19:39:44 +0100 Subject: [PATCH 20/59] day 1 --- day1/program.js | 43 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/day1/program.js b/day1/program.js index f1a1539..cd64cae 100644 --- a/day1/program.js +++ b/day1/program.js @@ -1,3 +1,44 @@ export default function Day(data) { - console.log(data); + let increases = 0; + let lastValue = false; + + // prepare data + data.forEach((row, i) => { + data[i] = parseInt(row); + }); + + // part 1 + data.forEach((row) => { + if (lastValue !== false && row > lastValue) { + increases++; + } + + lastValue = row; + }); + + console.log("Part 1:", increases); + + // part 2 + let rollingThrees = []; + let lastSum = false; + let increases2 = 0; + + data.forEach((row, i) => { + rollingThrees.push(row); + + if (rollingThrees.length > 3) { + rollingThrees.shift(); + } + if (rollingThrees.length === 3) { + const sum = rollingThrees.reduce((a, b) => a + b); + + if (lastSum !== false && sum > lastSum) { + increases2++; + } + + lastSum = sum; + } + }); + + console.log("Part 2:", increases2); } From d0d091b42c7b24857bbb431c32cab5a8aa8a07f5 Mon Sep 17 00:00:00 2001 From: Rene Pot Date: Thu, 2 Dec 2021 14:28:02 +0100 Subject: [PATCH 21/59] day 2 --- day2/input.txt | 1000 +++++++++++++++++++++++++++++++++++++++++++++++ day2/program.js | 52 +++ 2 files changed, 1052 insertions(+) create mode 100644 day2/input.txt create mode 100644 day2/program.js diff --git a/day2/input.txt b/day2/input.txt new file mode 100644 index 0000000..cde6bfc --- /dev/null +++ b/day2/input.txt @@ -0,0 +1,1000 @@ +forward 5 +down 9 +forward 2 +up 2 +forward 4 +forward 4 +up 5 +down 3 +forward 2 +forward 9 +down 7 +forward 2 +down 2 +forward 1 +up 9 +forward 1 +forward 4 +up 5 +down 9 +forward 8 +forward 3 +up 1 +down 2 +down 3 +forward 7 +forward 2 +up 3 +forward 9 +forward 9 +down 3 +up 8 +forward 5 +forward 7 +forward 2 +down 7 +forward 5 +down 4 +up 7 +forward 8 +forward 1 +down 3 +down 1 +forward 6 +up 7 +forward 6 +down 3 +forward 9 +forward 6 +up 3 +down 1 +forward 8 +up 7 +down 9 +down 2 +down 1 +down 5 +forward 4 +down 8 +forward 2 +down 5 +down 6 +down 5 +forward 5 +down 8 +up 8 +forward 3 +forward 4 +forward 8 +forward 9 +down 2 +forward 7 +forward 3 +forward 9 +down 3 +up 1 +down 5 +forward 2 +down 9 +down 2 +down 5 +down 2 +down 9 +up 3 +forward 6 +up 9 +down 1 +forward 8 +up 6 +down 1 +forward 1 +up 1 +forward 3 +down 8 +down 1 +down 9 +forward 4 +forward 1 +down 3 +forward 8 +down 9 +forward 7 +up 6 +down 8 +down 6 +down 8 +down 7 +down 1 +down 8 +down 1 +forward 5 +down 9 +forward 4 +down 2 +forward 8 +up 1 +forward 7 +down 7 +down 6 +forward 4 +forward 6 +down 2 +down 2 +up 7 +down 2 +up 9 +forward 6 +forward 3 +down 8 +forward 9 +down 9 +down 9 +down 8 +forward 2 +forward 5 +forward 8 +forward 1 +down 3 +forward 1 +forward 2 +forward 9 +up 5 +forward 4 +forward 2 +down 6 +forward 3 +forward 7 +forward 1 +forward 8 +down 7 +forward 4 +up 3 +down 9 +up 2 +forward 2 +forward 7 +down 9 +up 9 +forward 9 +up 8 +up 7 +down 8 +down 9 +forward 1 +forward 5 +up 7 +down 3 +up 9 +forward 9 +down 4 +down 7 +down 7 +down 1 +down 4 +down 5 +up 2 +forward 2 +forward 2 +forward 6 +down 7 +forward 7 +down 5 +forward 8 +down 7 +forward 6 +down 2 +up 2 +down 5 +down 1 +up 4 +down 8 +up 9 +forward 1 +down 9 +down 6 +down 8 +up 7 +up 1 +forward 7 +down 8 +forward 1 +down 4 +down 2 +forward 3 +forward 6 +forward 8 +down 2 +forward 7 +forward 8 +up 3 +down 1 +down 8 +up 3 +down 4 +down 5 +forward 6 +forward 9 +down 3 +up 2 +down 9 +up 2 +down 3 +down 9 +forward 4 +forward 6 +down 7 +down 8 +down 4 +forward 7 +up 2 +down 5 +up 3 +down 5 +up 1 +up 1 +forward 5 +forward 9 +down 9 +up 4 +up 4 +up 8 +up 5 +forward 7 +forward 6 +up 6 +down 5 +forward 4 +forward 3 +up 6 +down 6 +forward 5 +up 6 +up 7 +forward 1 +forward 2 +forward 5 +down 3 +forward 6 +down 6 +down 3 +up 9 +down 4 +down 5 +down 4 +forward 1 +down 1 +forward 3 +up 4 +forward 1 +forward 5 +up 3 +forward 6 +forward 5 +forward 9 +forward 6 +down 2 +forward 2 +down 1 +down 4 +forward 6 +forward 8 +down 8 +up 5 +forward 8 +forward 3 +forward 1 +forward 3 +forward 6 +down 1 +down 9 +up 7 +down 2 +forward 6 +down 4 +down 7 +down 5 +forward 2 +down 1 +forward 2 +forward 8 +forward 4 +up 3 +down 1 +forward 6 +forward 3 +down 3 +down 9 +forward 1 +up 5 +forward 3 +forward 3 +up 5 +down 7 +forward 8 +up 5 +forward 2 +forward 2 +down 6 +up 8 +up 5 +forward 2 +forward 1 +down 9 +forward 7 +down 5 +forward 3 +down 3 +down 5 +down 5 +up 7 +down 8 +forward 2 +forward 4 +forward 5 +forward 1 +down 6 +forward 3 +down 1 +down 7 +forward 3 +forward 7 +down 5 +down 3 +forward 6 +down 3 +down 2 +down 4 +down 9 +forward 7 +down 2 +up 2 +up 6 +up 9 +up 8 +forward 9 +down 1 +forward 4 +forward 2 +forward 7 +forward 2 +down 8 +down 3 +forward 4 +forward 6 +down 8 +forward 7 +forward 6 +up 3 +down 6 +down 1 +down 3 +down 8 +down 2 +down 7 +down 9 +forward 4 +forward 7 +forward 8 +forward 5 +forward 9 +up 5 +down 2 +forward 9 +forward 6 +up 6 +forward 7 +down 2 +down 3 +forward 4 +down 6 +down 1 +down 2 +down 8 +forward 3 +down 3 +forward 3 +down 5 +up 8 +down 5 +forward 8 +down 1 +forward 1 +forward 4 +forward 7 +down 2 +down 5 +forward 5 +down 8 +forward 2 +down 2 +forward 5 +forward 6 +forward 4 +down 7 +up 7 +down 1 +forward 7 +forward 8 +down 6 +up 7 +forward 6 +up 6 +down 8 +forward 5 +forward 8 +up 4 +up 2 +up 1 +down 8 +down 6 +up 2 +down 5 +down 1 +forward 5 +forward 7 +down 2 +up 3 +up 3 +forward 9 +down 1 +forward 6 +down 2 +forward 2 +down 1 +down 9 +forward 7 +down 5 +down 8 +up 1 +forward 1 +down 7 +forward 3 +down 4 +up 4 +down 6 +forward 1 +forward 3 +down 2 +forward 3 +forward 5 +forward 6 +up 2 +up 9 +forward 4 +down 4 +up 1 +up 3 +forward 8 +forward 1 +down 9 +down 9 +forward 2 +down 1 +up 9 +up 3 +up 1 +up 5 +forward 6 +down 9 +forward 6 +forward 9 +forward 6 +forward 4 +up 2 +down 6 +up 3 +forward 3 +forward 1 +up 4 +forward 7 +down 9 +down 3 +forward 9 +down 4 +down 8 +down 3 +up 8 +down 8 +down 8 +forward 2 +forward 8 +up 9 +forward 2 +up 6 +forward 7 +down 1 +forward 5 +forward 4 +forward 1 +forward 7 +up 9 +down 8 +forward 1 +up 5 +forward 9 +forward 2 +forward 8 +down 1 +forward 7 +down 2 +up 8 +down 6 +up 9 +up 3 +down 6 +forward 5 +down 1 +forward 1 +forward 6 +forward 6 +up 1 +forward 5 +forward 1 +up 2 +forward 9 +forward 6 +down 3 +up 1 +forward 7 +forward 2 +down 1 +forward 6 +down 3 +up 2 +down 3 +down 8 +forward 4 +down 2 +up 7 +down 6 +up 5 +down 7 +forward 4 +down 9 +down 3 +forward 2 +up 5 +up 4 +forward 9 +down 1 +up 2 +forward 4 +down 9 +down 8 +forward 5 +forward 2 +down 5 +forward 6 +down 4 +forward 7 +forward 1 +forward 6 +down 3 +down 9 +forward 9 +forward 2 +forward 6 +down 7 +down 5 +down 3 +forward 7 +down 3 +down 3 +down 4 +down 4 +down 7 +down 7 +down 7 +up 7 +up 9 +up 7 +up 3 +up 4 +down 9 +down 4 +up 3 +forward 2 +up 1 +down 9 +down 6 +up 1 +up 2 +down 7 +down 9 +up 2 +forward 7 +down 4 +forward 3 +down 1 +down 7 +forward 7 +up 7 +forward 3 +forward 1 +forward 6 +forward 2 +down 9 +forward 8 +up 8 +down 8 +down 9 +up 1 +down 4 +down 6 +down 8 +up 4 +down 1 +forward 1 +forward 1 +forward 4 +forward 7 +forward 1 +down 4 +forward 5 +up 3 +forward 4 +down 5 +down 1 +up 2 +down 7 +forward 7 +down 7 +up 9 +down 9 +down 3 +up 2 +up 8 +up 8 +up 7 +forward 7 +forward 5 +forward 3 +forward 2 +down 5 +forward 4 +forward 1 +down 6 +down 1 +forward 8 +down 6 +down 3 +down 5 +down 9 +down 3 +forward 7 +forward 6 +down 6 +forward 9 +up 7 +forward 3 +up 5 +down 5 +down 5 +forward 4 +up 6 +down 6 +forward 3 +up 2 +forward 4 +up 1 +down 5 +forward 6 +forward 9 +down 2 +up 2 +down 2 +up 7 +forward 3 +up 2 +forward 9 +forward 5 +down 5 +down 7 +down 8 +down 6 +up 9 +up 5 +forward 7 +down 8 +down 1 +forward 7 +up 2 +forward 4 +forward 2 +up 9 +down 8 +forward 1 +forward 7 +down 2 +down 3 +down 6 +down 3 +forward 1 +up 6 +forward 8 +down 9 +down 9 +forward 8 +up 8 +down 6 +forward 4 +up 1 +forward 5 +down 3 +down 7 +down 7 +down 3 +up 2 +forward 4 +down 9 +forward 2 +down 9 +forward 9 +forward 4 +forward 5 +down 4 +forward 1 +up 1 +forward 4 +up 3 +up 4 +forward 7 +down 9 +forward 6 +down 1 +down 1 +down 2 +down 4 +forward 7 +forward 8 +forward 6 +down 8 +forward 2 +down 3 +up 5 +forward 2 +up 5 +forward 8 +down 8 +down 8 +up 8 +forward 6 +up 1 +down 3 +forward 6 +down 1 +forward 9 +up 1 +forward 7 +forward 7 +down 1 +forward 5 +forward 2 +up 7 +down 1 +forward 2 +down 4 +forward 3 +down 9 +forward 6 +up 5 +forward 1 +forward 5 +down 7 +forward 6 +down 8 +forward 9 +down 1 +forward 9 +down 1 +forward 5 +up 9 +forward 1 +forward 6 +forward 5 +down 7 +down 6 +down 5 +down 9 +forward 9 +down 2 +down 8 +down 8 +forward 2 +forward 3 +forward 3 +down 3 +forward 8 +forward 8 +down 8 +forward 1 +up 1 +forward 4 +down 7 +forward 1 +up 2 +forward 9 +forward 1 +down 6 +up 9 +down 3 +down 1 +up 1 +up 6 +up 7 +forward 9 +up 2 +forward 4 +up 8 +down 6 +forward 3 +forward 7 +down 6 +down 5 +down 3 +forward 5 +down 1 +forward 2 +forward 9 +down 8 +up 6 +forward 3 +forward 2 +up 7 +down 3 +forward 5 +forward 9 +down 5 +down 1 +up 4 +down 8 +forward 1 +forward 3 +forward 3 +down 2 +forward 5 +down 1 +forward 2 +up 3 +forward 8 +down 2 +up 8 +down 6 +down 8 +forward 4 +down 4 +up 7 +up 6 +down 7 +forward 2 +up 3 +forward 3 +down 8 +forward 8 +down 5 +forward 5 +down 3 +up 7 +down 1 +down 2 +up 8 +down 6 +up 6 +down 7 +forward 5 +up 3 +forward 7 +forward 2 +down 9 +down 1 +down 4 +down 7 +forward 9 +up 7 +forward 5 +up 8 +forward 8 +up 1 +forward 2 +down 7 +down 5 +down 6 +down 4 +up 4 +forward 5 +forward 6 +up 4 +forward 8 +forward 4 +forward 3 +up 5 +down 6 +up 4 +forward 8 +down 7 +forward 3 +down 2 +down 7 +down 5 +down 4 +forward 5 +up 4 +forward 4 +down 7 +down 3 +down 9 +down 7 +forward 2 +forward 1 +down 7 +down 8 +forward 1 +forward 2 +down 5 +up 1 +down 1 +forward 5 +down 2 +forward 9 +forward 7 +down 2 +forward 6 +forward 9 +up 5 +forward 3 +up 5 +forward 7 +down 6 +down 3 +up 3 +down 4 +forward 2 +up 4 +forward 5 +up 9 +down 3 +up 1 +down 1 +up 3 +forward 4 +forward 5 +down 3 +forward 5 +down 6 +down 2 +forward 5 +forward 3 +down 7 +down 8 +forward 4 +down 5 +forward 7 +forward 2 +forward 7 +down 7 +up 1 +forward 6 +down 1 +forward 1 +down 4 +forward 1 +up 6 +forward 8 +forward 6 +forward 7 +up 6 +up 7 +up 2 +down 9 +forward 4 +up 3 +down 1 +down 1 +forward 3 +down 4 +down 6 +down 8 +forward 9 +forward 6 +down 1 +forward 5 \ No newline at end of file diff --git a/day2/program.js b/day2/program.js new file mode 100644 index 0000000..7362019 --- /dev/null +++ b/day2/program.js @@ -0,0 +1,52 @@ +export default function Day(data) { + const instructions = data.map((instruction) => { + const instructionSplit = instruction.split(" "); + instructionSplit[1] = parseInt(instructionSplit[1]); + return instructionSplit; + }); + + part1(instructions); + part2(instructions); +} + +const part1 = (instructions) => { + let position = 0; + let depth = 0; + + for (const instruction of instructions) { + switch (instruction[0]) { + case "up": + depth -= instruction[1]; + break; + case "down": + depth += instruction[1]; + break; + case "forward": + position += instruction[1]; + break; + } + } + console.log(`Part 1: position: ${position}, depth: ${depth}`, position * depth); +}; + +const part2 = (instructions) => { + let position = 0; + let depth = 0; + let aim = 0; + + for (const instruction of instructions) { + switch (instruction[0]) { + case "up": + aim -= instruction[1]; + break; + case "down": + aim += instruction[1]; + break; + case "forward": + position += instruction[1]; + depth += aim * instruction[1]; + break; + } + } + console.log(`Part 2: position: ${position}, depth: ${depth}, aim: ${aim}`, position * depth); +}; From 5c926152d4bb687d17c31a77804a74a51c6b872c Mon Sep 17 00:00:00 2001 From: Rene Pot Date: Fri, 3 Dec 2021 17:50:21 +0100 Subject: [PATCH 22/59] day 3 --- day3/input.txt | 1000 +++++++++++++++++++++++++++++++++++++++++++++++ day3/program.js | 64 +++ 2 files changed, 1064 insertions(+) create mode 100644 day3/input.txt create mode 100644 day3/program.js diff --git a/day3/input.txt b/day3/input.txt new file mode 100644 index 0000000..fac471c --- /dev/null +++ b/day3/input.txt @@ -0,0 +1,1000 @@ +010000010010 +011001011100 +110011011101 +110100100001 +000110011110 +110101000101 +100110111001 +110000000000 +100101100111 +001001011000 +010010011010 +001110111000 +001011111010 +110010111011 +001001010101 +111111011111 +101001001110 +011001000101 +001001111100 +000101110000 +101000101101 +101000011101 +011011001111 +010100011001 +100010001000 +100010111010 +000110101100 +100101010111 +110111101111 +011101111001 +111001110110 +101101000000 +010010111101 +111101111101 +010000001110 +000111111001 +010111100101 +011101100000 +001011011111 +111010000110 +111010001001 +000000010111 +001110011110 +100011100010 +111110010111 +100111111111 +100000011011 +000110111101 +010100010111 +110000011111 +011011011001 +101110011100 +010110001111 +101010111001 +100010011111 +011110110101 +001001101010 +000001001000 +101101011000 +101100001111 +000110000011 +011011100001 +010011100001 +101111011100 +110110100000 +010100010000 +110111111000 +110000110111 +011000000101 +001100011111 +111000011010 +000110101010 +011000101001 +110010100110 +100011111010 +011111000111 +010001100101 +101000011110 +011110010010 +111001100000 +000011011010 +000011111110 +101001001001 +100110010010 +110101010111 +010011111000 +010111001111 +010101001011 +111001010100 +011001011001 +110011110111 +110001001011 +101101001011 +000110010111 +110110111010 +001001100110 +111010011011 +001101000101 +100110001011 +010000101000 +101111001011 +110011011110 +011110111001 +101100000010 +010101101101 +010100001010 +000111010101 +001100000111 +010001010010 +001110000110 +000001010000 +100010000101 +010010101101 +011000110110 +111111100000 +111111010011 +010100010001 +101011000010 +111010101000 +011010001010 +111001000001 +111010010000 +101010101100 +101011110110 +110010100010 +011001001100 +100100111010 +101011011101 +110000001000 +010011011101 +000011011000 +101100101111 +110001111111 +110010010010 +001011011010 +110101111110 +110000111010 +011100011110 +110110001000 +000101000001 +100000010100 +110000110000 +110000101100 +101101000001 +110011101001 +101110010101 +110101110101 +000110100000 +100111101111 +111101011001 +110001111101 +100010100001 +101011111100 +000011010111 +110100110101 +111100010100 +011001110011 +010000110000 +110110011100 +001000110101 +010001111111 +001000000110 +101001001100 +011000001011 +101101010110 +101100011101 +001111001010 +110011000010 +010110111001 +000011000000 +011110100000 +111001001010 +110010100101 +110001101001 +001100110100 +110100011111 +100010001001 +100101001010 +110001011000 +111110011111 +001001000010 +101011001010 +110111111001 +101000000111 +000110000000 +110011110000 +111001011110 +110000010010 +010000101101 +010010100101 +011110010000 +010011100011 +111011100110 +001001000011 +110000010101 +010010010100 +110100100111 +111111010110 +111001110010 +110100010010 +011111111010 +110000011011 +001011000101 +101010000010 +000111100011 +010000110110 +111111011001 +100001001001 +111010011100 +001111110000 +010111111001 +101101000111 +100110011111 +000000100111 +111001111010 +100001110000 +010110101101 +111111111110 +101101011010 +101101000011 +010011001001 +111111000010 +011110000010 +101110101101 +110010110010 +101111100101 +101011100000 +000001110111 +010011011000 +010011000101 +101101010000 +111011110111 +100111111010 +000001110010 +010011110100 +011100001010 +101101001111 +011101100001 +001111001011 +000000010101 +000100110101 +100111001011 +000111011001 +100010011110 +111100100101 +011010111001 +011011111101 +010100111011 +010100110100 +101111111001 +110001100110 +110001110001 +010110100011 +111111110100 +011101000010 +011111101111 +001101001011 +001010100110 +111001010000 +111111100110 +001101001100 +010110011010 +011101111000 +101000010111 +100110010101 +011000111010 +011100010011 +110011000111 +001101010101 +101110001101 +000001011100 +001011100111 +111111010101 +000110010110 +100110000011 +011000111011 +111001011111 +100001010000 +001000100011 +011011111111 +111001001110 +000001010111 +001001001111 +001001100010 +111100101110 +101101100100 +000111101010 +011101101110 +101111001000 +010101110111 +100001011111 +011110011111 +010111010000 +101100110100 +001110011010 +000110001100 +110100101011 +101010001101 +010100001101 +111101011111 +011110111111 +110100001001 +101010000001 +110100011001 +100011011011 +101001111111 +111101100011 +100101001100 +000010101011 +101111010010 +100001110111 +010000011100 +011101110100 +100000001111 +100010110111 +101011110101 +000001000111 +010011110110 +000001000010 +101010010010 +100111110101 +000010001111 +001110000100 +110100001101 +011001001011 +000100110000 +000000011101 +011011100000 +011000001110 +000011101111 +110111010101 +011000001010 +010001111101 +011111011001 +001010111011 +010000011111 +001100000011 +110110001110 +100000000010 +010101011010 +101001100110 +000110011001 +110101001110 +100111000111 +111101101100 +100101111011 +011111100000 +000000101011 +001111011110 +101100100100 +010010110001 +000110110001 +011100111001 +001011000100 +111100001101 +100010001101 +010101010111 +001011101110 +110111101110 +000010000101 +101111001111 +101110000000 +010000011110 +101111000101 +000101001011 +011101000100 +001001111110 +001001111111 +100111000110 +000101110010 +011001001111 +100000111110 +101000001100 +001110010001 +010101011111 +010110001101 +000001000101 +010100111101 +100000101010 +111111111101 +011111001101 +111000001111 +100100001011 +101111010011 +111111110111 +100101111111 +100111100111 +011000110111 +011010000001 +010010110000 +111000110100 +111100010110 +100010100111 +011010111111 +110101100011 +001111100001 +101001011110 +100011110011 +100111110111 +100000100100 +111010110011 +001011100101 +101101010001 +111010111110 +000100010110 +111101001111 +101001001111 +000001010101 +111011101001 +010101111111 +111110101000 +101101111011 +010100001100 +101011110001 +010011101111 +011001001001 +001000001001 +100100011111 +010111100001 +111101011110 +110011110101 +100101000010 +100011110001 +000111111010 +010001011111 +011110011011 +100100000000 +011010011001 +010001100000 +011111001100 +101011000110 +110100101110 +101000111011 +011011001000 +100111000010 +101110011101 +000110000001 +001101001101 +100110011000 +011110111010 +110101010000 +100100111000 +011111000011 +111101010101 +100011101100 +000101110100 +010110101010 +101001111110 +011100010110 +001100010100 +010101110001 +100101110111 +110110100101 +100011000011 +100101000101 +001111110011 +101100010111 +001011110101 +001010110001 +110000010011 +100111100100 +100110110010 +101101110110 +000100101011 +101111100100 +011010110110 +101110010111 +000010101110 +001000000111 +100000110110 +001000000000 +111011101000 +111011011001 +000011111011 +000010101101 +011100111011 +000111010000 +000010110001 +011100110101 +001111110111 +000110100011 +010010001010 +010100000001 +111101101101 +010010010011 +110101100100 +011001010100 +100101110100 +110111011100 +110001110011 +011011001011 +110011011011 +101110101111 +111011000001 +110010001111 +000001000000 +101101111100 +000111000001 +000001011001 +110100110000 +110101011100 +010110011000 +010110010000 +010110000011 +010010010000 +100001100010 +011110110001 +111100101010 +101111111010 +101010110001 +000110011011 +010110000001 +001110111001 +000111101011 +010110110110 +000000000101 +000100010000 +110000010000 +001011011101 +011111000101 +001110101010 +101110110111 +110101110111 +101111000110 +110110000011 +110001110010 +011111101000 +010111100110 +011100111111 +111101100100 +110111110100 +100010010000 +110101000111 +111000000111 +111111011010 +100001111010 +010011011100 +011011100101 +110100101000 +001101110010 +000010110100 +110001010101 +100000011100 +101101100111 +011100111110 +111110001110 +010011101101 +001001001110 +011001100001 +001010010100 +010011010011 +001111100010 +001110001100 +011011010010 +010100000100 +011010010011 +101110011010 +001111101000 +001110011011 +000001111110 +110110101001 +101000000110 +000010000111 +100111111001 +110111001101 +110101101011 +110101100110 +101010110011 +000110100001 +110011100100 +001011101101 +011001001010 +100101100110 +010001100001 +110110001101 +100111011001 +100100111100 +000001111010 +110000111011 +110101100000 +001111111111 +010010100110 +001011111100 +111011000110 +101011010110 +001100011110 +010010010001 +011001110111 +110110110001 +010110100000 +110010011001 +001111000001 +100100010100 +000001111100 +000011101001 +101001110010 +011100000111 +001000011110 +010001111100 +010010110100 +110000111000 +100100001100 +010111100010 +010010001000 +100110001110 +111101110100 +011111011000 +001000110000 +000010100000 +010111000000 +001111101110 +000111110101 +001000001011 +111100001001 +011010011111 +011101101111 +000101011011 +000100000101 +001000010101 +000011000001 +011011010100 +011101100101 +000010110111 +001101000011 +000111001000 +001010000111 +111010101110 +100001111111 +101101110000 +010111011101 +111010111000 +011111000110 +011100001011 +101011100110 +011011100100 +010010000001 +001100101011 +000110111010 +010110011101 +010100101101 +100001100101 +011011010111 +111010111001 +111000001010 +100101011110 +001000011001 +101001101001 +011111000001 +010010111110 +101110110110 +111110010011 +100111011100 +001100100011 +100010101100 +111100001110 +010101101111 +010001000111 +110101111010 +011100100101 +110001010011 +000011100001 +001010111001 +011100011010 +010101010101 +001011000000 +101011110111 +011001110010 +010000001011 +000011100010 +010010000011 +011001111010 +000101011100 +111010000101 +001011111011 +011011101101 +100100110111 +111000101010 +100001110101 +101110010100 +000001100111 +101001101111 +100000001100 +110000101000 +110111011010 +010001001010 +000100000001 +110110101011 +011111101011 +101001100010 +000111100001 +010010001011 +101001010110 +011011100011 +000111011101 +100000100101 +000010100011 +111010001011 +111110111111 +101000111000 +110100100011 +010001110010 +001000010000 +111101011011 +110100011011 +010101100110 +010001101111 +001111011111 +101111110110 +011011101111 +000010101111 +000000110011 +011011000111 +010001000110 +010111101111 +110101011111 +001001000111 +011011001110 +100111110110 +111100100001 +111010100010 +010010000010 +000111110111 +111101000100 +000011110011 +111000101111 +110010011111 +000001101001 +001110101001 +011111101110 +110111010010 +011100110010 +100011000111 +000000010011 +011011111100 +011110010101 +110111101011 +011001111101 +010101010110 +011110011001 +111100011100 +011001010001 +000110110101 +000111010010 +101011101011 +101010100000 +011101011001 +001110111111 +011011010110 +110111100001 +100011111011 +001010011101 +111001101101 +011100001000 +011010011100 +100111010011 +000010010110 +010110010001 +111010010110 +111111110101 +100011000101 +011010001001 +111010001010 +000100000110 +011010001000 +100110101001 +010111111011 +010111100011 +011101010100 +101000011001 +101001110111 +111001010101 +100110111111 +111010110110 +100000011000 +110010100001 +001110011111 +010001011010 +011100100011 +010111011110 +100110110100 +111000001000 +110110101000 +000000001111 +010111101010 +000100000100 +111000110010 +011111110011 +001100100001 +010100000111 +111010100111 +010001101110 +101111110010 +011111000100 +101100111110 +010111101100 +011110111000 +110001000100 +011101000111 +011011101000 +000100100110 +100110100110 +000000001011 +010101001111 +110001000001 +100011010011 +101000100011 +011011010011 +100010001110 +100111101001 +101111111111 +111010011001 +011000010100 +110101011101 +100110101011 +010000011001 +010011011001 +010101000101 +010100011111 +100111001000 +111110100011 +000110010010 +000000010010 +101110001100 +111010000011 +100001001000 +000011010101 +000100011000 +001111111100 +011110101000 +101111011111 +100000111011 +101001100011 +001001100100 +000100010100 +010111101101 +101001111010 +011000101011 +111011010010 +011001101001 +011101010110 +011011110011 +010010101010 +001111010100 +100000010110 +001101000111 +000010101010 +110010001001 +011001111100 +000100001000 +010111001011 +101111100111 +100111100011 +100001010101 +100111011011 +100101000110 +011010100110 +100011101110 +111010110010 +010000100000 +100100110110 +011001101101 +011111100100 +101100101101 +101010110100 +101001000111 +110100010100 +011101001000 +101110101100 +111100010001 +001101011101 +111111110110 +101110001011 +001100101111 +110000001010 +110011001000 +011100000110 +011001101000 +001100001011 +111000111011 +111100000111 +010000000001 +000101011111 +001000101110 +101101101011 +111111110010 +111000001110 +110101111100 +101100010011 +010011110111 +100100010111 +111001101001 +101000001011 +110001110111 +100011111100 +000101011110 +011000101000 +001010011110 +100111111110 +100000111010 +001111010101 +011111010100 +001101101100 +010011111001 +001010101100 +001110111101 +000101010000 +100101101011 +010100101010 +000000001001 +010011000100 +010001000100 +110101100101 +110011011111 +100001010111 +111111011000 +010111111100 +111000101000 +101011101100 +111111011100 +001110110100 +000010100010 +111101110001 +101011000000 +101101000101 +110000000100 +110111111101 +101110100110 +111011000000 +001011010000 +100100101001 +111110101010 +111011110011 +111000000011 +000101101001 +110100011100 +111101000000 +100000100001 +010110001011 +001100111011 +110000100010 +111001010111 +100100001111 +110111111110 +010111000101 +110000010111 +100011010000 +101010110111 +011100101110 +001110001000 +110011100001 +100101001110 +110110110110 +101110001001 +011011001001 +110000101101 +001000001101 +001000000010 +110110010000 +011110001100 +100001011101 +000001010100 +010100111110 +101110111111 +101010101110 +001100010000 +100000001011 +010011101100 +101011011001 +111100000000 +011011110001 +001110001110 +010100100101 +111011101100 +011110101101 +010110100010 +101010001111 +110110000101 +101000110110 +101101001110 +111111101111 +001001110010 +001001011010 +111100100110 +000101010011 +100100001000 +110111010000 +010010001111 +000000100101 +001101110100 +101010110010 +011110010111 +100011001110 +111011010011 +110011111001 +110100100100 +110101001000 +110001111011 +010110001100 +011110111100 +010100000101 \ No newline at end of file diff --git a/day3/program.js b/day3/program.js new file mode 100644 index 0000000..a1e0658 --- /dev/null +++ b/day3/program.js @@ -0,0 +1,64 @@ +export default function Day(data) { + const bitCount = bitValues(data); + part1(data, bitCount); + part2(data, bitCount); +} + +const part1 = (instructions, count) => { + let gamma = ""; + let epsilon = ""; + + for (const row in count) { + gamma += count[row]["0"] > count[row]["1"] ? "0" : "1"; + epsilon += count[row]["0"] > count[row]["1"] ? "1" : "0"; + } + + console.log("part 1", gamma, epsilon, parseInt(gamma, 2) * parseInt(epsilon, 2)); +}; + +const part2 = (instructions, count) => { + function removeBasedOnBitPosition(rows, bitPosition, value) { + return rows.filter((row) => row.substr(bitPosition, 1) !== value); + } + + function removeFromArray(rows, invert) { + let result; + for (const bitRow in count) { + count = bitValues(rows); + + const bit = count[bitRow]; + let check = bit["0"] > bit["1"]; + if (invert) check = !check; + + rows = removeBasedOnBitPosition(rows, parseInt(bitRow), check ? "0" : "1"); + + if (rows.length === 1) { + result = rows[0]; + break; + } + } + return result; + } + + const oxygen = removeFromArray(instructions, false); + const co2 = removeFromArray(instructions, true); + + console.log("part 2", oxygen, co2, parseInt(oxygen, 2) * parseInt(co2, 2)); +}; + +const bitValues = (instructions) => { + let count = {}; + + for (const binary of instructions) { + const nums = binary.split(""); + + nums.forEach((element, i) => { + if (!count.hasOwnProperty(i)) { + count[i] = { 0: 0, 1: 0 }; + } + count[i][element]++; + }); + } + + return count; +}; From 7ef97d8684967166c2808cb2dac99b8345768c4f Mon Sep 17 00:00:00 2001 From: Rene Pot Date: Thu, 10 Nov 2022 20:44:54 +0100 Subject: [PATCH 23/59] prepare AoC 2022 --- day1/input.txt | 2000 ----------------------------------------------- day1/program.js | 43 +- day2/input.txt | 1000 ------------------------ day2/program.js | 52 -- day3/input.txt | 1000 ------------------------ day3/program.js | 64 -- package.json | 3 +- 7 files changed, 3 insertions(+), 4159 deletions(-) delete mode 100644 day2/input.txt delete mode 100644 day2/program.js delete mode 100644 day3/input.txt delete mode 100644 day3/program.js diff --git a/day1/input.txt b/day1/input.txt index b6b18e5..e69de29 100644 --- a/day1/input.txt +++ b/day1/input.txt @@ -1,2000 +0,0 @@ -176 -184 -196 -199 -204 -206 -219 -215 -216 -217 -218 -230 -231 -214 -210 -189 -174 -170 -162 -167 -173 -182 -177 -179 -180 -182 -198 -201 -200 -207 -203 -213 -231 -222 -223 -224 -209 -217 -228 -236 -243 -241 -260 -262 -258 -260 -254 -270 -271 -278 -264 -263 -262 -260 -261 -234 -229 -233 -208 -210 -211 -210 -206 -207 -209 -199 -201 -218 -210 -206 -207 -218 -221 -229 -233 -234 -235 -246 -253 -254 -260 -259 -253 -254 -275 -277 -295 -296 -299 -333 -334 -336 -337 -339 -347 -374 -369 -371 -376 -371 -374 -375 -371 -374 -381 -383 -384 -395 -396 -400 -395 -397 -399 -389 -396 -390 -404 -411 -412 -428 -424 -433 -431 -437 -473 -489 -486 -488 -479 -480 -484 -474 -475 -471 -492 -493 -501 -512 -509 -506 -519 -523 -522 -521 -535 -548 -531 -519 -523 -522 -516 -512 -522 -547 -581 -582 -580 -579 -580 -600 -595 -592 -587 -588 -591 -592 -583 -586 -584 -597 -610 -592 -581 -583 -578 -575 -582 -579 -587 -594 -592 -593 -599 -605 -609 -610 -609 -601 -604 -608 -609 -613 -614 -612 -614 -626 -627 -636 -656 -652 -655 -656 -678 -680 -686 -687 -654 -663 -669 -664 -668 -647 -652 -659 -653 -654 -656 -637 -638 -621 -620 -621 -609 -604 -612 -616 -612 -617 -614 -610 -607 -608 -613 -617 -624 -625 -622 -604 -606 -610 -609 -607 -605 -618 -622 -635 -636 -640 -667 -668 -664 -674 -675 -682 -694 -698 -704 -717 -723 -724 -699 -695 -693 -674 -670 -683 -685 -683 -676 -675 -678 -677 -675 -657 -670 -675 -673 -658 -660 -673 -685 -675 -676 -677 -671 -689 -688 -690 -691 -692 -709 -713 -712 -715 -739 -731 -734 -762 -764 -746 -728 -729 -727 -730 -745 -773 -781 -787 -806 -807 -808 -815 -822 -837 -844 -842 -841 -850 -853 -838 -841 -845 -846 -844 -849 -846 -847 -859 -851 -854 -857 -873 -882 -892 -896 -883 -896 -895 -886 -879 -878 -877 -878 -881 -891 -898 -913 -914 -920 -922 -928 -929 -915 -917 -918 -913 -926 -929 -937 -939 -940 -936 -938 -939 -948 -946 -951 -950 -918 -917 -924 -917 -918 -921 -919 -917 -929 -950 -985 -988 -991 -996 -1002 -995 -990 -999 -989 -990 -991 -992 -991 -992 -993 -991 -994 -996 -997 -989 -993 -975 -973 -972 -973 -971 -969 -976 -983 -980 -987 -1003 -1002 -1000 -993 -994 -993 -972 -970 -991 -988 -989 -993 -996 -1002 -1003 -1008 -1007 -1014 -1015 -1022 -1012 -1029 -1030 -1029 -1030 -1025 -1026 -1010 -1006 -1008 -1006 -1012 -1015 -1029 -1067 -1102 -1107 -1108 -1103 -1108 -1103 -1120 -1119 -1118 -1119 -1118 -1119 -1132 -1137 -1148 -1150 -1153 -1166 -1169 -1199 -1205 -1208 -1216 -1210 -1217 -1216 -1217 -1218 -1198 -1199 -1197 -1198 -1193 -1202 -1241 -1242 -1239 -1241 -1238 -1233 -1234 -1235 -1237 -1228 -1229 -1235 -1218 -1236 -1237 -1208 -1246 -1251 -1246 -1248 -1242 -1241 -1243 -1231 -1226 -1224 -1221 -1220 -1224 -1219 -1227 -1214 -1237 -1261 -1271 -1268 -1292 -1304 -1303 -1312 -1287 -1286 -1292 -1295 -1297 -1304 -1311 -1312 -1309 -1314 -1307 -1316 -1320 -1319 -1316 -1333 -1332 -1316 -1315 -1320 -1321 -1335 -1355 -1353 -1356 -1325 -1333 -1335 -1339 -1360 -1361 -1362 -1364 -1361 -1363 -1362 -1363 -1364 -1392 -1397 -1398 -1405 -1406 -1408 -1406 -1394 -1391 -1407 -1413 -1415 -1413 -1419 -1422 -1416 -1422 -1421 -1431 -1433 -1437 -1439 -1443 -1446 -1449 -1439 -1444 -1452 -1460 -1468 -1469 -1486 -1500 -1507 -1513 -1512 -1511 -1531 -1532 -1541 -1550 -1557 -1561 -1557 -1560 -1563 -1564 -1565 -1588 -1589 -1592 -1591 -1593 -1598 -1603 -1590 -1604 -1608 -1610 -1623 -1598 -1592 -1601 -1598 -1600 -1601 -1599 -1609 -1607 -1608 -1613 -1605 -1601 -1605 -1610 -1611 -1609 -1608 -1615 -1620 -1629 -1628 -1641 -1632 -1630 -1635 -1634 -1629 -1630 -1632 -1630 -1641 -1661 -1655 -1657 -1653 -1619 -1629 -1607 -1600 -1603 -1591 -1596 -1599 -1601 -1582 -1591 -1593 -1596 -1597 -1600 -1596 -1597 -1603 -1624 -1630 -1628 -1626 -1628 -1631 -1628 -1629 -1625 -1627 -1620 -1613 -1614 -1638 -1637 -1626 -1624 -1623 -1621 -1620 -1621 -1598 -1610 -1611 -1622 -1629 -1646 -1655 -1677 -1678 -1679 -1699 -1702 -1715 -1710 -1722 -1719 -1715 -1716 -1724 -1735 -1734 -1727 -1743 -1748 -1745 -1742 -1755 -1754 -1734 -1738 -1729 -1732 -1733 -1726 -1723 -1744 -1745 -1746 -1748 -1778 -1777 -1780 -1792 -1798 -1799 -1800 -1793 -1794 -1797 -1802 -1796 -1800 -1820 -1823 -1824 -1823 -1828 -1827 -1824 -1847 -1842 -1846 -1847 -1844 -1833 -1826 -1834 -1839 -1846 -1854 -1842 -1845 -1860 -1874 -1869 -1871 -1869 -1870 -1874 -1875 -1891 -1893 -1894 -1886 -1885 -1853 -1871 -1868 -1866 -1875 -1885 -1882 -1883 -1879 -1884 -1893 -1918 -1919 -1932 -1933 -1930 -1949 -1952 -1949 -1945 -1944 -1930 -1950 -1952 -1951 -1981 -1980 -1992 -1993 -1981 -1979 -2007 -1989 -1987 -1996 -2006 -2012 -2028 -2037 -2041 -2039 -2046 -2047 -2055 -2058 -2079 -2086 -2087 -2088 -2079 -2080 -2079 -2082 -2089 -2092 -2097 -2113 -2115 -2119 -2109 -2111 -2110 -2108 -2100 -2099 -2107 -2103 -2104 -2115 -2110 -2116 -2117 -2113 -2120 -2128 -2129 -2115 -2114 -2125 -2148 -2145 -2147 -2160 -2159 -2162 -2155 -2161 -2162 -2160 -2162 -2149 -2150 -2152 -2170 -2171 -2172 -2171 -2186 -2187 -2186 -2188 -2196 -2185 -2195 -2196 -2200 -2197 -2195 -2190 -2191 -2189 -2199 -2200 -2208 -2204 -2203 -2209 -2231 -2234 -2247 -2245 -2277 -2279 -2281 -2282 -2279 -2294 -2296 -2304 -2287 -2294 -2293 -2297 -2311 -2339 -2343 -2344 -2323 -2360 -2369 -2371 -2372 -2373 -2372 -2384 -2383 -2390 -2412 -2419 -2421 -2432 -2428 -2427 -2449 -2459 -2456 -2457 -2459 -2469 -2472 -2474 -2472 -2475 -2487 -2479 -2481 -2482 -2481 -2502 -2492 -2493 -2496 -2522 -2529 -2550 -2551 -2549 -2547 -2546 -2551 -2553 -2555 -2552 -2547 -2536 -2534 -2518 -2517 -2513 -2511 -2495 -2508 -2500 -2501 -2514 -2524 -2551 -2552 -2561 -2563 -2571 -2573 -2565 -2559 -2564 -2565 -2568 -2570 -2556 -2546 -2552 -2554 -2581 -2574 -2573 -2572 -2575 -2577 -2578 -2579 -2580 -2579 -2589 -2586 -2587 -2611 -2615 -2614 -2618 -2619 -2618 -2626 -2630 -2623 -2627 -2628 -2627 -2628 -2657 -2658 -2672 -2673 -2685 -2668 -2658 -2660 -2668 -2669 -2671 -2673 -2669 -2668 -2675 -2668 -2669 -2652 -2672 -2675 -2678 -2677 -2699 -2700 -2701 -2712 -2710 -2712 -2711 -2710 -2721 -2722 -2727 -2731 -2733 -2731 -2734 -2738 -2751 -2745 -2744 -2750 -2765 -2767 -2773 -2771 -2770 -2773 -2778 -2782 -2792 -2796 -2794 -2806 -2807 -2820 -2823 -2836 -2834 -2827 -2826 -2830 -2828 -2829 -2831 -2838 -2845 -2846 -2863 -2860 -2862 -2861 -2862 -2863 -2864 -2871 -2873 -2874 -2875 -2893 -2892 -2893 -2898 -2924 -2942 -2956 -2950 -2952 -2990 -2993 -2994 -3001 -3017 -3022 -3017 -3016 -3017 -3012 -3018 -3019 -3018 -3048 -3058 -3059 -3062 -3072 -3073 -3071 -3072 -3065 -3093 -3094 -3095 -3094 -3100 -3101 -3084 -3085 -3079 -3077 -3099 -3100 -3117 -3118 -3121 -3122 -3137 -3108 -3110 -3109 -3108 -3113 -3102 -3103 -3119 -3122 -3126 -3132 -3137 -3132 -3152 -3153 -3163 -3164 -3176 -3175 -3181 -3190 -3191 -3198 -3195 -3177 -3178 -3177 -3183 -3202 -3203 -3192 -3184 -3185 -3191 -3196 -3195 -3173 -3183 -3182 -3184 -3185 -3193 -3210 -3208 -3207 -3214 -3221 -3234 -3233 -3263 -3284 -3283 -3284 -3270 -3259 -3268 -3253 -3259 -3246 -3251 -3246 -3251 -3256 -3249 -3251 -3261 -3260 -3259 -3267 -3277 -3273 -3282 -3286 -3284 -3285 -3288 -3295 -3270 -3269 -3277 -3276 -3281 -3280 -3292 -3293 -3301 -3306 -3335 -3336 -3310 -3309 -3312 -3318 -3324 -3340 -3368 -3371 -3369 -3370 -3368 -3367 -3386 -3388 -3416 -3420 -3423 -3433 -3427 -3438 -3457 -3469 -3474 -3479 -3489 -3507 -3471 -3468 -3480 -3486 -3490 -3493 -3495 -3496 -3495 -3479 -3480 -3485 -3490 -3489 -3491 -3488 -3494 -3493 -3515 -3517 -3526 -3519 -3520 -3525 -3515 -3516 -3517 -3508 -3510 -3512 -3515 -3536 -3535 -3530 -3540 -3542 -3550 -3530 -3550 -3553 -3537 -3536 -3542 -3547 -3544 -3562 -3561 -3551 -3546 -3547 -3562 -3561 -3586 -3593 -3582 -3586 -3589 -3600 -3604 -3605 -3607 -3608 -3613 -3624 -3626 -3652 -3668 -3669 -3666 -3674 -3677 -3668 -3671 -3673 -3675 -3657 -3666 -3655 -3658 -3662 -3659 -3660 -3657 -3655 -3662 -3657 -3660 -3661 -3664 -3675 -3677 -3661 -3663 -3669 -3645 -3646 -3644 -3645 -3666 -3677 -3685 -3686 -3689 -3697 -3694 -3703 -3672 -3676 -3675 -3706 -3726 -3742 -3744 -3765 -3792 -3793 -3802 -3805 -3813 -3816 -3817 -3826 -3827 -3828 -3830 -3826 -3825 -3824 -3816 -3821 -3820 -3821 -3825 -3846 -3848 -3847 -3846 -3849 -3854 -3844 -3860 -3859 -3861 -3863 -3848 -3845 -3846 -3853 -3851 -3850 -3863 -3865 -3885 -3912 -3913 -3914 -3913 -3901 -3897 -3927 -3928 -3927 -3929 -3931 -3925 -3912 -3915 -3919 -3920 -3896 -3900 -3904 -3909 -3919 -3922 -3923 -3925 -3944 -3938 -3937 -3936 -3944 -3943 -3942 -3955 -3944 -3945 -3948 -3946 -3939 -3955 -3957 -3951 -3950 -3954 -3966 -3974 -3987 -3991 -3987 -3985 -3981 -3983 -3986 -3996 -4002 -4012 -4031 -4030 -4031 -4034 -4018 -4020 -4007 -4009 -4019 -4006 -4011 -4018 -4022 -4012 -4014 -4012 -4013 -4031 -4046 -4051 -4054 -4065 -4070 -4074 -4080 -4081 -4080 -4051 -4058 -4056 -4054 -4049 -4054 -4048 -4065 -4078 -4082 -4086 -4099 -4100 -4106 -4126 -4118 -4145 -4141 -4142 -4153 -4168 -4176 -4168 -4167 -4171 -4172 -4173 -4137 -4154 -4150 -4134 -4137 -4138 -4137 -4148 -4151 -4129 -4131 -4130 -4132 -4129 -4155 -4156 -4157 -4162 -4179 -4185 -4187 -4186 -4177 -4167 -4174 -4178 -4176 -4174 -4177 -4180 -4192 -4206 -4212 -4192 -4201 -4193 -4213 -4194 -4201 -4181 -4184 -4181 -4192 -4195 -4205 -4209 -4199 -4201 -4200 -4201 -4219 -4218 -4220 -4221 -4235 -4236 -4229 -4235 -4233 -4234 -4240 -4239 -4211 -4216 -4223 -4210 -4224 -4225 -4223 -4224 -4223 -4233 -4232 -4240 -4248 -4240 -4241 -4246 -4247 -4244 -4245 -4246 -4256 -4261 -4274 -4268 -4288 -4289 -4290 -4301 -4299 -4303 -4304 -4303 -4297 -4299 -4288 -4296 -4293 -4296 -4295 -4302 -4303 -4319 -4313 -4315 -4320 -4322 -4326 -4328 -4337 -4338 -4351 -4370 -4381 -4388 -4413 -4418 -4417 -4416 -4415 -4436 -4440 -4441 -4464 -4461 -4468 -4469 -4471 -4480 -4496 -4495 -4496 -4497 -4494 -4461 -4462 -4461 -4462 -4461 -4457 -4466 -4467 -4468 -4469 -4491 -4497 -4510 -4500 -4485 -4497 -4508 -4506 -4500 -4501 -4514 -4516 -4517 -4516 -4543 -4549 -4529 -4523 -4522 -4540 -4539 -4540 -4543 -4545 -4530 -4532 -4531 -4533 -4535 -4511 -4517 -4520 -4521 -4523 -4517 -4525 -4526 -4538 -4566 -4567 -4564 -4575 -4577 -4576 -4574 -4580 -4594 -4595 -4596 -4621 -4622 -4629 -4632 -4641 -4642 -4658 -4659 -4660 -4685 -4687 -4708 -4727 -4735 -4739 -4745 -4744 -4753 -4755 -4757 -4759 -4782 -4785 -4777 -4783 -4786 -4789 -4794 -4802 -4803 -4833 -4849 -4857 -4865 -4866 -4872 -4869 -4876 -4874 -4877 -4899 -4900 -4901 -4893 -4892 -4904 -4907 -4900 -4907 -4908 -4903 -4890 -4895 -4896 -4876 -4880 -4888 -4889 -4894 -4893 -4924 -4927 -4922 -4893 -4901 -4891 -4908 -4916 -4915 -4920 -4931 -4954 -4943 -4953 -4954 -4959 -4949 -4952 -4936 -4935 -4916 -4922 -4923 -4922 -4928 -4929 -4930 -4927 -4923 -4926 -4924 -4931 -4935 -4955 -4966 -4987 -4988 -4990 -4992 -4991 -4999 -5001 -5006 -5007 -5021 -5034 -5047 -5050 -5055 -5091 -5096 -5101 -5100 -5105 -5108 -5117 -5114 -5127 -5129 -5127 -5153 -5152 -5154 -5155 -5156 -5142 -5154 -5180 -5177 -5183 -5184 -5201 -5204 -5205 -5222 -5212 -5217 -5222 -5251 -5278 -5277 -5302 -5319 -5326 -5333 -5327 -5321 -5337 -5361 -5362 -5368 -5369 -5366 -5368 -5385 -5383 -5384 -5393 -5403 -5427 -5428 -5429 -5428 -5459 -5442 -5441 -5433 -5436 -5428 -5429 -5428 -5427 -5433 -5418 -5419 -5421 -5425 -5426 -5435 -5441 -5445 -5442 -5446 -5454 -5458 -5454 -5456 -5452 -5423 -5426 -5425 -5418 -5417 -5420 -5425 -5420 -5438 -5447 -5450 -5451 -5453 -5450 -5453 -5449 -5457 -5464 -5455 -5460 -5443 -5439 -5425 -5423 -5434 -5438 -5437 -5412 -5408 -5405 -5407 -5420 -5426 -5452 -5459 -5460 -5490 -5498 -5508 -5528 -5531 -5516 -5517 -5512 -5524 -5529 -5511 -5525 -5527 -5538 -5539 -5546 -5550 -5549 -5552 -5554 -5559 -5551 -5552 -5556 -5559 -5579 -5584 -5590 -5593 -5592 -5595 -5604 -5600 -5586 -5591 -5572 -5571 -5583 -5584 -5578 -5579 -5580 -5579 -5570 -5571 -5574 -5577 -5583 -5584 -5569 -5586 -5582 -5561 -5550 -5554 -5544 -5550 -5529 -5538 -5551 -5569 -5570 -5584 -5588 -5596 \ No newline at end of file diff --git a/day1/program.js b/day1/program.js index cd64cae..f1fee03 100644 --- a/day1/program.js +++ b/day1/program.js @@ -1,44 +1,3 @@ export default function Day(data) { - let increases = 0; - let lastValue = false; - - // prepare data - data.forEach((row, i) => { - data[i] = parseInt(row); - }); - - // part 1 - data.forEach((row) => { - if (lastValue !== false && row > lastValue) { - increases++; - } - - lastValue = row; - }); - - console.log("Part 1:", increases); - - // part 2 - let rollingThrees = []; - let lastSum = false; - let increases2 = 0; - - data.forEach((row, i) => { - rollingThrees.push(row); - - if (rollingThrees.length > 3) { - rollingThrees.shift(); - } - if (rollingThrees.length === 3) { - const sum = rollingThrees.reduce((a, b) => a + b); - - if (lastSum !== false && sum > lastSum) { - increases2++; - } - - lastSum = sum; - } - }); - - console.log("Part 2:", increases2); + } diff --git a/day2/input.txt b/day2/input.txt deleted file mode 100644 index cde6bfc..0000000 --- a/day2/input.txt +++ /dev/null @@ -1,1000 +0,0 @@ -forward 5 -down 9 -forward 2 -up 2 -forward 4 -forward 4 -up 5 -down 3 -forward 2 -forward 9 -down 7 -forward 2 -down 2 -forward 1 -up 9 -forward 1 -forward 4 -up 5 -down 9 -forward 8 -forward 3 -up 1 -down 2 -down 3 -forward 7 -forward 2 -up 3 -forward 9 -forward 9 -down 3 -up 8 -forward 5 -forward 7 -forward 2 -down 7 -forward 5 -down 4 -up 7 -forward 8 -forward 1 -down 3 -down 1 -forward 6 -up 7 -forward 6 -down 3 -forward 9 -forward 6 -up 3 -down 1 -forward 8 -up 7 -down 9 -down 2 -down 1 -down 5 -forward 4 -down 8 -forward 2 -down 5 -down 6 -down 5 -forward 5 -down 8 -up 8 -forward 3 -forward 4 -forward 8 -forward 9 -down 2 -forward 7 -forward 3 -forward 9 -down 3 -up 1 -down 5 -forward 2 -down 9 -down 2 -down 5 -down 2 -down 9 -up 3 -forward 6 -up 9 -down 1 -forward 8 -up 6 -down 1 -forward 1 -up 1 -forward 3 -down 8 -down 1 -down 9 -forward 4 -forward 1 -down 3 -forward 8 -down 9 -forward 7 -up 6 -down 8 -down 6 -down 8 -down 7 -down 1 -down 8 -down 1 -forward 5 -down 9 -forward 4 -down 2 -forward 8 -up 1 -forward 7 -down 7 -down 6 -forward 4 -forward 6 -down 2 -down 2 -up 7 -down 2 -up 9 -forward 6 -forward 3 -down 8 -forward 9 -down 9 -down 9 -down 8 -forward 2 -forward 5 -forward 8 -forward 1 -down 3 -forward 1 -forward 2 -forward 9 -up 5 -forward 4 -forward 2 -down 6 -forward 3 -forward 7 -forward 1 -forward 8 -down 7 -forward 4 -up 3 -down 9 -up 2 -forward 2 -forward 7 -down 9 -up 9 -forward 9 -up 8 -up 7 -down 8 -down 9 -forward 1 -forward 5 -up 7 -down 3 -up 9 -forward 9 -down 4 -down 7 -down 7 -down 1 -down 4 -down 5 -up 2 -forward 2 -forward 2 -forward 6 -down 7 -forward 7 -down 5 -forward 8 -down 7 -forward 6 -down 2 -up 2 -down 5 -down 1 -up 4 -down 8 -up 9 -forward 1 -down 9 -down 6 -down 8 -up 7 -up 1 -forward 7 -down 8 -forward 1 -down 4 -down 2 -forward 3 -forward 6 -forward 8 -down 2 -forward 7 -forward 8 -up 3 -down 1 -down 8 -up 3 -down 4 -down 5 -forward 6 -forward 9 -down 3 -up 2 -down 9 -up 2 -down 3 -down 9 -forward 4 -forward 6 -down 7 -down 8 -down 4 -forward 7 -up 2 -down 5 -up 3 -down 5 -up 1 -up 1 -forward 5 -forward 9 -down 9 -up 4 -up 4 -up 8 -up 5 -forward 7 -forward 6 -up 6 -down 5 -forward 4 -forward 3 -up 6 -down 6 -forward 5 -up 6 -up 7 -forward 1 -forward 2 -forward 5 -down 3 -forward 6 -down 6 -down 3 -up 9 -down 4 -down 5 -down 4 -forward 1 -down 1 -forward 3 -up 4 -forward 1 -forward 5 -up 3 -forward 6 -forward 5 -forward 9 -forward 6 -down 2 -forward 2 -down 1 -down 4 -forward 6 -forward 8 -down 8 -up 5 -forward 8 -forward 3 -forward 1 -forward 3 -forward 6 -down 1 -down 9 -up 7 -down 2 -forward 6 -down 4 -down 7 -down 5 -forward 2 -down 1 -forward 2 -forward 8 -forward 4 -up 3 -down 1 -forward 6 -forward 3 -down 3 -down 9 -forward 1 -up 5 -forward 3 -forward 3 -up 5 -down 7 -forward 8 -up 5 -forward 2 -forward 2 -down 6 -up 8 -up 5 -forward 2 -forward 1 -down 9 -forward 7 -down 5 -forward 3 -down 3 -down 5 -down 5 -up 7 -down 8 -forward 2 -forward 4 -forward 5 -forward 1 -down 6 -forward 3 -down 1 -down 7 -forward 3 -forward 7 -down 5 -down 3 -forward 6 -down 3 -down 2 -down 4 -down 9 -forward 7 -down 2 -up 2 -up 6 -up 9 -up 8 -forward 9 -down 1 -forward 4 -forward 2 -forward 7 -forward 2 -down 8 -down 3 -forward 4 -forward 6 -down 8 -forward 7 -forward 6 -up 3 -down 6 -down 1 -down 3 -down 8 -down 2 -down 7 -down 9 -forward 4 -forward 7 -forward 8 -forward 5 -forward 9 -up 5 -down 2 -forward 9 -forward 6 -up 6 -forward 7 -down 2 -down 3 -forward 4 -down 6 -down 1 -down 2 -down 8 -forward 3 -down 3 -forward 3 -down 5 -up 8 -down 5 -forward 8 -down 1 -forward 1 -forward 4 -forward 7 -down 2 -down 5 -forward 5 -down 8 -forward 2 -down 2 -forward 5 -forward 6 -forward 4 -down 7 -up 7 -down 1 -forward 7 -forward 8 -down 6 -up 7 -forward 6 -up 6 -down 8 -forward 5 -forward 8 -up 4 -up 2 -up 1 -down 8 -down 6 -up 2 -down 5 -down 1 -forward 5 -forward 7 -down 2 -up 3 -up 3 -forward 9 -down 1 -forward 6 -down 2 -forward 2 -down 1 -down 9 -forward 7 -down 5 -down 8 -up 1 -forward 1 -down 7 -forward 3 -down 4 -up 4 -down 6 -forward 1 -forward 3 -down 2 -forward 3 -forward 5 -forward 6 -up 2 -up 9 -forward 4 -down 4 -up 1 -up 3 -forward 8 -forward 1 -down 9 -down 9 -forward 2 -down 1 -up 9 -up 3 -up 1 -up 5 -forward 6 -down 9 -forward 6 -forward 9 -forward 6 -forward 4 -up 2 -down 6 -up 3 -forward 3 -forward 1 -up 4 -forward 7 -down 9 -down 3 -forward 9 -down 4 -down 8 -down 3 -up 8 -down 8 -down 8 -forward 2 -forward 8 -up 9 -forward 2 -up 6 -forward 7 -down 1 -forward 5 -forward 4 -forward 1 -forward 7 -up 9 -down 8 -forward 1 -up 5 -forward 9 -forward 2 -forward 8 -down 1 -forward 7 -down 2 -up 8 -down 6 -up 9 -up 3 -down 6 -forward 5 -down 1 -forward 1 -forward 6 -forward 6 -up 1 -forward 5 -forward 1 -up 2 -forward 9 -forward 6 -down 3 -up 1 -forward 7 -forward 2 -down 1 -forward 6 -down 3 -up 2 -down 3 -down 8 -forward 4 -down 2 -up 7 -down 6 -up 5 -down 7 -forward 4 -down 9 -down 3 -forward 2 -up 5 -up 4 -forward 9 -down 1 -up 2 -forward 4 -down 9 -down 8 -forward 5 -forward 2 -down 5 -forward 6 -down 4 -forward 7 -forward 1 -forward 6 -down 3 -down 9 -forward 9 -forward 2 -forward 6 -down 7 -down 5 -down 3 -forward 7 -down 3 -down 3 -down 4 -down 4 -down 7 -down 7 -down 7 -up 7 -up 9 -up 7 -up 3 -up 4 -down 9 -down 4 -up 3 -forward 2 -up 1 -down 9 -down 6 -up 1 -up 2 -down 7 -down 9 -up 2 -forward 7 -down 4 -forward 3 -down 1 -down 7 -forward 7 -up 7 -forward 3 -forward 1 -forward 6 -forward 2 -down 9 -forward 8 -up 8 -down 8 -down 9 -up 1 -down 4 -down 6 -down 8 -up 4 -down 1 -forward 1 -forward 1 -forward 4 -forward 7 -forward 1 -down 4 -forward 5 -up 3 -forward 4 -down 5 -down 1 -up 2 -down 7 -forward 7 -down 7 -up 9 -down 9 -down 3 -up 2 -up 8 -up 8 -up 7 -forward 7 -forward 5 -forward 3 -forward 2 -down 5 -forward 4 -forward 1 -down 6 -down 1 -forward 8 -down 6 -down 3 -down 5 -down 9 -down 3 -forward 7 -forward 6 -down 6 -forward 9 -up 7 -forward 3 -up 5 -down 5 -down 5 -forward 4 -up 6 -down 6 -forward 3 -up 2 -forward 4 -up 1 -down 5 -forward 6 -forward 9 -down 2 -up 2 -down 2 -up 7 -forward 3 -up 2 -forward 9 -forward 5 -down 5 -down 7 -down 8 -down 6 -up 9 -up 5 -forward 7 -down 8 -down 1 -forward 7 -up 2 -forward 4 -forward 2 -up 9 -down 8 -forward 1 -forward 7 -down 2 -down 3 -down 6 -down 3 -forward 1 -up 6 -forward 8 -down 9 -down 9 -forward 8 -up 8 -down 6 -forward 4 -up 1 -forward 5 -down 3 -down 7 -down 7 -down 3 -up 2 -forward 4 -down 9 -forward 2 -down 9 -forward 9 -forward 4 -forward 5 -down 4 -forward 1 -up 1 -forward 4 -up 3 -up 4 -forward 7 -down 9 -forward 6 -down 1 -down 1 -down 2 -down 4 -forward 7 -forward 8 -forward 6 -down 8 -forward 2 -down 3 -up 5 -forward 2 -up 5 -forward 8 -down 8 -down 8 -up 8 -forward 6 -up 1 -down 3 -forward 6 -down 1 -forward 9 -up 1 -forward 7 -forward 7 -down 1 -forward 5 -forward 2 -up 7 -down 1 -forward 2 -down 4 -forward 3 -down 9 -forward 6 -up 5 -forward 1 -forward 5 -down 7 -forward 6 -down 8 -forward 9 -down 1 -forward 9 -down 1 -forward 5 -up 9 -forward 1 -forward 6 -forward 5 -down 7 -down 6 -down 5 -down 9 -forward 9 -down 2 -down 8 -down 8 -forward 2 -forward 3 -forward 3 -down 3 -forward 8 -forward 8 -down 8 -forward 1 -up 1 -forward 4 -down 7 -forward 1 -up 2 -forward 9 -forward 1 -down 6 -up 9 -down 3 -down 1 -up 1 -up 6 -up 7 -forward 9 -up 2 -forward 4 -up 8 -down 6 -forward 3 -forward 7 -down 6 -down 5 -down 3 -forward 5 -down 1 -forward 2 -forward 9 -down 8 -up 6 -forward 3 -forward 2 -up 7 -down 3 -forward 5 -forward 9 -down 5 -down 1 -up 4 -down 8 -forward 1 -forward 3 -forward 3 -down 2 -forward 5 -down 1 -forward 2 -up 3 -forward 8 -down 2 -up 8 -down 6 -down 8 -forward 4 -down 4 -up 7 -up 6 -down 7 -forward 2 -up 3 -forward 3 -down 8 -forward 8 -down 5 -forward 5 -down 3 -up 7 -down 1 -down 2 -up 8 -down 6 -up 6 -down 7 -forward 5 -up 3 -forward 7 -forward 2 -down 9 -down 1 -down 4 -down 7 -forward 9 -up 7 -forward 5 -up 8 -forward 8 -up 1 -forward 2 -down 7 -down 5 -down 6 -down 4 -up 4 -forward 5 -forward 6 -up 4 -forward 8 -forward 4 -forward 3 -up 5 -down 6 -up 4 -forward 8 -down 7 -forward 3 -down 2 -down 7 -down 5 -down 4 -forward 5 -up 4 -forward 4 -down 7 -down 3 -down 9 -down 7 -forward 2 -forward 1 -down 7 -down 8 -forward 1 -forward 2 -down 5 -up 1 -down 1 -forward 5 -down 2 -forward 9 -forward 7 -down 2 -forward 6 -forward 9 -up 5 -forward 3 -up 5 -forward 7 -down 6 -down 3 -up 3 -down 4 -forward 2 -up 4 -forward 5 -up 9 -down 3 -up 1 -down 1 -up 3 -forward 4 -forward 5 -down 3 -forward 5 -down 6 -down 2 -forward 5 -forward 3 -down 7 -down 8 -forward 4 -down 5 -forward 7 -forward 2 -forward 7 -down 7 -up 1 -forward 6 -down 1 -forward 1 -down 4 -forward 1 -up 6 -forward 8 -forward 6 -forward 7 -up 6 -up 7 -up 2 -down 9 -forward 4 -up 3 -down 1 -down 1 -forward 3 -down 4 -down 6 -down 8 -forward 9 -forward 6 -down 1 -forward 5 \ No newline at end of file diff --git a/day2/program.js b/day2/program.js deleted file mode 100644 index 7362019..0000000 --- a/day2/program.js +++ /dev/null @@ -1,52 +0,0 @@ -export default function Day(data) { - const instructions = data.map((instruction) => { - const instructionSplit = instruction.split(" "); - instructionSplit[1] = parseInt(instructionSplit[1]); - return instructionSplit; - }); - - part1(instructions); - part2(instructions); -} - -const part1 = (instructions) => { - let position = 0; - let depth = 0; - - for (const instruction of instructions) { - switch (instruction[0]) { - case "up": - depth -= instruction[1]; - break; - case "down": - depth += instruction[1]; - break; - case "forward": - position += instruction[1]; - break; - } - } - console.log(`Part 1: position: ${position}, depth: ${depth}`, position * depth); -}; - -const part2 = (instructions) => { - let position = 0; - let depth = 0; - let aim = 0; - - for (const instruction of instructions) { - switch (instruction[0]) { - case "up": - aim -= instruction[1]; - break; - case "down": - aim += instruction[1]; - break; - case "forward": - position += instruction[1]; - depth += aim * instruction[1]; - break; - } - } - console.log(`Part 2: position: ${position}, depth: ${depth}, aim: ${aim}`, position * depth); -}; diff --git a/day3/input.txt b/day3/input.txt deleted file mode 100644 index fac471c..0000000 --- a/day3/input.txt +++ /dev/null @@ -1,1000 +0,0 @@ -010000010010 -011001011100 -110011011101 -110100100001 -000110011110 -110101000101 -100110111001 -110000000000 -100101100111 -001001011000 -010010011010 -001110111000 -001011111010 -110010111011 -001001010101 -111111011111 -101001001110 -011001000101 -001001111100 -000101110000 -101000101101 -101000011101 -011011001111 -010100011001 -100010001000 -100010111010 -000110101100 -100101010111 -110111101111 -011101111001 -111001110110 -101101000000 -010010111101 -111101111101 -010000001110 -000111111001 -010111100101 -011101100000 -001011011111 -111010000110 -111010001001 -000000010111 -001110011110 -100011100010 -111110010111 -100111111111 -100000011011 -000110111101 -010100010111 -110000011111 -011011011001 -101110011100 -010110001111 -101010111001 -100010011111 -011110110101 -001001101010 -000001001000 -101101011000 -101100001111 -000110000011 -011011100001 -010011100001 -101111011100 -110110100000 -010100010000 -110111111000 -110000110111 -011000000101 -001100011111 -111000011010 -000110101010 -011000101001 -110010100110 -100011111010 -011111000111 -010001100101 -101000011110 -011110010010 -111001100000 -000011011010 -000011111110 -101001001001 -100110010010 -110101010111 -010011111000 -010111001111 -010101001011 -111001010100 -011001011001 -110011110111 -110001001011 -101101001011 -000110010111 -110110111010 -001001100110 -111010011011 -001101000101 -100110001011 -010000101000 -101111001011 -110011011110 -011110111001 -101100000010 -010101101101 -010100001010 -000111010101 -001100000111 -010001010010 -001110000110 -000001010000 -100010000101 -010010101101 -011000110110 -111111100000 -111111010011 -010100010001 -101011000010 -111010101000 -011010001010 -111001000001 -111010010000 -101010101100 -101011110110 -110010100010 -011001001100 -100100111010 -101011011101 -110000001000 -010011011101 -000011011000 -101100101111 -110001111111 -110010010010 -001011011010 -110101111110 -110000111010 -011100011110 -110110001000 -000101000001 -100000010100 -110000110000 -110000101100 -101101000001 -110011101001 -101110010101 -110101110101 -000110100000 -100111101111 -111101011001 -110001111101 -100010100001 -101011111100 -000011010111 -110100110101 -111100010100 -011001110011 -010000110000 -110110011100 -001000110101 -010001111111 -001000000110 -101001001100 -011000001011 -101101010110 -101100011101 -001111001010 -110011000010 -010110111001 -000011000000 -011110100000 -111001001010 -110010100101 -110001101001 -001100110100 -110100011111 -100010001001 -100101001010 -110001011000 -111110011111 -001001000010 -101011001010 -110111111001 -101000000111 -000110000000 -110011110000 -111001011110 -110000010010 -010000101101 -010010100101 -011110010000 -010011100011 -111011100110 -001001000011 -110000010101 -010010010100 -110100100111 -111111010110 -111001110010 -110100010010 -011111111010 -110000011011 -001011000101 -101010000010 -000111100011 -010000110110 -111111011001 -100001001001 -111010011100 -001111110000 -010111111001 -101101000111 -100110011111 -000000100111 -111001111010 -100001110000 -010110101101 -111111111110 -101101011010 -101101000011 -010011001001 -111111000010 -011110000010 -101110101101 -110010110010 -101111100101 -101011100000 -000001110111 -010011011000 -010011000101 -101101010000 -111011110111 -100111111010 -000001110010 -010011110100 -011100001010 -101101001111 -011101100001 -001111001011 -000000010101 -000100110101 -100111001011 -000111011001 -100010011110 -111100100101 -011010111001 -011011111101 -010100111011 -010100110100 -101111111001 -110001100110 -110001110001 -010110100011 -111111110100 -011101000010 -011111101111 -001101001011 -001010100110 -111001010000 -111111100110 -001101001100 -010110011010 -011101111000 -101000010111 -100110010101 -011000111010 -011100010011 -110011000111 -001101010101 -101110001101 -000001011100 -001011100111 -111111010101 -000110010110 -100110000011 -011000111011 -111001011111 -100001010000 -001000100011 -011011111111 -111001001110 -000001010111 -001001001111 -001001100010 -111100101110 -101101100100 -000111101010 -011101101110 -101111001000 -010101110111 -100001011111 -011110011111 -010111010000 -101100110100 -001110011010 -000110001100 -110100101011 -101010001101 -010100001101 -111101011111 -011110111111 -110100001001 -101010000001 -110100011001 -100011011011 -101001111111 -111101100011 -100101001100 -000010101011 -101111010010 -100001110111 -010000011100 -011101110100 -100000001111 -100010110111 -101011110101 -000001000111 -010011110110 -000001000010 -101010010010 -100111110101 -000010001111 -001110000100 -110100001101 -011001001011 -000100110000 -000000011101 -011011100000 -011000001110 -000011101111 -110111010101 -011000001010 -010001111101 -011111011001 -001010111011 -010000011111 -001100000011 -110110001110 -100000000010 -010101011010 -101001100110 -000110011001 -110101001110 -100111000111 -111101101100 -100101111011 -011111100000 -000000101011 -001111011110 -101100100100 -010010110001 -000110110001 -011100111001 -001011000100 -111100001101 -100010001101 -010101010111 -001011101110 -110111101110 -000010000101 -101111001111 -101110000000 -010000011110 -101111000101 -000101001011 -011101000100 -001001111110 -001001111111 -100111000110 -000101110010 -011001001111 -100000111110 -101000001100 -001110010001 -010101011111 -010110001101 -000001000101 -010100111101 -100000101010 -111111111101 -011111001101 -111000001111 -100100001011 -101111010011 -111111110111 -100101111111 -100111100111 -011000110111 -011010000001 -010010110000 -111000110100 -111100010110 -100010100111 -011010111111 -110101100011 -001111100001 -101001011110 -100011110011 -100111110111 -100000100100 -111010110011 -001011100101 -101101010001 -111010111110 -000100010110 -111101001111 -101001001111 -000001010101 -111011101001 -010101111111 -111110101000 -101101111011 -010100001100 -101011110001 -010011101111 -011001001001 -001000001001 -100100011111 -010111100001 -111101011110 -110011110101 -100101000010 -100011110001 -000111111010 -010001011111 -011110011011 -100100000000 -011010011001 -010001100000 -011111001100 -101011000110 -110100101110 -101000111011 -011011001000 -100111000010 -101110011101 -000110000001 -001101001101 -100110011000 -011110111010 -110101010000 -100100111000 -011111000011 -111101010101 -100011101100 -000101110100 -010110101010 -101001111110 -011100010110 -001100010100 -010101110001 -100101110111 -110110100101 -100011000011 -100101000101 -001111110011 -101100010111 -001011110101 -001010110001 -110000010011 -100111100100 -100110110010 -101101110110 -000100101011 -101111100100 -011010110110 -101110010111 -000010101110 -001000000111 -100000110110 -001000000000 -111011101000 -111011011001 -000011111011 -000010101101 -011100111011 -000111010000 -000010110001 -011100110101 -001111110111 -000110100011 -010010001010 -010100000001 -111101101101 -010010010011 -110101100100 -011001010100 -100101110100 -110111011100 -110001110011 -011011001011 -110011011011 -101110101111 -111011000001 -110010001111 -000001000000 -101101111100 -000111000001 -000001011001 -110100110000 -110101011100 -010110011000 -010110010000 -010110000011 -010010010000 -100001100010 -011110110001 -111100101010 -101111111010 -101010110001 -000110011011 -010110000001 -001110111001 -000111101011 -010110110110 -000000000101 -000100010000 -110000010000 -001011011101 -011111000101 -001110101010 -101110110111 -110101110111 -101111000110 -110110000011 -110001110010 -011111101000 -010111100110 -011100111111 -111101100100 -110111110100 -100010010000 -110101000111 -111000000111 -111111011010 -100001111010 -010011011100 -011011100101 -110100101000 -001101110010 -000010110100 -110001010101 -100000011100 -101101100111 -011100111110 -111110001110 -010011101101 -001001001110 -011001100001 -001010010100 -010011010011 -001111100010 -001110001100 -011011010010 -010100000100 -011010010011 -101110011010 -001111101000 -001110011011 -000001111110 -110110101001 -101000000110 -000010000111 -100111111001 -110111001101 -110101101011 -110101100110 -101010110011 -000110100001 -110011100100 -001011101101 -011001001010 -100101100110 -010001100001 -110110001101 -100111011001 -100100111100 -000001111010 -110000111011 -110101100000 -001111111111 -010010100110 -001011111100 -111011000110 -101011010110 -001100011110 -010010010001 -011001110111 -110110110001 -010110100000 -110010011001 -001111000001 -100100010100 -000001111100 -000011101001 -101001110010 -011100000111 -001000011110 -010001111100 -010010110100 -110000111000 -100100001100 -010111100010 -010010001000 -100110001110 -111101110100 -011111011000 -001000110000 -000010100000 -010111000000 -001111101110 -000111110101 -001000001011 -111100001001 -011010011111 -011101101111 -000101011011 -000100000101 -001000010101 -000011000001 -011011010100 -011101100101 -000010110111 -001101000011 -000111001000 -001010000111 -111010101110 -100001111111 -101101110000 -010111011101 -111010111000 -011111000110 -011100001011 -101011100110 -011011100100 -010010000001 -001100101011 -000110111010 -010110011101 -010100101101 -100001100101 -011011010111 -111010111001 -111000001010 -100101011110 -001000011001 -101001101001 -011111000001 -010010111110 -101110110110 -111110010011 -100111011100 -001100100011 -100010101100 -111100001110 -010101101111 -010001000111 -110101111010 -011100100101 -110001010011 -000011100001 -001010111001 -011100011010 -010101010101 -001011000000 -101011110111 -011001110010 -010000001011 -000011100010 -010010000011 -011001111010 -000101011100 -111010000101 -001011111011 -011011101101 -100100110111 -111000101010 -100001110101 -101110010100 -000001100111 -101001101111 -100000001100 -110000101000 -110111011010 -010001001010 -000100000001 -110110101011 -011111101011 -101001100010 -000111100001 -010010001011 -101001010110 -011011100011 -000111011101 -100000100101 -000010100011 -111010001011 -111110111111 -101000111000 -110100100011 -010001110010 -001000010000 -111101011011 -110100011011 -010101100110 -010001101111 -001111011111 -101111110110 -011011101111 -000010101111 -000000110011 -011011000111 -010001000110 -010111101111 -110101011111 -001001000111 -011011001110 -100111110110 -111100100001 -111010100010 -010010000010 -000111110111 -111101000100 -000011110011 -111000101111 -110010011111 -000001101001 -001110101001 -011111101110 -110111010010 -011100110010 -100011000111 -000000010011 -011011111100 -011110010101 -110111101011 -011001111101 -010101010110 -011110011001 -111100011100 -011001010001 -000110110101 -000111010010 -101011101011 -101010100000 -011101011001 -001110111111 -011011010110 -110111100001 -100011111011 -001010011101 -111001101101 -011100001000 -011010011100 -100111010011 -000010010110 -010110010001 -111010010110 -111111110101 -100011000101 -011010001001 -111010001010 -000100000110 -011010001000 -100110101001 -010111111011 -010111100011 -011101010100 -101000011001 -101001110111 -111001010101 -100110111111 -111010110110 -100000011000 -110010100001 -001110011111 -010001011010 -011100100011 -010111011110 -100110110100 -111000001000 -110110101000 -000000001111 -010111101010 -000100000100 -111000110010 -011111110011 -001100100001 -010100000111 -111010100111 -010001101110 -101111110010 -011111000100 -101100111110 -010111101100 -011110111000 -110001000100 -011101000111 -011011101000 -000100100110 -100110100110 -000000001011 -010101001111 -110001000001 -100011010011 -101000100011 -011011010011 -100010001110 -100111101001 -101111111111 -111010011001 -011000010100 -110101011101 -100110101011 -010000011001 -010011011001 -010101000101 -010100011111 -100111001000 -111110100011 -000110010010 -000000010010 -101110001100 -111010000011 -100001001000 -000011010101 -000100011000 -001111111100 -011110101000 -101111011111 -100000111011 -101001100011 -001001100100 -000100010100 -010111101101 -101001111010 -011000101011 -111011010010 -011001101001 -011101010110 -011011110011 -010010101010 -001111010100 -100000010110 -001101000111 -000010101010 -110010001001 -011001111100 -000100001000 -010111001011 -101111100111 -100111100011 -100001010101 -100111011011 -100101000110 -011010100110 -100011101110 -111010110010 -010000100000 -100100110110 -011001101101 -011111100100 -101100101101 -101010110100 -101001000111 -110100010100 -011101001000 -101110101100 -111100010001 -001101011101 -111111110110 -101110001011 -001100101111 -110000001010 -110011001000 -011100000110 -011001101000 -001100001011 -111000111011 -111100000111 -010000000001 -000101011111 -001000101110 -101101101011 -111111110010 -111000001110 -110101111100 -101100010011 -010011110111 -100100010111 -111001101001 -101000001011 -110001110111 -100011111100 -000101011110 -011000101000 -001010011110 -100111111110 -100000111010 -001111010101 -011111010100 -001101101100 -010011111001 -001010101100 -001110111101 -000101010000 -100101101011 -010100101010 -000000001001 -010011000100 -010001000100 -110101100101 -110011011111 -100001010111 -111111011000 -010111111100 -111000101000 -101011101100 -111111011100 -001110110100 -000010100010 -111101110001 -101011000000 -101101000101 -110000000100 -110111111101 -101110100110 -111011000000 -001011010000 -100100101001 -111110101010 -111011110011 -111000000011 -000101101001 -110100011100 -111101000000 -100000100001 -010110001011 -001100111011 -110000100010 -111001010111 -100100001111 -110111111110 -010111000101 -110000010111 -100011010000 -101010110111 -011100101110 -001110001000 -110011100001 -100101001110 -110110110110 -101110001001 -011011001001 -110000101101 -001000001101 -001000000010 -110110010000 -011110001100 -100001011101 -000001010100 -010100111110 -101110111111 -101010101110 -001100010000 -100000001011 -010011101100 -101011011001 -111100000000 -011011110001 -001110001110 -010100100101 -111011101100 -011110101101 -010110100010 -101010001111 -110110000101 -101000110110 -101101001110 -111111101111 -001001110010 -001001011010 -111100100110 -000101010011 -100100001000 -110111010000 -010010001111 -000000100101 -001101110100 -101010110010 -011110010111 -100011001110 -111011010011 -110011111001 -110100100100 -110101001000 -110001111011 -010110001100 -011110111100 -010100000101 \ No newline at end of file diff --git a/day3/program.js b/day3/program.js deleted file mode 100644 index a1e0658..0000000 --- a/day3/program.js +++ /dev/null @@ -1,64 +0,0 @@ -export default function Day(data) { - const bitCount = bitValues(data); - part1(data, bitCount); - part2(data, bitCount); -} - -const part1 = (instructions, count) => { - let gamma = ""; - let epsilon = ""; - - for (const row in count) { - gamma += count[row]["0"] > count[row]["1"] ? "0" : "1"; - epsilon += count[row]["0"] > count[row]["1"] ? "1" : "0"; - } - - console.log("part 1", gamma, epsilon, parseInt(gamma, 2) * parseInt(epsilon, 2)); -}; - -const part2 = (instructions, count) => { - function removeBasedOnBitPosition(rows, bitPosition, value) { - return rows.filter((row) => row.substr(bitPosition, 1) !== value); - } - - function removeFromArray(rows, invert) { - let result; - for (const bitRow in count) { - count = bitValues(rows); - - const bit = count[bitRow]; - let check = bit["0"] > bit["1"]; - if (invert) check = !check; - - rows = removeBasedOnBitPosition(rows, parseInt(bitRow), check ? "0" : "1"); - - if (rows.length === 1) { - result = rows[0]; - break; - } - } - return result; - } - - const oxygen = removeFromArray(instructions, false); - const co2 = removeFromArray(instructions, true); - - console.log("part 2", oxygen, co2, parseInt(oxygen, 2) * parseInt(co2, 2)); -}; - -const bitValues = (instructions) => { - let count = {}; - - for (const binary of instructions) { - const nums = binary.split(""); - - nums.forEach((element, i) => { - if (!count.hasOwnProperty(i)) { - count[i] = { 0: 0, 1: 0 }; - } - count[i][element]++; - }); - } - - return count; -}; diff --git a/package.json b/package.json index 97fb847..35275ad 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,8 @@ "description": "Hi all!", "main": "helper.js", "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" + "test": "echo \"Error: no test specified\" && exit 1", + "launch": "node index.js" }, "repository": { "type": "git", From 88be817803fc16ae833844193c01db5eebccbb17 Mon Sep 17 00:00:00 2001 From: Rene Pot Date: Mon, 14 Nov 2022 21:54:15 +0100 Subject: [PATCH 24/59] Update README.md --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index b330d78..0d97209 100644 --- a/README.md +++ b/README.md @@ -6,8 +6,7 @@ My AdventOfCode is `node.js` based. To run any day, type `node index.js ` and it will execute the day you inputted. Make sure you fill the relevant `input.txt` file with the input for that day if you want to see your own code. -The current main branch is 2021, but my code from last year is also available in branch 2020. I didn't get further than day 10 yet though. - +The current main branch is 2022, but my code from last years is also available in branch 2020, though both years are limited in number of days. For 2020: Step into each day folder and run `node program.js` to run it. From 20a96ba7fba619bfe24650cc5f4c5efe3d470eba Mon Sep 17 00:00:00 2001 From: Rene Pot Date: Thu, 1 Dec 2022 10:04:08 +0100 Subject: [PATCH 25/59] implement day 1 --- day1/input.txt | 2250 +++++++++++++++++++++++++++++++++++++++++++++++ day1/program.js | 39 + 2 files changed, 2289 insertions(+) diff --git a/day1/input.txt b/day1/input.txt index e69de29..9708c17 100644 --- a/day1/input.txt +++ b/day1/input.txt @@ -0,0 +1,2250 @@ +7914 +5032 +11424 +2567 +4123 +3567 +7346 + +1334 +2173 +5437 +1104 +1872 +1148 +6547 +3149 +5923 +5705 +4036 +5348 +1100 + +4108 +14444 +25596 + +7237 +4252 +1020 +8333 +3538 +5089 +6328 +4581 +6503 +8741 + +5799 +1585 +1137 +1985 +6489 +5309 +6249 +4594 +1885 +6100 +4233 +1517 +6346 + +13392 + +5705 +2914 +1636 +2126 +1200 +2458 +3862 +5696 +6269 +6624 +4015 +6878 + +7503 +4528 +1771 +4976 +2360 +4953 +8402 +5437 +1521 +3369 + +19947 +3465 + +2635 +3520 +5764 +1201 +2231 +5663 +1872 +1834 +5889 +3104 +6043 +5672 +1897 +4429 +3242 + +1568 +7727 +7363 +1762 +6400 +5605 + +4660 +11308 +4380 +2582 +1001 +11714 + +5134 +2300 +4757 +4613 +2991 +6561 +5951 +4936 +4592 +2099 +4117 +6658 +6387 + +24950 +7865 +7757 + +2251 +6418 +1692 +5020 +5913 +1070 +3996 +6016 +2406 +6237 +4374 +1631 +6892 + +1679 +4298 +3371 +3474 +4722 +4311 +1610 +3863 +6770 +4010 +5611 +2097 + +6922 +5309 +7222 +5672 +6050 +1269 +4328 +3736 +4861 +3956 +3206 +1832 + +1880 +3478 +7714 +7708 +6067 +6378 +3506 +7447 +5526 +6263 +6018 + +6731 +5938 +6918 +1352 +1828 +5339 +4113 +5783 +2637 +3584 +1874 +2647 + +2781 +6009 +6301 +6635 +4924 +4150 +2216 +6989 +3632 +5509 +4650 + +20208 + +1060 +9513 +1929 +6742 +8104 +7913 +5924 +4176 +3578 + +5296 +9369 +2530 +7070 +8392 +9054 +3721 +4291 +9210 + +3334 +2939 +3462 +1612 +3295 +1080 +1286 +4522 +1815 +2245 +4000 +5780 +5722 +4194 +4371 + +3400 +4587 +1020 +8609 +7675 +1272 + +1716 +6587 +4563 +3922 +3788 +6667 +3734 +6692 +1783 +3153 +4195 + +2572 +6830 +3179 +1029 +2269 +11843 +9941 + +6543 +6760 +15219 +11241 +10592 + +6608 +1237 +3951 +3068 +3073 +3796 +3603 +3223 +3937 +5450 +5436 +3069 +1061 + +9396 +11859 +1902 +6598 + +3137 +1487 +2503 +1312 +3008 +1914 +4730 +6104 +2293 +2913 +2729 +3629 +5186 +3876 +3404 + +9051 +6493 + +8009 +5306 +4188 +6706 +7077 +2134 +7837 +2885 +6423 +6267 +1222 + +4293 +4554 +5378 +6061 +3238 +3792 +2238 +5014 +3508 +2296 +5479 +5254 +1030 +1644 + +15277 +4285 +10110 +7055 + +4761 +4290 +1238 +1174 +2299 +1306 +2659 +4854 +5089 +4261 +3890 +1556 +5211 +4021 +3356 + +10403 +21723 + +5893 +4236 +5927 +2052 +3192 +1468 +4598 +3233 +2168 +3106 +4510 +1847 +5083 +2421 + +16205 +15366 +21046 + +6114 +12370 +10780 +9663 +9061 + +4516 +2854 +1460 +2143 +6609 +2365 +2778 +2683 +2583 +6467 +4319 +4315 + +3799 +6044 +2288 +6494 +3439 +7232 +3414 +1388 +3966 +2398 + +4225 +4485 +3923 +4014 +1199 +1468 +2776 +2777 +2377 +1434 +4292 +1456 +3289 +5520 +4329 + +4510 +3831 +3755 +3459 +3391 +2348 +6074 +3206 +3029 +2843 +3713 + +5998 +3721 +3166 +4632 +5031 +2793 +1167 +4946 +1248 +5716 +5348 +1525 +3757 +4700 +3372 + +3952 +7922 +3443 +4604 +6810 +2816 +6138 +2392 +1241 +4236 +3619 + +34427 + +17838 +30517 + +4112 +10150 +8347 +2082 +12014 +7078 +11182 + +5433 +7853 +1534 +11283 +5337 + +6007 +4147 +2008 +4531 +5174 +5625 +5105 +1196 +1521 +2353 +6811 +1187 +2310 + +1886 +2979 +6398 +6356 +7702 +8755 +11455 + +5357 +1608 +5575 +6241 +4128 +3130 +6163 +3212 +4485 +5898 +4910 +3788 + +7801 +7457 +7253 +8529 +9551 +5943 +1356 +6505 + +4727 +8200 +6628 +6451 +1375 +1678 +5936 +5324 +6427 +2029 + +36582 + +7271 +35840 + +21992 +22165 + +6453 +19268 +3430 +10457 + +4029 +4655 +1781 +7635 +5762 +2584 +3564 +2071 +3439 +3691 +3094 + +9444 +13140 +13396 +4076 +10162 +5268 + +2126 +4467 +9082 +8317 +6550 + +5451 +6635 +6791 +5015 +8407 +4356 +2602 +3230 +4665 + +2747 +7765 +6817 +4816 +3437 +7966 +5722 +2444 +3083 +1361 + +12228 +6182 +7426 +12898 +4182 +6266 + +6539 +6363 +4724 +5591 +4163 +2589 +1828 +1351 +6077 +1146 +3987 +6487 +6049 + +6827 +2987 +3205 +4405 +1129 +6673 +4913 +2839 +2060 +2537 +2022 +1432 + +3777 +3777 +4089 +3379 +2110 +2320 +1109 +3404 +6876 +2791 +4787 +5419 + +12034 +17906 +5562 +5606 + +14336 +4651 +2209 +11190 +6228 + +4697 +4733 +1356 +2000 +5179 +2664 +2768 +5424 +2590 +1267 +3390 +2164 +4090 +3494 +5899 + +2192 +13670 +13944 +4531 +3025 +11249 + +5830 +14261 + +19801 +4961 +12629 +9004 + +7113 +7210 +3654 +6763 +7717 +4323 +5696 +5946 +2384 +7844 +1486 + +7010 +5874 +1878 +6510 +1164 +6037 +5962 +1137 +2150 +2233 + +14434 +4226 + +3411 +13559 +4848 +4821 + +15749 +2913 + +54246 + +11361 +2720 +3767 +5540 +3472 +4367 +6511 + +6896 +4369 +2970 +2445 +2070 +2562 +5328 +3920 +5450 +2897 + +14667 +15686 +1271 +18275 + +6705 +2670 +11190 +13652 +9738 + +4020 +4975 +7099 +4654 +8754 +5562 +7225 +3903 +4546 +4525 + +4197 +14210 +7595 +10871 +7217 + +4815 +5253 +7706 +2919 +4097 +2700 +2721 +3093 +5273 +1696 +5776 + +2771 +4272 +3324 +3439 +6376 +5354 +5007 +6146 +4939 +1351 +6437 +5618 +4283 + +8893 +5075 +4562 +9003 +8963 +7147 +2381 + +2911 +11753 +12512 +3446 +6006 +11130 + +2478 +1060 +6245 +1266 +5077 +2586 + +4400 +5838 +6425 +2635 +3060 +1709 +6254 +2813 +2120 +1735 +4942 +5332 +3626 + +5600 +3354 +4776 +2979 +2700 +4637 +1717 +2134 +1782 +3492 +3611 +4941 +4899 +1213 + +8679 +4661 +10003 +13830 +5247 +2139 + +20373 +3325 + +5379 +7303 +7830 +5504 +2696 +5622 +7935 +3297 + +4228 +2408 +5941 +5082 +6872 +5948 +6254 +3644 +3301 +5938 + +5258 +23981 +12886 + +28519 +27915 + +35254 +2202 + +7052 +2168 +4389 +4046 +2056 +6167 +3384 +6470 +7987 +3383 + +5268 +7903 +13452 +14317 + +6366 +1526 +9104 +2599 +1202 +11086 +5433 + +11479 +8039 +10152 +14580 + +5515 +1916 +1289 +1388 +1553 +5740 +3839 +1753 +5634 +6645 +1506 +4538 +4656 + +4786 +4267 +4796 +2879 +3770 +5652 +3160 +5825 +2297 +1351 +3115 +5746 +4752 +4713 +5409 + +5911 +6004 +4125 +3494 +7580 +7176 +8214 +6670 + +2668 +7245 +3101 +4052 +1527 +6544 +3423 +5764 +2754 +1405 +3936 + +5601 +3717 +1629 +5576 +5579 +1855 +4257 +5682 +2532 +2718 +1497 +3427 +5794 + +5247 +11031 +4614 +9068 +9698 +2157 +5376 + +9323 +2194 +1541 +5612 +1785 +1866 +8066 +4904 + +36692 +27998 + +4516 +3456 +3620 +10427 +7221 +9173 +5353 +9376 + +6685 +3452 +9421 +7877 +7669 +3237 +9391 +5727 + +20001 + +10724 +15712 +15690 +16206 +1635 + +26550 +19421 + +12539 +8286 +13842 +2148 +4421 + +10165 +10293 +5777 +8034 +8797 +3886 + +5877 +3703 +1191 +5264 +1433 +4417 +2501 +6113 +1390 +1953 +1989 +4148 +4308 + +5421 +2719 +2110 +2329 +2480 +5456 +2894 +1536 +3655 +2022 +4919 +2287 +1146 +3599 +2766 + +23545 +23885 + +3539 +18515 + +31310 + +3802 +13051 +2107 +11803 +11383 +10824 + +7070 +3331 +1545 +1227 +3701 +4290 +2178 +4043 +4159 +4978 + +1596 +5306 +5192 +7398 +7306 +7457 +2157 +4592 +7133 +5658 +6134 +5000 + +11745 +7176 +6232 +13572 +3855 + +6991 +1973 +6491 +6894 +6839 +3710 +6206 +3259 +7334 +3714 +4320 +4423 + +1602 +18051 +13165 +19153 + +1414 +13321 +3488 +6907 +1765 +11847 + +6007 +13509 +10855 +2103 +11112 +1317 + +9168 +10364 +8969 +7162 +1829 +1114 +1280 +8882 + +8113 +3195 +8998 +1596 +3238 +5872 +8194 +1753 + +5109 +2221 +3304 +5088 +3968 +5134 +1064 +5486 +5735 +3521 +4646 +5617 +2802 +5293 + +5915 +6651 +6734 +6670 +1891 +6987 +3404 +1946 +9510 + +11531 +3497 +11740 +11651 +1885 +7156 +9233 + +6541 +7739 +1454 +6086 +2743 +6713 +5321 +6442 +6950 +3678 +3234 + +6800 +5686 +8043 +9452 + +19119 +19636 +2349 +2244 + +5008 +7002 +5330 +3546 +13001 +13785 + +4985 +7177 +5629 +4174 +6747 +5113 +3916 + +6496 +5247 +6753 +6704 +9306 +5765 +4150 +6939 +5457 + +3887 +6986 +1560 +8183 +4405 +3810 +5728 +10507 + +11447 +25816 + +4597 +5623 +4127 +5048 +8158 +2593 +2250 +5352 +1893 +6507 + +33979 + +6089 +5585 +2486 +5620 +1347 +5829 +4476 +5265 +2216 +4211 +1707 +2443 +2362 +2362 +1282 + +5883 +2431 +5837 +2697 +6104 +5978 +5515 +5215 +5534 +2081 +1031 +2757 +1034 +5281 +5333 + +3373 +1608 +3753 +1177 +3197 +1753 +2510 +5515 +5455 +4239 +6135 +5620 +5610 +2864 + +3836 +6195 +5633 +2714 +1886 +6240 +1274 +1432 +1305 +2310 +3446 +6485 + +8674 +19094 +22441 + +6453 +2960 +1048 +1714 +6828 +6116 +4645 +3327 +4146 +2561 +2149 +2429 +1382 + +27003 +2645 + +3984 + +4217 +2174 +6227 +6827 +2477 +2789 +3961 +3937 +4771 +3640 +1870 +5929 +1949 + +5251 +4132 +2290 +5517 +5219 +3745 +3219 +4119 +3056 +1951 +6167 +5802 +5301 +6245 + +6430 +5525 +6656 +5755 +9884 +6570 +1134 + +7728 +4025 +7558 +4767 +1345 +2164 +1137 +1174 +1130 +5195 +6515 + +4223 +3412 +9634 +5355 +5395 +5975 +2627 + +6170 + +10254 +7145 +6816 +9867 +2471 +1584 +8533 + +3486 +9633 +10625 +6684 +3246 +9866 +10563 +1430 + +5318 +3542 +4517 +3296 +3776 +4122 +4940 +2768 +4821 +3779 +1616 +5543 +3953 + +14860 +10176 +13551 +6410 +6235 + +5075 +2852 +3919 +3024 +5265 +2946 +4377 +5901 +5427 +5960 +2953 +5508 +6309 +2532 + +4346 +1003 +2014 +1816 +7083 +7229 +6297 +6349 +3860 +1911 +4553 + +10672 +2514 +4572 +6904 +4101 +7105 +3486 +5939 + +4903 +2768 +6198 +3331 +5677 +4852 +1123 +1105 +5599 +7130 +6093 + +36680 + +2386 +4584 +1424 +4818 +2181 +1275 +1203 +6859 +1722 +3839 +1602 +7022 + +7947 +11689 +6053 +2557 +11191 +1006 +10549 + +6392 +23290 +3800 + +1555 +4968 +2802 +6188 +2972 +5342 +4944 +3089 +1489 +5851 +3724 +4105 +1646 + +1056 +5939 +2669 +6416 +1825 +5364 +3055 +3718 +4637 +2092 +2427 +4896 +2074 + +1146 +2745 +5553 +12023 +11630 +2821 + +6444 +9693 +5025 +6574 +4847 +5858 +9920 +10756 + +32182 +22267 + +55301 + +6186 +1515 +9204 +5359 +2695 +2760 +4021 +8269 +3633 + +1682 +3758 +7745 +8645 +5672 +4336 +7765 +7497 + +1099 +1107 +2501 +3511 +5559 +3384 +5934 +5439 +4723 +3229 +5376 +5032 +1133 +1239 +5806 + +15356 +9800 +3837 +10024 +13159 + +11534 +6116 +4343 +8949 +8628 +3215 + +2118 +4216 +5874 +7366 +4894 +3959 +3906 +4397 +1945 +4080 +2564 +2609 + +1559 +1514 +2947 +6754 +6285 +6265 +2403 +5718 +5167 +2172 +4605 +5420 +1806 + +1880 +1014 +4994 +6146 +4752 +3350 +3872 +6534 +6554 +4005 +3413 +2201 +6360 + +10572 + +5543 +2387 +2323 +5565 +4920 +1185 +3712 +2674 +5513 +3267 +2714 +2453 +5923 +2020 +3843 + +5594 +7165 +3281 +2559 +4424 +3250 +6706 +3870 +2600 +3620 +6853 +6549 + +12197 +8838 +8398 +7951 +5818 + +6279 + +16622 +3657 +9950 +18164 + +4487 +1146 +1953 +5985 +2255 +7752 +5966 +6953 +3238 + +8433 +4943 +3379 +10418 +8317 +2119 +2264 +9044 + +25424 +15342 + +4620 +4435 +1247 +5616 +4740 +7872 +6710 +6494 +6666 +7926 + +2587 +4186 +4175 +6572 +4189 +6265 +3357 +6427 +1014 +1909 +1065 +2211 + +2894 +5557 +3884 +4400 +6992 +1825 +4375 +5124 +1442 +2902 +1538 +1557 + +6294 +5991 +8711 +6323 +3985 +6012 +8327 +1353 +5585 +1514 + +3054 +1488 +1453 +4860 +5875 +3625 +7313 +3609 +2707 +3936 +4253 + +7605 +10203 +1976 + +64078 + +12356 +7090 +2556 + +1467 +7531 +5418 +2366 +1855 +8463 +6436 +5521 +2152 +4088 + +9810 +15885 +8104 +12905 + +7369 +5389 +3464 +7901 +7781 +2875 +7377 +1927 +3870 +6763 + +3990 +6074 +3698 +8562 +2305 +1623 +8346 +8680 +7690 + +8271 +7058 +8607 +9116 +4157 +7026 +7873 + +16451 +4437 +19220 +3783 + +23509 + +15774 +19061 +19118 + +8042 +5973 +7798 +2217 +4093 +3706 +1467 +3921 +5878 +2791 + +9142 +19544 +16563 +5584 + +6394 +5320 +3521 +3956 +1751 +5318 +5031 +2838 +3506 +3504 +2551 +1141 +4733 +3035 + +15753 +2123 +14170 +18870 + +5179 +6821 +6559 +4032 +1024 +8634 +2377 +1570 +4358 + +1640 +8885 +6912 +3939 +10328 +10308 +3548 + +5391 +1362 +1541 +1614 +3236 +1704 +4088 +5284 +2395 +6504 +2050 +5511 +6782 + +7842 +1185 +7244 +9998 +3575 +5292 +6126 +3264 + +4962 +1758 +3553 +3450 +5493 +5000 +1515 +1174 +6031 +1007 +5762 +5033 +1080 +2817 +2795 + +5822 +3591 +5416 +5487 +2110 +5372 +6614 +5136 +6450 +5250 +4411 +1851 +6421 + +42358 + +8051 +10473 +11286 +19931 + +9617 +4786 +2155 +3527 +7553 +3911 +9670 +7243 +7662 + +23109 +25276 +6310 + +4840 +6771 +7719 +4482 +6687 +6191 +6796 +4313 +7656 +2828 +1535 + +2050 +2929 +1517 +6796 +1070 +6924 +4229 +6813 +9252 + +2515 +32597 + +4389 +7467 +11143 +8271 +3081 +2180 +9659 + +5420 +2126 +5522 +5579 +6024 +3291 +2180 +5429 +3860 +3589 +2089 +1362 +5777 +4103 +3124 + +7858 +4413 +7488 +7306 +7816 +9150 +8791 +4526 +3311 + +4226 +1438 +4937 +2222 +4612 +4677 +2675 +7870 +7259 +5322 +3063 + +5953 +2931 +1763 +5986 +4926 +4405 +1628 +4778 +5978 +1446 +1388 +4629 +5080 +1781 +5090 + +25276 +8575 + +7338 +5122 +2243 +3416 +7198 +4917 +2338 +6466 +7689 +2006 + +6879 +4534 +1218 +10503 +3970 +4274 +1144 +4666 + +5315 +4696 +5183 +7596 +4734 +3643 +2167 +5441 +7878 +3347 +4204 + +2522 +2992 +4658 +7624 +4018 +3053 +1575 +4305 +2551 +3848 +5441 + +29831 + +5920 +5770 +1031 +2102 +5043 +3067 +5257 +3209 +3909 +1806 +2172 +2880 +3007 +1567 +4663 + +5017 +4609 +8767 +9643 +4702 +8519 +7904 +4716 +3679 + +1068 +6794 +7802 +2099 +7998 +3563 +6051 +6596 +7987 +3732 +7337 + +2241 +13670 +13185 +6208 +12631 + +29307 +3839 + +11354 +6015 +2257 +7358 +7688 +5290 +3929 + +12228 + +3334 +8211 +5328 +4224 +5626 +7635 +7615 +9511 + +8075 +5712 +7226 +5213 +7236 +7907 +1417 +6890 +2571 +1881 +6929 + +1189 +2124 +5640 +4677 +1487 +3608 +2828 +2911 +2102 +2169 +6087 +4343 +5689 +5315 +1946 + +7302 +1351 +1299 +3498 +2752 +2502 +7397 +7139 +1571 +1882 +4967 +7024 + +2453 +2774 +12613 +15345 +3686 + +6213 +6151 +2743 +3336 +7888 +7792 +2768 +4780 +1782 +4613 +1344 \ No newline at end of file diff --git a/day1/program.js b/day1/program.js index f1fee03..6401947 100644 --- a/day1/program.js +++ b/day1/program.js @@ -1,3 +1,42 @@ export default function Day(data) { + const elfs = []; + let elf = getBasicElfStats(); + data.forEach(c => { + const calories = parseInt(c); + + if (isNaN(calories)) { + elfs.push(elf); + elf = getBasicElfStats(); + return; + } + + elf.foodItems.push(calories); + elf.calories += calories; + }); + + elfs.push(elf); + + const sortedElf = sortElfsByCalories(elfs); + // part 1 + console.log('PART 1'); + console.log(`${sortedElf[0].foodItems.length} snacks containing ${sortedElf[0].calories} calories`); + // part 2 + console.log('PART 2'); + const top3Elf = sortedElf.slice(0, 3); + const totalCalories = top3Elf.reduce((acc, elf) => acc + elf.calories, 0); + const totalFoodItems = top3Elf.reduce((acc, elf) => acc + elf.foodItems.length, 0); + + console.log(`${totalFoodItems} snacks containing ${totalCalories} calories`); +} + +function sortElfsByCalories(elfs){ + return elfs.sort((a, b) => b.calories - a.calories); } + +function getBasicElfStats() { + return { + calories: 0, + foodItems: [], + } +} \ No newline at end of file From d30e862e8cca951d5fba569f531d4b785e842676 Mon Sep 17 00:00:00 2001 From: Rene Pot Date: Fri, 2 Dec 2022 10:42:22 +0100 Subject: [PATCH 26/59] add feature to runner to run sample input --- day1/sample.txt | 14 ++++++++++++++ day2/sample.txt | 3 +++ helper.js | 3 ++- 3 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 day1/sample.txt create mode 100644 day2/sample.txt diff --git a/day1/sample.txt b/day1/sample.txt new file mode 100644 index 0000000..444e241 --- /dev/null +++ b/day1/sample.txt @@ -0,0 +1,14 @@ +1000 +2000 +3000 + +4000 + +5000 +6000 + +7000 +8000 +9000 + +10000 \ No newline at end of file diff --git a/day2/sample.txt b/day2/sample.txt new file mode 100644 index 0000000..25097e8 --- /dev/null +++ b/day2/sample.txt @@ -0,0 +1,3 @@ +A Y +B X +C Z \ No newline at end of file diff --git a/helper.js b/helper.js index 77d3fbe..952d5b3 100644 --- a/helper.js +++ b/helper.js @@ -1,7 +1,8 @@ import fs from "fs"; export default async function loadData(day) { - const data = await fs.readFileSync(`./${day}/input.txt`, "utf-8"); + const filename = process.argv[3] ? 'sample.txt' : 'input.txt'; + const data = await fs.readFileSync(`./${day}/${filename}`, "utf-8"); return data.split("\n"); } From 3f2b735b7124c07120831cf9af1424ac14d51b2e Mon Sep 17 00:00:00 2001 From: Rene Pot Date: Fri, 2 Dec 2022 10:42:31 +0100 Subject: [PATCH 27/59] add day 2 logic --- day2/input.txt | 2500 +++++++++++++++++++++++++++++++++++++++++++++++ day2/program.js | 36 + 2 files changed, 2536 insertions(+) create mode 100644 day2/input.txt create mode 100644 day2/program.js diff --git a/day2/input.txt b/day2/input.txt new file mode 100644 index 0000000..0897034 --- /dev/null +++ b/day2/input.txt @@ -0,0 +1,2500 @@ +B Y +A Z +A Z +C Z +B Y +B Y +B X +B Z +C Z +B X +B Y +A Z +B Y +B Z +B Y +C Z +B Z +B Y +B Z +C Y +B Y +A Z +B Y +B Y +B Y +C Y +A Z +B Y +B X +A Z +B X +A Z +A Z +B Y +B Y +B X +A Z +B Y +B Z +C X +C X +B Y +B Y +B X +B X +C X +B X +A Z +B Y +B Y +C X +A Z +B Y +B Z +B X +B X +A Z +A X +B Y +B Y +B Z +C Z +B Z +B Z +B Z +A Z +A Z +B X +B X +B Y +B X +B X +C Z +C Z +A Z +A Y +A Z +B Z +A Z +B Y +C X +B X +C X +B Z +B Z +C Z +B Z +B X +C X +A Z +C X +B Z +A Y +C Z +B Y +C Y +B X +A X +B Y +B X +B X +B Z +B Y +A Z +B Z +B Y +B Y +A X +A Z +B X +B X +B X +B X +B Z +B Z +B Y +C X +A Z +A Z +B Y +B Z +B Y +A Z +B Z +A Z +A Z +C X +B Z +A Z +A Z +B Y +B Z +A Z +B Y +B Y +A Z +B Y +C X +B Z +B Y +B X +C X +B X +B X +B X +A Z +A Z +C Y +A Z +B Y +A Z +C X +B Z +B Z +C X +B Y +C X +B X +B X +C X +A Z +B Y +C X +B X +B Y +A Z +B Y +B Y +C X +B Y +C X +A Z +A Z +A Z +B Y +B Y +A X +A Z +A Z +B Y +C X +C Y +B Y +C X +A Z +B X +A Z +A Z +C X +B Y +A Z +B Y +C X +A Z +B X +B Y +A Z +B Y +B X +B X +C X +B Y +C Y +A Z +B Y +B Y +C Y +B Y +C Y +C X +A Y +A Y +B Z +B Y +A Z +B Z +B X +B X +B Y +A Z +B Y +B X +B Y +B Y +C Z +B Y +B Y +A Z +A Z +B Z +A Y +C X +B Y +B Y +B Z +B Z +B Y +C X +B Y +B X +B Z +B Y +B X +B Y +C Z +B Y +B X +A Z +B Z +B Z +A Z +C X +B Y +C Z +A Z +B Y +C Z +B Y +B X +B Y +B X +C Z +B Z +A Z +A Z +A Z +A X +B Z +B Y +B X +B Y +A Z +B Z +C Z +B X +B Z +B Z +A Z +B Y +B X +A Z +A Z +B Y +B X +A Z +A Z +C Z +A Z +C Z +B Y +B Y +B Z +C X +A Z +B X +B Y +B X +B Y +B Y +B X +B Z +B X +C Z +C X +C X +A Z +A Z +B X +B X +A Y +C X +B Y +A Y +B Z +B X +A Z +B X +B Y +B Y +B Y +B Y +A Z +A Z +B Y +B X +C Z +B Z +C X +B Z +B Y +C X +A Z +B Y +A Z +A Z +B Z +B Y +B X +A Z +B X +B Y +A Z +B Z +B X +B X +A Z +C Y +B X +A Z +B X +B Y +C X +B Y +C Z +C X +B Y +B Y +B Y +B X +B Y +B X +A Y +A Z +B Z +B Y +B X +B Z +B Y +C Z +B Y +A Z +B X +A Z +C X +A X +B Z +B Z +C X +A Z +B X +A Z +A Z +B Z +A Z +B Y +B Z +C Z +A Y +A Z +A Z +A Z +C X +B Z +B Z +B Y +B X +B Y +B Y +B Y +B Z +B Y +B Y +A Z +B Z +A Z +C X +B Y +B X +B Y +B X +B Y +B Y +C X +B Y +B Y +B Z +B Y +C X +B Y +B X +B Y +C X +A X +A Z +C Z +B Y +C Z +B X +C Z +C X +C Z +B Y +B Y +C X +C X +B Y +C X +A Y +B Y +B X +B X +B Z +B Y +C Y +C X +B X +B Y +B Z +B X +B Z +B Z +C X +B X +B Y +B Z +B X +C Z +A Y +B Y +B Y +B Y +A Y +C Y +B Y +B Z +B Z +B Y +B Y +B Z +B X +B X +B Y +A Z +C Y +C Z +B Y +B X +B Y +B Y +C X +B Y +C X +A Z +B X +C X +C Z +A Z +A Z +B Y +C X +A Z +A Z +B Y +A Y +B Y +A Z +A Z +B X +C X +A Z +B X +B Z +A Z +A Z +B X +B Y +B X +B Z +B Y +B Y +B Z +C X +C X +B Y +A Z +B X +B X +B Y +B Z +B Y +B X +B Z +B X +B Y +C X +B Y +B Y +C Y +A Z +B Y +B X +B Y +A Z +C X +A Z +A X +B Z +B X +A Z +B Y +B X +B X +A Z +B Y +A Z +B Z +B Y +A Z +B Y +B Y +A Z +B Z +C Z +B Y +B Y +C Y +A Z +B Y +B Y +B Y +B Y +B Z +B Y +B Y +B Y +C X +B Z +B X +A Z +B Z +C X +B Y +B Y +A Z +B Y +B X +A Z +A Z +C Z +B X +B X +B Y +B Z +B Z +B Z +B Y +B Y +B Y +B Y +B Z +B Y +A Z +A Y +A Z +B Y +B Y +A Z +B X +B Y +A Z +C Z +B Z +B Z +B Y +A Z +A Z +B Y +B X +B Z +B X +B Y +B Y +B X +C X +B Z +B X +A Z +B Y +C Z +B X +A Z +C Z +C Z +A Z +B Y +B Y +A Y +B Y +C Z +B X +C X +B Y +B X +B Z +B Y +B Z +B Y +B Y +A Z +B X +B X +A Y +B Z +B X +B Z +A Y +B Z +C X +B X +B X +B Z +B X +C Y +B Y +C X +C X +B Z +B X +C Z +B Z +A Z +C Y +B Y +B Y +B X +B Z +B Y +B Y +B X +C X +B Y +B Y +C Y +B Z +C X +A Z +B X +B X +B Z +B X +B Y +A Z +B Z +B X +A Z +B Y +C X +A Y +A Z +C X +B X +B Z +B X +C X +A Z +B X +B Y +B Y +A Z +B Z +C X +A Z +B Z +C X +B X +A Z +C X +C Z +B Y +B Z +B Y +B X +C Z +B Z +B Z +B Y +A Z +C Z +A Y +B Y +C X +B Y +B Z +A Z +B Z +A Z +B X +C X +B Y +A Z +B Y +B X +C Z +B Z +C X +B Y +B X +C Y +B Y +C X +B Y +B Y +B Y +B Z +B Y +B X +B Y +B Y +A Z +A Z +C X +B Z +B Y +A Z +B X +C X +B Y +B X +A Z +C Z +A Z +B Z +B Y +B X +B Z +B Y +A Z +C X +C Z +A Y +A Z +C X +C Y +C Z +B Y +B X +B Z +B Y +B X +B Y +A Z +B Y +C X +B X +B Y +C Z +B Y +B Y +B Y +B X +B Y +C Z +B X +B Y +B Y +B Z +B X +B X +B Z +B Z +A Z +A Z +C X +B Y +B Y +C X +B Y +B X +A Y +C Z +B Y +B Z +B Y +B Y +A Z +B Y +B Z +B Y +B Z +B X +B Z +B Y +A Z +B X +B Z +B Y +B Y +B Z +B Y +A Z +B X +B Y +B Z +B X +B Y +B X +B X +B Y +B X +C Y +B Z +B Y +B Z +C Y +A Z +B Y +A Z +B X +A Z +A Z +C Z +B X +C Y +A Z +B Z +B Z +B X +B Z +B Y +A Z +B Z +C Z +A Z +C Y +A Z +B Y +A Z +B Y +A Z +B X +A Z +B Z +C X +B Y +B Y +B Y +C X +B Z +C X +A Z +A Z +C X +B Y +B Z +B X +B Y +B X +A Z +B Y +B Y +A Z +B Y +B Z +B Z +B X +B Z +B Y +B X +B Y +B Y +C X +C Z +B Y +B Y +B Y +B Z +B Y +B Y +B Y +A Z +B Y +B X +B Y +B X +B Z +B Y +B X +B X +A Y +B Y +B X +B Y +B Y +B Y +B Z +B X +A Z +B Y +B Y +B Y +A Z +B X +B X +C Z +B Y +B Y +A Z +B Y +B Z +B X +C X +B Y +B Y +C X +C Z +B X +A Z +B Y +B Y +B X +B X +B X +B Y +B Y +A Z +A Z +B Y +B Y +A Z +B Z +A Z +C X +C X +B Y +B Y +A Z +A Z +C Z +B Z +B X +A Z +B X +B Y +B Y +B X +B Y +B Y +C Z +B Y +B X +C Z +C Z +B X +B Y +B Y +B Z +A Z +B Y +B Y +B Y +B X +B X +A Z +A Z +B X +B Y +B Z +B Y +B Z +B Y +B Z +C X +B Y +C X +B Y +B Y +C Y +A Z +B X +C Z +B Y +B Z +B Y +B Y +B Y +C X +B X +B Y +A Z +C Y +B Y +A Z +B Y +B Z +B Z +B Y +B Y +B Y +C X +B Y +A Y +C Y +B X +B X +B X +B X +B Z +B X +B Z +B Y +B Y +A Z +B X +B X +A Z +A Y +B Y +B Z +B Y +C X +B Y +B X +B Z +C X +B Z +B Y +B X +B X +A Z +B Y +B Y +B Y +C X +A X +B X +C X +B X +C X +B X +A X +B Y +B Y +B Y +B Y +B Z +C Y +C X +A Z +B Z +B Z +B Y +B Z +B Y +B Y +B X +B Z +A Z +A Z +B Z +B X +B Z +A Z +B Y +B Y +B Y +B Z +A Y +B X +B Z +B Y +B Y +B Y +B Y +C X +B Z +C X +A Z +A Z +B Z +A Y +C X +B X +B X +C X +A Z +A Z +A Z +B Y +B Z +A X +A X +B Y +C X +A Z +B Z +A Z +B Y +B Y +B X +B X +B Y +C X +B Z +B Y +B X +B X +B Y +B Z +B Y +B Y +B X +B X +B X +B Y +C X +B Y +B Y +B X +B Y +B Y +B X +B X +A Z +C X +B X +A Z +B Y +B Y +B Z +B Y +B X +A Z +C Y +B X +B Z +B Y +C X +A Z +B X +A Z +A Z +B Y +B Z +B Y +A Z +B Y +B Z +A Z +C Z +B Y +B Y +B X +B Z +B Y +B X +B X +B Y +B Z +B X +B Y +C Z +A X +B Y +C X +A X +B X +B X +B Z +A X +B X +B Y +B X +A Z +B Z +C Z +B X +B X +A Z +B X +B X +B Z +B Y +B Y +A Z +B Y +B Y +B X +B X +B X +B Y +A Y +C X +B X +A Z +B X +B Y +C Z +B Y +B Y +A Z +B Y +A Z +B Y +A Z +B Y +B Y +A Z +B X +B X +B Y +B Y +B Y +A Z +B Y +B Y +A Z +B X +A X +A Z +B Y +B X +B Z +B Z +B Y +B Y +C Y +B Y +B Y +B X +B Y +A Z +C X +B Z +B X +B Z +A Z +B Y +B Z +B X +A Z +A Z +C X +B X +A Y +C X +B Z +B Z +C Z +B Z +B Z +C Y +A Z +C Z +A Z +C Z +B Z +B Y +C X +B Y +B X +A Z +C Y +B X +B Y +B Y +B X +B Y +A Z +A Z +B Y +B Z +B Y +C X +B X +B Y +B X +A Z +C X +B Y +B Y +B Y +B Y +C Z +B Y +C Z +A X +C Z +B X +B Y +B Y +B X +B Y +C X +C X +A Z +B Y +B Y +C X +B Z +C Y +B Z +B Z +B Z +B X +B X +B X +B Z +B X +C X +B Y +C X +B X +C Z +B Y +B X +B Z +B Y +B Y +B Y +B Y +B Y +B X +B X +A Z +B Y +B X +B Y +B Y +A Y +B Y +B Y +A Z +A Z +C Z +B X +B Y +B Y +B Z +C Z +C X +A Z +C X +A X +B X +B Z +B Y +A Z +C Z +B Y +C Z +B X +A Z +B X +A Z +B Y +A Y +B Y +B Y +A Z +C X +B X +B Y +A Z +B Z +B Y +B X +B X +C Y +B X +A Z +B Z +A Z +C X +C Y +B Z +B Z +A Z +B X +B Y +B X +C X +B Y +B Y +B X +C X +B X +B Y +B X +B Y +B Z +B Y +B X +B X +A Z +B Y +B Y +C X +C Y +C X +A Z +A Z +B X +B X +B Z +A Z +A Z +C Z +B Z +A X +B X +B Y +B Y +A Z +B Y +B X +B X +B X +B Y +B X +B Y +B Y +B Y +B Y +B Y +B Y +B Z +A Z +B Y +B X +C X +A Y +B Y +B Y +B Z +C Z +B X +C X +B Z +B Y +B Y +B X +B X +B X +A Z +B X +A Y +B Y +B Y +C X +A Z +B Y +C X +B Y +B X +B X +B X +C Z +B X +A Z +B Y +B Y +B Y +A Z +A Z +B X +A Y +B Y +B Y +B Y +B X +B X +B Z +B X +B Z +B X +B Y +A Y +A Z +C Y +B Z +C X +B Z +B Y +B X +A Y +B Y +B X +B Y +B X +C Z +B X +C Z +B Y +B X +B Z +A Y +A Y +C Z +B X +B X +B Y +A Z +B Y +B Z +A Z +B X +B X +B X +B X +B X +B Z +A Z +A Z +C Y +C X +A Z +A Z +C X +B X +B X +B Z +B X +A Z +B Y +B X +B Y +C X +A Z +B Z +C X +B Y +B Y +A Z +B Y +B Y +B X +B Y +C Y +B X +B Z +B Y +A Z +B Z +A Y +B Y +A Z +B X +B Y +A Z +B Y +C Z +B Z +B Y +C X +C X +B X +B Z +B Y +B Z +B Z +B Z +B Z +A Z +B Y +B X +B Z +B Y +B X +A Z +A Z +A Z +B Y +C Y +C Z +B Z +B X +B Y +B Z +B Y +A Z +A Z +C Z +B X +B Y +B Z +B X +A Y +A Y +B Y +A Y +B Z +B Y +A Z +B Y +B Y +B Y +C Z +B X +B Z +B X +B Y +B Y +B Y +C X +B X +B Y +B Z +B X +B Y +B Y +B Y +B X +B X +B X +A Z +B Y +B Y +C X +C X +C X +C X +B Z +A Z +A Z +B Z +B Y +B X +A Z +C Z +B Y +B X +C Z +C X +B X +B Y +B Y +B X +B X +B Y +A Z +B X +B X +B X +B Y +A Y +B X +A Z +B Y +B Y +B Y +C Y +B Z +B X +B Z +C X +B Y +B Z +C X +B X +B X +B Y +B Y +B Y +A Z +A Z +A Z +B Y +B X +C Z +B Z +B Y +B Y +B Y +B Y +B Z +C X +A Z +C Z +B Z +B X +B X +A Z +B X +B Z +A Z +B Y +B Y +A Z +B Y +B Y +C Y +C Z +B X +A Z +B Z +B Y +C Z +C X +B X +A Z +B Y +B Z +B X +A Z +A Z +A Z +B Y +B X +C X +B Z +B Z +B X +B X +B Y +A Z +B X +B X +B Z +A Z +C X +B X +B Y +B Z +A Z +B Y +B Y +B Y +C X +B Z +A Y +A Z +B Z +C X +A Z +A Z +B Y +C X +B Y +B Z +C X +B Y +B Y +A Z +B Z +A Z +C Z +A Z +B X +B Z +A Z +B X +B Y +C Z +A Y +B Y +B Y +B Y +A Z +B Z +A Y +A Z +B Z +B Y +B Y +A Y +B Y +C X +B Z +B Z +A Z +B X +B X +A Z +B Z +C Y +A Z +A Z +B Y +B Z +B X +C Y +B Y +B Y +B Z +B Y +B Z +B X +B X +B Y +B Y +C X +C X +B X +B X +C X +A Z +B Y +C Z +A Z +B X +B Y +B Z +A Z +C Y +A Z +B Z +A Z +C X +C X +B X +B X +B Y +B Y +B Y +B Y +B Z +B X +B Z +C Y +B Y +A Z +B Y +B X +A Y +B Y +B Z +C X +B X +A Z +A Z +B Y +B Y +A Z +C X +B X +B Y +B Y +B Z +A Z +A Z +C Z +A Z +B Y +B Y +B Y +A Z +B Z +B Y +A Z +A Y +B Y +B Y +B Z +A X +A Z +B Z +B X +A Z +B Z +B Y +B Y +B X +A Y +C Y +B Y +B Y +B X +B Z +A Z +B X +B X +B Y +B Y +A Z +B X +C X +B X +B X +A Z +B Y +C X +A Z +B X +C Z +A Z +B Y +B Y +B X +B X +A Z +C Z +B X +B X +B Y +A Z +B Y +B Y +B X +B Y +B X +A Z +B Y +B Z +B X +A Z +B Y +C Z +C X +A Z +A Y +B X +B Z +B Y +B Y +B Y +B Z +B Z +A Y +C X +B X +C X +B Y +B Y +B Z +B Y +C Y +C X +B Z +C X +B Y +B X +B Y +B Y +A Z +B Y +A Z +A Z +A Z +A Z +B Y +A Z +B X +B X +B X +C Z +B Z +C Y +B Y +A Z +B Z +B Y +B Y +B Y +A Z +B Z +C Y +C X +B Y +B Y +B Y +B X +B Y +B Z +A Z +B Y +B Y +C Y +B Z +B X +B Y +B X +B Z +B Y +C Y +C Y +A Z +B X +B X +A Y +B Z +A Z +B Y +B X +B X +B Z +B X +A Z +B Y +C X +C X +B Z +A Z +B Y +B Y +B Y +B Y +B Y +B X +B Y +B Y +B Z +B Z +A X +A Z +A Z +A Z +A Y +C X +B Y +B Z +B X +A Z +B Y +B Y +B X +B Y +B Y +C Y +C Y +B X +A Z +B Y +C X +B Y +A Y +B X +B X +B Y +C X +A Z +B Y +B X +C X +C Z +B Y +B Y +B Y +A Z +B X +A Z +C Z +B Z +B Y +B Y +B X +B Y +B Y +B X +A Z +C X +C Z +B X +B Y +C Y +B X +A Z +B Y +A Z +B Y +A Y +A Z +A Z +B Y +B Y +B Z +C Z +C X +B Y +B Z +B Y +A Z +B Y +B Z +B Y +B X +B Y +B Z +B Y +B Z +C X +B Y +B Y +C Z +A Z +B Y +C X +B X +A Y +B Y +A Z +B Y +B X +B Y +B Y +B X +B X +B X +B Y +B Y +C Z +B Z +C X +C Z +B Y +C X +B X +A Z +B Y +C Z +A Y +B Y +B Y +B Y +C X +B X +B Y +B Y +B Z +C X +B X +B Z +A Z +B X +B Z +B X +A Z +B Y +B Z +C X +B X +C X +B X +B Y +B Z +B Z +B Z +A Z +B Y +B X +B Y +B Y +B X +B Z +B Y +C X +A Z +B Z +B X +A Z +B Y +B Y +B Y +A Z +A Z +C X +B X +A Y +B Y +B Y +B Y +A Z +A Z +A Z +C Y +B Z +A Y +B Y +B X +B X +B Y +C X +B Y +C Z +B Y +A X +B Y +B X +B Y +B X +C Z +B Y +B Z +B X +B Z +A Z +B Y +B X +B Y +A Z +B X +C Y +B X +B Y +B Y +B Y +C X +B Y +B Y +B Y +A Z +B Z +C X +A Z +B Y +C Y +B X +A Z +C Z +B X +B Y +B X +C Z +B X +B Z +C Y +B X +B Y +B X +B Z +B X +B Z +B Y +B Z +B X +A Z +B X +A X +B X +B Y +B Y +B Y +A Z +B Y +B Y +B Z +C X +B Y +B Y +B Y +B X +B X +B X +C Z +B Z +B X +A Z +B Y +B Z +B Y +B Y +B Y +B Y +C X +A Z +B Z +B Y +B Y +B Z +A Z +B Y +B Z +B Y +B Y +C Y +A Z +B Z +C X +B X +C Z +B X +B X +B Y +B Y +A X +B Y +C Z +A Z +B X +C Z +C Z +B X +A Z +B X +C Z +B Z +B Y +B Y +C X +A Z +B X +B Y +B X +B X +B X +B Y +C X +B Z +B Y +B Y +B Y +B X +A Z +A Z +B Y +B Z +B Y +A Z +B Y +B X +A Z +B Z +B Y +B X +B Y +A Y +B Y +B Y +B Y +B Z +B X +B Y +C Z +C X +B Y +C Y +B Z +A Z +A Z +B Y +B Y +A Z +B Z +B Y +B X +A Z +A Z +C X +A Z +C X +A Z +B Y +C X +B X +B X +B Y +A Y +B Y +B Z +B X +B Y +B Y +A Z +B X +B Y +A Z +A Y +A Z +C X +A Z +C X +A X +B Y +B Y +A Z +B X +B Z +B Y +B Y +B Z +B Y +B Y +B X +B Y +C X +C X +B Y +B Y +B X +C Z +C Z +C Z +C X +B Y +C Z +A Z +C Z +B Y +A Z +B Z +B X +A Y +B Y +B Y +B X +B Y +B Y +C X +B Y +A Z +B Y +A Z +C Z +A Z +B Y +B Z +A Z +B X +B X +B Z +B X +B Y +A Z +B Y +C X +A Z +C Z +B X +A Z +B Y +B Y +C Z +B Z +A Z +B Y +B X +B Y +B Z +C Z +A Y +A Z +B X +B X +A Z +C Y +B Y +A X +A Z +B X +B Y +B X +A Z +C X +B Y +B Y +C X +A X +B Y +A Z +A Z +B Y +B Z +B Y +B Y +B Y +B X +B Y +B X +B X +B X +B Y +A Z +C X +A Z +A Z +A X +A Z +B X +B Z +B Y +A Z \ No newline at end of file diff --git a/day2/program.js b/day2/program.js new file mode 100644 index 0000000..0abdc6b --- /dev/null +++ b/day2/program.js @@ -0,0 +1,36 @@ +const points = { + X: 1, + Y: 2, + Z: 3, +}; + +export default function Day(data) { + const games = data.map((d) => d.split(" ")); + + const part1 = games.reduce((acc, game) => acc + scoreGame(game[0], game[1]), 0); + const part2 = games.reduce((acc, game) => acc + scoreGamePart2(game[0], game[1]), 0); + console.log(`Part 1: ${part1}`); + console.log(`Part 2: ${part2}`); +} + +function scoreGame(oppenentMove, counterMove) { + const move = oppenentMove + counterMove; + + if (move === "AX" || move === "BY" || move === "CZ") { + return 3 + points[counterMove]; + } + + if (move === "AY" || move === "BZ" || move === "CX") { + return 6 + points[counterMove]; + } + + return 0 + points[counterMove]; +} + +function scoreGamePart2(oppenentMove, outcome) { + const oppmoves = ['A', 'B', 'C']; + const mymoves = ['X', 'Y', 'Z']; + const modulator = outcome === 'X' ? -1 : outcome === 'Y' ? 0 : 1; + const counterMove = mymoves[(oppmoves.indexOf(oppenentMove) + modulator + 3) % 3]; + return scoreGame(oppenentMove, counterMove); +} From e1f35ab3b7b95d9f44063b5103fa5dbf939c831e Mon Sep 17 00:00:00 2001 From: Rene Pot Date: Sat, 3 Dec 2022 14:32:17 +0100 Subject: [PATCH 28/59] add day 3 --- day3/input.txt | 300 ++++++++++++++++++++++++++++++++++++++++++++++++ day3/program.js | 47 ++++++++ day3/sample.txt | 6 + 3 files changed, 353 insertions(+) create mode 100644 day3/input.txt create mode 100644 day3/program.js create mode 100644 day3/sample.txt diff --git a/day3/input.txt b/day3/input.txt new file mode 100644 index 0000000..0c81dde --- /dev/null +++ b/day3/input.txt @@ -0,0 +1,300 @@ +tdltdtmhlRNCBcwmHr +WDzDPnvvGnsWLWpGJJHRzCCRZNBRrRwMNwHH +DsDsQnJDnWsJnJvrQDPJddgShFQhjljqhggbdbbt +LqvbLLTdvlfdqTLtbvDSRHPhHmRSnndHnHRM +jswsGgzwsNgNWNwGJzVrgSHnhHHDmShmmGShnMDPRn +JMNWzVwMpjpLpTfTLLTf +HnQBjMjPQmRMmJCmBPGSFTSVWcNNGQQGGGTV +dgstqdtsbwrzddvrvdwqzhrWSFllDSWGDWFGDNsDDWSTHT +gpqZwwzHZhwzMJBmfZnnJLCL +PJHbTPCmLdTtLtRtBvzBrWffft +hnpTqhMncpFDppDqqNVFVvWzvNWNvfBfzs +GwZccTpgnDSDDZQdCZbbClbCmm +bnZnRZZZRlpGBbfRJjBbMfhCHwfsHShschMsHCww +LqVtqVmtLQvVqqLTFFvLDMhDMpMhwMSLDhsDCH +mFQWtNggVQQgmdgpJGpnnZJjbWGBRZ +GsdGrGqvLZqWvWWdrPLdfvsvSJDDcQQhcTbFbTcCJLSJShcJ +wmBlnjwjgHSSDQjfDDfF +wggpmwmwNnMlHRpttRHmlPfWzdGvvvzrZWVvMrPvvZ +jvlvTvTvTvcqTdZrdnGlVfNgspslpfGGnM +BWQhQzQwmhwWHbWCSRMRgjpjVDDRgDgVffgV +zLHQSBWmLcjdPjLLLZ +BjjLnRzBnRmTSTBhpBmCjnLqNPGGVNZgNgLGddZVNVdf +wDDJJQJlJtHrlwFFPNGGfZbbbglgfPSf +tFQssvcDJtJcFcvwHtBmnSCvRmzzhpSCWvmC +GvPVvVHPgzPMcFvDHssdpCpsnpHnsj +gmhmSRZBJTTTmSBZhhrqSBLRCnsBjjnbjBdbdbbdnbjwwBsj +WlrgrRgJSgZSJJJTZRtvVzvGtfzcVFcMzlGM +QSZwwsBZZwjsndFsMPHLzTLLLz +tpJfgHghmvqpNWrrTMrMMRzPrMPJ +ghgghmlvmgNWgmWwBQcbGGSclGHjjb +lhlnWGGFWZhDfgFfWDfrhgrRwcccqcZQBQMwcqJMTMRMqJ +jVdpSLPVSjtNdjdPtptzLNPPzcBzwCQrCcTBTRqwwqMCJTcC +PNHdpPLHtHtjdLghnHWvrvnFlFnf +qttvqPdCtLrqRgfpgpMgSfSWvM +TJccnTDjjDlDhSpfHdhpTpZf +wldwmJdwmsstCsLzBsBCGP +ddpCGpGpnndnpWqdVVpDGfDGFzSsFSZzBJShJsVtTstssrsr +jbvPLwFjztJBtvJz +wjggcgPFLlLwPFNwHmNPQqDRQfCRGCGqnpcRqQnn +PmmGhLLcgZbPQnqH +DlVsvvrvvvrsDJLRDvvCHbpBqpnbQnggbWZbggVW +vJRTSSRJClCCDwTJRfSfCsGzMLmGmzmjGcfmdFNNNtfh +vcmmMvfctfjLjvvRbLdHSnQSgQFnghSgQQSSjT +WzVbszVNHnTsQFgZ +pVlGlzrbDNrDrPpJNNJpVdBDvLdqvvvqqdBqcfvLdq +gfzgzPDVZQDDSqBdtFfdFdvqBB +MrwmTcJJsMwNmJdvFqdFGGtvvsGt +HMmTTwcJqcrTHrjjczhZQgzghgQHhnhhHh +BffBVgjPwPPPJwBBVJfDDsgrdZdcZqlcSnSncRNzHzZljNqq +CmWFbCmFvMtLLQCTbbbLtRqdSZHcdnqqNqNTRlnqNH +MpthtSMvFbvWPVDrsDgpPggD +VVRntNwmlvhGccPNfS +QZcgZppdrZQTzrBgCbrbdQrBvjLssPjSssMsfSLhTPPGvLTP +ZZcpJZHpgCgpppdrJRtVJFqVFVDRWJmtVq +dpdhtpjHtnpFRHdjRnwspMQmqpqqmVqmTVJQMmff +gSCcBCBCcgwDBLSvcLQQVTMmfmMJDqfTrrVV +gSwPzLBbNCbFnHHjhthh +dLNrRmqLqRgCNNrCJrSqqSQgjDWnGpGjDjspnlslGHnnjsQj +vVTzZFVttVBMFbFfffVVmVtHWpDspjHWWWbGjjjDsjWllW +hwFFwztTzvZmBzVfqhSSNPRPPCRPRJCr +BjfcmzCCTtNBNjcTDWwzPzDMMQPDPMws +lGpJFHnlSlnZbGnQQSBLwSPPLMsDQh +JFHHpbnZbGbZgvTmqfNgqCcvjB +ShhpqjhhVZmHhSJSSnLzdNRNTjLwNTNTzv +QffRWRrMGwLfgNcNgc +GQrQDPRBlGlsGrWtrtPDPbWpqhZqSqJJpHZSVhVhhmmBZF +ZlVVDTtTrzFDrFfB +NNGbJNNNNmpWBNbNWmjMfdjmFfPdqFMrMj +NQvRNvSRHSQBgRGQJJQQHTtcVLlVcTwVTllnRsttZs +fjsDhJsVDcVJVljFDqLqFlnnCFbzbCCCZCzCtCZrnCCM +HwQNrHWNPGPHMZCvMCbzzvHZ +dBWwWPPGrGwBlcjDlcjcjldL +NCLMHJZqCHHHMFlNBZtTZRvtStZdcRbc +wDrnpbswVgsrsWmGpDpfpBQtRSTmdvBjTjtBScctRm +gwzgbGDgpgFJMzlzPJCC +SpnfPVqFnGfPGggqfGbjZZrtWrlRlbHpZjRZ +mmJmdJBsBJsDwhJBQhTZtzdRltrrRlrtHjjl +NBscQhmsmmQLLwLmhhwmcSSGfnfSFCSMCPfHCMqG +hvVnPwZwVzQrhrVhPPPrpQVDBgMMlSTLZsgdDTSTdsssLd +RvFCqCGfbFCRbRmSBMMsLBgdFDSgdL +cRGjRWbWjvtPvrQcnr +LzLNzhpcRRcTmNDzRhTPDjMvMnVlMgjngSMrMzrQQr +tfbWfWcWddFcGFwfswFFFCrjjvlVbrQjSglSQMjgvlgl +FHWGCHCCGcwfswqHdHqwwmPqRJDpZZNRJPRPPTTJNR +gLHLLhTjZVMwMRSZZS +GdqdtlPvnQPPnsRw +tNNGvdtbdmJmHRTRJrFr +QjjdjGDvdjwpZsssvsPZFZll +mTWWMWzbPHmZwHHw +JwTbtBztMVLDSpjVtc +SZSBWtBSwnTDFSDD +CsrJWmmPrPQmpzsPmssssvnTFhvTnPhnFDFfDFnwqF +CCCCzprgrJJCgmVcpJmWLQZddHlGbMbdZMbtZNNcHHBt +fgqqrZLqZqFzFFWzZzgPPbnMNNNvQnpQnQbNbpcHNP +SdwdmwCClCCwldhRSmsvpbncjQbNNQMtjQnMvS +mDlwhMRlCwDCTVwVJRdGgfzLLzzGzGFWqGqfGD +CnVvCqvnRqHVqnWcMFnLmLnMMm +ZrdzbzbrdwtQdSfdcmmFMBWFNFWLwNNp +QFrQtJDdSZdDVHlVCPssJRll +qMpGGmVNHMGVjRJJGfRgQtjQ +flsTZCwDwWcZZPCrPZZWgLLjdJJQSJTQFSgQJJRt +ZcChshwZCDvlCZCsPHMHzqNzBmMfmBBMfh +wCtZtzCnPldZSdZp +VMspbMHspbshbPBLFsdcsLBdLs +pRrQHpNbQbrqRqJfnwfwzR +DPPcDlPwNdNRJsccpgvwBBvqGGQtqrCjwr +fMSVrMWmLZqHQgLggCHH +mZZWVTbTWWfnMWrbmznfZfsPNcdsdpRcNJplbJNcNRNl +ztlNSLhplhBHwwBBMBtv +DnVVfcGbVnGRZGgvPMpHBpCmJMDP +GnZdZZnbdpVcQjQQFjjqrlNWlrsNrFNLLsWqSF +bJQgDRfjDbJbRMTgSSPzPHCNhzQHHszz +wmnwFmDcwFGvpvwGnSWPNPWzPHhhcWSCNz +GpDtmvrdGvvBmZrLTjZRTqTjblbMfL +gBhZmtHhhhwTJqwDFqGGqPWqDb +rRLRVTrjCrCVdFjMbvGPPGDPvW +LSsVdrRNRCCffCSllQNBTNgNlmhHBJ +lCzCCDMDlzzlZtttWDnDCZPbVGLhSmSLGbSgGPgVZm +sBcNsqTQwRQRrBgbgSbPTLVSnLmV +wcqrjQsBBjdCzjdnCv +ZgHVtMQVVgvQjjtzdzfdFHppfmzwpz +CsBrBLLJSrsRCvnGvfRdvF +DbBJTJDLrJDqqqrrhJsJqVWthWlZZlZjMPZltvtMjZ +bsHlrwlnwwQJsqmJnqsPSLzTLpPGPSgPPPWmLT +fdvBtpMDfpCCfBcCcCBtDfFSgTMTGSTRPLgPWGzGgVgLVz +NDcjcDZjBCdvvjdvhlbJnprjnnbhwrqn +zRpLMMqjgMggqLDqDRVGNGdhGtvGGnvGnrznGB +VScbcZPJZWZlZbbHSJQJGtrGvtmdBBGmdGBrdn +cbPsZcPCcWfCZPcPQslljpDqwfqVgRLMTRjwVqLM +QtRWhjtsbttQtnbbQvsrRBfDNdMGBLZLVVNVGNLGWd +JwllwllJmCwzPFSJzwwTBZLDLdBBBPLZZBVTTL +ZwFSSmpwzScFSmggHQjbQvjvscQbrtnjbs +WMLWnSHSMnHjPVMVMVVJGM +zQzRcmttdftrtrdZZRzDtPZppphsVbjGbQbJTTsCbsjppG +dmrDtqfzrmZtqDvdfmZmtdqzLNlgnwgWLNvwFWgWWPNFSFNN +hvSrMwqljjBHvqhHsHshqnrZcCCpfCZZCCZZCcCfCZ +QDVTRFWlmDnpLnnPTPCZ +DVQVtmQRWRRGFVRWVvlwdShBvvSqvtjMdd +pnMQbbnDQMNMDQsnTplNTDvqPGHZGcvqmCqvmqZqmlqP +dwJdBBwdJJwLJBLSRJczWmHPzqWzzHGmvPRHGG +LrdFgSSLBsDMFFcbQb +NSnwvSPPVNnPTLVpRvVvRnqhhQQzHhLbzlqcqHzmHHqh +DFMMfBffgZJtFsJgwdDHGHHzzmqhhHQzDQGhcH +dMrZMMgFfFtZJZfBWMfVPNwPpNwPVSNVjjVWpN +dNlLSvLSdNlhphlhlWfVFFbZHqjjHHvqFZQHCQ +BcrTcJfRMRmrcbqcQgcHVCVF +fBzTJJRmfPPmnppdNwhllwlz +GqfSSmPSFwSCmFBwfQfQBfGnggLrhTrJBDDnrddsJDdLTL +cHHvVtptbzbrTQJTggnTQv +QRVbbQWbpZbVQVGfRmwfFwmjflPP +zzBQJmzQPPlddpJWlzzfdpfjvLvgmvFggMFGDVvLGHVFvvtM +CCSTrCncrhcCcwhRnCqCttFDvMFvtWtVHvFhvLVv +wCTNCSRnbnpWzlBpJspN +PTzTPlrrfrbzmftTTrrjPMsNNFZQgQHVgMtNVFMgFF +DpGBcpvdZhccdGJhqDBphZhdVRQVQQVsqFwMRwFgFNHMHwQQ +SGcLGpdGnBhDJppSDZlPTTmLrmbTLTmrZL +PzmhTqSzdDGcDhzdJDPBmJnrdVppNVVtgttMVrNnMMnV +blbQbWLvlWffCjlGCWwsnLpnpMggnpspnsrg +fQRbCZRfFZvZRQHRvHjmGmTFPcBmDhBGTzmGqS +JJVJfgJfVDdfDDcpTBgdwQMQZQRZQZwmlmWwQGcm +ttzzjjzSqPzqtqzFrPvzwNwMlMRNnnwnllSmmmQG +FCvvChhsRVhhJBdB +rbQZdRzBFTBzZZcclntHnlfJlrNgngfS +PPqGjpPGqpmDmDwqPDVnlNpnJfnnnglJCHlNfC +MMhhjMwwPvZNZTvLTZdL +ZZGgVgwfQNVNLfZsPqRsVTDspTpsqs +jdjdSbmMdMBSvMgBcWpsRpTWDHWTvRPs +httmBMhbBBjCdzShfGzJlnQLlgGGZwww +gLSLMCbVSGRPdTwtjtVfdt +TpzJpFFqmzpscslBtddjlwjjDhhldhvP +WpsTmJpHssqnHMGLnGSgbH +RRBCpJJplCchWJJHCHCvjdpMzFzrNvVgFrrMzz +btLLPGSQctnZnPwwSjgZjjjNNrvMvVrrjV +tmLPGmnbnsLLwqQPSwqGbwDfHlHWBWlCsffshDCBfWcJ +GhDFZFGZzzbCdZbZVlfv +bPNWSbSJSWSJPBBLLqClCltlwlNmllwvCQfC +PgPLqgqpWcWJJcnqJccccGrjbHhDRGMDGTDbpRhbFF +VJRffrVJvDzcRcFFbpSlQLHlvtlstbbt +NmNqPhPqPZhsQLQwSRpH +dWRnRdBmMBWgjCgVGjFcCDzf +nhhQFDmVmDGhmFpgCgBpcpHqncCt +fLLZbljhjjscCggBCLCL +PhMRhNWddWNjfRdPRfWNfVmvQFVQzVMJJDJGrmQGrQ +PNQtsHvZtsQgQLPsPtHZbfzRffRzMMqRqpzbfqng +jDwCmhrDlhBhBldrzJMmfFFbSfFnqpFb +jdljDrDrTBBnGVNcGcQLQLQPQL +MjzrjZvWQRHtjQdS +JFJlDJbcbvtRQmQbQQdf +JqNDBVNpqCBqDBCBVDcNVBqNMWgGZTPZgCrPzzvghPwrwZgG +gzggttLNDFztFCNWzrLttmFddSjsdJsgZVSsJjwjgbgZVG +pPPcqpnqHMpcRbhhMMpThvnwZSjZvdwZvwdZSBvGZSGVZZ +ThcPlHbbPHRnlRTHnMhpfltrNLWzCWWCztzffQLLDmDN +SlNJRpCGTmdFFDcbqJZFFJ +wwnWPHgsLPlVVfssLcZcjjzrDqcFzcgchZ +WVvQHQPfLwSGSvCRlNSd +wWnWcpWDcwHcRdJQTdmNsT +hprqBSvZNjFdFjsq +fSfpvhLBfltMCLzWzC +fdPfPwPmdmLZfNWjWszQNjjN +MBRSBBRBChMRQWhlmVWNsmzm +FvRcSrcRrtvrRrvrrrmcwGwLnTHHqGtwZwHdGPHP +tFPlJcDJdvLZvFlcvlHtQRthbgQjrhsgQgNr +qCnpGMnTTVwCCMnqwWfpChQHRbrgQjsQmmfrrHgHrH +GMnTSBnVTnBGbLlDDvFBLDbF +rJhPGdLSWnnrdqLhPPWGjcZZffjcgNdgNgRcNfwf +mHsDTQlsQBvWspTHzpmCTpcZgwZjZfZNRFwRjRRNMHjZ +vCzDDQsDDvbllWTllCDCCTSLbqSPVqSnJLGSqrPLtVnP +sSRdHHHSRhjShVHWVFJdQPNFpGCrQCCfflqlPvfN +gLztmctMwnBtTzMppBCCrGfQlQQqBN +bbbncfzLmmmnnZLgHZWjhsjVJjHRVSdR +bRgwCHfgfCCttRbdRLHzzGDnDnLBhmBGzvmFZD +rssprQlqlTQGNPcJGVsTBDmWzBnPnhWBvZZDBvDm +MQQTJTNGNcqrNwMwwHRdRbdgbj +sBnnsDLDBCsLTngnZLcdmppCdmpRJwJJQdMRMP +NlrTblbNNbwRPpjjbPdJ +GlztrhvfGqltqzWrcZgFZVSWWSTSncnL +FLJqLFRjzFqzJddlLfNNCjPrGSHCPHNVNVSH +TWTpngssgcPgNGPc +pGMDZpnZBMDsTTTnTsQWWZTRlbvdfZlLflZzJfdqvdRbqf +ClsJpCgsppMbFFFbHp +PvQRPqQPvRdwLNZLZqqwGPPPNTbjMcFcfHjHcMNfBNHrcDDM +GLRnzqzdRqwdZnLLPqqZdQGsVtsnlWCVVWsgtWSSVVhFWt +LNLSJjQDLlzRGwTTzQfT +WbZqchqMZqZWbmdZbhTrvPmGvwfHRHGTHRwH +dcfChsWWZgbfWdhCbgDNFBBDjFNBjjVNpD +HjCLsHJHCjnNVHdCnHtJdtQQgQDhFGFDLcwFDBFMMDBT +vWrSWSbSrRqmzlWlQgRQQTcRMgMTMFwT +bzrpWWzbqrpnZsJwZVpC +FhlfrNdTrtFdtrrrfcZBMdpZcHHHZMcccv +PmbjVDjwQbbjjVpDDvpzBZSSMsvG +jmbVjPVWqVmgJgjmmPPQjmqlCMlftnftnNlTTLLfNfrJtN +PwMWzqwWbFwznqNQQhffQjJfnhfJ +mmdpgmttDrpgpdmZdHmgNsQVZvJNMQvVJffsZVQf +pdcBrMgDgcgrrHPcFSFzzqzFFbPS +QRJJtSfJtQtjQRnSnNssTNdgsgdwddRWcm +qHMDhPBqbqZVzbddTcVwSmNWNVcc +BFCZbqPbHBPMhCljvQSvGCCpnj +HSzHNHlNHmBSHSBFrFFgBHVVqbQLTTcLtqDsDTBTDcDp +CWQZGCWfMZGqbTbtpLsbWp +GwjhPCRZPQPPCPwmzSNzzzmwzlzSgH +GgTvJbpJGvPVHZZZLW +cwWdnwmWnfwZDBHHNzZBVf +nhjjmshdwmSjsnmwrrQrtbtbgTTgrWth +lFBTtcnlcFlppVpttcFZVhTTDDLCHDSDCjDCMSLZDWdDDSjD +mrfsgMfRRwwPffJfbdDdgWGLGLSDjSSWdC +MmfNPwPzMzlhlFlplV +pRVgVsRzdDVJJJRttZTnnLrGsrGssG +BjMvMBWmjWNWSWrLGZPTHLSLTrZr +LLMWQjfvmljLBRVJfbChfVgJRz +RPDsdnVrVnVzScStjpFSjV +BTLBhMMBpSMsMjZz +hwbBgTsbBbGrGHvGrvDnPH +nzwgtSFRqhDphDwB +CmWCrrmrVPGCDTbpvvvhsZDG +VdNrlWHpmQzSMgJFdRFz +jrhZtczchvvFCTmCDlDMrMDT +bHbLnbbwLnWQpLQgQVpQCTDqdmwqmDqCdDCSlmdd +sgVgglblptsfFthtvR +LctzWvrzTWsvWBfvBzdJQSdQhQQfpDJJmmDD +lMRwjlwlLnZwLHLggQDRGphdFDJQdSdJJQ +CjPZCVCjgPwgWqWLqzzcWsVq +JNWHsPNsJNHBnfnnqfqswcctDTmPCRmmTRtgCdmD +rjGrLrbhGRZVGQhphbbmDgDZMDMwdwDcCMgcDM +zvbLvVpFvjzVhbQjGjHlnflJFlWRqBWWBJBS +NfCMfGNdGqVDhWBvncLllhBgcmgL +bJbRbHHtRtJtZTpSRtsLDLzvcvBmgnnnJlsm +SbbbTRpbQHSbbwHZZTHqfCNMfqFWGNGVQMFGDC +MdzwdMpVwVNMHQMJNcHM +mDtcPDqWnDqgnGJvLHTJHJ +mmjhhRBRBcdZrcdRCz +lvldsNpNGCGgCvCGggDLMbMmrdwnjjZdLLwrjM +HWHtPHSHPBnrmZjBbwwC +tHqWRtfttNlDClvNqs +BTRNQTQTTBFRTglDwzztDgCwLF +jZsMjqgdrrzzSbsDSwsw +jWZrMgMjGdvrWWvrWMfMfZTBHTHQBHBQNpQRfRHNpnRT +GRgFCPhnBBhPwZPnwdbWMJMlcJTLLlTlRT +VQsvVvvVNzqsscTVSLbWTStTJW +spfDNpvsnPCfhBbh +GhWSgWphprhQqqndQd +MvZRjjLcCzwcLnHfdTdgfFHQ +wCczcCgRMwRRNCtjMCtCvlBmVDGslmPpmWWNVGSpWV +PZqgTbTZvFgZbZnFvPlBsVqsGBlGVzGsqVls +MMhSmHHfrfrSrjMNfcjrSRBlBVzGVpVGgGVCGslGNd +rMhQQmDSQMjMtZvPTTnJvtQg +TNGWlqVpmPssnNssWLtRfCLbjCCwPgLjfg +ZSHvHczFBBcHhJHFvhHcSFgrCgLbfgfbwrLTtbjwLwJr +BMzSQzcQznlNQTQsnl +FVWDZDZHpDdtZlqZqZqljfNmsNFPjbbPbPRbFFjm +MJSGMghngrccvSrSzMrsQbbRmjmQmjtNtbfB +CMnvczGChCCwcgtpDDlLLLwVHdlHTZ +fTTzbQzhDwwbCnZnpbgnHncM +mGtBRBFmsRpVGMzpnnGL +lFNqtdsssrRFBltSFRFlSrvfDSWWvwfhhPJPjWfQzPvf +GWWWQlpSZzrQnjQdRHVjdjTRvddddB +ztthMtCmffcChJhChfCJdLddLBBgvqdvBBVBcgdq +smbsmbmChCJmJffPmhNthDtZwnFQZQGpSrGWGQGZpQZzWP +ZDzsjjFLFqsQzFsZqDzBHGtBHpmgdNGmGBtLBG +hbbMMTcWhbwnJPlwWrnPbbVGVNndgpVVHmdNHVBmmmtf +bCTPTclcgRZQZCgs \ No newline at end of file diff --git a/day3/program.js b/day3/program.js new file mode 100644 index 0000000..48d2251 --- /dev/null +++ b/day3/program.js @@ -0,0 +1,47 @@ +const allChars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; + +export default function Day(data) { + + // part 1 + let score = 0; + data.forEach((d) => { + const first = d.substr(0, d.length / 2); + const second = d.substr(d.length / 2); + score += matchingChar(first, second); + }); + + console.log(`Part 1: ${score}`); + + // part 2 + let scorePart2 = 0; + for (let i = 0; i < data.length; i += 3) { + const backpackA = data[i]; + const backpackB = data[i + 1]; + const backpackC = data[i + 2]; + scorePart2 += compareBackpacks(backpackA, backpackB, backpackC); + } + + console.log(`Part 2: ${scorePart2}`); +} + +// part 1 +function matchingChar(stringA, stringB) { + const chars = stringA.split(''); + let match = ''; + + chars.forEach((char) => { + if (stringB.indexOf(char) !== -1) match = char; + }); + + return allChars.indexOf(match) + 1; +} + +// part 2 +function compareBackpacks(backpackA, backpackB, backpackC) { + const chars = backpackA.split(''); + let match = ''; + chars.forEach((char) => { + if (backpackB.indexOf(char) !== -1 && backpackC.indexOf(char) !== -1) match = char; + }); + return allChars.indexOf(match) + 1; +} \ No newline at end of file diff --git a/day3/sample.txt b/day3/sample.txt new file mode 100644 index 0000000..9919ffa --- /dev/null +++ b/day3/sample.txt @@ -0,0 +1,6 @@ +vJrwpWtwJgWrhcsFMMfFFhFp +jqHRNqRjqzjGDLGLrsFMfFZSrLrFZsSL +PmmdzqPrVvPwwTWBwg +wMqvLMZHhHMvwLHjbvcjnnSBnvTQFn +ttgJtRGJQctTZtZT +CrZsJsPPZsGzwwsLwLmpwMDw \ No newline at end of file From 12db59811d9061c7337b876a98751e2c0ae13d52 Mon Sep 17 00:00:00 2001 From: Rene Pot Date: Sun, 4 Dec 2022 16:26:27 +0100 Subject: [PATCH 29/59] part 4 --- day4/input.txt | 1000 +++++++++++++++++++++++++++++++++++++++++++++++ day4/program.js | 54 +++ day4/sample.txt | 6 + 3 files changed, 1060 insertions(+) create mode 100644 day4/input.txt create mode 100644 day4/program.js create mode 100644 day4/sample.txt diff --git a/day4/input.txt b/day4/input.txt new file mode 100644 index 0000000..fe99544 --- /dev/null +++ b/day4/input.txt @@ -0,0 +1,1000 @@ +22-77,14-96 +7-99,65-98 +22-36,37-62 +25-94,24-67 +6-91,1-6 +88-88,2-88 +27-89,58-96 +21-82,9-94 +38-79,27-80 +4-90,30-55 +84-97,52-93 +12-59,11-12 +4-14,5-12 +50-84,49-89 +3-98,1-3 +91-95,8-22 +15-66,17-67 +27-27,27-90 +36-37,37-96 +31-32,32-80 +1-79,2-78 +36-85,20-36 +2-2,2-98 +33-81,80-99 +4-73,45-72 +3-89,1-4 +6-92,21-91 +7-93,2-92 +47-89,47-50 +64-84,63-65 +22-85,21-91 +16-31,11-14 +4-93,3-93 +15-61,61-62 +21-23,22-88 +59-59,11-58 +23-23,22-89 +19-87,78-86 +13-82,19-83 +22-88,76-92 +46-47,46-46 +30-31,13-31 +6-93,3-98 +54-54,13-53 +51-77,51-77 +84-84,38-84 +84-98,95-98 +34-41,29-64 +50-95,49-94 +24-88,12-22 +40-41,27-41 +28-28,28-92 +65-66,66-73 +6-99,4-7 +15-38,14-39 +16-81,15-82 +14-98,7-14 +89-89,55-89 +82-86,26-82 +9-88,10-83 +5-54,6-74 +81-95,14-96 +20-81,87-87 +8-73,48-73 +44-52,53-57 +95-95,27-96 +30-94,29-95 +22-93,23-94 +18-93,7-18 +12-88,89-90 +72-78,34-78 +53-93,54-86 +12-87,70-87 +9-84,70-83 +16-89,50-90 +35-67,36-66 +46-56,45-57 +96-99,26-90 +34-90,35-75 +20-77,21-77 +33-56,2-83 +20-75,19-73 +43-52,18-43 +15-54,21-54 +14-63,23-38 +22-48,21-48 +8-20,6-7 +64-72,6-86 +29-92,6-91 +50-88,87-88 +5-72,6-6 +81-81,31-81 +46-52,46-97 +11-36,12-35 +8-80,79-97 +13-94,94-94 +3-98,43-68 +29-61,32-62 +8-60,14-61 +21-93,11-23 +77-77,36-77 +87-98,80-87 +89-92,8-95 +20-70,21-48 +8-90,13-89 +73-82,82-82 +2-3,2-79 +56-93,55-92 +49-84,50-50 +16-69,13-14 +10-68,7-9 +14-97,23-26 +35-76,80-86 +35-86,85-99 +89-89,26-90 +31-94,32-32 +15-57,14-58 +16-30,17-49 +4-68,5-99 +5-98,6-95 +45-64,1-63 +51-75,52-74 +27-58,26-57 +7-87,4-86 +44-51,44-52 +2-2,7-82 +11-80,10-12 +10-22,29-73 +1-41,10-84 +13-42,12-59 +57-57,55-56 +96-99,42-97 +6-95,4-29 +11-91,9-10 +41-44,38-45 +17-98,17-97 +23-55,22-54 +18-84,85-92 +11-83,11-84 +19-61,18-31 +44-54,43-54 +52-87,87-96 +40-98,40-97 +1-79,2-79 +11-33,12-34 +16-79,18-80 +47-50,48-49 +10-90,89-91 +16-98,12-17 +1-19,4-18 +4-72,19-72 +2-69,4-27 +7-9,8-94 +13-77,14-76 +19-89,88-89 +85-92,84-92 +92-93,38-91 +7-65,8-64 +27-71,38-73 +36-92,43-65 +2-5,5-87 +43-95,71-79 +5-61,5-61 +8-78,9-99 +34-34,34-94 +3-60,61-61 +98-98,15-89 +2-56,52-56 +33-90,65-89 +7-72,22-55 +41-70,70-70 +15-73,14-72 +76-76,75-91 +3-82,52-83 +12-51,5-84 +94-96,19-61 +60-62,10-61 +19-95,94-95 +24-57,8-25 +1-3,3-97 +29-46,2-46 +3-73,2-72 +11-79,10-11 +12-35,11-13 +35-59,16-59 +27-88,26-27 +91-91,90-91 +30-48,30-57 +24-34,23-40 +59-98,1-99 +37-42,34-42 +17-99,16-18 +2-36,25-35 +36-36,36-65 +22-77,21-77 +35-45,35-45 +32-99,31-32 +40-54,13-40 +44-44,27-44 +41-93,41-42 +14-44,15-45 +7-63,8-64 +10-10,10-63 +23-92,24-24 +6-95,1-94 +22-23,22-92 +18-31,17-48 +45-58,45-45 +15-86,1-15 +8-71,9-70 +18-68,17-67 +1-85,49-84 +19-47,29-48 +1-74,3-75 +90-92,26-91 +95-99,26-94 +22-95,24-47 +6-79,6-6 +24-97,24-97 +12-15,16-37 +58-78,46-78 +24-43,17-43 +37-67,36-68 +2-97,1-3 +28-29,29-41 +8-9,9-36 +22-62,21-96 +9-24,10-34 +2-2,5-88 +7-16,2-9 +56-95,56-97 +54-79,78-79 +25-48,31-47 +36-82,82-83 +29-77,26-28 +81-81,1-82 +80-89,62-79 +5-98,11-97 +60-80,61-70 +43-52,43-52 +1-96,2-95 +64-91,34-92 +5-85,6-84 +97-98,56-96 +14-93,14-96 +47-86,46-85 +49-49,48-66 +5-96,7-95 +78-79,5-79 +27-54,26-27 +15-15,15-97 +77-92,76-98 +22-39,21-22 +5-31,3-31 +18-98,6-18 +3-4,4-94 +3-95,2-96 +11-56,5-10 +20-82,19-81 +33-51,52-79 +8-53,8-53 +4-82,4-4 +2-97,2-97 +21-29,32-53 +83-98,78-97 +10-88,88-97 +40-50,37-51 +4-4,4-51 +89-90,39-90 +12-12,12-81 +24-55,25-25 +74-74,68-75 +5-89,5-93 +44-86,43-45 +37-47,37-47 +22-99,23-99 +37-59,40-58 +35-99,35-99 +4-85,5-91 +14-87,36-97 +5-64,4-6 +6-94,93-94 +17-83,18-82 +29-99,28-30 +11-99,62-98 +12-64,13-84 +12-97,12-99 +22-42,22-41 +13-91,10-96 +21-49,4-21 +99-99,23-91 +5-42,43-43 +80-82,18-80 +48-97,48-99 +19-49,4-18 +82-99,6-83 +4-96,2-99 +34-40,34-40 +33-51,32-52 +22-62,23-81 +8-70,8-62 +88-97,9-89 +2-4,3-99 +63-95,20-64 +5-96,1-4 +39-79,39-56 +75-88,71-79 +5-96,5-98 +38-39,45-84 +17-96,18-26 +6-7,5-7 +5-39,5-92 +8-26,12-25 +45-51,35-52 +25-75,25-26 +10-98,2-9 +10-64,9-10 +84-86,33-83 +6-50,49-51 +17-72,16-17 +40-61,39-66 +45-50,44-50 +31-41,31-41 +69-83,70-70 +11-86,12-85 +89-92,54-67 +51-79,52-72 +5-10,3-11 +76-76,41-77 +13-53,13-88 +81-91,81-91 +9-68,3-67 +48-59,15-63 +37-97,96-96 +1-78,3-78 +12-43,26-56 +2-67,21-66 +47-58,47-89 +7-69,7-69 +66-93,67-67 +18-41,19-85 +1-50,50-50 +7-18,17-99 +61-92,61-92 +21-40,38-38 +26-99,27-98 +14-94,11-13 +16-18,17-31 +20-32,84-94 +10-97,10-99 +2-89,1-88 +27-94,28-86 +59-96,14-87 +17-91,12-49 +30-86,29-85 +76-77,1-76 +10-94,9-9 +15-37,29-38 +42-63,9-36 +35-52,36-36 +31-32,32-62 +5-11,11-23 +3-8,9-40 +8-99,9-88 +28-60,22-61 +3-42,3-42 +1-5,4-56 +45-90,11-95 +52-52,51-94 +45-51,24-50 +63-92,62-92 +78-94,3-30 +50-51,52-63 +54-58,57-59 +77-77,65-77 +4-90,3-91 +11-48,10-47 +73-90,75-90 +50-58,18-62 +7-98,8-97 +9-76,9-9 +7-47,4-48 +4-95,94-94 +23-58,24-57 +11-18,18-45 +78-99,38-62 +29-70,17-50 +8-80,39-81 +2-99,1-99 +52-67,52-53 +60-94,47-61 +99-99,39-97 +32-92,20-32 +48-81,80-91 +44-51,18-37 +4-57,3-57 +2-84,2-84 +19-20,19-19 +7-80,7-80 +38-38,35-37 +15-99,10-31 +21-55,20-73 +5-6,6-84 +48-79,10-80 +67-96,1-68 +56-95,56-84 +40-96,80-92 +3-3,7-99 +19-85,18-20 +4-8,9-80 +7-53,36-53 +20-30,2-31 +4-72,1-86 +38-85,37-84 +65-69,66-69 +3-6,1-10 +11-35,24-44 +5-70,4-4 +51-79,42-47 +30-31,30-68 +22-97,67-95 +23-45,22-54 +30-76,30-76 +7-94,95-95 +14-66,66-66 +65-76,64-65 +67-89,24-90 +6-57,38-56 +6-71,36-70 +7-73,7-76 +1-2,2-2 +98-98,44-96 +35-35,34-37 +4-99,1-3 +4-17,16-56 +17-74,16-75 +7-97,77-98 +80-94,15-80 +11-62,9-12 +59-71,28-71 +23-95,23-95 +3-70,70-91 +31-97,96-99 +33-79,34-79 +4-19,5-5 +27-63,26-63 +5-25,25-95 +44-74,33-43 +27-43,3-27 +2-96,92-95 +2-89,2-99 +16-16,16-88 +2-95,1-94 +79-82,78-83 +30-96,95-95 +14-88,14-89 +5-16,6-6 +35-72,32-36 +22-99,21-23 +7-93,8-94 +19-98,20-99 +29-30,11-31 +1-99,2-78 +76-86,32-75 +9-95,8-96 +15-40,32-33 +27-76,26-76 +21-79,17-19 +40-64,6-95 +55-91,55-90 +4-77,5-25 +13-92,12-91 +67-72,64-90 +2-64,9-65 +20-70,44-71 +8-72,8-71 +89-96,35-99 +36-36,36-83 +1-39,40-75 +38-56,10-38 +65-80,87-93 +67-69,66-70 +54-85,6-84 +27-89,93-93 +1-99,3-98 +11-87,11-95 +27-88,47-87 +13-80,12-71 +2-79,80-99 +7-74,8-73 +19-19,18-94 +33-91,92-93 +72-81,41-73 +4-66,11-98 +7-88,8-67 +54-73,60-95 +21-63,48-62 +46-97,97-99 +22-28,21-23 +57-58,9-58 +12-97,11-96 +3-98,5-80 +7-21,7-95 +28-51,27-50 +55-99,98-99 +26-48,27-48 +74-97,11-90 +8-92,14-92 +12-52,53-98 +2-96,3-97 +39-39,38-87 +34-35,35-45 +14-84,83-84 +7-93,7-93 +51-56,41-55 +16-54,4-17 +91-95,28-90 +29-93,28-96 +83-83,1-83 +7-97,6-98 +63-70,66-70 +4-21,4-21 +2-7,9-95 +28-97,28-98 +2-72,3-3 +42-42,43-53 +30-81,26-30 +46-52,50-52 +16-27,37-67 +2-92,4-89 +41-85,42-84 +1-93,40-94 +40-97,39-40 +35-69,34-36 +13-95,96-96 +15-94,16-16 +6-11,10-11 +96-96,1-97 +33-98,16-99 +26-79,27-77 +18-67,18-68 +6-86,1-93 +5-92,6-80 +6-93,94-94 +8-73,7-9 +29-43,64-70 +2-98,2-98 +47-50,74-79 +44-44,28-44 +7-19,19-60 +14-98,13-66 +26-77,27-71 +18-70,20-70 +13-99,84-84 +20-86,39-82 +11-25,10-26 +28-28,29-45 +9-9,8-55 +17-94,18-18 +38-71,90-93 +2-50,4-78 +25-43,44-93 +1-17,17-97 +17-64,18-63 +9-89,13-90 +83-97,37-99 +4-4,3-91 +47-69,70-89 +76-96,81-97 +12-13,13-99 +11-85,12-84 +22-95,22-79 +34-96,35-95 +4-17,2-4 +18-74,18-19 +4-87,3-91 +5-79,6-85 +26-99,27-99 +32-50,30-51 +40-70,41-67 +9-78,9-78 +4-98,2-2 +1-3,2-98 +50-50,1-50 +2-75,3-74 +47-71,44-46 +54-82,54-82 +49-93,50-85 +20-86,95-99 +38-86,38-86 +44-59,45-57 +6-6,5-97 +18-97,17-99 +9-31,4-6 +10-90,11-81 +15-16,16-95 +46-97,47-84 +35-47,34-95 +75-94,95-98 +55-90,90-94 +60-90,82-89 +13-51,6-12 +37-87,36-37 +35-89,35-36 +36-69,4-68 +19-24,1-25 +2-96,3-49 +24-88,23-25 +16-39,40-64 +40-68,16-40 +13-91,8-40 +70-91,69-91 +52-86,37-84 +91-99,48-68 +24-35,34-64 +54-73,34-53 +11-76,10-77 +16-90,91-98 +17-18,17-79 +54-66,37-55 +52-77,16-78 +84-97,82-84 +32-48,33-49 +37-58,58-84 +31-63,18-31 +55-67,28-67 +5-99,5-6 +5-48,6-49 +71-93,15-70 +39-75,68-74 +7-8,8-35 +59-59,39-59 +3-13,14-95 +59-66,59-59 +99-99,48-65 +3-95,1-2 +58-88,12-57 +12-12,13-96 +55-68,57-67 +28-37,37-72 +11-94,12-92 +12-91,26-82 +17-65,65-65 +37-91,90-97 +2-43,3-78 +2-14,15-55 +38-40,45-85 +15-76,68-76 +20-23,2-24 +3-97,98-99 +72-72,62-72 +27-51,13-26 +5-53,7-54 +86-86,6-87 +13-67,12-94 +1-87,2-2 +27-66,26-27 +3-86,81-87 +18-99,42-91 +16-84,82-85 +55-95,85-95 +4-96,4-98 +62-89,59-76 +6-78,7-7 +53-53,53-90 +44-72,72-88 +26-98,98-99 +58-60,59-87 +36-53,53-83 +49-74,49-74 +84-85,71-83 +1-98,13-95 +27-70,26-76 +14-83,14-83 +43-65,64-65 +14-78,7-78 +93-93,43-63 +11-40,10-41 +31-96,31-31 +2-63,64-77 +33-33,32-51 +3-17,4-72 +95-95,95-97 +15-98,15-88 +47-84,46-48 +5-5,4-87 +1-77,40-78 +2-86,37-85 +18-90,17-90 +16-95,15-17 +47-95,46-94 +20-40,15-39 +56-90,55-90 +41-90,41-90 +14-39,13-46 +98-99,61-99 +29-31,30-86 +22-33,28-34 +10-98,2-10 +6-18,14-19 +97-97,97-97 +14-62,7-50 +12-21,15-17 +73-73,74-90 +6-13,5-14 +79-86,79-87 +2-87,3-87 +51-86,51-85 +35-94,11-93 +43-78,78-78 +76-97,31-76 +12-54,13-13 +8-95,48-96 +74-85,85-95 +11-13,21-40 +9-82,2-94 +40-48,39-95 +5-16,12-29 +7-22,21-42 +10-22,21-99 +59-73,44-74 +38-60,39-59 +16-92,29-93 +38-48,4-39 +8-59,7-59 +2-97,4-96 +77-92,77-91 +39-53,40-69 +3-92,5-92 +97-99,61-97 +19-46,45-59 +16-58,14-16 +14-15,13-17 +14-92,15-15 +13-42,12-42 +70-93,71-93 +6-53,3-7 +10-11,10-11 +10-99,22-99 +7-23,15-86 +11-95,94-97 +21-45,44-45 +19-21,22-30 +8-91,9-83 +7-91,9-47 +2-93,3-94 +48-61,46-79 +8-25,26-93 +88-92,11-89 +2-30,3-29 +30-30,29-90 +50-66,25-67 +37-47,37-48 +26-34,14-17 +17-49,16-72 +35-57,3-35 +10-10,9-27 +21-22,21-99 +58-89,48-57 +34-38,35-39 +86-89,52-97 +51-69,34-50 +21-59,3-96 +19-88,88-88 +16-96,16-66 +18-49,11-17 +1-1,3-70 +8-39,39-75 +45-46,45-98 +39-91,67-91 +2-2,1-85 +14-68,43-69 +37-79,46-80 +29-43,40-40 +3-4,40-65 +14-89,15-89 +27-79,17-26 +1-2,1-98 +54-92,91-93 +22-53,54-84 +55-95,94-97 +9-36,8-35 +3-37,3-37 +49-76,49-65 +10-95,95-95 +8-98,37-99 +2-83,1-3 +38-91,39-92 +9-95,8-94 +2-43,2-43 +15-89,77-90 +41-47,37-46 +9-94,1-10 +5-99,65-98 +42-83,42-42 +54-73,38-98 +57-57,56-76 +14-44,45-73 +26-27,27-72 +20-85,19-23 +5-99,6-98 +9-60,7-8 +99-99,27-99 +3-3,25-55 +62-64,16-65 +84-84,41-84 +23-78,4-93 +35-99,34-35 +44-46,45-90 +89-89,5-88 +63-85,64-84 +66-76,45-68 +60-90,61-89 +94-94,94-95 +87-94,80-86 +23-70,71-90 +93-93,5-93 +33-80,34-79 +15-60,16-16 +57-97,53-57 +67-84,83-93 +9-90,18-59 +28-82,21-81 +32-64,31-64 +59-81,18-59 +23-85,7-84 +50-68,12-68 +75-80,76-79 +64-92,64-66 +61-71,62-70 +29-96,20-31 +57-75,71-75 +48-50,49-78 +12-82,76-82 +2-35,4-35 +18-60,13-60 +52-81,20-27 +13-19,13-20 +33-61,48-61 +65-89,24-88 +32-46,32-69 +12-12,2-11 +18-97,16-18 +11-11,10-89 +3-72,3-3 +24-92,23-23 +13-15,16-51 +37-69,24-70 +3-99,10-99 +3-73,1-3 +8-30,3-29 +28-81,28-81 +90-94,1-90 +1-14,1-1 +2-98,1-99 +62-88,55-63 +19-33,34-34 +15-94,14-97 +22-34,15-34 +41-59,42-60 +4-89,18-90 +32-84,84-84 +32-95,31-72 +7-88,8-56 +20-21,20-96 +31-80,31-81 +6-61,30-43 +6-71,72-86 +20-71,28-96 +8-72,57-86 +1-3,3-19 +38-39,39-90 +58-58,58-90 +55-55,14-55 +96-96,3-89 +9-83,8-93 +3-85,3-84 +4-4,3-81 +66-82,81-82 +11-11,12-87 +2-3,7-94 +5-76,2-96 +13-82,46-81 +7-51,4-50 +18-73,73-73 +14-88,14-88 +50-83,50-94 +21-58,59-95 +47-99,48-93 +11-53,1-9 +6-75,3-75 +2-4,3-66 +2-55,1-3 +48-58,44-58 +78-78,77-78 +31-42,39-43 +43-60,44-60 +1-92,93-96 +43-44,44-64 +3-77,3-3 +9-98,10-99 +15-16,15-56 +5-24,11-25 +58-92,99-99 +10-10,11-86 +7-54,6-53 +56-74,17-55 +57-87,48-89 +33-64,2-89 +45-70,14-71 +24-69,23-70 +62-93,15-90 +69-83,70-83 +8-15,12-14 +34-63,62-93 +3-6,7-81 +75-92,75-92 +24-28,13-31 +16-54,31-50 +53-54,53-91 +34-99,35-97 +7-64,2-7 +11-67,67-89 +70-72,71-79 +57-88,88-89 +59-60,59-88 +5-90,99-99 +4-67,38-41 +8-83,14-82 +20-22,21-45 +1-66,16-67 +59-70,34-60 +3-85,14-84 +49-93,48-94 +97-97,2-96 +38-71,37-72 +4-90,3-91 +6-90,7-99 +57-97,57-87 +37-75,38-81 +13-86,12-13 +60-76,61-84 +6-89,7-98 +6-99,5-96 +4-75,75-99 +3-91,22-62 +11-71,28-37 +26-35,13-26 +12-25,24-24 +16-35,36-47 +16-39,40-77 +1-65,58-63 +37-89,43-88 +74-74,74-84 +80-86,40-80 +4-28,25-94 +35-93,35-81 +6-97,2-99 +10-68,11-33 +4-76,34-78 +18-84,21-46 +79-82,82-82 +1-3,4-97 +7-98,8-97 +36-97,35-35 +24-61,23-24 +3-93,8-92 +67-67,65-66 +30-77,1-65 +39-64,3-63 +18-52,13-52 +24-70,69-76 +1-56,14-45 +3-60,4-4 +1-8,1-9 +14-20,19-79 +34-82,35-83 +67-88,41-89 +8-29,56-84 +32-40,33-40 +4-93,3-93 +5-5,4-78 +58-79,16-59 +24-31,15-61 +49-50,40-50 +46-46,47-95 +34-34,35-95 +19-21,18-20 +4-8,7-98 +9-10,9-97 +14-83,5-14 +20-21,20-55 +14-97,13-31 +25-39,24-89 +17-73,14-74 +14-36,13-36 +58-64,59-65 +20-92,21-55 +20-85,19-20 +19-47,18-99 \ No newline at end of file diff --git a/day4/program.js b/day4/program.js new file mode 100644 index 0000000..919bfb5 --- /dev/null +++ b/day4/program.js @@ -0,0 +1,54 @@ +export default function Day(data) { + const pairs = data.map((d) => d.split(",")); + let containedPairs = 0; + pairs.forEach((pair) => { + if (containsPair(pair[0], pair[1])){ + containedPairs++; + } + }); + + console.log(`Part 1: ${containedPairs}`); + + let overlappers = 0; + pairs.forEach((pair) => { + if (checkIfOverlap(convertRangeToString(pair[0]), convertRangeToNumbers(pair[1]))) { + overlappers++; + } + }); + console.log(`Part 2: ${overlappers}`); +} + +function checkIfOverlap(stringA, rangeB) { + let hasMatch = false; + // breakable loop + for (let i = 0; i < rangeB.length; i++) { + if (stringA.indexOf(`.${rangeB[i]}.`) > -1) { + return true; + } + } + return false; +} + +function containsPair(first, second) { + const stringA = convertRangeToString(first); + const stringB = convertRangeToString(second); + if (stringA.indexOf(stringB) !== -1 || stringB.indexOf(stringA) !== -1) { + return true; + } + return false; +} + +function convertRangeToNumbers(range) { + const [min, max] = range.split("-"); + const numbers = []; + for (let i = parseInt(min); i <= parseInt(max); i++) { + numbers.push(i); + } + return numbers; +} + +function convertRangeToString(range){ + const numbers = convertRangeToNumbers(range); + return `.${numbers.join('.')}.`; + +} diff --git a/day4/sample.txt b/day4/sample.txt new file mode 100644 index 0000000..99a66c5 --- /dev/null +++ b/day4/sample.txt @@ -0,0 +1,6 @@ +2-4,6-8 +2-3,4-5 +5-7,7-9 +2-8,3-7 +6-6,4-6 +2-6,4-8 \ No newline at end of file From 23d312dfda83024e2a899e5f2c57bd1091ee04c4 Mon Sep 17 00:00:00 2001 From: Rene Pot Date: Mon, 5 Dec 2022 09:54:22 +0100 Subject: [PATCH 30/59] add empty day --- empty/input.txt | 0 empty/program.js | 3 +++ empty/sample.txt | 0 3 files changed, 3 insertions(+) create mode 100644 empty/input.txt create mode 100644 empty/program.js create mode 100644 empty/sample.txt diff --git a/empty/input.txt b/empty/input.txt new file mode 100644 index 0000000..e69de29 diff --git a/empty/program.js b/empty/program.js new file mode 100644 index 0000000..2101edf --- /dev/null +++ b/empty/program.js @@ -0,0 +1,3 @@ +export default function Day(data) { + +} \ No newline at end of file diff --git a/empty/sample.txt b/empty/sample.txt new file mode 100644 index 0000000..e69de29 From 130a3a30332095cf8ae09c06bad494c4a0929589 Mon Sep 17 00:00:00 2001 From: Rene Pot Date: Mon, 5 Dec 2022 09:54:33 +0100 Subject: [PATCH 31/59] first step to create stack arrays for part 1 --- day5/input.txt | 511 ++++++++++++++++++++++++++++++++++++++++++++++++ day5/program.js | 37 ++++ day5/sample.txt | 9 + 3 files changed, 557 insertions(+) create mode 100644 day5/input.txt create mode 100644 day5/program.js create mode 100644 day5/sample.txt diff --git a/day5/input.txt b/day5/input.txt new file mode 100644 index 0000000..77689d0 --- /dev/null +++ b/day5/input.txt @@ -0,0 +1,511 @@ + [P] [Q] [T] +[F] [N] [P] [L] [M] +[H] [T] [H] [M] [H] [Z] +[M] [C] [P] [Q] [R] [C] [J] +[T] [J] [M] [F] [L] [G] [R] [Q] +[V] [G] [D] [V] [G] [D] [N] [W] [L] +[L] [Q] [S] [B] [H] [B] [M] [L] [D] +[D] [H] [R] [L] [N] [W] [G] [C] [R] + 1 2 3 4 5 6 7 8 9 + +move 1 from 7 to 6 +move 1 from 8 to 5 +move 3 from 7 to 4 +move 5 from 9 to 6 +move 3 from 7 to 9 +move 2 from 5 to 7 +move 10 from 6 to 8 +move 2 from 2 to 3 +move 2 from 9 to 1 +move 6 from 8 to 2 +move 5 from 3 to 8 +move 4 from 5 to 9 +move 3 from 4 to 5 +move 2 from 1 to 8 +move 3 from 1 to 7 +move 1 from 7 to 1 +move 4 from 7 to 8 +move 1 from 5 to 6 +move 1 from 9 to 3 +move 8 from 2 to 4 +move 1 from 5 to 8 +move 1 from 5 to 3 +move 2 from 1 to 8 +move 4 from 3 to 4 +move 1 from 3 to 4 +move 1 from 1 to 7 +move 1 from 7 to 8 +move 1 from 7 to 4 +move 5 from 9 to 1 +move 2 from 6 to 7 +move 3 from 2 to 1 +move 12 from 8 to 7 +move 8 from 7 to 3 +move 1 from 2 to 8 +move 6 from 7 to 1 +move 1 from 6 to 3 +move 8 from 4 to 3 +move 5 from 3 to 6 +move 6 from 1 to 8 +move 2 from 1 to 2 +move 2 from 3 to 1 +move 4 from 4 to 5 +move 1 from 5 to 7 +move 1 from 6 to 9 +move 1 from 4 to 9 +move 8 from 1 to 4 +move 10 from 3 to 5 +move 2 from 4 to 5 +move 2 from 2 to 6 +move 2 from 1 to 6 +move 11 from 4 to 7 +move 9 from 6 to 5 +move 16 from 8 to 3 +move 15 from 5 to 6 +move 10 from 3 to 6 +move 24 from 6 to 5 +move 5 from 7 to 5 +move 1 from 6 to 3 +move 1 from 7 to 2 +move 2 from 7 to 6 +move 3 from 3 to 6 +move 8 from 5 to 1 +move 3 from 9 to 8 +move 3 from 8 to 4 +move 1 from 7 to 1 +move 1 from 2 to 9 +move 1 from 9 to 2 +move 2 from 3 to 1 +move 2 from 4 to 2 +move 5 from 6 to 8 +move 3 from 7 to 1 +move 1 from 4 to 2 +move 26 from 5 to 9 +move 1 from 3 to 6 +move 7 from 1 to 9 +move 1 from 3 to 5 +move 1 from 6 to 5 +move 1 from 5 to 4 +move 5 from 5 to 6 +move 1 from 4 to 9 +move 3 from 9 to 3 +move 4 from 8 to 5 +move 2 from 5 to 2 +move 1 from 1 to 6 +move 1 from 8 to 9 +move 2 from 2 to 4 +move 2 from 3 to 7 +move 1 from 7 to 6 +move 7 from 6 to 7 +move 1 from 4 to 3 +move 2 from 2 to 4 +move 28 from 9 to 3 +move 26 from 3 to 7 +move 2 from 4 to 3 +move 2 from 9 to 1 +move 4 from 3 to 6 +move 1 from 4 to 5 +move 1 from 3 to 4 +move 3 from 1 to 9 +move 1 from 4 to 7 +move 1 from 5 to 7 +move 1 from 6 to 9 +move 23 from 7 to 1 +move 4 from 9 to 5 +move 3 from 9 to 4 +move 2 from 6 to 3 +move 1 from 6 to 7 +move 3 from 3 to 9 +move 11 from 7 to 2 +move 4 from 2 to 3 +move 23 from 1 to 2 +move 15 from 2 to 4 +move 2 from 7 to 9 +move 13 from 2 to 8 +move 1 from 7 to 5 +move 1 from 2 to 8 +move 7 from 4 to 8 +move 6 from 4 to 3 +move 1 from 2 to 4 +move 1 from 2 to 9 +move 20 from 8 to 5 +move 1 from 8 to 4 +move 3 from 4 to 7 +move 3 from 3 to 9 +move 1 from 2 to 8 +move 20 from 5 to 3 +move 6 from 5 to 3 +move 26 from 3 to 9 +move 2 from 7 to 5 +move 1 from 5 to 4 +move 1 from 7 to 8 +move 2 from 8 to 5 +move 12 from 9 to 4 +move 2 from 3 to 2 +move 4 from 1 to 9 +move 2 from 3 to 1 +move 4 from 5 to 6 +move 5 from 9 to 4 +move 2 from 6 to 3 +move 2 from 6 to 8 +move 2 from 8 to 3 +move 1 from 2 to 7 +move 21 from 4 to 2 +move 1 from 4 to 5 +move 13 from 2 to 4 +move 4 from 3 to 9 +move 25 from 9 to 7 +move 7 from 2 to 4 +move 18 from 7 to 8 +move 2 from 1 to 5 +move 1 from 3 to 9 +move 2 from 9 to 3 +move 1 from 1 to 6 +move 8 from 7 to 6 +move 4 from 3 to 2 +move 1 from 4 to 7 +move 6 from 2 to 5 +move 1 from 7 to 3 +move 5 from 6 to 8 +move 4 from 4 to 1 +move 9 from 5 to 1 +move 12 from 4 to 3 +move 1 from 6 to 5 +move 1 from 5 to 2 +move 13 from 3 to 8 +move 14 from 8 to 6 +move 2 from 1 to 6 +move 1 from 2 to 5 +move 11 from 1 to 3 +move 1 from 5 to 3 +move 6 from 6 to 8 +move 23 from 8 to 5 +move 1 from 8 to 1 +move 18 from 5 to 8 +move 5 from 6 to 8 +move 10 from 3 to 8 +move 1 from 1 to 5 +move 2 from 4 to 8 +move 1 from 4 to 7 +move 5 from 5 to 3 +move 1 from 6 to 1 +move 6 from 3 to 9 +move 35 from 8 to 4 +move 1 from 7 to 6 +move 2 from 9 to 8 +move 1 from 1 to 6 +move 17 from 4 to 7 +move 1 from 5 to 1 +move 4 from 9 to 6 +move 12 from 6 to 4 +move 29 from 4 to 2 +move 17 from 7 to 8 +move 27 from 2 to 7 +move 2 from 2 to 1 +move 1 from 3 to 1 +move 25 from 7 to 4 +move 25 from 4 to 6 +move 1 from 4 to 2 +move 4 from 1 to 6 +move 1 from 2 to 6 +move 25 from 6 to 1 +move 5 from 6 to 8 +move 15 from 1 to 6 +move 2 from 7 to 8 +move 15 from 6 to 2 +move 14 from 2 to 8 +move 1 from 2 to 3 +move 4 from 1 to 4 +move 4 from 4 to 2 +move 6 from 1 to 8 +move 3 from 2 to 5 +move 3 from 5 to 7 +move 1 from 2 to 3 +move 1 from 6 to 8 +move 8 from 8 to 5 +move 2 from 7 to 4 +move 1 from 7 to 9 +move 3 from 5 to 8 +move 2 from 4 to 6 +move 3 from 5 to 8 +move 2 from 3 to 4 +move 2 from 6 to 5 +move 1 from 9 to 8 +move 48 from 8 to 5 +move 1 from 8 to 9 +move 41 from 5 to 4 +move 4 from 5 to 2 +move 3 from 2 to 7 +move 1 from 2 to 7 +move 1 from 8 to 1 +move 1 from 9 to 4 +move 1 from 1 to 3 +move 7 from 4 to 7 +move 11 from 7 to 4 +move 4 from 4 to 1 +move 37 from 4 to 9 +move 4 from 4 to 3 +move 32 from 9 to 3 +move 5 from 9 to 1 +move 12 from 3 to 2 +move 3 from 4 to 1 +move 3 from 1 to 6 +move 3 from 1 to 6 +move 2 from 1 to 5 +move 9 from 2 to 7 +move 3 from 7 to 3 +move 6 from 6 to 5 +move 4 from 3 to 6 +move 3 from 6 to 9 +move 13 from 3 to 8 +move 3 from 1 to 9 +move 2 from 3 to 2 +move 2 from 7 to 8 +move 1 from 6 to 8 +move 4 from 2 to 8 +move 2 from 8 to 3 +move 1 from 2 to 1 +move 4 from 7 to 3 +move 6 from 3 to 5 +move 3 from 9 to 8 +move 13 from 8 to 6 +move 1 from 9 to 2 +move 2 from 3 to 8 +move 1 from 1 to 9 +move 1 from 1 to 3 +move 10 from 6 to 3 +move 1 from 2 to 5 +move 22 from 5 to 7 +move 1 from 9 to 3 +move 1 from 8 to 7 +move 2 from 7 to 8 +move 6 from 8 to 4 +move 2 from 9 to 2 +move 21 from 7 to 6 +move 4 from 8 to 5 +move 1 from 8 to 4 +move 1 from 5 to 7 +move 12 from 3 to 6 +move 1 from 2 to 6 +move 1 from 7 to 9 +move 1 from 2 to 6 +move 6 from 3 to 5 +move 6 from 4 to 2 +move 1 from 3 to 6 +move 1 from 9 to 7 +move 6 from 2 to 7 +move 22 from 6 to 4 +move 3 from 6 to 5 +move 7 from 5 to 7 +move 3 from 7 to 8 +move 2 from 5 to 3 +move 2 from 3 to 7 +move 13 from 6 to 8 +move 3 from 7 to 1 +move 3 from 5 to 9 +move 16 from 4 to 5 +move 1 from 5 to 8 +move 2 from 1 to 6 +move 1 from 1 to 7 +move 6 from 4 to 2 +move 4 from 8 to 7 +move 13 from 5 to 7 +move 1 from 6 to 3 +move 2 from 5 to 6 +move 10 from 7 to 6 +move 1 from 3 to 9 +move 1 from 4 to 3 +move 1 from 3 to 5 +move 12 from 7 to 3 +move 2 from 2 to 1 +move 1 from 5 to 9 +move 2 from 9 to 6 +move 4 from 2 to 7 +move 7 from 7 to 9 +move 1 from 7 to 8 +move 1 from 1 to 9 +move 11 from 9 to 7 +move 4 from 8 to 3 +move 5 from 3 to 5 +move 2 from 8 to 4 +move 3 from 5 to 2 +move 2 from 2 to 8 +move 1 from 5 to 2 +move 5 from 8 to 2 +move 7 from 7 to 2 +move 4 from 8 to 9 +move 2 from 7 to 6 +move 4 from 9 to 7 +move 6 from 2 to 4 +move 1 from 5 to 6 +move 5 from 3 to 5 +move 1 from 8 to 1 +move 10 from 6 to 3 +move 8 from 2 to 8 +move 1 from 8 to 1 +move 5 from 3 to 2 +move 2 from 8 to 7 +move 6 from 7 to 4 +move 12 from 4 to 1 +move 4 from 1 to 2 +move 1 from 2 to 1 +move 8 from 2 to 9 +move 2 from 4 to 8 +move 5 from 9 to 7 +move 8 from 3 to 8 +move 2 from 3 to 1 +move 6 from 8 to 2 +move 7 from 7 to 2 +move 1 from 3 to 5 +move 2 from 7 to 2 +move 1 from 9 to 1 +move 1 from 9 to 7 +move 1 from 9 to 4 +move 1 from 6 to 7 +move 1 from 2 to 3 +move 1 from 3 to 8 +move 1 from 4 to 9 +move 5 from 6 to 1 +move 7 from 8 to 2 +move 1 from 7 to 4 +move 9 from 2 to 8 +move 7 from 2 to 7 +move 1 from 4 to 2 +move 8 from 7 to 5 +move 4 from 8 to 7 +move 8 from 8 to 6 +move 9 from 1 to 4 +move 1 from 9 to 1 +move 4 from 7 to 6 +move 7 from 1 to 7 +move 6 from 7 to 3 +move 4 from 1 to 8 +move 13 from 6 to 3 +move 6 from 2 to 3 +move 1 from 3 to 4 +move 2 from 3 to 7 +move 1 from 6 to 9 +move 11 from 5 to 1 +move 1 from 6 to 3 +move 8 from 4 to 1 +move 2 from 5 to 2 +move 1 from 9 to 5 +move 2 from 8 to 7 +move 7 from 1 to 5 +move 2 from 7 to 3 +move 8 from 5 to 4 +move 1 from 8 to 2 +move 1 from 5 to 7 +move 3 from 7 to 2 +move 4 from 4 to 7 +move 4 from 3 to 4 +move 20 from 3 to 2 +move 1 from 8 to 3 +move 1 from 3 to 8 +move 4 from 7 to 2 +move 1 from 8 to 6 +move 1 from 7 to 5 +move 1 from 3 to 1 +move 1 from 4 to 2 +move 5 from 1 to 4 +move 14 from 4 to 1 +move 1 from 6 to 5 +move 1 from 2 to 3 +move 1 from 5 to 1 +move 11 from 2 to 9 +move 18 from 1 to 2 +move 4 from 1 to 3 +move 12 from 2 to 5 +move 5 from 2 to 4 +move 7 from 5 to 1 +move 1 from 2 to 9 +move 9 from 1 to 9 +move 1 from 3 to 6 +move 2 from 3 to 9 +move 1 from 6 to 1 +move 1 from 4 to 8 +move 1 from 3 to 4 +move 1 from 3 to 8 +move 16 from 9 to 5 +move 2 from 2 to 7 +move 14 from 5 to 8 +move 16 from 8 to 5 +move 1 from 7 to 9 +move 1 from 7 to 6 +move 4 from 9 to 5 +move 11 from 5 to 6 +move 12 from 2 to 4 +move 16 from 5 to 7 +move 4 from 7 to 2 +move 1 from 5 to 6 +move 3 from 9 to 1 +move 4 from 7 to 9 +move 3 from 6 to 4 +move 9 from 2 to 9 +move 3 from 1 to 8 +move 2 from 8 to 1 +move 1 from 8 to 2 +move 5 from 6 to 1 +move 7 from 7 to 1 +move 1 from 7 to 6 +move 8 from 4 to 5 +move 1 from 2 to 6 +move 12 from 9 to 2 +move 3 from 2 to 9 +move 8 from 5 to 8 +move 12 from 4 to 5 +move 1 from 2 to 9 +move 1 from 5 to 6 +move 2 from 1 to 7 +move 4 from 5 to 2 +move 6 from 5 to 1 +move 2 from 7 to 6 +move 1 from 5 to 1 +move 1 from 8 to 5 +move 7 from 6 to 9 +move 2 from 9 to 4 +move 16 from 1 to 8 +move 1 from 5 to 8 +move 7 from 2 to 8 +move 3 from 6 to 2 +move 1 from 4 to 8 +move 28 from 8 to 3 +move 1 from 4 to 2 +move 4 from 1 to 2 +move 11 from 2 to 7 +move 9 from 7 to 8 +move 7 from 9 to 5 +move 4 from 8 to 1 +move 2 from 9 to 1 +move 2 from 1 to 5 +move 1 from 7 to 9 +move 1 from 1 to 9 +move 6 from 5 to 3 +move 3 from 5 to 1 +move 2 from 2 to 8 +move 7 from 8 to 3 +move 7 from 3 to 7 +move 4 from 1 to 9 +move 1 from 8 to 9 +move 2 from 8 to 1 +move 1 from 8 to 1 +move 6 from 7 to 6 +move 6 from 6 to 5 +move 17 from 3 to 6 +move 2 from 9 to 2 +move 2 from 1 to 4 +move 12 from 3 to 8 +move 6 from 6 to 5 +move 2 from 2 to 1 +move 4 from 9 to 7 +move 2 from 7 to 3 +move 1 from 1 to 5 +move 10 from 8 to 6 +move 2 from 3 to 9 +move 9 from 5 to 2 +move 7 from 2 to 8 +move 1 from 4 to 8 +move 1 from 4 to 6 +move 7 from 8 to 7 +move 3 from 9 to 7 +move 4 from 3 to 4 \ No newline at end of file diff --git a/day5/program.js b/day5/program.js new file mode 100644 index 0000000..4a50dbe --- /dev/null +++ b/day5/program.js @@ -0,0 +1,37 @@ +export default function Day(data) { + console.log(data); + extractStacks(data); +} + +function extractStacks(data) { + let stacks = []; + const numStacks = Math.ceil(data[0].length / 4); + + for (let i = 0; i < numStacks; i++) { + stacks.push([]); + } + + const containerRows = []; + // use a while loop to loop through data until a row has a 1 on position 2 in the string + let i = 0; + while (i < data.length) { + if (data[i][1] === '1') { + break; + } + containerRows.push(data[i]); + i++; + } + + containerRows.forEach(row => { + const parts = row.split(' '); + let pos = 0; + parts.forEach((part, i) => { + if (part === '') return pos++; + if (part.substr(0,1) === '[') pos += 4; + console.log(pos, part); + const stackNum = pos/4-1; + stacks[stackNum].unshift(part); + }); + }); + console.log(stacks); +} \ No newline at end of file diff --git a/day5/sample.txt b/day5/sample.txt new file mode 100644 index 0000000..43277fb --- /dev/null +++ b/day5/sample.txt @@ -0,0 +1,9 @@ + [D] +[N] [C] +[Z] [M] [P] + 1 2 3 + +move 1 from 2 to 1 +move 3 from 1 to 3 +move 2 from 2 to 1 +move 1 from 1 to 2 \ No newline at end of file From d07080702179fe0339f11db8937f01ca496d2d06 Mon Sep 17 00:00:00 2001 From: Rene Pot Date: Mon, 5 Dec 2022 09:55:23 +0100 Subject: [PATCH 32/59] remove debug --- day5/program.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/day5/program.js b/day5/program.js index 4a50dbe..b9a7cb7 100644 --- a/day5/program.js +++ b/day5/program.js @@ -12,7 +12,7 @@ function extractStacks(data) { } const containerRows = []; - // use a while loop to loop through data until a row has a 1 on position 2 in the string + let i = 0; while (i < data.length) { if (data[i][1] === '1') { @@ -28,10 +28,8 @@ function extractStacks(data) { parts.forEach((part, i) => { if (part === '') return pos++; if (part.substr(0,1) === '[') pos += 4; - console.log(pos, part); const stackNum = pos/4-1; stacks[stackNum].unshift(part); }); }); - console.log(stacks); } \ No newline at end of file From 8fea9f8ff9377a4b0efef7d1368ccc1087284022 Mon Sep 17 00:00:00 2001 From: Rene Pot Date: Mon, 5 Dec 2022 10:41:54 +0100 Subject: [PATCH 33/59] extract stacks and instructions --- day5/program.js | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/day5/program.js b/day5/program.js index b9a7cb7..92766dd 100644 --- a/day5/program.js +++ b/day5/program.js @@ -1,6 +1,6 @@ export default function Day(data) { - console.log(data); - extractStacks(data); + const {stacks, instructions} = extractStacks(data); + console.log(stacks); } function extractStacks(data) { @@ -12,15 +12,21 @@ function extractStacks(data) { } const containerRows = []; - - let i = 0; - while (i < data.length) { + const instructions = []; + let status = 'containers'; + for (let i = 0; i < data.length; i++) { if (data[i][1] === '1') { - break; + status = 'split'; } - containerRows.push(data[i]); - i++; - } + if (data[i][0] === 'm') { + status = 'instructions' + } + if (status === 'containers') { + containerRows.push(data[i]); + } else if (status === 'instructions') { + instructions.push(data[i]); + } + }; containerRows.forEach(row => { const parts = row.split(' '); @@ -32,4 +38,5 @@ function extractStacks(data) { stacks[stackNum].unshift(part); }); }); + return {stacks, instructions}; } \ No newline at end of file From cfd37e1ab68bef45addfb1eb77bc176b941c947b Mon Sep 17 00:00:00 2001 From: Rene Pot Date: Mon, 5 Dec 2022 10:49:06 +0100 Subject: [PATCH 34/59] part 1 --- day5/program.js | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/day5/program.js b/day5/program.js index 92766dd..0df7a9a 100644 --- a/day5/program.js +++ b/day5/program.js @@ -1,6 +1,29 @@ export default function Day(data) { const {stacks, instructions} = extractStacks(data); - console.log(stacks); + executeInstructions(stacks, instructions); + topOfStacks(stacks); +} + +function topOfStacks(stacks) { + let solutionString = ''; + stacks.forEach(stack => { + solutionString += stack[stack.length-1].substr(1,1); + }); + + console.log(solutionString); +} + +function executeInstructions(stacks, instructions) { + instructions.forEach(row => { + const instruction = row.split(' '); + const amount = parseInt(instruction[1]); + const fromStack = parseInt(instruction[3]) - 1; + const toStack = parseInt(instruction[5]) - 1; + + for (let i = 0; i < amount; i++) { + stacks[toStack].push(stacks[fromStack].pop()); + } + }); } function extractStacks(data) { From 00a90d9372c383e02ce9733f37c702946e2b20eb Mon Sep 17 00:00:00 2001 From: Rene Pot Date: Mon, 5 Dec 2022 12:25:57 +0100 Subject: [PATCH 35/59] extract logic to reusable functions and add part 2 --- day5/program.js | 81 ++++++++++++++++++++++++++++++++----------------- 1 file changed, 53 insertions(+), 28 deletions(-) diff --git a/day5/program.js b/day5/program.js index 0df7a9a..f559b22 100644 --- a/day5/program.js +++ b/day5/program.js @@ -1,65 +1,90 @@ export default function Day(data) { - const {stacks, instructions} = extractStacks(data); + runPart1(data); + runPart2(data); +} + +function runPart1(data) { + const { stacks, instructions } = extractStacks(data); executeInstructions(stacks, instructions); - topOfStacks(stacks); + console.log(`part 1: ${topOfStacks(stacks)}`); +} + +function runPart2(data) { + // part 2 + const { stacks, instructions } = extractStacks(data); + executeTrueInstructions(stacks, instructions); + console.log(`part 2: ${topOfStacks(stacks)}`); } function topOfStacks(stacks) { - let solutionString = ''; - stacks.forEach(stack => { - solutionString += stack[stack.length-1].substr(1,1); + let solutionString = ""; + stacks.forEach((stack) => { + solutionString += stack[stack.length - 1].substr(1, 1); }); - console.log(solutionString); + return solutionString; } -function executeInstructions(stacks, instructions) { - instructions.forEach(row => { - const instruction = row.split(' '); - const amount = parseInt(instruction[1]); - const fromStack = parseInt(instruction[3]) - 1; - const toStack = parseInt(instruction[5]) - 1; +function extractInstruction(row) { + const instruction = row.split(" "); + const amount = parseInt(instruction[1]); + const fromStack = parseInt(instruction[3]) - 1; + const toStack = parseInt(instruction[5]) - 1; + + return { amount, fromStack, toStack }; +} +function executeInstructions(stacks, instructions) { + instructions.forEach((row) => { + const { amount, fromStack, toStack } = extractInstruction(row); for (let i = 0; i < amount; i++) { stacks[toStack].push(stacks[fromStack].pop()); } }); } +function executeTrueInstructions(stacks, instructions) { + instructions.forEach((row) => { + const { amount, fromStack, toStack } = extractInstruction(row); + const remove = stacks[fromStack].splice(stacks[fromStack].length - amount, amount); + stacks[toStack] = stacks[toStack].concat(remove); + }); +} + function extractStacks(data) { let stacks = []; const numStacks = Math.ceil(data[0].length / 4); - + for (let i = 0; i < numStacks; i++) { stacks.push([]); } const containerRows = []; const instructions = []; - let status = 'containers'; + let status = "containers"; for (let i = 0; i < data.length; i++) { - if (data[i][1] === '1') { - status = 'split'; + if (data[i][1] === "1") { + status = "split"; } - if (data[i][0] === 'm') { - status = 'instructions' + if (data[i][0] === "m") { + status = "instructions"; } - if (status === 'containers') { + if (status === "containers") { containerRows.push(data[i]); - } else if (status === 'instructions') { + } else if (status === "instructions") { instructions.push(data[i]); } - }; + } - containerRows.forEach(row => { - const parts = row.split(' '); + containerRows.forEach((row) => { + const parts = row.split(" "); let pos = 0; parts.forEach((part, i) => { - if (part === '') return pos++; - if (part.substr(0,1) === '[') pos += 4; - const stackNum = pos/4-1; + if (part === "") return pos++; + if (part.substr(0, 1) === "[") pos += 4; + const stackNum = pos / 4 - 1; stacks[stackNum].unshift(part); }); }); - return {stacks, instructions}; -} \ No newline at end of file + return { stacks, instructions }; +} From 83cd85c6f1739d942d85b9100ee66a3653a50a37 Mon Sep 17 00:00:00 2001 From: Rene Pot Date: Mon, 5 Dec 2022 13:42:24 +0100 Subject: [PATCH 36/59] Create .gitignore --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9bea433 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ + +.DS_Store From 352b4f52d5c696570b8d2a277639a643ee383fa4 Mon Sep 17 00:00:00 2001 From: Rene Pot Date: Tue, 6 Dec 2022 09:19:21 +0100 Subject: [PATCH 37/59] day 6 --- day6/input.txt | 1 + day6/program.js | 23 +++++++++++++++++++++++ day6/sample.txt | 5 +++++ 3 files changed, 29 insertions(+) create mode 100644 day6/input.txt create mode 100644 day6/program.js create mode 100644 day6/sample.txt diff --git a/day6/input.txt b/day6/input.txt new file mode 100644 index 0000000..8a9b7aa --- /dev/null +++ b/day6/input.txt @@ -0,0 +1 @@ +zdnnfgfsgffgllwrwprwrgwwpssznzrnznllstszsttpdptdpdmdsdzsdscsmcmttdllbsbwwtwnwswcchshlhjhfhwfftcchnnfwwbqwqwrqqgmgzmmwzwfzwfzzzsmzzrczcmmhphzhbbbgdbgddmggwwbbttvmtvttfsfttjlttdfdsdqqczqzffbrfbbfbrrmdrrlslshllwzwrzrzzlqldqdjdjwjvjzjrjjcsszjjqfqnfqqsrqrccbhhwphwhbwwlzwwjwfjwfwzfwzffssvjsjddcsdslslrsrfsrffsggdffrcrcdcpprrzbrzbbtstvvqttbqqgfgsggtvtrvtvbbrqrsqrsqsvsbbzmbmgmvgmmrqrzzbbnjjlwjjfssdrdbrbffwrrrjjgcgtgvvjbjjjsqjsqqncntnndcdrcrhhsgstslldwdbwdbdtbdbggpnndhdvhhvrrlzzfjjffzszvvzgzhhqzqttdhdrrwdwzdwdbwwfsfwsfwfqqzwzbzmzwmmvgggvssvwswfwswhwzzqtqrtthhbbjggjppnpfnfmnnghgrhhtvtqtsttbpprzzwqqfhqfflttzffrprwpwspplzpztptgtltjlttwwsrsrprwrsswnwttcscqsqlsqqhshbhlblnnpznnzlnndrnrcncvcqcjqqvhvppjzjddzbzsztzqqlmlnlnblnlwnllswszwzrzddqhdqhqffhfhjjpbbhvbvmmfhmhcccjlclhcllbrlblddnpplggcmmvddmmqzzmqmppnjpjjjzllqjqccrwwhzhnnlmlhhbbtztvtltvtnvtvltlrtrllbttbzzfwfrrjzjbbmgghjhqhlljnjhhhjzjcjvcvwwzczwcwgcclflnnsvvcncbncnqqpjqjnjwjrrgqrrmqmfmmmjgjfgjfftggqdgqddgcdcdwdrdsswqqphpjhhdjjwswfwfnfqnqccvhvzvmzvzzplzljzjpzzhmzmqzqjjprpvrrhqqnbngnnpvpfvpvqvwwrhhdndqdppmcppzddbzzjcjdjfjnfnngqnnchcqqpllpwppgllcblcblbddzhhqsqbssjqqgmgbgzzvhvnhvnhvvpmpvvlddgppzrprmpmbpbjpbpfptpspddcgddqhdhhthrhjrhrvrlrffvbfbvfvbblssftfnfwwrwnnzdznnbwnbwnwlwttszzmmlzlhhpjhhjvvlvwwdnddzwdwgdgdssflfvfzvznzbzrbzzdssphhgttllcjcvcjjdrdqdhdnndlndldcllcnllslvlnvllmglgnnplpmpzzjwjtwtnntrtjtvjtjffhcfclltppftfwwprrwsrwwzdwzdztzccbmccfcfzczbcbsbqsstjtrrpnnfqqfmmchmmwmrwrwzwztzddgzdgzzfwzzrppcscrrgvgvgvtgtsslrsrvsrrdcdscscwcwqqsccwjcjgjvgvpvnvhhchrrgprpvrvsvsttgghdghhmphmmbvbcbsccdbcbnccbnnsjnjhnnzbnnpjbwdpczcvgjpgwfqrmnvwncflvnttwhfgmfqvngpdhbhvlglfhtdqmqtqcgjcqghzvbdghdgvjcsjrlpqvgcdnbpqrcrcvqqdlcpscqbfpsnhzcdbbcssslrjlzsqpprsbmtqhzblvwbswprhztmpcgfqfsgshchrhjmwwhpzsjzrmrvgdgwjrlwpgqhbzrmnmnnsnvzsrlhthgvlpljsjrpbhbzctdqgvdjcmrgtvqjqbcwsprnfmntzpbjcdtlchhjgwpmldmsstbtztfdbgbstgnlwbzrrzmvbrhnrlcwfgwwbfnntbjspqwngbjrvhdcnblqssgjlbcwbbgphhnmfcmdhqdhsnmvdjnwwwjlffswhsmwqrsprftjwtbtcvmpctgvfqvvcjpnwzqldglfbwfzpnqmdlrdpjmjptvwsctlmhmzzgvplglfgsvrfbqbmrhplczbvqpdjjhhvfqswhzhqfgzstwwpbtbsnnlgpshwqgppzbpsfpfvcntbbbzwdnfcgcwzbqwmhjrhpdfvpbzpmfnmllrcqlqhcbzfltzcgccwwqmtsmwchhvbqtdrnsbrchqqcmtfqpddcjplbvdhhtndrrmfdtmbpdvwthvgdccnrcqmpznlvzqzfjqmpvgjtfbtfjnrmlzhwhljrrqnbqzpfhcvncblfggrtbdfjqnlgpbrzmwcvrvjtjscfmcnfjgqzqsphldvhdbpvmghrvsdmvpmvvdmdhwdghtjltmlcmfhvrsvcvpblwhhfcfdqnrsjbcldgbwhtnjntmgvprhbjrcvsmhgtfphcwncpjtngqhvwrmgprstbtdstmttpzcntmzvncwslqlldpnjbtpmsfnwbpwpnlfgdvcqplvlqqjvfftnnvpcmwjrvwqhlrshftrbhcwnczzsnvtnjnrbzzgzfsqhnfwlcgzvvhqcgvqtmcpnhlvdlmwgsvtwbqgrdsrrddszvscbgtlpwpzjrbvwhjnrpprhtzmthbpfzvplzwfdtnwqwtctgjslmcczjvwplsqwgfnfbgdjbsdpwbgflttvvqlhzgmmpjsnwbqqtcdszfqbhgnmbbmrbrgnrzdmzwnjjzjqcwqcqfchjrzlspgbrchcbgwbhvggsqbvdpzbpnwdtqvcjwcwnbjdhsdfmbtwfbfhzwwtnqzhmtvtbfwrsqjzgssvlwszvlmvbslpncnhmsdhcqqfpftztpzbbhsgbnscddbjlgwgjjndgwbrhwmsfdmmsnlwgwdsdltwjfvwnczjrbgcvsfczppltdptlgcdfzgmqpjngstldqgmwhdmfrwwfqwdgswvfdrtsgtvttpcbnhzbscnchpvfjvbcszbwchnbmfrvsswslbzlhgwlvfchdbfthbpdbwwqtmlgwjqtjhzrjzzmrpdwnvfgrnqdcqmwtttmwjvgcmjsddvtlswldzhtppwvhmlghwlgblfttctnglwhtfvqgjmdjcnflsrjvpjwcjfftbdmmcbqvfwnnnzsltllncbstgnhtmpsltgztqzjbbrtqpcvdlnhpnhvmmztpfpplbqjlpqvfsdvhwvstdmqbtnpzrcbdhvdtghqwcppcfzjfjsfwvqrtfgcdzwgzjvrqqsjtnhlbjcmtjcnmtpffwcwhqqphwjsrhpqvnnhhrcnvztfdjzbjggwlgjprbpssgnmtcrvprwbsrfvvphrsgzgbrfnpgtqbbprhfphqntsglrmhzfnwqptlslnhtrhfprjpdcglcffsblnjwczmgwhmmtgsgwljmqlvdglqmzwmtqcvgcrmqjldlsnbssdvrrtltngvrsqbctqlsngqvcphjvhmwsssgwmvgzdctjcmjtpcjhvfcrfhbffdqfjjvpqwgvnlzhgfnfmlrrfvjrdvhzdcvdvmpncvtjbbnczpzmglfqnpbsrsjwgvszsnqvrnvlhmqjjnmsfngbdlpwbqllcptjtlbhrfdvhlrpdlznpvndjzjdtjflqqjdgjjpmnpmjgcglllgcqbfpvdtpbjdnvrclmnlfdrpbmwzgvdhgbzvbhwqfslhshbfcbwrnsjndgjgccllfbzgmcjqcmdnfftnccphqtwmgqgfqlvlwsrprctchqrscwvgpdrwgcfgzjwmzmmsmwzgtzsjtqfggcczcmghlqgnqqjvsrsfrrmwmnrnhbsszmwsqlrggsbdwzzfnhwcggjszfrlffplvcblvphqmzjnzwzdshhdprfrdbcrmbtztcfvgpzpmmgflswphvnvtwhbbhjwffsvqfjlfvzqmhmsmddwdwsqfnnplbqnptbvgjqgmflsbfdtpvdgbfnqmcqznhpqbpwtbfpqllvqwvcftdjjtlsvzbssbtcdzqqqvzlqhfpdthscqmvhpndmnztthvvzccqswswspnqcbncvszrgjshjhdsclrjdnjdczqmcjldbspclgrmwqdvcvpcsvjggfdqlrwlnzptfvcwjsgblpjzgcrrmjqptvdnwr \ No newline at end of file diff --git a/day6/program.js b/day6/program.js new file mode 100644 index 0000000..c6f6d2f --- /dev/null +++ b/day6/program.js @@ -0,0 +1,23 @@ +// Today's input is only 1 line, but my program still accepts multi-line +// as that is what the runner does. This means the sample input is actually bigger, line-wise +// than the actual input. This means I'm writing the code to handle sample input, thus making +// the code more complex than it needs to be, though only by a loop +export default function Day(data) { + data.forEach(line => parseLine({line: line, part: 1, amountOfChars: 4})); + data.forEach(line => parseLine({line: line, part: 2, amountOfChars: 14})); +} + +function parseLine({line, part, amountOfChars}) { + let chars = []; + for (let i = 0; i < line.length; i++) { + chars.push(line.charAt(i)); + if (chars.length > amountOfChars) { + chars.shift(); + } + + if (chars.length === amountOfChars && (new Set(chars)).size === chars.length) { + return console.log(`Part ${part}: Unique after ${i+1} chars`); + } + + } +} \ No newline at end of file diff --git a/day6/sample.txt b/day6/sample.txt new file mode 100644 index 0000000..698fdf2 --- /dev/null +++ b/day6/sample.txt @@ -0,0 +1,5 @@ +mjqjpqmgbljsphdztnvjfqwrcgsmlb +bvwbjplbgvbhsrlpgdmjqwftvncz +nppdvjthqldpwncqszvftbrmjlhg +nznrnfrfntjfmvfwmzdfjlvtqnbhcprsg +zcfzfwzzqfrljwzlrfnpqdbhtmscgvjw \ No newline at end of file From 042d10fceb679ea666b17c059687f02267d8b7cb Mon Sep 17 00:00:00 2001 From: Rene Pot Date: Wed, 7 Dec 2022 21:46:42 +0100 Subject: [PATCH 38/59] part 1 --- day7/input.txt | 1105 +++++++++++++++++++++++++++++++++++++++++++++++ day7/program.js | 53 +++ day7/sample.txt | 23 + 3 files changed, 1181 insertions(+) create mode 100644 day7/input.txt create mode 100644 day7/program.js create mode 100644 day7/sample.txt diff --git a/day7/input.txt b/day7/input.txt new file mode 100644 index 0000000..3601b1e --- /dev/null +++ b/day7/input.txt @@ -0,0 +1,1105 @@ +$ cd / +$ ls +dir hdwsmn +dir lmlsvqsw +dir rlfgcqz +dir sjq +dir tpnspw +$ cd hdwsmn +$ ls +dir mrrqnc +dir qst +dir rlfgcqz +$ cd mrrqnc +$ ls +227398 rwhw +$ cd .. +$ cd qst +$ ls +152795 bblss.hnl +dir lvs +$ cd lvs +$ ls +81813 jwvtjgjb.sss +$ cd .. +$ cd .. +$ cd rlfgcqz +$ ls +dir hlltch +dir jqpnnmwc +$ cd hlltch +$ ls +219753 rtgdsbz.qlg +$ cd .. +$ cd jqpnnmwc +$ ls +164333 dmvchsd.ncw +141721 njsfs.pmd +dir rlfgcqz +$ cd rlfgcqz +$ ls +278398 vhh.jtr +dir wfnpcnr +$ cd wfnpcnr +$ ls +dir njsfs +$ cd njsfs +$ ls +46895 twfg.gzb +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd lmlsvqsw +$ ls +81577 bblss +12519 dlghs.dcz +260260 gphgq.ztw +dir mldg +6570 qgbg +61210 twfg.gzb +$ cd mldg +$ ls +152240 bgddpvj.cgb +dir rlfgcqz +$ cd rlfgcqz +$ ls +dir dbvjfgff +dir dnnd +112649 qwhmdlf +dir wcqpzpp +$ cd dbvjfgff +$ ls +dir rlfgcqz +$ cd rlfgcqz +$ ls +278899 wmclvlvq.fbf +$ cd .. +$ cd .. +$ cd dnnd +$ ls +17486 zhqjt.dwq +$ cd .. +$ cd wcqpzpp +$ ls +195207 cvqtfn +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd rlfgcqz +$ ls +63895 gbwqg +35085 lllv.jpl +155195 nhrbwg.dcf +84099 wsh.sps +$ cd .. +$ cd sjq +$ ls +48652 dmvchsd.ncw +$ cd .. +$ cd tpnspw +$ ls +81312 ftjrpmr.mfd +dir gcwq +dir lvvztw +dir msrdg +dir ncgljn +dir njsfs +dir ptncs +263168 rwglhrm +192446 twfg.gzb +$ cd gcwq +$ ls +dir bblss +dir hlmm +$ cd bblss +$ ls +120988 qgbg.tcm +326021 tbvgfdnc.cvl +$ cd .. +$ cd hlmm +$ ls +287707 dmvchsd.ncw +319996 gpvfhpnr.jjl +$ cd .. +$ cd .. +$ cd lvvztw +$ ls +dir bdsvzhbm +155345 ftjrpmr.mfd +112094 qwhmdlf +9917 vnmtgsq.gcj +$ cd bdsvzhbm +$ ls +dir jmmltt +dir zgcjl +$ cd jmmltt +$ ls +130686 zsp.dcc +$ cd .. +$ cd zgcjl +$ ls +318547 dmvchsd.ncw +$ cd .. +$ cd .. +$ cd .. +$ cd msrdg +$ ls +dir wjp +$ cd wjp +$ ls +301898 bjccpf +97684 mcnqbl.bwn +160132 qwhmdlf +315893 twfg.gzb +$ cd .. +$ cd .. +$ cd ncgljn +$ ls +dir bblss +119737 gdc.mrs +196706 ggljwvgj.blh +162440 mlgnvbhj.gbw +163186 qwqlfwfw.mfj +167447 twfg.gzb +$ cd bblss +$ ls +dir bblss +dir njsfs +137986 nlmbnm +dir qgbg +229544 zhqjt.dwq +$ cd bblss +$ ls +186733 wcqpzpp.mmr +$ cd .. +$ cd njsfs +$ ls +dir tjbrtt +$ cd tjbrtt +$ ls +284955 rlfgcqz.ltq +$ cd .. +$ cd .. +$ cd qgbg +$ ls +dir dmcmw +15196 ftjrpmr.mfd +dir gbpqj +236891 ghlm.wlm +156863 qgbg +dir wfvqv +$ cd dmcmw +$ ls +116526 dhzhmj.qpw +251858 dmvchsd.ncw +dir ffqghmp +dir njsfs +148820 njsfs.zvm +290169 twfg.gzb +186117 wcqpzpp.vsd +$ cd ffqghmp +$ ls +dir wcqpzpp +$ cd wcqpzpp +$ ls +dir rfmsdjr +$ cd rfmsdjr +$ ls +291669 psmg.ldm +$ cd .. +$ cd .. +$ cd .. +$ cd njsfs +$ ls +35762 dmvchsd.ncw +97427 njsfs +261675 twfg.gzb +15426 wcqpzpp +dir zvnjrnrw +$ cd zvnjrnrw +$ ls +18370 dmvchsd.ncw +10620 wsgd.fjt +$ cd .. +$ cd .. +$ cd .. +$ cd gbpqj +$ ls +10204 fdlpjd.tgr +117954 rlfgcqz +$ cd .. +$ cd wfvqv +$ ls +dir fsq +133485 twfg.gzb +$ cd fsq +$ ls +156862 qwhmdlf +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd njsfs +$ ls +dir bblss +dir bzlpqv +dir cvm +dir dbbngm +dir gbtmsjgl +224200 nrffnj +$ cd bblss +$ ls +dir dhmwcmf +280202 hmp +66351 ndnr.wjh +85218 qhrhjb +dir tcqnf +dir wjv +dir zwlpqrb +$ cd dhmwcmf +$ ls +dir qtdf +dir scsllc +$ cd qtdf +$ ls +dir fmbsgvr +$ cd fmbsgvr +$ ls +1641 jdtcd.qhw +109819 qwhmdlf +$ cd .. +$ cd .. +$ cd scsllc +$ ls +dir brthfcm +dir qqgh +81391 rlfgcqz.pcj +192835 rlfgcqz.rnf +$ cd brthfcm +$ ls +135591 qwhmdlf +$ cd .. +$ cd qqgh +$ ls +270614 djjq +dir njsfs +$ cd njsfs +$ ls +18629 fngbfvr +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd tcqnf +$ ls +25594 gvqjrdlr.fps +314758 rlfgcqz.ndb +269846 wcqpzpp.gvz +$ cd .. +$ cd wjv +$ ls +dir dtddhqbj +dir njsfs +dir pgfrd +95552 pjzgwggg.hpc +29427 rlfgcqz +dir shhzzrf +$ cd dtddhqbj +$ ls +dir fmzhtfd +36982 ftjrpmr.mfd +dir gqsg +dir wcqpzpp +$ cd fmzhtfd +$ ls +dir psqnghl +226561 rttdhnnm +220713 tsfcpzzv +$ cd psqnghl +$ ls +136028 qwhmdlf +280539 rlfgcqz.nzf +129468 zhqjt.dwq +dir zlb +$ cd zlb +$ ls +dir qgbg +$ cd qgbg +$ ls +188576 ftjrpmr.mfd +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd gqsg +$ ls +302134 dmvchsd.ncw +161569 drzt.pmq +$ cd .. +$ cd wcqpzpp +$ ls +254804 bblss.sqp +280941 dbvw.mdw +dir gfs +317925 njsfs.wpr +dir qgbg +$ cd gfs +$ ls +dir jrctzlg +dir lrnzq +233927 njsfs.bmd +45942 twfg.gzb +125290 vbtr.wvj +dir wcqpzpp +$ cd jrctzlg +$ ls +88635 qwhmdlf +204938 vlnwcv +$ cd .. +$ cd lrnzq +$ ls +253736 bblss.ddj +272769 vsrvgsc.cwl +$ cd .. +$ cd wcqpzpp +$ ls +301739 ftjrpmr.mfd +63733 qwhmdlf +$ cd .. +$ cd .. +$ cd qgbg +$ ls +dir cpr +196886 hgj +188348 lqvq +132024 twfg.gzb +213866 zhqjt.dwq +$ cd cpr +$ ls +dir wznlzpzj +115532 zhqjt.dwq +$ cd wznlzpzj +$ ls +dir bcwnrc +$ cd bcwnrc +$ ls +289013 dmvchsd.ncw +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd njsfs +$ ls +296178 mpprqbgc +128104 zhqjt.dwq +$ cd .. +$ cd pgfrd +$ ls +dir slgztr +$ cd slgztr +$ ls +dir htjd +dir rlfgcqz +243751 twfg.gzb +dir wcqpzpp +$ cd htjd +$ ls +216650 ftjrpmr.mfd +$ cd .. +$ cd rlfgcqz +$ ls +144834 qwchd.qtn +$ cd .. +$ cd wcqpzpp +$ ls +133476 qwhmdlf +$ cd .. +$ cd .. +$ cd .. +$ cd shhzzrf +$ ls +dir hbp +dir jqfhdn +dir qgbg +dir tftrnfpd +dir zppjlf +$ cd hbp +$ ls +158562 fbwsrbbg +297036 zph.mbd +$ cd .. +$ cd jqfhdn +$ ls +166463 bblss.sgd +125240 dmq +48389 ftjrpmr.mfd +dir njsfs +dir rlfgcqz +$ cd njsfs +$ ls +dir tbjp +307427 zhqjt.dwq +$ cd tbjp +$ ls +76200 rcfv.bgh +$ cd .. +$ cd .. +$ cd rlfgcqz +$ ls +294331 bblss.vwj +$ cd .. +$ cd .. +$ cd qgbg +$ ls +dir qnpdnjdl +dir rdmj +$ cd qnpdnjdl +$ ls +dir sblj +$ cd sblj +$ ls +39051 twfg.gzb +2405 zhqjt.dwq +$ cd .. +$ cd .. +$ cd rdmj +$ ls +213965 zhqjt.dwq +$ cd .. +$ cd .. +$ cd tftrnfpd +$ ls +294450 chbgd.vjv +318594 hvwbj +dir nznzzw +96252 twfg.gzb +dir vlfdtwj +dir vsvj +dir wvnjtmt +dir zlj +dir zwqff +$ cd nznzzw +$ ls +115971 nndbd.rhl +$ cd .. +$ cd vlfdtwj +$ ls +167648 ddvqzlh.cpw +$ cd .. +$ cd vsvj +$ ls +dir dfzcrmt +dir ffpvbczr +110196 njsfs.zsh +257204 qrgnw.mhw +dir rptmp +131871 zhqjt.dwq +$ cd dfzcrmt +$ ls +dir hqbthjc +dir hztrwjr +11874 rsd +252800 zhqjt.dwq +$ cd hqbthjc +$ ls +135533 bblss.clm +231343 rlfgcqz.zfh +176061 rrzqhdp +$ cd .. +$ cd hztrwjr +$ ls +dir zmpm +$ cd zmpm +$ ls +297930 rpb +$ cd .. +$ cd .. +$ cd .. +$ cd ffpvbczr +$ ls +dir qdvppt +dir qgbg +$ cd qdvppt +$ ls +323419 bblss.lnl +$ cd .. +$ cd qgbg +$ ls +158408 dmvchsd.ncw +$ cd .. +$ cd .. +$ cd rptmp +$ ls +280342 rqlbtpw +$ cd .. +$ cd .. +$ cd wvnjtmt +$ ls +dir bblss +249330 fgc.ftp +dir gtbbfzzn +dir wcqpzpp +$ cd bblss +$ ls +1570 zhqjt.dwq +$ cd .. +$ cd gtbbfzzn +$ ls +65850 lmbrdhc.jbz +$ cd .. +$ cd wcqpzpp +$ ls +62362 qwhmdlf +$ cd .. +$ cd .. +$ cd zlj +$ ls +103758 lrhflmsw.qhq +163919 qwhmdlf +$ cd .. +$ cd zwqff +$ ls +dir ghfc +dir njsfs +$ cd ghfc +$ ls +131979 hpcgrvms +$ cd .. +$ cd njsfs +$ ls +126387 wcqpzpp +$ cd .. +$ cd .. +$ cd .. +$ cd zppjlf +$ ls +241176 rlfgcqz.ctz +$ cd .. +$ cd .. +$ cd .. +$ cd zwlpqrb +$ ls +272627 bblss.gpv +261635 blczb.srs +dir lnhzzl +153210 njsfs +55633 twfg.gzb +$ cd lnhzzl +$ ls +dir dtwcsvzf +$ cd dtwcsvzf +$ ls +74858 dtz.rpc +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd bzlpqv +$ ls +157801 gdqhdd +318418 nmq +266938 qwhmdlf +$ cd .. +$ cd cvm +$ ls +1145 dmvchsd.ncw +233344 ftjrpmr.mfd +263393 njsfs.hvb +74436 twfg.gzb +dir wcqpzpp +96596 whq +$ cd wcqpzpp +$ ls +dir rlfgcqz +$ cd rlfgcqz +$ ls +244048 gspw +324759 qgbg.wrf +190410 qwhmdlf +$ cd .. +$ cd .. +$ cd .. +$ cd dbbngm +$ ls +dir bblss +184222 bcfzt.grj +dir rlfgcqz +41851 sshb.nzv +113784 wgjc.mrr +13594 zhqjt.dwq +$ cd bblss +$ ls +102201 qwhmdlf +$ cd .. +$ cd rlfgcqz +$ ls +91063 bblss.msn +2918 dqhbnt +74771 nbprqmbs.jwj +$ cd .. +$ cd .. +$ cd gbtmsjgl +$ ls +207664 cnfpq.wbl +$ cd .. +$ cd .. +$ cd ptncs +$ ls +dir bmpts +dir bpmf +dir brhp +dir gzjppjfr +dir jrd +321627 jss.jsh +130602 lfmrp.csp +dir prfz +dir qgbg +dir qjgchtwb +dir rvqrjms +174888 ttmwlrs.wbc +dir vwgsmc +55854 zhqjt.dwq +$ cd bmpts +$ ls +124846 dmvchsd.ncw +283278 mlcmzqdf.pfj +dir plbpr +312240 qwhmdlf +74910 rlfgcqz.jqp +dir tvrvwv +$ cd plbpr +$ ls +37432 dmvchsd.ncw +dir wcqpzpp +$ cd wcqpzpp +$ ls +18638 bsfsc.gfs +$ cd .. +$ cd .. +$ cd tvrvwv +$ ls +dir tsgp +$ cd tsgp +$ ls +141689 wcqpzpp.jdc +$ cd .. +$ cd .. +$ cd .. +$ cd bpmf +$ ls +201372 ftjrpmr.mfd +dir nhtjhsp +dir qgbg +dir sbqfdzh +dir wcqpzpp +178078 zhqjt.dwq +$ cd nhtjhsp +$ ls +225213 ftjrpmr.mfd +$ cd .. +$ cd qgbg +$ ls +214193 cwnphff +296165 ftjrpmr.mfd +260246 zhqjt.dwq +$ cd .. +$ cd sbqfdzh +$ ls +281546 njsfs.rjz +dir qgbg +246263 qqbsjtp.nbn +10231 srllsw +$ cd qgbg +$ ls +92801 dmvchsd.ncw +66784 pbz +226132 wcqpzpp.vjs +242775 wgt.bbw +$ cd .. +$ cd .. +$ cd wcqpzpp +$ ls +55886 bblss.vzh +313619 rlfgcqz +$ cd .. +$ cd .. +$ cd brhp +$ ls +321184 nnfzrm.mgz +190867 rlfgcqz.qbs +$ cd .. +$ cd gzjppjfr +$ ls +67036 ftjrpmr.mfd +$ cd .. +$ cd jrd +$ ls +293867 dmvchsd.ncw +dir drjbp +dir njsfs +10759 pcpvd.hsg +dir qfghvhsr +dir thf +268195 tmwvbl +$ cd drjbp +$ ls +dir ccdmcgvz +276381 gbhhwlv.rlt +252224 zqt.wpc +$ cd ccdmcgvz +$ ls +4082 cffmcz +31006 mws.tvb +dir njsfs +$ cd njsfs +$ ls +dir bblss +$ cd bblss +$ ls +180561 lfd +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd njsfs +$ ls +115688 qgbg +34653 qwhmdlf +$ cd .. +$ cd qfghvhsr +$ ls +3280 ssg.ctr +$ cd .. +$ cd thf +$ ls +dir bzhbrlh +dir qgbg +$ cd bzhbrlh +$ ls +148423 wjtlhwq +$ cd .. +$ cd qgbg +$ ls +dir rrtb +dir slhbmldf +$ cd rrtb +$ ls +30387 rlfgcqz +$ cd .. +$ cd slhbmldf +$ ls +dir vszhrc +$ cd vszhrc +$ ls +235629 qwhmdlf +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd prfz +$ ls +254587 bblss +dir bmfg +dir bsw +dir cfjdjcmt +321761 dmvchsd.ncw +35369 ftjrpmr.mfd +dir nqrbhdcn +237737 rlfgcqz.wsp +dir smdsrzlc +25049 tbwfsp +$ cd bmfg +$ ls +dir bblss +275693 wcqpzpp.zvw +$ cd bblss +$ ls +dir lddn +$ cd lddn +$ ls +dir mqlpwvcg +$ cd mqlpwvcg +$ ls +34635 zztv +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd bsw +$ ls +dir ljqv +dir vhpqbw +$ cd ljqv +$ ls +119525 ftjrpmr.mfd +$ cd .. +$ cd vhpqbw +$ ls +154199 twfg.gzb +$ cd .. +$ cd .. +$ cd cfjdjcmt +$ ls +22258 zhqjt.dwq +$ cd .. +$ cd nqrbhdcn +$ ls +dir bblss +84121 fbgqdsn +232625 hrjft +201822 ltfpl.lsq +194572 pgbqncwc.vqq +43024 qfgrmw +dir wcqpzpp +dir wvtnznjn +$ cd bblss +$ ls +326048 jctnwzn.zcq +$ cd .. +$ cd wcqpzpp +$ ls +265643 bzjmjng.vhr +dir lwt +dir qgbg +164876 twfg.gzb +dir vswqzjc +264349 wcqpzpp.lzp +$ cd lwt +$ ls +156024 ftjrpmr.mfd +287930 lmjwqw +dir qvr +56184 qwhmdlf +203952 twfg.gzb +95508 wcqpzpp +$ cd qvr +$ ls +dir ndqmn +$ cd ndqmn +$ ls +153880 njsfs.fvr +$ cd .. +$ cd .. +$ cd .. +$ cd qgbg +$ ls +244154 ftjrpmr.mfd +dir pztf +dir qgbg +dir rlfgcqz +dir zpvcn +$ cd pztf +$ ls +dir njsfs +dir sfrbvhp +$ cd njsfs +$ ls +268512 dmvchsd.ncw +$ cd .. +$ cd sfrbvhp +$ ls +dir wcqpzpp +$ cd wcqpzpp +$ ls +2126 dmvchsd.ncw +$ cd .. +$ cd .. +$ cd .. +$ cd qgbg +$ ls +123331 zhqjt.dwq +$ cd .. +$ cd rlfgcqz +$ ls +4261 lflphd.cfn +144504 twfg.gzb +110656 wcqpzpp.cjr +$ cd .. +$ cd zpvcn +$ ls +259119 qgbg +$ cd .. +$ cd .. +$ cd vswqzjc +$ ls +dir qgbg +dir rlfgcqz +$ cd qgbg +$ ls +76795 qwhmdlf +dir wcqpzpp +293923 zfcwvpz.vrn +$ cd wcqpzpp +$ ls +296986 qwhmdlf +$ cd .. +$ cd .. +$ cd rlfgcqz +$ ls +dir dtwv +dir rfbrzf +200095 rlqrlh +$ cd dtwv +$ ls +306977 bblss.dzm +139644 njsfs +$ cd .. +$ cd rfbrzf +$ ls +96622 cnb.wdl +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd wvtnznjn +$ ls +320558 lvtrqjnv.twq +$ cd .. +$ cd .. +$ cd smdsrzlc +$ ls +dir mbfqdbl +$ cd mbfqdbl +$ ls +dir hrhc +$ cd hrhc +$ ls +110162 hgbng +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd qgbg +$ ls +41978 mrfvnb.zbh +172912 rlfgcqz.qlf +$ cd .. +$ cd qjgchtwb +$ ls +243299 dmvchsd.ncw +91104 jbwss +207317 llqnrd.czw +145298 znzb.lsj +$ cd .. +$ cd rvqrjms +$ ls +40049 twfg.gzb +$ cd .. +$ cd vwgsmc +$ ls +dir qzl +dir rlfgcqz +dir tmpjd +dir vqt +$ cd qzl +$ ls +324024 cspbrpgv.fcc +8468 hfdwz.bjq +dir nvrpj +46755 qgbg.lhn +247926 qwhmdlf +dir thtq +17180 wcqpzpp +$ cd nvrpj +$ ls +dir vpscvbj +$ cd vpscvbj +$ ls +225620 bvrzrw +$ cd .. +$ cd .. +$ cd thtq +$ ls +dir pqqhcl +276922 qwhmdlf +59145 sshgg.bcf +dir wclbp +$ cd pqqhcl +$ ls +123067 vvhlq.bbg +$ cd .. +$ cd wclbp +$ ls +dir djbbpzjz +$ cd djbbpzjz +$ ls +5446 wtn.gnz +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd rlfgcqz +$ ls +dir njsfs +$ cd njsfs +$ ls +178834 flrr +$ cd .. +$ cd .. +$ cd tmpjd +$ ls +1973 fnlwgc.rbq +240728 njsfs.sgm +dir qgbg +51532 qgbg.vdc +330859 rdvzpf.lld +dir sjlq +259561 twfdn.vnm +dir zlbmf +$ cd qgbg +$ ls +273408 bznqvg +45710 dmvchsd.ncw +306311 jcvn.brh +269315 rlfgcqz.crg +51046 rnqb.wlt +dir wqfprrd +dir zjscb +$ cd wqfprrd +$ ls +276417 zhqjt.dwq +$ cd .. +$ cd zjscb +$ ls +276541 bblss.dhl +dir mlsdv +dir njsfs +$ cd mlsdv +$ ls +251030 qwhmdlf +$ cd .. +$ cd njsfs +$ ls +dir cfmfsbc +$ cd cfmfsbc +$ ls +234880 zhqjt.dwq +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd sjlq +$ ls +25547 nqvnpgs.zhl +$ cd .. +$ cd zlbmf +$ ls +21812 pjn.hbf +dir rcgvwrg +$ cd rcgvwrg +$ ls +19512 qwhmdlf +$ cd .. +$ cd .. +$ cd .. +$ cd vqt +$ ls +80263 njsfs.zmr \ No newline at end of file diff --git a/day7/program.js b/day7/program.js new file mode 100644 index 0000000..0d66d02 --- /dev/null +++ b/day7/program.js @@ -0,0 +1,53 @@ +export default function Day(data) { + + const {files, dirs} = loopThroughCommands(data); + dirs.sort((a, b) => a.size - b.size); + const sum = dirs.reduce((acc, dir) => { + if (dir.size < 100000) { + return acc + dir.size; + } + return acc; + }, 0); + + console.log(`Part 1: ${sum}`); +} + +function loopThroughCommands(commands, from = 0, name = "/") { + let dirStructure = { + size: 0, + files: [], + name: name, + }; + const directories = []; + + let i = from; + for (i; i < commands.length; i++) { + let command = commands[i].split(" "); + + if (command[0] === "$") { + if (command[1] === "cd") { + if (command[2] === "..") { + return {files: dirStructure, newI: i, dirs: directories}; + } else if (command[2] !== "/") { + let {files, newI, dirs} = loopThroughCommands(commands, i + 1, command[2]); + directories.push(files); + directories.push(...dirs); + i = newI; + if (files) { + dirStructure.files.push(files); + dirStructure.size += files.size; + } + } + } + } + else if (!isNaN(command[0])) { + dirStructure.size += parseInt(command[0]); + dirStructure.files.push({ + name: command[1], + size: parseInt(command[0]), + }); + } + + } + return {files: dirStructure, newI: i, dirs: directories}; +} diff --git a/day7/sample.txt b/day7/sample.txt new file mode 100644 index 0000000..bcbb513 --- /dev/null +++ b/day7/sample.txt @@ -0,0 +1,23 @@ +$ cd / +$ ls +dir a +14848514 b.txt +8504156 c.dat +dir d +$ cd a +$ ls +dir e +29116 f +2557 g +62596 h.lst +$ cd e +$ ls +584 i +$ cd .. +$ cd .. +$ cd d +$ ls +4060174 j +8033020 d.log +5626152 d.ext +7214296 k \ No newline at end of file From 9456231c766eae80d1dbe4aeb573810ad0a9da80 Mon Sep 17 00:00:00 2001 From: Rene Pot Date: Wed, 7 Dec 2022 22:39:07 +0100 Subject: [PATCH 39/59] part 2 --- day7/program.js | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/day7/program.js b/day7/program.js index 0d66d02..308d194 100644 --- a/day7/program.js +++ b/day7/program.js @@ -1,6 +1,5 @@ export default function Day(data) { - - const {files, dirs} = loopThroughCommands(data); + const { files, dirs } = loopThroughCommands(data); dirs.sort((a, b) => a.size - b.size); const sum = dirs.reduce((acc, dir) => { if (dir.size < 100000) { @@ -10,6 +9,14 @@ export default function Day(data) { }, 0); console.log(`Part 1: ${sum}`); + + const totalFileSize = files.size; + + const sizeRemaining = 70000000 - totalFileSize; + const sizeRequiredForUpgrade = 30000000 - sizeRemaining; + + const smallestDir = dirs.find(dir => dir.size >= sizeRequiredForUpgrade); + console.log(`Part 2: ${smallestDir.size}`); } function loopThroughCommands(commands, from = 0, name = "/") { @@ -27,9 +34,9 @@ function loopThroughCommands(commands, from = 0, name = "/") { if (command[0] === "$") { if (command[1] === "cd") { if (command[2] === "..") { - return {files: dirStructure, newI: i, dirs: directories}; + return { files: dirStructure, newI: i, dirs: directories }; } else if (command[2] !== "/") { - let {files, newI, dirs} = loopThroughCommands(commands, i + 1, command[2]); + let { files, newI, dirs } = loopThroughCommands(commands, i + 1, command[2]); directories.push(files); directories.push(...dirs); i = newI; @@ -39,15 +46,13 @@ function loopThroughCommands(commands, from = 0, name = "/") { } } } - } - else if (!isNaN(command[0])) { + } else if (!isNaN(command[0])) { dirStructure.size += parseInt(command[0]); dirStructure.files.push({ name: command[1], size: parseInt(command[0]), }); } - } - return {files: dirStructure, newI: i, dirs: directories}; + return { files: dirStructure, newI: i, dirs: directories }; } From acb084a81c51b1db810eb4074d1e7827c099d36c Mon Sep 17 00:00:00 2001 From: Rene Pot Date: Thu, 8 Dec 2022 11:31:51 +0100 Subject: [PATCH 40/59] part 1 --- day8/input.txt | 99 +++++++++++++++++++++++++++++++++++++++++++++++++ day8/program.js | 69 ++++++++++++++++++++++++++++++++++ day8/sample.txt | 5 +++ 3 files changed, 173 insertions(+) create mode 100644 day8/input.txt create mode 100644 day8/program.js create mode 100644 day8/sample.txt diff --git a/day8/input.txt b/day8/input.txt new file mode 100644 index 0000000..d478f8b --- /dev/null +++ b/day8/input.txt @@ -0,0 +1,99 @@ +313213123212200312011243203120214010202554420335045116203101005212525131015305511140012431022113113 +222021333112322244231542054023354511304431216312534453560105660253445311020244233130144313440030322 +200012220300132310233100025524032003355144536126232161330106115213441450552235514000243120210031130 +102111124044033113241415155401056014506203413216651520206613342353052505445000321043121021430440021 +221134021010031320101542213340113552161113350123516154134654046250223033000413443321231233142213010 +112241233114245202523201433013460320664034202602144006022621253536213222400131120345151014014131133 +132211130114141401325141212460540656525106651152012063404633651340223361443201520054113541144043031 +323140320024314005210155316202152552621415660063112177564603241212312025036551350313225504314404112 +014013242041230510442265205625331115540222744516266167254216354043533020346502032534231121044441220 +233414030101315255335126055263144512111777464611565216157441673706100506241423030403420343112342030 +133144314412553330012446404244433465434666762135116677765213463444460612511131340332552424201204120 +010320402332512110363213044530335655613562223756572424746437567672262256431540210005310544243444101 +324403411232230200215144254550257275144535323452276762234354361552536153612012260502425410505314212 +044143021304533036524115200363122146144443357746134567133417572143572217253466665420004544002052304 +031301205442313664253200353721523337451137554555385833341715227554331566151244334446363035232422032 +412021132254126340642250212415471513377143653545744364662761514364426436251422450305502445230351142 +423013525424334650512351242132544127615655738268233852527877887577454317715373566210510633013145020 +314013042244622602006117664713652263528475833433263846468763678447134716635345050225504112315124312 +210530032555051320514661111414734263472852682724485772623266565822423365264512541061226540103142223 +202523210140346233027372362557125436368725536228624865344774378537888747171665564143331101501212340 +312102150200503360534132445517484678583587678756766763747725475724228724317675166660536246102044404 +014501150514404506226424155762432386227846258625478334768375862827476433553651311460116133631440213 +145345025402132601222234271268834838244287765994936689397836424284644676342577451356463132062234232 +030520533600060465674743543832435622275594666933473957864637427284284528866426734257033413611153542 +111125222126126664625217555874224623337857863456948836785373353757744683247375632677514312554402024 +454344234313551645731724622525365832657894545768964536939387863978465673442253722125752553236132004 +141351656653224237252122854224855258938593946648537669944575478986734723225856761571634036114323202 +301354130411223555466416844555847677853855433636774857897563386873392265447728545634555234214003555 +324351500351156142554654722557458488698547355994463766454687489898485753473777574124613414652504004 +000202526603566624271288867428799685358698759656849978553895836996388433252545546266753551322305123 +142140450656776227714466585833798874975635767795445874946645465477849772464684527525213236023524220 +324262353505673315724236445748536388973668654588599896854469535494838643744387872721615221063235321 +552206463167666154577658258569744567339446596474586868848866645743399869362886626547344767533546153 +352323434663437355725427826449799477395999565764668865854945787936654594832633678767541225131001503 +440166362233562667478335763956389857755767497475848959778498799895595785387844464757513162265652640 +104122124642766642664452283555537376598457767558647554969995685645795999475473687336165523560052001 +255352243015641217534667849769975859955778464876555786747474774794864778373768452562637255330444232 +456220432747476336866782246873698697677699688678997975678548856759743777979632262638565415133210633 +354641641663166247236463863687744889449497969668886767686756898498698544578857834482516366746042103 +125201564115437683566423743488648645944969969766988857659599646944656843556585768447477145122536100 +565166453317161563746425435958546648857589858689866779576599554476785965354884443284615264253254316 +121246126671552573824643637663796768749697876859599686798755755668478994537789677336675255111501306 +360355134677155672632437676667797548778989878956585555755888869798448799556895227877387243567410342 +201045427623176635776469999883749944896899977995889968875595559556975886998744463243563112165201326 +352250115546124536536769454447786744475757988989886986985776968688899563536676844455461472345336201 +444012305276547277522595375654994558855859877987996678887769879954854599865599846623773465534004160 +003621673437674224248486547979885878957565757686996887766986595599447858644667462254244517674205046 +045265132276456334554365893935749649965989576778789869677576755756899986563778785582684657425224532 +256151375615717542563666894835779554876779596976976699887778577957456866545674477228666746346403631 +161152464371764263643334333389748956969597666797767878866755966565484647664843525828682412373755454 +502011544714165463843278447485479797867666888668797796768977767569575788836334565474627531473704246 +151460364232447443233565968759985868786557997798976867676959589967898874545836432537554441566122314 +325354014323767722264889584534897666569996596668678778968696799996649764974489874252576563221244356 +300165663442414468382638967476995984959988868887699967676597986577798947648889527728225341345144126 +523044146537227284236854867884546566896896589678689877799567996884747789569869374746443236356121631 +623520016256236672238393557665746588457977578897867867689877778857948885353767526367472655634211324 +513112323743777428355697564974758755988785986568979868979685685997847967586943842248473255451053311 +450020506764535784366644976997588757498856779786876686775868855996746554394579645638756632417635430 +333302106653766675873339799535474646879996789788987875587977755587884588498366525263657241244563411 +021603345313213632267754575346995947848565695878969885767869775868759846376874235783854235221066060 +451051105676415353834239879477689664878678578559658579558858859685656646333643282578751361221450043 +323133151167312457234657559765757999468467698869969666865897797857485499569838464565771443341433624 +351226435216677645378442636393858569688464696659679658777559879978765539986842833528347477142364355 +312522015134552576843564246393479975856585945659576986575979678487794748787843877358147735663364153 +436221405132742616333723774335457748498747869445768557777496645469557694497322763335217424704452516 +531453464276746646458848784658447874499485559877948986585644748765566863496685884585514544145343261 +124004035175455643547236885494794479865464946999998568586788689967343377758845738571672264321061003 +200155306351543777457257657968974568856495865454798449784799858884637386375422526864243565062364102 +445601414321444235648773664866559437996644487476459565964785659539635568456223755627145663416360463 +450034302502443262354377457789598776596746648495968457946465588399656898646426472411777146341644150 +023146264504256441756645634487555664987468946766784647877558359936934483654774826324735714633603030 +333342045300642417421427522458538378785933374679488696549488964673985948667688553344343522163201010 +455545402043235615564685485576228935958544883643955984493945756635487843653852747147246556553523510 +521503005555124536565566284723484688885348465998948435535997783785742684873228712152117622054235215 +312504066020457274731625463858577544637764966338466339435677364997568623562286441516367015430243140 +205031053461063473777474186844553532897797357638539497889554739476455778658267742121765420506102155 +234254241452503617412556672484735427269749864873783849964559983463526474536714377341620430652445005 +005122256601541121767617243673775345873688335643477574686454362545566824655271216641353663405312143 +433412443503526366274346321587248483458325774873734889987843368227357425636513234740304061623033442 +150425005143315445343366357776572258884478742563678357783845862235758564513525337622046146253440425 +225155323264631456635462325511885764326675428846268646575225734474437376612544667111053406332354205 +035014011000365630427277363261244836668367562448734772533252234588746775752633154601553624254020455 +012332415442566650666617225747354638747746384682743326746678826728355131225614470132623462424342514 +013524113311511615516563562155256314453777643324383464236254565752742637247411046651633511302344051 +212122212430404140032134131564756752725322885466434352224875446515552517267614410524244004301240143 +311400235445132520254065617566464245641623888587556667385287735312776421161334445544251524420400232 +440215452341344043062300567544524332733611636552822742567416277354477557756312354353622415135520342 +212430430313114143406656305336551452762327233736172563224242725162751616161102623013055041203553040 +321010353433305435042151016603142762425754273737777221111751751754217734105034366116400050235001301 +141012030043441152515110066520525231112547624256173331346341451761472053411546323404310404443302411 +133133034522454043232213312145664546126452755453724144154261454733124054403605004150535010413000334 +331412441152240551104612131344064131112564126362561532523311462604061151623121543003234021543312303 +010301442302500534021525552205536466144454523741535255444641345430402356234514221410435324321440211 +222301014410242404221240250563134040056104626021173454550103400400616550340400310015454450242211021 +233412422204111420244300456264320032401430366334634641441411125102262216452333414201235210001133200 +132244430320123233143125240232350142156620032556633233042303530460352401020133104323414224314240333 +003213243020203044035550441012322051645661162162123160565554312321050133555533333123214002014231123 +000032030402033315113220225514041611664662663525144303562161423513133325130431534323303033322212313 +101211324120322333355055001035515221630532526633042003421442155144120444232152535003241233413001002 \ No newline at end of file diff --git a/day8/program.js b/day8/program.js new file mode 100644 index 0000000..3fdb21d --- /dev/null +++ b/day8/program.js @@ -0,0 +1,69 @@ +export default function Day(data) { + let treeMap = convertTreesToMap(data); + + treeMap.forEach(row => { + traverseRow(traverseRow(row), true); + }); + + let rotatedMap = rotateMap(treeMap); + rotatedMap.forEach(row => { + traverseRow(traverseRow(row), true); + }); + + // count number of visible trees + let visibleTrees = 0; + treeMap.forEach(row => { + row.forEach(tree => { + if (tree.visible) { + visibleTrees++; + } + }); + }); + + console.log({visibleTrees}); +} + +// function to rotate the grid of the map +function rotateMap(map) { + return map[0].map((col, i) => map.map(row => row[i])); +} + +function traverseRow(row, reverse = false) { + let visibleTree = true; + + let from = reverse ? row.length - 1 : 0; + let to = reverse ? 0 : row.length - 1; + let step = reverse ? -1 : 1; + let tallestTree = 0; + + for (let i = from; i !== to; i += step) { + + if (row[i].height > tallestTree) { + tallestTree = row[i].height; + } + + if (row[i+step].height > tallestTree) { + row[i+step].visible = true; + } + } + + return row; +} + +function convertTreesToMap(trees) { + let rows = []; + + trees.forEach((treeRow, rowNum) => { + let row = []; + + let outsideRow = rowNum === 0 || rowNum === trees.length - 1; + let rowLength = treeRow.length; + + for (let i = 0; i < treeRow.length; i++) { + row.push({height: parseInt(treeRow[i]), visible: outsideRow || i === 0 || i === rowLength - 1 ? true : false}); + } + rows.push(row); + }); + + return rows; +} \ No newline at end of file diff --git a/day8/sample.txt b/day8/sample.txt new file mode 100644 index 0000000..6557024 --- /dev/null +++ b/day8/sample.txt @@ -0,0 +1,5 @@ +30373 +25512 +65332 +33549 +35390 \ No newline at end of file From 13a1aed6bfc041386d95999e2f00e6986f094e97 Mon Sep 17 00:00:00 2001 From: Rene Pot Date: Thu, 8 Dec 2022 16:55:35 +0100 Subject: [PATCH 41/59] not yet working part 2 --- day8/program.js | 60 +++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 56 insertions(+), 4 deletions(-) diff --git a/day8/program.js b/day8/program.js index 3fdb21d..8cf425e 100644 --- a/day8/program.js +++ b/day8/program.js @@ -20,7 +20,18 @@ export default function Day(data) { }); }); - console.log({visibleTrees}); + console.log(`Part 1: ${visibleTrees}`); + + let scores = []; + treeMap.forEach((row, i) => { + row.forEach((tree, j) => { + scores.push(calculateViewScore(treeMap, j, i)); + }); + }); + + scores.sort((a, b) => b - a); + + console.log(`Part 2: ${scores[0]}`); } // function to rotate the grid of the map @@ -29,8 +40,6 @@ function rotateMap(map) { } function traverseRow(row, reverse = false) { - let visibleTree = true; - let from = reverse ? row.length - 1 : 0; let to = reverse ? 0 : row.length - 1; let step = reverse ? -1 : 1; @@ -60,10 +69,53 @@ function convertTreesToMap(trees) { let rowLength = treeRow.length; for (let i = 0; i < treeRow.length; i++) { - row.push({height: parseInt(treeRow[i]), visible: outsideRow || i === 0 || i === rowLength - 1 ? true : false}); + row.push({ + height: parseInt(treeRow[i]), + visible: outsideRow || i === 0 || i === rowLength - 1 ? true : false, + x: i, + y: rowNum + }); } rows.push(row); }); return rows; +} + +function calculateViewScore(map, x, y) { + let row = map[y]; + let col = map.map(row => row[x]); + + const score = [ + calculateVisibleInRow(row, x, 'right'), + calculateVisibleInRow(row, x), + calculateVisibleInRow(col, y, 'right'), + calculateVisibleInRow(col, y) + ] + + return score[0] * score[1] * score[2] * score[3]; +} + +function calculateVisibleInRow(row, from, direction = 'left') { + let score = 0; + + if (direction === 'left') { + row = row.reverse(); + from = row.length - from - 1; + } + + const fromTree = row[from]; + + const testTrees = row.slice(from+1); + + let blocked = false; + testTrees.forEach(tree => { + if (blocked) return; + score ++; + if (tree.height >= fromTree.height) { + blocked = true; + } + }); + + return score; } \ No newline at end of file From 7144d5d12bba7753f2487c1eb949e6381ea30087 Mon Sep 17 00:00:00 2001 From: Rene Pot Date: Thu, 8 Dec 2022 17:20:17 +0100 Subject: [PATCH 42/59] move part 1 to a function --- day8/program.js | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/day8/program.js b/day8/program.js index 8cf425e..5442f81 100644 --- a/day8/program.js +++ b/day8/program.js @@ -1,6 +1,21 @@ export default function Day(data) { let treeMap = convertTreesToMap(data); + initiatePart1(treeMap); + + // part 2 + let scores = []; + treeMap.forEach((row, i) => { + row.forEach((tree, j) => { + scores.push(calculateViewScore(treeMap, j, i)); + }); + }); + + scores.sort((a, b) => b - a); + + console.log(`Part 2: ${scores[0]}`); +} +function initiatePart1(treeMap) { treeMap.forEach(row => { traverseRow(traverseRow(row), true); }); @@ -21,17 +36,6 @@ export default function Day(data) { }); console.log(`Part 1: ${visibleTrees}`); - - let scores = []; - treeMap.forEach((row, i) => { - row.forEach((tree, j) => { - scores.push(calculateViewScore(treeMap, j, i)); - }); - }); - - scores.sort((a, b) => b - a); - - console.log(`Part 2: ${scores[0]}`); } // function to rotate the grid of the map From 15cc0aa160edf94cc120a1d600e688082aa16811 Mon Sep 17 00:00:00 2001 From: Rene Pot Date: Thu, 8 Dec 2022 17:31:27 +0100 Subject: [PATCH 43/59] clone instead of reverse as it messes things up --- day8/program.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/day8/program.js b/day8/program.js index 5442f81..619563a 100644 --- a/day8/program.js +++ b/day8/program.js @@ -104,7 +104,7 @@ function calculateVisibleInRow(row, from, direction = 'left') { let score = 0; if (direction === 'left') { - row = row.reverse(); + row = [...row].reverse(); from = row.length - from - 1; } From 6f4bb54db0f78fc2bf395aef722d954a4eab488a Mon Sep 17 00:00:00 2001 From: Rene Pot Date: Fri, 1 Dec 2023 21:47:53 +0100 Subject: [PATCH 44/59] prepare AoC 2023 --- .gitignore | 3 +- day1/input.txt | 2250 ----------------------------------------- day1/program.js | 42 - day1/sample.txt | 14 - day2/input.txt | 2500 ---------------------------------------------- day2/program.js | 36 - day2/sample.txt | 3 - day3/input.txt | 300 ------ day3/program.js | 47 - day3/sample.txt | 6 - day4/input.txt | 1000 ------------------- day4/program.js | 54 - day4/sample.txt | 6 - day5/input.txt | 511 ---------- day5/program.js | 90 -- day5/sample.txt | 9 - day6/input.txt | 1 - day6/program.js | 23 - day6/sample.txt | 5 - day7/input.txt | 1105 -------------------- day7/program.js | 58 -- day7/sample.txt | 23 - day8/input.txt | 99 -- day8/program.js | 125 --- day8/sample.txt | 5 - empty/program.js | 12 +- helper.js | 8 +- index.js | 30 - 28 files changed, 14 insertions(+), 8351 deletions(-) delete mode 100644 day1/input.txt delete mode 100644 day1/program.js delete mode 100644 day1/sample.txt delete mode 100644 day2/input.txt delete mode 100644 day2/program.js delete mode 100644 day2/sample.txt delete mode 100644 day3/input.txt delete mode 100644 day3/program.js delete mode 100644 day3/sample.txt delete mode 100644 day4/input.txt delete mode 100644 day4/program.js delete mode 100644 day4/sample.txt delete mode 100644 day5/input.txt delete mode 100644 day5/program.js delete mode 100644 day5/sample.txt delete mode 100644 day6/input.txt delete mode 100644 day6/program.js delete mode 100644 day6/sample.txt delete mode 100644 day7/input.txt delete mode 100644 day7/program.js delete mode 100644 day7/sample.txt delete mode 100644 day8/input.txt delete mode 100644 day8/program.js delete mode 100644 day8/sample.txt diff --git a/.gitignore b/.gitignore index 9bea433..496ee2c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1 @@ - -.DS_Store +.DS_Store \ No newline at end of file diff --git a/day1/input.txt b/day1/input.txt deleted file mode 100644 index 9708c17..0000000 --- a/day1/input.txt +++ /dev/null @@ -1,2250 +0,0 @@ -7914 -5032 -11424 -2567 -4123 -3567 -7346 - -1334 -2173 -5437 -1104 -1872 -1148 -6547 -3149 -5923 -5705 -4036 -5348 -1100 - -4108 -14444 -25596 - -7237 -4252 -1020 -8333 -3538 -5089 -6328 -4581 -6503 -8741 - -5799 -1585 -1137 -1985 -6489 -5309 -6249 -4594 -1885 -6100 -4233 -1517 -6346 - -13392 - -5705 -2914 -1636 -2126 -1200 -2458 -3862 -5696 -6269 -6624 -4015 -6878 - -7503 -4528 -1771 -4976 -2360 -4953 -8402 -5437 -1521 -3369 - -19947 -3465 - -2635 -3520 -5764 -1201 -2231 -5663 -1872 -1834 -5889 -3104 -6043 -5672 -1897 -4429 -3242 - -1568 -7727 -7363 -1762 -6400 -5605 - -4660 -11308 -4380 -2582 -1001 -11714 - -5134 -2300 -4757 -4613 -2991 -6561 -5951 -4936 -4592 -2099 -4117 -6658 -6387 - -24950 -7865 -7757 - -2251 -6418 -1692 -5020 -5913 -1070 -3996 -6016 -2406 -6237 -4374 -1631 -6892 - -1679 -4298 -3371 -3474 -4722 -4311 -1610 -3863 -6770 -4010 -5611 -2097 - -6922 -5309 -7222 -5672 -6050 -1269 -4328 -3736 -4861 -3956 -3206 -1832 - -1880 -3478 -7714 -7708 -6067 -6378 -3506 -7447 -5526 -6263 -6018 - -6731 -5938 -6918 -1352 -1828 -5339 -4113 -5783 -2637 -3584 -1874 -2647 - -2781 -6009 -6301 -6635 -4924 -4150 -2216 -6989 -3632 -5509 -4650 - -20208 - -1060 -9513 -1929 -6742 -8104 -7913 -5924 -4176 -3578 - -5296 -9369 -2530 -7070 -8392 -9054 -3721 -4291 -9210 - -3334 -2939 -3462 -1612 -3295 -1080 -1286 -4522 -1815 -2245 -4000 -5780 -5722 -4194 -4371 - -3400 -4587 -1020 -8609 -7675 -1272 - -1716 -6587 -4563 -3922 -3788 -6667 -3734 -6692 -1783 -3153 -4195 - -2572 -6830 -3179 -1029 -2269 -11843 -9941 - -6543 -6760 -15219 -11241 -10592 - -6608 -1237 -3951 -3068 -3073 -3796 -3603 -3223 -3937 -5450 -5436 -3069 -1061 - -9396 -11859 -1902 -6598 - -3137 -1487 -2503 -1312 -3008 -1914 -4730 -6104 -2293 -2913 -2729 -3629 -5186 -3876 -3404 - -9051 -6493 - -8009 -5306 -4188 -6706 -7077 -2134 -7837 -2885 -6423 -6267 -1222 - -4293 -4554 -5378 -6061 -3238 -3792 -2238 -5014 -3508 -2296 -5479 -5254 -1030 -1644 - -15277 -4285 -10110 -7055 - -4761 -4290 -1238 -1174 -2299 -1306 -2659 -4854 -5089 -4261 -3890 -1556 -5211 -4021 -3356 - -10403 -21723 - -5893 -4236 -5927 -2052 -3192 -1468 -4598 -3233 -2168 -3106 -4510 -1847 -5083 -2421 - -16205 -15366 -21046 - -6114 -12370 -10780 -9663 -9061 - -4516 -2854 -1460 -2143 -6609 -2365 -2778 -2683 -2583 -6467 -4319 -4315 - -3799 -6044 -2288 -6494 -3439 -7232 -3414 -1388 -3966 -2398 - -4225 -4485 -3923 -4014 -1199 -1468 -2776 -2777 -2377 -1434 -4292 -1456 -3289 -5520 -4329 - -4510 -3831 -3755 -3459 -3391 -2348 -6074 -3206 -3029 -2843 -3713 - -5998 -3721 -3166 -4632 -5031 -2793 -1167 -4946 -1248 -5716 -5348 -1525 -3757 -4700 -3372 - -3952 -7922 -3443 -4604 -6810 -2816 -6138 -2392 -1241 -4236 -3619 - -34427 - -17838 -30517 - -4112 -10150 -8347 -2082 -12014 -7078 -11182 - -5433 -7853 -1534 -11283 -5337 - -6007 -4147 -2008 -4531 -5174 -5625 -5105 -1196 -1521 -2353 -6811 -1187 -2310 - -1886 -2979 -6398 -6356 -7702 -8755 -11455 - -5357 -1608 -5575 -6241 -4128 -3130 -6163 -3212 -4485 -5898 -4910 -3788 - -7801 -7457 -7253 -8529 -9551 -5943 -1356 -6505 - -4727 -8200 -6628 -6451 -1375 -1678 -5936 -5324 -6427 -2029 - -36582 - -7271 -35840 - -21992 -22165 - -6453 -19268 -3430 -10457 - -4029 -4655 -1781 -7635 -5762 -2584 -3564 -2071 -3439 -3691 -3094 - -9444 -13140 -13396 -4076 -10162 -5268 - -2126 -4467 -9082 -8317 -6550 - -5451 -6635 -6791 -5015 -8407 -4356 -2602 -3230 -4665 - -2747 -7765 -6817 -4816 -3437 -7966 -5722 -2444 -3083 -1361 - -12228 -6182 -7426 -12898 -4182 -6266 - -6539 -6363 -4724 -5591 -4163 -2589 -1828 -1351 -6077 -1146 -3987 -6487 -6049 - -6827 -2987 -3205 -4405 -1129 -6673 -4913 -2839 -2060 -2537 -2022 -1432 - -3777 -3777 -4089 -3379 -2110 -2320 -1109 -3404 -6876 -2791 -4787 -5419 - -12034 -17906 -5562 -5606 - -14336 -4651 -2209 -11190 -6228 - -4697 -4733 -1356 -2000 -5179 -2664 -2768 -5424 -2590 -1267 -3390 -2164 -4090 -3494 -5899 - -2192 -13670 -13944 -4531 -3025 -11249 - -5830 -14261 - -19801 -4961 -12629 -9004 - -7113 -7210 -3654 -6763 -7717 -4323 -5696 -5946 -2384 -7844 -1486 - -7010 -5874 -1878 -6510 -1164 -6037 -5962 -1137 -2150 -2233 - -14434 -4226 - -3411 -13559 -4848 -4821 - -15749 -2913 - -54246 - -11361 -2720 -3767 -5540 -3472 -4367 -6511 - -6896 -4369 -2970 -2445 -2070 -2562 -5328 -3920 -5450 -2897 - -14667 -15686 -1271 -18275 - -6705 -2670 -11190 -13652 -9738 - -4020 -4975 -7099 -4654 -8754 -5562 -7225 -3903 -4546 -4525 - -4197 -14210 -7595 -10871 -7217 - -4815 -5253 -7706 -2919 -4097 -2700 -2721 -3093 -5273 -1696 -5776 - -2771 -4272 -3324 -3439 -6376 -5354 -5007 -6146 -4939 -1351 -6437 -5618 -4283 - -8893 -5075 -4562 -9003 -8963 -7147 -2381 - -2911 -11753 -12512 -3446 -6006 -11130 - -2478 -1060 -6245 -1266 -5077 -2586 - -4400 -5838 -6425 -2635 -3060 -1709 -6254 -2813 -2120 -1735 -4942 -5332 -3626 - -5600 -3354 -4776 -2979 -2700 -4637 -1717 -2134 -1782 -3492 -3611 -4941 -4899 -1213 - -8679 -4661 -10003 -13830 -5247 -2139 - -20373 -3325 - -5379 -7303 -7830 -5504 -2696 -5622 -7935 -3297 - -4228 -2408 -5941 -5082 -6872 -5948 -6254 -3644 -3301 -5938 - -5258 -23981 -12886 - -28519 -27915 - -35254 -2202 - -7052 -2168 -4389 -4046 -2056 -6167 -3384 -6470 -7987 -3383 - -5268 -7903 -13452 -14317 - -6366 -1526 -9104 -2599 -1202 -11086 -5433 - -11479 -8039 -10152 -14580 - -5515 -1916 -1289 -1388 -1553 -5740 -3839 -1753 -5634 -6645 -1506 -4538 -4656 - -4786 -4267 -4796 -2879 -3770 -5652 -3160 -5825 -2297 -1351 -3115 -5746 -4752 -4713 -5409 - -5911 -6004 -4125 -3494 -7580 -7176 -8214 -6670 - -2668 -7245 -3101 -4052 -1527 -6544 -3423 -5764 -2754 -1405 -3936 - -5601 -3717 -1629 -5576 -5579 -1855 -4257 -5682 -2532 -2718 -1497 -3427 -5794 - -5247 -11031 -4614 -9068 -9698 -2157 -5376 - -9323 -2194 -1541 -5612 -1785 -1866 -8066 -4904 - -36692 -27998 - -4516 -3456 -3620 -10427 -7221 -9173 -5353 -9376 - -6685 -3452 -9421 -7877 -7669 -3237 -9391 -5727 - -20001 - -10724 -15712 -15690 -16206 -1635 - -26550 -19421 - -12539 -8286 -13842 -2148 -4421 - -10165 -10293 -5777 -8034 -8797 -3886 - -5877 -3703 -1191 -5264 -1433 -4417 -2501 -6113 -1390 -1953 -1989 -4148 -4308 - -5421 -2719 -2110 -2329 -2480 -5456 -2894 -1536 -3655 -2022 -4919 -2287 -1146 -3599 -2766 - -23545 -23885 - -3539 -18515 - -31310 - -3802 -13051 -2107 -11803 -11383 -10824 - -7070 -3331 -1545 -1227 -3701 -4290 -2178 -4043 -4159 -4978 - -1596 -5306 -5192 -7398 -7306 -7457 -2157 -4592 -7133 -5658 -6134 -5000 - -11745 -7176 -6232 -13572 -3855 - -6991 -1973 -6491 -6894 -6839 -3710 -6206 -3259 -7334 -3714 -4320 -4423 - -1602 -18051 -13165 -19153 - -1414 -13321 -3488 -6907 -1765 -11847 - -6007 -13509 -10855 -2103 -11112 -1317 - -9168 -10364 -8969 -7162 -1829 -1114 -1280 -8882 - -8113 -3195 -8998 -1596 -3238 -5872 -8194 -1753 - -5109 -2221 -3304 -5088 -3968 -5134 -1064 -5486 -5735 -3521 -4646 -5617 -2802 -5293 - -5915 -6651 -6734 -6670 -1891 -6987 -3404 -1946 -9510 - -11531 -3497 -11740 -11651 -1885 -7156 -9233 - -6541 -7739 -1454 -6086 -2743 -6713 -5321 -6442 -6950 -3678 -3234 - -6800 -5686 -8043 -9452 - -19119 -19636 -2349 -2244 - -5008 -7002 -5330 -3546 -13001 -13785 - -4985 -7177 -5629 -4174 -6747 -5113 -3916 - -6496 -5247 -6753 -6704 -9306 -5765 -4150 -6939 -5457 - -3887 -6986 -1560 -8183 -4405 -3810 -5728 -10507 - -11447 -25816 - -4597 -5623 -4127 -5048 -8158 -2593 -2250 -5352 -1893 -6507 - -33979 - -6089 -5585 -2486 -5620 -1347 -5829 -4476 -5265 -2216 -4211 -1707 -2443 -2362 -2362 -1282 - -5883 -2431 -5837 -2697 -6104 -5978 -5515 -5215 -5534 -2081 -1031 -2757 -1034 -5281 -5333 - -3373 -1608 -3753 -1177 -3197 -1753 -2510 -5515 -5455 -4239 -6135 -5620 -5610 -2864 - -3836 -6195 -5633 -2714 -1886 -6240 -1274 -1432 -1305 -2310 -3446 -6485 - -8674 -19094 -22441 - -6453 -2960 -1048 -1714 -6828 -6116 -4645 -3327 -4146 -2561 -2149 -2429 -1382 - -27003 -2645 - -3984 - -4217 -2174 -6227 -6827 -2477 -2789 -3961 -3937 -4771 -3640 -1870 -5929 -1949 - -5251 -4132 -2290 -5517 -5219 -3745 -3219 -4119 -3056 -1951 -6167 -5802 -5301 -6245 - -6430 -5525 -6656 -5755 -9884 -6570 -1134 - -7728 -4025 -7558 -4767 -1345 -2164 -1137 -1174 -1130 -5195 -6515 - -4223 -3412 -9634 -5355 -5395 -5975 -2627 - -6170 - -10254 -7145 -6816 -9867 -2471 -1584 -8533 - -3486 -9633 -10625 -6684 -3246 -9866 -10563 -1430 - -5318 -3542 -4517 -3296 -3776 -4122 -4940 -2768 -4821 -3779 -1616 -5543 -3953 - -14860 -10176 -13551 -6410 -6235 - -5075 -2852 -3919 -3024 -5265 -2946 -4377 -5901 -5427 -5960 -2953 -5508 -6309 -2532 - -4346 -1003 -2014 -1816 -7083 -7229 -6297 -6349 -3860 -1911 -4553 - -10672 -2514 -4572 -6904 -4101 -7105 -3486 -5939 - -4903 -2768 -6198 -3331 -5677 -4852 -1123 -1105 -5599 -7130 -6093 - -36680 - -2386 -4584 -1424 -4818 -2181 -1275 -1203 -6859 -1722 -3839 -1602 -7022 - -7947 -11689 -6053 -2557 -11191 -1006 -10549 - -6392 -23290 -3800 - -1555 -4968 -2802 -6188 -2972 -5342 -4944 -3089 -1489 -5851 -3724 -4105 -1646 - -1056 -5939 -2669 -6416 -1825 -5364 -3055 -3718 -4637 -2092 -2427 -4896 -2074 - -1146 -2745 -5553 -12023 -11630 -2821 - -6444 -9693 -5025 -6574 -4847 -5858 -9920 -10756 - -32182 -22267 - -55301 - -6186 -1515 -9204 -5359 -2695 -2760 -4021 -8269 -3633 - -1682 -3758 -7745 -8645 -5672 -4336 -7765 -7497 - -1099 -1107 -2501 -3511 -5559 -3384 -5934 -5439 -4723 -3229 -5376 -5032 -1133 -1239 -5806 - -15356 -9800 -3837 -10024 -13159 - -11534 -6116 -4343 -8949 -8628 -3215 - -2118 -4216 -5874 -7366 -4894 -3959 -3906 -4397 -1945 -4080 -2564 -2609 - -1559 -1514 -2947 -6754 -6285 -6265 -2403 -5718 -5167 -2172 -4605 -5420 -1806 - -1880 -1014 -4994 -6146 -4752 -3350 -3872 -6534 -6554 -4005 -3413 -2201 -6360 - -10572 - -5543 -2387 -2323 -5565 -4920 -1185 -3712 -2674 -5513 -3267 -2714 -2453 -5923 -2020 -3843 - -5594 -7165 -3281 -2559 -4424 -3250 -6706 -3870 -2600 -3620 -6853 -6549 - -12197 -8838 -8398 -7951 -5818 - -6279 - -16622 -3657 -9950 -18164 - -4487 -1146 -1953 -5985 -2255 -7752 -5966 -6953 -3238 - -8433 -4943 -3379 -10418 -8317 -2119 -2264 -9044 - -25424 -15342 - -4620 -4435 -1247 -5616 -4740 -7872 -6710 -6494 -6666 -7926 - -2587 -4186 -4175 -6572 -4189 -6265 -3357 -6427 -1014 -1909 -1065 -2211 - -2894 -5557 -3884 -4400 -6992 -1825 -4375 -5124 -1442 -2902 -1538 -1557 - -6294 -5991 -8711 -6323 -3985 -6012 -8327 -1353 -5585 -1514 - -3054 -1488 -1453 -4860 -5875 -3625 -7313 -3609 -2707 -3936 -4253 - -7605 -10203 -1976 - -64078 - -12356 -7090 -2556 - -1467 -7531 -5418 -2366 -1855 -8463 -6436 -5521 -2152 -4088 - -9810 -15885 -8104 -12905 - -7369 -5389 -3464 -7901 -7781 -2875 -7377 -1927 -3870 -6763 - -3990 -6074 -3698 -8562 -2305 -1623 -8346 -8680 -7690 - -8271 -7058 -8607 -9116 -4157 -7026 -7873 - -16451 -4437 -19220 -3783 - -23509 - -15774 -19061 -19118 - -8042 -5973 -7798 -2217 -4093 -3706 -1467 -3921 -5878 -2791 - -9142 -19544 -16563 -5584 - -6394 -5320 -3521 -3956 -1751 -5318 -5031 -2838 -3506 -3504 -2551 -1141 -4733 -3035 - -15753 -2123 -14170 -18870 - -5179 -6821 -6559 -4032 -1024 -8634 -2377 -1570 -4358 - -1640 -8885 -6912 -3939 -10328 -10308 -3548 - -5391 -1362 -1541 -1614 -3236 -1704 -4088 -5284 -2395 -6504 -2050 -5511 -6782 - -7842 -1185 -7244 -9998 -3575 -5292 -6126 -3264 - -4962 -1758 -3553 -3450 -5493 -5000 -1515 -1174 -6031 -1007 -5762 -5033 -1080 -2817 -2795 - -5822 -3591 -5416 -5487 -2110 -5372 -6614 -5136 -6450 -5250 -4411 -1851 -6421 - -42358 - -8051 -10473 -11286 -19931 - -9617 -4786 -2155 -3527 -7553 -3911 -9670 -7243 -7662 - -23109 -25276 -6310 - -4840 -6771 -7719 -4482 -6687 -6191 -6796 -4313 -7656 -2828 -1535 - -2050 -2929 -1517 -6796 -1070 -6924 -4229 -6813 -9252 - -2515 -32597 - -4389 -7467 -11143 -8271 -3081 -2180 -9659 - -5420 -2126 -5522 -5579 -6024 -3291 -2180 -5429 -3860 -3589 -2089 -1362 -5777 -4103 -3124 - -7858 -4413 -7488 -7306 -7816 -9150 -8791 -4526 -3311 - -4226 -1438 -4937 -2222 -4612 -4677 -2675 -7870 -7259 -5322 -3063 - -5953 -2931 -1763 -5986 -4926 -4405 -1628 -4778 -5978 -1446 -1388 -4629 -5080 -1781 -5090 - -25276 -8575 - -7338 -5122 -2243 -3416 -7198 -4917 -2338 -6466 -7689 -2006 - -6879 -4534 -1218 -10503 -3970 -4274 -1144 -4666 - -5315 -4696 -5183 -7596 -4734 -3643 -2167 -5441 -7878 -3347 -4204 - -2522 -2992 -4658 -7624 -4018 -3053 -1575 -4305 -2551 -3848 -5441 - -29831 - -5920 -5770 -1031 -2102 -5043 -3067 -5257 -3209 -3909 -1806 -2172 -2880 -3007 -1567 -4663 - -5017 -4609 -8767 -9643 -4702 -8519 -7904 -4716 -3679 - -1068 -6794 -7802 -2099 -7998 -3563 -6051 -6596 -7987 -3732 -7337 - -2241 -13670 -13185 -6208 -12631 - -29307 -3839 - -11354 -6015 -2257 -7358 -7688 -5290 -3929 - -12228 - -3334 -8211 -5328 -4224 -5626 -7635 -7615 -9511 - -8075 -5712 -7226 -5213 -7236 -7907 -1417 -6890 -2571 -1881 -6929 - -1189 -2124 -5640 -4677 -1487 -3608 -2828 -2911 -2102 -2169 -6087 -4343 -5689 -5315 -1946 - -7302 -1351 -1299 -3498 -2752 -2502 -7397 -7139 -1571 -1882 -4967 -7024 - -2453 -2774 -12613 -15345 -3686 - -6213 -6151 -2743 -3336 -7888 -7792 -2768 -4780 -1782 -4613 -1344 \ No newline at end of file diff --git a/day1/program.js b/day1/program.js deleted file mode 100644 index 6401947..0000000 --- a/day1/program.js +++ /dev/null @@ -1,42 +0,0 @@ -export default function Day(data) { - const elfs = []; - let elf = getBasicElfStats(); - data.forEach(c => { - const calories = parseInt(c); - - if (isNaN(calories)) { - elfs.push(elf); - elf = getBasicElfStats(); - return; - } - - elf.foodItems.push(calories); - elf.calories += calories; - }); - - elfs.push(elf); - - const sortedElf = sortElfsByCalories(elfs); - // part 1 - console.log('PART 1'); - console.log(`${sortedElf[0].foodItems.length} snacks containing ${sortedElf[0].calories} calories`); - - // part 2 - console.log('PART 2'); - const top3Elf = sortedElf.slice(0, 3); - const totalCalories = top3Elf.reduce((acc, elf) => acc + elf.calories, 0); - const totalFoodItems = top3Elf.reduce((acc, elf) => acc + elf.foodItems.length, 0); - - console.log(`${totalFoodItems} snacks containing ${totalCalories} calories`); -} - -function sortElfsByCalories(elfs){ - return elfs.sort((a, b) => b.calories - a.calories); -} - -function getBasicElfStats() { - return { - calories: 0, - foodItems: [], - } -} \ No newline at end of file diff --git a/day1/sample.txt b/day1/sample.txt deleted file mode 100644 index 444e241..0000000 --- a/day1/sample.txt +++ /dev/null @@ -1,14 +0,0 @@ -1000 -2000 -3000 - -4000 - -5000 -6000 - -7000 -8000 -9000 - -10000 \ No newline at end of file diff --git a/day2/input.txt b/day2/input.txt deleted file mode 100644 index 0897034..0000000 --- a/day2/input.txt +++ /dev/null @@ -1,2500 +0,0 @@ -B Y -A Z -A Z -C Z -B Y -B Y -B X -B Z -C Z -B X -B Y -A Z -B Y -B Z -B Y -C Z -B Z -B Y -B Z -C Y -B Y -A Z -B Y -B Y -B Y -C Y -A Z -B Y -B X -A Z -B X -A Z -A Z -B Y -B Y -B X -A Z -B Y -B Z -C X -C X -B Y -B Y -B X -B X -C X -B X -A Z -B Y -B Y -C X -A Z -B Y -B Z -B X -B X -A Z -A X -B Y -B Y -B Z -C Z -B Z -B Z -B Z -A Z -A Z -B X -B X -B Y -B X -B X -C Z -C Z -A Z -A Y -A Z -B Z -A Z -B Y -C X -B X -C X -B Z -B Z -C Z -B Z -B X -C X -A Z -C X -B Z -A Y -C Z -B Y -C Y -B X -A X -B Y -B X -B X -B Z -B Y -A Z -B Z -B Y -B Y -A X -A Z -B X -B X -B X -B X -B Z -B Z -B Y -C X -A Z -A Z -B Y -B Z -B Y -A Z -B Z -A Z -A Z -C X -B Z -A Z -A Z -B Y -B Z -A Z -B Y -B Y -A Z -B Y -C X -B Z -B Y -B X -C X -B X -B X -B X -A Z -A Z -C Y -A Z -B Y -A Z -C X -B Z -B Z -C X -B Y -C X -B X -B X -C X -A Z -B Y -C X -B X -B Y -A Z -B Y -B Y -C X -B Y -C X -A Z -A Z -A Z -B Y -B Y -A X -A Z -A Z -B Y -C X -C Y -B Y -C X -A Z -B X -A Z -A Z -C X -B Y -A Z -B Y -C X -A Z -B X -B Y -A Z -B Y -B X -B X -C X -B Y -C Y -A Z -B Y -B Y -C Y -B Y -C Y -C X -A Y -A Y -B Z -B Y -A Z -B Z -B X -B X -B Y -A Z -B Y -B X -B Y -B Y -C Z -B Y -B Y -A Z -A Z -B Z -A Y -C X -B Y -B Y -B Z -B Z -B Y -C X -B Y -B X -B Z -B Y -B X -B Y -C Z -B Y -B X -A Z -B Z -B Z -A Z -C X -B Y -C Z -A Z -B Y -C Z -B Y -B X -B Y -B X -C Z -B Z -A Z -A Z -A Z -A X -B Z -B Y -B X -B Y -A Z -B Z -C Z -B X -B Z -B Z -A Z -B Y -B X -A Z -A Z -B Y -B X -A Z -A Z -C Z -A Z -C Z -B Y -B Y -B Z -C X -A Z -B X -B Y -B X -B Y -B Y -B X -B Z -B X -C Z -C X -C X -A Z -A Z -B X -B X -A Y -C X -B Y -A Y -B Z -B X -A Z -B X -B Y -B Y -B Y -B Y -A Z -A Z -B Y -B X -C Z -B Z -C X -B Z -B Y -C X -A Z -B Y -A Z -A Z -B Z -B Y -B X -A Z -B X -B Y -A Z -B Z -B X -B X -A Z -C Y -B X -A Z -B X -B Y -C X -B Y -C Z -C X -B Y -B Y -B Y -B X -B Y -B X -A Y -A Z -B Z -B Y -B X -B Z -B Y -C Z -B Y -A Z -B X -A Z -C X -A X -B Z -B Z -C X -A Z -B X -A Z -A Z -B Z -A Z -B Y -B Z -C Z -A Y -A Z -A Z -A Z -C X -B Z -B Z -B Y -B X -B Y -B Y -B Y -B Z -B Y -B Y -A Z -B Z -A Z -C X -B Y -B X -B Y -B X -B Y -B Y -C X -B Y -B Y -B Z -B Y -C X -B Y -B X -B Y -C X -A X -A Z -C Z -B Y -C Z -B X -C Z -C X -C Z -B Y -B Y -C X -C X -B Y -C X -A Y -B Y -B X -B X -B Z -B Y -C Y -C X -B X -B Y -B Z -B X -B Z -B Z -C X -B X -B Y -B Z -B X -C Z -A Y -B Y -B Y -B Y -A Y -C Y -B Y -B Z -B Z -B Y -B Y -B Z -B X -B X -B Y -A Z -C Y -C Z -B Y -B X -B Y -B Y -C X -B Y -C X -A Z -B X -C X -C Z -A Z -A Z -B Y -C X -A Z -A Z -B Y -A Y -B Y -A Z -A Z -B X -C X -A Z -B X -B Z -A Z -A Z -B X -B Y -B X -B Z -B Y -B Y -B Z -C X -C X -B Y -A Z -B X -B X -B Y -B Z -B Y -B X -B Z -B X -B Y -C X -B Y -B Y -C Y -A Z -B Y -B X -B Y -A Z -C X -A Z -A X -B Z -B X -A Z -B Y -B X -B X -A Z -B Y -A Z -B Z -B Y -A Z -B Y -B Y -A Z -B Z -C Z -B Y -B Y -C Y -A Z -B Y -B Y -B Y -B Y -B Z -B Y -B Y -B Y -C X -B Z -B X -A Z -B Z -C X -B Y -B Y -A Z -B Y -B X -A Z -A Z -C Z -B X -B X -B Y -B Z -B Z -B Z -B Y -B Y -B Y -B Y -B Z -B Y -A Z -A Y -A Z -B Y -B Y -A Z -B X -B Y -A Z -C Z -B Z -B Z -B Y -A Z -A Z -B Y -B X -B Z -B X -B Y -B Y -B X -C X -B Z -B X -A Z -B Y -C Z -B X -A Z -C Z -C Z -A Z -B Y -B Y -A Y -B Y -C Z -B X -C X -B Y -B X -B Z -B Y -B Z -B Y -B Y -A Z -B X -B X -A Y -B Z -B X -B Z -A Y -B Z -C X -B X -B X -B Z -B X -C Y -B Y -C X -C X -B Z -B X -C Z -B Z -A Z -C Y -B Y -B Y -B X -B Z -B Y -B Y -B X -C X -B Y -B Y -C Y -B Z -C X -A Z -B X -B X -B Z -B X -B Y -A Z -B Z -B X -A Z -B Y -C X -A Y -A Z -C X -B X -B Z -B X -C X -A Z -B X -B Y -B Y -A Z -B Z -C X -A Z -B Z -C X -B X -A Z -C X -C Z -B Y -B Z -B Y -B X -C Z -B Z -B Z -B Y -A Z -C Z -A Y -B Y -C X -B Y -B Z -A Z -B Z -A Z -B X -C X -B Y -A Z -B Y -B X -C Z -B Z -C X -B Y -B X -C Y -B Y -C X -B Y -B Y -B Y -B Z -B Y -B X -B Y -B Y -A Z -A Z -C X -B Z -B Y -A Z -B X -C X -B Y -B X -A Z -C Z -A Z -B Z -B Y -B X -B Z -B Y -A Z -C X -C Z -A Y -A Z -C X -C Y -C Z -B Y -B X -B Z -B Y -B X -B Y -A Z -B Y -C X -B X -B Y -C Z -B Y -B Y -B Y -B X -B Y -C Z -B X -B Y -B Y -B Z -B X -B X -B Z -B Z -A Z -A Z -C X -B Y -B Y -C X -B Y -B X -A Y -C Z -B Y -B Z -B Y -B Y -A Z -B Y -B Z -B Y -B Z -B X -B Z -B Y -A Z -B X -B Z -B Y -B Y -B Z -B Y -A Z -B X -B Y -B Z -B X -B Y -B X -B X -B Y -B X -C Y -B Z -B Y -B Z -C Y -A Z -B Y -A Z -B X -A Z -A Z -C Z -B X -C Y -A Z -B Z -B Z -B X -B Z -B Y -A Z -B Z -C Z -A Z -C Y -A Z -B Y -A Z -B Y -A Z -B X -A Z -B Z -C X -B Y -B Y -B Y -C X -B Z -C X -A Z -A Z -C X -B Y -B Z -B X -B Y -B X -A Z -B Y -B Y -A Z -B Y -B Z -B Z -B X -B Z -B Y -B X -B Y -B Y -C X -C Z -B Y -B Y -B Y -B Z -B Y -B Y -B Y -A Z -B Y -B X -B Y -B X -B Z -B Y -B X -B X -A Y -B Y -B X -B Y -B Y -B Y -B Z -B X -A Z -B Y -B Y -B Y -A Z -B X -B X -C Z -B Y -B Y -A Z -B Y -B Z -B X -C X -B Y -B Y -C X -C Z -B X -A Z -B Y -B Y -B X -B X -B X -B Y -B Y -A Z -A Z -B Y -B Y -A Z -B Z -A Z -C X -C X -B Y -B Y -A Z -A Z -C Z -B Z -B X -A Z -B X -B Y -B Y -B X -B Y -B Y -C Z -B Y -B X -C Z -C Z -B X -B Y -B Y -B Z -A Z -B Y -B Y -B Y -B X -B X -A Z -A Z -B X -B Y -B Z -B Y -B Z -B Y -B Z -C X -B Y -C X -B Y -B Y -C Y -A Z -B X -C Z -B Y -B Z -B Y -B Y -B Y -C X -B X -B Y -A Z -C Y -B Y -A Z -B Y -B Z -B Z -B Y -B Y -B Y -C X -B Y -A Y -C Y -B X -B X -B X -B X -B Z -B X -B Z -B Y -B Y -A Z -B X -B X -A Z -A Y -B Y -B Z -B Y -C X -B Y -B X -B Z -C X -B Z -B Y -B X -B X -A Z -B Y -B Y -B Y -C X -A X -B X -C X -B X -C X -B X -A X -B Y -B Y -B Y -B Y -B Z -C Y -C X -A Z -B Z -B Z -B Y -B Z -B Y -B Y -B X -B Z -A Z -A Z -B Z -B X -B Z -A Z -B Y -B Y -B Y -B Z -A Y -B X -B Z -B Y -B Y -B Y -B Y -C X -B Z -C X -A Z -A Z -B Z -A Y -C X -B X -B X -C X -A Z -A Z -A Z -B Y -B Z -A X -A X -B Y -C X -A Z -B Z -A Z -B Y -B Y -B X -B X -B Y -C X -B Z -B Y -B X -B X -B Y -B Z -B Y -B Y -B X -B X -B X -B Y -C X -B Y -B Y -B X -B Y -B Y -B X -B X -A Z -C X -B X -A Z -B Y -B Y -B Z -B Y -B X -A Z -C Y -B X -B Z -B Y -C X -A Z -B X -A Z -A Z -B Y -B Z -B Y -A Z -B Y -B Z -A Z -C Z -B Y -B Y -B X -B Z -B Y -B X -B X -B Y -B Z -B X -B Y -C Z -A X -B Y -C X -A X -B X -B X -B Z -A X -B X -B Y -B X -A Z -B Z -C Z -B X -B X -A Z -B X -B X -B Z -B Y -B Y -A Z -B Y -B Y -B X -B X -B X -B Y -A Y -C X -B X -A Z -B X -B Y -C Z -B Y -B Y -A Z -B Y -A Z -B Y -A Z -B Y -B Y -A Z -B X -B X -B Y -B Y -B Y -A Z -B Y -B Y -A Z -B X -A X -A Z -B Y -B X -B Z -B Z -B Y -B Y -C Y -B Y -B Y -B X -B Y -A Z -C X -B Z -B X -B Z -A Z -B Y -B Z -B X -A Z -A Z -C X -B X -A Y -C X -B Z -B Z -C Z -B Z -B Z -C Y -A Z -C Z -A Z -C Z -B Z -B Y -C X -B Y -B X -A Z -C Y -B X -B Y -B Y -B X -B Y -A Z -A Z -B Y -B Z -B Y -C X -B X -B Y -B X -A Z -C X -B Y -B Y -B Y -B Y -C Z -B Y -C Z -A X -C Z -B X -B Y -B Y -B X -B Y -C X -C X -A Z -B Y -B Y -C X -B Z -C Y -B Z -B Z -B Z -B X -B X -B X -B Z -B X -C X -B Y -C X -B X -C Z -B Y -B X -B Z -B Y -B Y -B Y -B Y -B Y -B X -B X -A Z -B Y -B X -B Y -B Y -A Y -B Y -B Y -A Z -A Z -C Z -B X -B Y -B Y -B Z -C Z -C X -A Z -C X -A X -B X -B Z -B Y -A Z -C Z -B Y -C Z -B X -A Z -B X -A Z -B Y -A Y -B Y -B Y -A Z -C X -B X -B Y -A Z -B Z -B Y -B X -B X -C Y -B X -A Z -B Z -A Z -C X -C Y -B Z -B Z -A Z -B X -B Y -B X -C X -B Y -B Y -B X -C X -B X -B Y -B X -B Y -B Z -B Y -B X -B X -A Z -B Y -B Y -C X -C Y -C X -A Z -A Z -B X -B X -B Z -A Z -A Z -C Z -B Z -A X -B X -B Y -B Y -A Z -B Y -B X -B X -B X -B Y -B X -B Y -B Y -B Y -B Y -B Y -B Y -B Z -A Z -B Y -B X -C X -A Y -B Y -B Y -B Z -C Z -B X -C X -B Z -B Y -B Y -B X -B X -B X -A Z -B X -A Y -B Y -B Y -C X -A Z -B Y -C X -B Y -B X -B X -B X -C Z -B X -A Z -B Y -B Y -B Y -A Z -A Z -B X -A Y -B Y -B Y -B Y -B X -B X -B Z -B X -B Z -B X -B Y -A Y -A Z -C Y -B Z -C X -B Z -B Y -B X -A Y -B Y -B X -B Y -B X -C Z -B X -C Z -B Y -B X -B Z -A Y -A Y -C Z -B X -B X -B Y -A Z -B Y -B Z -A Z -B X -B X -B X -B X -B X -B Z -A Z -A Z -C Y -C X -A Z -A Z -C X -B X -B X -B Z -B X -A Z -B Y -B X -B Y -C X -A Z -B Z -C X -B Y -B Y -A Z -B Y -B Y -B X -B Y -C Y -B X -B Z -B Y -A Z -B Z -A Y -B Y -A Z -B X -B Y -A Z -B Y -C Z -B Z -B Y -C X -C X -B X -B Z -B Y -B Z -B Z -B Z -B Z -A Z -B Y -B X -B Z -B Y -B X -A Z -A Z -A Z -B Y -C Y -C Z -B Z -B X -B Y -B Z -B Y -A Z -A Z -C Z -B X -B Y -B Z -B X -A Y -A Y -B Y -A Y -B Z -B Y -A Z -B Y -B Y -B Y -C Z -B X -B Z -B X -B Y -B Y -B Y -C X -B X -B Y -B Z -B X -B Y -B Y -B Y -B X -B X -B X -A Z -B Y -B Y -C X -C X -C X -C X -B Z -A Z -A Z -B Z -B Y -B X -A Z -C Z -B Y -B X -C Z -C X -B X -B Y -B Y -B X -B X -B Y -A Z -B X -B X -B X -B Y -A Y -B X -A Z -B Y -B Y -B Y -C Y -B Z -B X -B Z -C X -B Y -B Z -C X -B X -B X -B Y -B Y -B Y -A Z -A Z -A Z -B Y -B X -C Z -B Z -B Y -B Y -B Y -B Y -B Z -C X -A Z -C Z -B Z -B X -B X -A Z -B X -B Z -A Z -B Y -B Y -A Z -B Y -B Y -C Y -C Z -B X -A Z -B Z -B Y -C Z -C X -B X -A Z -B Y -B Z -B X -A Z -A Z -A Z -B Y -B X -C X -B Z -B Z -B X -B X -B Y -A Z -B X -B X -B Z -A Z -C X -B X -B Y -B Z -A Z -B Y -B Y -B Y -C X -B Z -A Y -A Z -B Z -C X -A Z -A Z -B Y -C X -B Y -B Z -C X -B Y -B Y -A Z -B Z -A Z -C Z -A Z -B X -B Z -A Z -B X -B Y -C Z -A Y -B Y -B Y -B Y -A Z -B Z -A Y -A Z -B Z -B Y -B Y -A Y -B Y -C X -B Z -B Z -A Z -B X -B X -A Z -B Z -C Y -A Z -A Z -B Y -B Z -B X -C Y -B Y -B Y -B Z -B Y -B Z -B X -B X -B Y -B Y -C X -C X -B X -B X -C X -A Z -B Y -C Z -A Z -B X -B Y -B Z -A Z -C Y -A Z -B Z -A Z -C X -C X -B X -B X -B Y -B Y -B Y -B Y -B Z -B X -B Z -C Y -B Y -A Z -B Y -B X -A Y -B Y -B Z -C X -B X -A Z -A Z -B Y -B Y -A Z -C X -B X -B Y -B Y -B Z -A Z -A Z -C Z -A Z -B Y -B Y -B Y -A Z -B Z -B Y -A Z -A Y -B Y -B Y -B Z -A X -A Z -B Z -B X -A Z -B Z -B Y -B Y -B X -A Y -C Y -B Y -B Y -B X -B Z -A Z -B X -B X -B Y -B Y -A Z -B X -C X -B X -B X -A Z -B Y -C X -A Z -B X -C Z -A Z -B Y -B Y -B X -B X -A Z -C Z -B X -B X -B Y -A Z -B Y -B Y -B X -B Y -B X -A Z -B Y -B Z -B X -A Z -B Y -C Z -C X -A Z -A Y -B X -B Z -B Y -B Y -B Y -B Z -B Z -A Y -C X -B X -C X -B Y -B Y -B Z -B Y -C Y -C X -B Z -C X -B Y -B X -B Y -B Y -A Z -B Y -A Z -A Z -A Z -A Z -B Y -A Z -B X -B X -B X -C Z -B Z -C Y -B Y -A Z -B Z -B Y -B Y -B Y -A Z -B Z -C Y -C X -B Y -B Y -B Y -B X -B Y -B Z -A Z -B Y -B Y -C Y -B Z -B X -B Y -B X -B Z -B Y -C Y -C Y -A Z -B X -B X -A Y -B Z -A Z -B Y -B X -B X -B Z -B X -A Z -B Y -C X -C X -B Z -A Z -B Y -B Y -B Y -B Y -B Y -B X -B Y -B Y -B Z -B Z -A X -A Z -A Z -A Z -A Y -C X -B Y -B Z -B X -A Z -B Y -B Y -B X -B Y -B Y -C Y -C Y -B X -A Z -B Y -C X -B Y -A Y -B X -B X -B Y -C X -A Z -B Y -B X -C X -C Z -B Y -B Y -B Y -A Z -B X -A Z -C Z -B Z -B Y -B Y -B X -B Y -B Y -B X -A Z -C X -C Z -B X -B Y -C Y -B X -A Z -B Y -A Z -B Y -A Y -A Z -A Z -B Y -B Y -B Z -C Z -C X -B Y -B Z -B Y -A Z -B Y -B Z -B Y -B X -B Y -B Z -B Y -B Z -C X -B Y -B Y -C Z -A Z -B Y -C X -B X -A Y -B Y -A Z -B Y -B X -B Y -B Y -B X -B X -B X -B Y -B Y -C Z -B Z -C X -C Z -B Y -C X -B X -A Z -B Y -C Z -A Y -B Y -B Y -B Y -C X -B X -B Y -B Y -B Z -C X -B X -B Z -A Z -B X -B Z -B X -A Z -B Y -B Z -C X -B X -C X -B X -B Y -B Z -B Z -B Z -A Z -B Y -B X -B Y -B Y -B X -B Z -B Y -C X -A Z -B Z -B X -A Z -B Y -B Y -B Y -A Z -A Z -C X -B X -A Y -B Y -B Y -B Y -A Z -A Z -A Z -C Y -B Z -A Y -B Y -B X -B X -B Y -C X -B Y -C Z -B Y -A X -B Y -B X -B Y -B X -C Z -B Y -B Z -B X -B Z -A Z -B Y -B X -B Y -A Z -B X -C Y -B X -B Y -B Y -B Y -C X -B Y -B Y -B Y -A Z -B Z -C X -A Z -B Y -C Y -B X -A Z -C Z -B X -B Y -B X -C Z -B X -B Z -C Y -B X -B Y -B X -B Z -B X -B Z -B Y -B Z -B X -A Z -B X -A X -B X -B Y -B Y -B Y -A Z -B Y -B Y -B Z -C X -B Y -B Y -B Y -B X -B X -B X -C Z -B Z -B X -A Z -B Y -B Z -B Y -B Y -B Y -B Y -C X -A Z -B Z -B Y -B Y -B Z -A Z -B Y -B Z -B Y -B Y -C Y -A Z -B Z -C X -B X -C Z -B X -B X -B Y -B Y -A X -B Y -C Z -A Z -B X -C Z -C Z -B X -A Z -B X -C Z -B Z -B Y -B Y -C X -A Z -B X -B Y -B X -B X -B X -B Y -C X -B Z -B Y -B Y -B Y -B X -A Z -A Z -B Y -B Z -B Y -A Z -B Y -B X -A Z -B Z -B Y -B X -B Y -A Y -B Y -B Y -B Y -B Z -B X -B Y -C Z -C X -B Y -C Y -B Z -A Z -A Z -B Y -B Y -A Z -B Z -B Y -B X -A Z -A Z -C X -A Z -C X -A Z -B Y -C X -B X -B X -B Y -A Y -B Y -B Z -B X -B Y -B Y -A Z -B X -B Y -A Z -A Y -A Z -C X -A Z -C X -A X -B Y -B Y -A Z -B X -B Z -B Y -B Y -B Z -B Y -B Y -B X -B Y -C X -C X -B Y -B Y -B X -C Z -C Z -C Z -C X -B Y -C Z -A Z -C Z -B Y -A Z -B Z -B X -A Y -B Y -B Y -B X -B Y -B Y -C X -B Y -A Z -B Y -A Z -C Z -A Z -B Y -B Z -A Z -B X -B X -B Z -B X -B Y -A Z -B Y -C X -A Z -C Z -B X -A Z -B Y -B Y -C Z -B Z -A Z -B Y -B X -B Y -B Z -C Z -A Y -A Z -B X -B X -A Z -C Y -B Y -A X -A Z -B X -B Y -B X -A Z -C X -B Y -B Y -C X -A X -B Y -A Z -A Z -B Y -B Z -B Y -B Y -B Y -B X -B Y -B X -B X -B X -B Y -A Z -C X -A Z -A Z -A X -A Z -B X -B Z -B Y -A Z \ No newline at end of file diff --git a/day2/program.js b/day2/program.js deleted file mode 100644 index 0abdc6b..0000000 --- a/day2/program.js +++ /dev/null @@ -1,36 +0,0 @@ -const points = { - X: 1, - Y: 2, - Z: 3, -}; - -export default function Day(data) { - const games = data.map((d) => d.split(" ")); - - const part1 = games.reduce((acc, game) => acc + scoreGame(game[0], game[1]), 0); - const part2 = games.reduce((acc, game) => acc + scoreGamePart2(game[0], game[1]), 0); - console.log(`Part 1: ${part1}`); - console.log(`Part 2: ${part2}`); -} - -function scoreGame(oppenentMove, counterMove) { - const move = oppenentMove + counterMove; - - if (move === "AX" || move === "BY" || move === "CZ") { - return 3 + points[counterMove]; - } - - if (move === "AY" || move === "BZ" || move === "CX") { - return 6 + points[counterMove]; - } - - return 0 + points[counterMove]; -} - -function scoreGamePart2(oppenentMove, outcome) { - const oppmoves = ['A', 'B', 'C']; - const mymoves = ['X', 'Y', 'Z']; - const modulator = outcome === 'X' ? -1 : outcome === 'Y' ? 0 : 1; - const counterMove = mymoves[(oppmoves.indexOf(oppenentMove) + modulator + 3) % 3]; - return scoreGame(oppenentMove, counterMove); -} diff --git a/day2/sample.txt b/day2/sample.txt deleted file mode 100644 index 25097e8..0000000 --- a/day2/sample.txt +++ /dev/null @@ -1,3 +0,0 @@ -A Y -B X -C Z \ No newline at end of file diff --git a/day3/input.txt b/day3/input.txt deleted file mode 100644 index 0c81dde..0000000 --- a/day3/input.txt +++ /dev/null @@ -1,300 +0,0 @@ -tdltdtmhlRNCBcwmHr -WDzDPnvvGnsWLWpGJJHRzCCRZNBRrRwMNwHH -DsDsQnJDnWsJnJvrQDPJddgShFQhjljqhggbdbbt -LqvbLLTdvlfdqTLtbvDSRHPhHmRSnndHnHRM -jswsGgzwsNgNWNwGJzVrgSHnhHHDmShmmGShnMDPRn -JMNWzVwMpjpLpTfTLLTf -HnQBjMjPQmRMmJCmBPGSFTSVWcNNGQQGGGTV -dgstqdtsbwrzddvrvdwqzhrWSFllDSWGDWFGDNsDDWSTHT -gpqZwwzHZhwzMJBmfZnnJLCL -PJHbTPCmLdTtLtRtBvzBrWffft -hnpTqhMncpFDppDqqNVFVvWzvNWNvfBfzs -GwZccTpgnDSDDZQdCZbbClbCmm -bnZnRZZZRlpGBbfRJjBbMfhCHwfsHShschMsHCww -LqVtqVmtLQvVqqLTFFvLDMhDMpMhwMSLDhsDCH -mFQWtNggVQQgmdgpJGpnnZJjbWGBRZ -GsdGrGqvLZqWvWWdrPLdfvsvSJDDcQQhcTbFbTcCJLSJShcJ -wmBlnjwjgHSSDQjfDDfF -wggpmwmwNnMlHRpttRHmlPfWzdGvvvzrZWVvMrPvvZ -jvlvTvTvTvcqTdZrdnGlVfNgspslpfGGnM -BWQhQzQwmhwWHbWCSRMRgjpjVDDRgDgVffgV -zLHQSBWmLcjdPjLLLZ -BjjLnRzBnRmTSTBhpBmCjnLqNPGGVNZgNgLGddZVNVdf -wDDJJQJlJtHrlwFFPNGGfZbbbglgfPSf -tFQssvcDJtJcFcvwHtBmnSCvRmzzhpSCWvmC -GvPVvVHPgzPMcFvDHssdpCpsnpHnsj -gmhmSRZBJTTTmSBZhhrqSBLRCnsBjjnbjBdbdbbdnbjwwBsj -WlrgrRgJSgZSJJJTZRtvVzvGtfzcVFcMzlGM -QSZwwsBZZwjsndFsMPHLzTLLLz -tpJfgHghmvqpNWrrTMrMMRzPrMPJ -ghgghmlvmgNWgmWwBQcbGGSclGHjjb -lhlnWGGFWZhDfgFfWDfrhgrRwcccqcZQBQMwcqJMTMRMqJ -jVdpSLPVSjtNdjdPtptzLNPPzcBzwCQrCcTBTRqwwqMCJTcC -PNHdpPLHtHtjdLghnHWvrvnFlFnf -qttvqPdCtLrqRgfpgpMgSfSWvM -TJccnTDjjDlDhSpfHdhpTpZf -wldwmJdwmsstCsLzBsBCGP -ddpCGpGpnndnpWqdVVpDGfDGFzSsFSZzBJShJsVtTstssrsr -jbvPLwFjztJBtvJz -wjggcgPFLlLwPFNwHmNPQqDRQfCRGCGqnpcRqQnn -PmmGhLLcgZbPQnqH -DlVsvvrvvvrsDJLRDvvCHbpBqpnbQnggbWZbggVW -vJRTSSRJClCCDwTJRfSfCsGzMLmGmzmjGcfmdFNNNtfh -vcmmMvfctfjLjvvRbLdHSnQSgQFnghSgQQSSjT -WzVbszVNHnTsQFgZ -pVlGlzrbDNrDrPpJNNJpVdBDvLdqvvvqqdBqcfvLdq -gfzgzPDVZQDDSqBdtFfdFdvqBB -MrwmTcJJsMwNmJdvFqdFGGtvvsGt -HMmTTwcJqcrTHrjjczhZQgzghgQHhnhhHh -BffBVgjPwPPPJwBBVJfDDsgrdZdcZqlcSnSncRNzHzZljNqq -CmWFbCmFvMtLLQCTbbbLtRqdSZHcdnqqNqNTRlnqNH -MpthtSMvFbvWPVDrsDgpPggD -VVRntNwmlvhGccPNfS -QZcgZppdrZQTzrBgCbrbdQrBvjLssPjSssMsfSLhTPPGvLTP -ZZcpJZHpgCgpppdrJRtVJFqVFVDRWJmtVq -dpdhtpjHtnpFRHdjRnwspMQmqpqqmVqmTVJQMmff -gSCcBCBCcgwDBLSvcLQQVTMmfmMJDqfTrrVV -gSwPzLBbNCbFnHHjhthh -dLNrRmqLqRgCNNrCJrSqqSQgjDWnGpGjDjspnlslGHnnjsQj -vVTzZFVttVBMFbFfffVVmVtHWpDspjHWWWbGjjjDsjWllW -hwFFwztTzvZmBzVfqhSSNPRPPCRPRJCr -BjfcmzCCTtNBNjcTDWwzPzDMMQPDPMws -lGpJFHnlSlnZbGnQQSBLwSPPLMsDQh -JFHHpbnZbGbZgvTmqfNgqCcvjB -ShhpqjhhVZmHhSJSSnLzdNRNTjLwNTNTzv -QffRWRrMGwLfgNcNgc -GQrQDPRBlGlsGrWtrtPDPbWpqhZqSqJJpHZSVhVhhmmBZF -ZlVVDTtTrzFDrFfB -NNGbJNNNNmpWBNbNWmjMfdjmFfPdqFMrMj -NQvRNvSRHSQBgRGQJJQQHTtcVLlVcTwVTllnRsttZs -fjsDhJsVDcVJVljFDqLqFlnnCFbzbCCCZCzCtCZrnCCM -HwQNrHWNPGPHMZCvMCbzzvHZ -dBWwWPPGrGwBlcjDlcjcjldL -NCLMHJZqCHHHMFlNBZtTZRvtStZdcRbc -wDrnpbswVgsrsWmGpDpfpBQtRSTmdvBjTjtBScctRm -gwzgbGDgpgFJMzlzPJCC -SpnfPVqFnGfPGggqfGbjZZrtWrlRlbHpZjRZ -mmJmdJBsBJsDwhJBQhTZtzdRltrrRlrtHjjl -NBscQhmsmmQLLwLmhhwmcSSGfnfSFCSMCPfHCMqG -hvVnPwZwVzQrhrVhPPPrpQVDBgMMlSTLZsgdDTSTdsssLd -RvFCqCGfbFCRbRmSBMMsLBgdFDSgdL -cRGjRWbWjvtPvrQcnr -LzLNzhpcRRcTmNDzRhTPDjMvMnVlMgjngSMrMzrQQr -tfbWfWcWddFcGFwfswFFFCrjjvlVbrQjSglSQMjgvlgl -FHWGCHCCGcwfswqHdHqwwmPqRJDpZZNRJPRPPTTJNR -gLHLLhTjZVMwMRSZZS -GdqdtlPvnQPPnsRw -tNNGvdtbdmJmHRTRJrFr -QjjdjGDvdjwpZsssvsPZFZll -mTWWMWzbPHmZwHHw -JwTbtBztMVLDSpjVtc -SZSBWtBSwnTDFSDD -CsrJWmmPrPQmpzsPmssssvnTFhvTnPhnFDFfDFnwqF -CCCCzprgrJJCgmVcpJmWLQZddHlGbMbdZMbtZNNcHHBt -fgqqrZLqZqFzFFWzZzgPPbnMNNNvQnpQnQbNbpcHNP -SdwdmwCClCCwldhRSmsvpbncjQbNNQMtjQnMvS -mDlwhMRlCwDCTVwVJRdGgfzLLzzGzGFWqGqfGD -CnVvCqvnRqHVqnWcMFnLmLnMMm -ZrdzbzbrdwtQdSfdcmmFMBWFNFWLwNNp -QFrQtJDdSZdDVHlVCPssJRll -qMpGGmVNHMGVjRJJGfRgQtjQ -flsTZCwDwWcZZPCrPZZWgLLjdJJQSJTQFSgQJJRt -ZcChshwZCDvlCZCsPHMHzqNzBmMfmBBMfh -wCtZtzCnPldZSdZp -VMspbMHspbshbPBLFsdcsLBdLs -pRrQHpNbQbrqRqJfnwfwzR -DPPcDlPwNdNRJsccpgvwBBvqGGQtqrCjwr -fMSVrMWmLZqHQgLggCHH -mZZWVTbTWWfnMWrbmznfZfsPNcdsdpRcNJplbJNcNRNl -ztlNSLhplhBHwwBBMBtv -DnVVfcGbVnGRZGgvPMpHBpCmJMDP -GnZdZZnbdpVcQjQQFjjqrlNWlrsNrFNLLsWqSF -bJQgDRfjDbJbRMTgSSPzPHCNhzQHHszz -wmnwFmDcwFGvpvwGnSWPNPWzPHhhcWSCNz -GpDtmvrdGvvBmZrLTjZRTqTjblbMfL -gBhZmtHhhhwTJqwDFqGGqPWqDb -rRLRVTrjCrCVdFjMbvGPPGDPvW -LSsVdrRNRCCffCSllQNBTNgNlmhHBJ -lCzCCDMDlzzlZtttWDnDCZPbVGLhSmSLGbSgGPgVZm -sBcNsqTQwRQRrBgbgSbPTLVSnLmV -wcqrjQsBBjdCzjdnCv -ZgHVtMQVVgvQjjtzdzfdFHppfmzwpz -CsBrBLLJSrsRCvnGvfRdvF -DbBJTJDLrJDqqqrrhJsJqVWthWlZZlZjMPZltvtMjZ -bsHlrwlnwwQJsqmJnqsPSLzTLpPGPSgPPPWmLT -fdvBtpMDfpCCfBcCcCBtDfFSgTMTGSTRPLgPWGzGgVgLVz -NDcjcDZjBCdvvjdvhlbJnprjnnbhwrqn -zRpLMMqjgMggqLDqDRVGNGdhGtvGGnvGnrznGB -VScbcZPJZWZlZbbHSJQJGtrGvtmdBBGmdGBrdn -cbPsZcPCcWfCZPcPQslljpDqwfqVgRLMTRjwVqLM -QtRWhjtsbttQtnbbQvsrRBfDNdMGBLZLVVNVGNLGWd -JwllwllJmCwzPFSJzwwTBZLDLdBBBPLZZBVTTL -ZwFSSmpwzScFSmggHQjbQvjvscQbrtnjbs -WMLWnSHSMnHjPVMVMVVJGM -zQzRcmttdftrtrdZZRzDtPZppphsVbjGbQbJTTsCbsjppG -dmrDtqfzrmZtqDvdfmZmtdqzLNlgnwgWLNvwFWgWWPNFSFNN -hvSrMwqljjBHvqhHsHshqnrZcCCpfCZZCCZZCcCfCZ -QDVTRFWlmDnpLnnPTPCZ -DVQVtmQRWRRGFVRWVvlwdShBvvSqvtjMdd -pnMQbbnDQMNMDQsnTplNTDvqPGHZGcvqmCqvmqZqmlqP -dwJdBBwdJJwLJBLSRJczWmHPzqWzzHGmvPRHGG -LrdFgSSLBsDMFFcbQb -NSnwvSPPVNnPTLVpRvVvRnqhhQQzHhLbzlqcqHzmHHqh -DFMMfBffgZJtFsJgwdDHGHHzzmqhhHQzDQGhcH -dMrZMMgFfFtZJZfBWMfVPNwPpNwPVSNVjjVWpN -dNlLSvLSdNlhphlhlWfVFFbZHqjjHHvqFZQHCQ -BcrTcJfRMRmrcbqcQgcHVCVF -fBzTJJRmfPPmnppdNwhllwlz -GqfSSmPSFwSCmFBwfQfQBfGnggLrhTrJBDDnrddsJDdLTL -cHHvVtptbzbrTQJTggnTQv -QRVbbQWbpZbVQVGfRmwfFwmjflPP -zzBQJmzQPPlddpJWlzzfdpfjvLvgmvFggMFGDVvLGHVFvvtM -CCSTrCncrhcCcwhRnCqCttFDvMFvtWtVHvFhvLVv -wCTNCSRnbnpWzlBpJspN -PTzTPlrrfrbzmftTTrrjPMsNNFZQgQHVgMtNVFMgFF -DpGBcpvdZhccdGJhqDBphZhdVRQVQQVsqFwMRwFgFNHMHwQQ -SGcLGpdGnBhDJppSDZlPTTmLrmbTLTmrZL -PzmhTqSzdDGcDhzdJDPBmJnrdVppNVVtgttMVrNnMMnV -blbQbWLvlWffCjlGCWwsnLpnpMggnpspnsrg -fQRbCZRfFZvZRQHRvHjmGmTFPcBmDhBGTzmGqS -JJVJfgJfVDdfDDcpTBgdwQMQZQRZQZwmlmWwQGcm -ttzzjjzSqPzqtqzFrPvzwNwMlMRNnnwnllSmmmQG -FCvvChhsRVhhJBdB -rbQZdRzBFTBzZZcclntHnlfJlrNgngfS -PPqGjpPGqpmDmDwqPDVnlNpnJfnnnglJCHlNfC -MMhhjMwwPvZNZTvLTZdL -ZZGgVgwfQNVNLfZsPqRsVTDspTpsqs -jdjdSbmMdMBSvMgBcWpsRpTWDHWTvRPs -httmBMhbBBjCdzShfGzJlnQLlgGGZwww -gLSLMCbVSGRPdTwtjtVfdt -TpzJpFFqmzpscslBtddjlwjjDhhldhvP -WpsTmJpHssqnHMGLnGSgbH -RRBCpJJplCchWJJHCHCvjdpMzFzrNvVgFrrMzz -btLLPGSQctnZnPwwSjgZjjjNNrvMvVrrjV -tmLPGmnbnsLLwqQPSwqGbwDfHlHWBWlCsffshDCBfWcJ -GhDFZFGZzzbCdZbZVlfv -bPNWSbSJSWSJPBBLLqClCltlwlNmllwvCQfC -PgPLqgqpWcWJJcnqJccccGrjbHhDRGMDGTDbpRhbFF -VJRffrVJvDzcRcFFbpSlQLHlvtlstbbt -NmNqPhPqPZhsQLQwSRpH -dWRnRdBmMBWgjCgVGjFcCDzf -nhhQFDmVmDGhmFpgCgBpcpHqncCt -fLLZbljhjjscCggBCLCL -PhMRhNWddWNjfRdPRfWNfVmvQFVQzVMJJDJGrmQGrQ -PNQtsHvZtsQgQLPsPtHZbfzRffRzMMqRqpzbfqng -jDwCmhrDlhBhBldrzJMmfFFbSfFnqpFb -jdljDrDrTBBnGVNcGcQLQLQPQL -MjzrjZvWQRHtjQdS -JFJlDJbcbvtRQmQbQQdf -JqNDBVNpqCBqDBCBVDcNVBqNMWgGZTPZgCrPzzvghPwrwZgG -gzggttLNDFztFCNWzrLttmFddSjsdJsgZVSsJjwjgbgZVG -pPPcqpnqHMpcRbhhMMpThvnwZSjZvdwZvwdZSBvGZSGVZZ -ThcPlHbbPHRnlRTHnMhpfltrNLWzCWWCztzffQLLDmDN -SlNJRpCGTmdFFDcbqJZFFJ -wwnWPHgsLPlVVfssLcZcjjzrDqcFzcgchZ -WVvQHQPfLwSGSvCRlNSd -wWnWcpWDcwHcRdJQTdmNsT -hprqBSvZNjFdFjsq -fSfpvhLBfltMCLzWzC -fdPfPwPmdmLZfNWjWszQNjjN -MBRSBBRBChMRQWhlmVWNsmzm -FvRcSrcRrtvrRrvrrrmcwGwLnTHHqGtwZwHdGPHP -tFPlJcDJdvLZvFlcvlHtQRthbgQjrhsgQgNr -qCnpGMnTTVwCCMnqwWfpChQHRbrgQjsQmmfrrHgHrH -GMnTSBnVTnBGbLlDDvFBLDbF -rJhPGdLSWnnrdqLhPPWGjcZZffjcgNdgNgRcNfwf -mHsDTQlsQBvWspTHzpmCTpcZgwZjZfZNRFwRjRRNMHjZ -vCzDDQsDDvbllWTllCDCCTSLbqSPVqSnJLGSqrPLtVnP -sSRdHHHSRhjShVHWVFJdQPNFpGCrQCCfflqlPvfN -gLztmctMwnBtTzMppBCCrGfQlQQqBN -bbbncfzLmmmnnZLgHZWjhsjVJjHRVSdR -bRgwCHfgfCCttRbdRLHzzGDnDnLBhmBGzvmFZD -rssprQlqlTQGNPcJGVsTBDmWzBnPnhWBvZZDBvDm -MQQTJTNGNcqrNwMwwHRdRbdgbj -sBnnsDLDBCsLTngnZLcdmppCdmpRJwJJQdMRMP -NlrTblbNNbwRPpjjbPdJ -GlztrhvfGqltqzWrcZgFZVSWWSTSncnL -FLJqLFRjzFqzJddlLfNNCjPrGSHCPHNVNVSH -TWTpngssgcPgNGPc -pGMDZpnZBMDsTTTnTsQWWZTRlbvdfZlLflZzJfdqvdRbqf -ClsJpCgsppMbFFFbHp -PvQRPqQPvRdwLNZLZqqwGPPPNTbjMcFcfHjHcMNfBNHrcDDM -GLRnzqzdRqwdZnLLPqqZdQGsVtsnlWCVVWsgtWSSVVhFWt -LNLSJjQDLlzRGwTTzQfT -WbZqchqMZqZWbmdZbhTrvPmGvwfHRHGTHRwH -dcfChsWWZgbfWdhCbgDNFBBDjFNBjjVNpD -HjCLsHJHCjnNVHdCnHtJdtQQgQDhFGFDLcwFDBFMMDBT -vWrSWSbSrRqmzlWlQgRQQTcRMgMTMFwT -bzrpWWzbqrpnZsJwZVpC -FhlfrNdTrtFdtrrrfcZBMdpZcHHHZMcccv -PmbjVDjwQbbjjVpDDvpzBZSSMsvG -jmbVjPVWqVmgJgjmmPPQjmqlCMlftnftnNlTTLLfNfrJtN -PwMWzqwWbFwznqNQQhffQjJfnhfJ -mmdpgmttDrpgpdmZdHmgNsQVZvJNMQvVJffsZVQf -pdcBrMgDgcgrrHPcFSFzzqzFFbPS -QRJJtSfJtQtjQRnSnNssTNdgsgdwddRWcm -qHMDhPBqbqZVzbddTcVwSmNWNVcc -BFCZbqPbHBPMhCljvQSvGCCpnj -HSzHNHlNHmBSHSBFrFFgBHVVqbQLTTcLtqDsDTBTDcDp -CWQZGCWfMZGqbTbtpLsbWp -GwjhPCRZPQPPCPwmzSNzzzmwzlzSgH -GgTvJbpJGvPVHZZZLW -cwWdnwmWnfwZDBHHNzZBVf -nhjjmshdwmSjsnmwrrQrtbtbgTTgrWth -lFBTtcnlcFlppVpttcFZVhTTDDLCHDSDCjDCMSLZDWdDDSjD -mrfsgMfRRwwPffJfbdDdgWGLGLSDjSSWdC -MmfNPwPzMzlhlFlplV -pRVgVsRzdDVJJJRttZTnnLrGsrGssG -BjMvMBWmjWNWSWrLGZPTHLSLTrZr -LLMWQjfvmljLBRVJfbChfVgJRz -RPDsdnVrVnVzScStjpFSjV -BTLBhMMBpSMsMjZz -hwbBgTsbBbGrGHvGrvDnPH -nzwgtSFRqhDphDwB -CmWCrrmrVPGCDTbpvvvhsZDG -VdNrlWHpmQzSMgJFdRFz -jrhZtczchvvFCTmCDlDMrMDT -bHbLnbbwLnWQpLQgQVpQCTDqdmwqmDqCdDCSlmdd -sgVgglblptsfFthtvR -LctzWvrzTWsvWBfvBzdJQSdQhQQfpDJJmmDD -lMRwjlwlLnZwLHLggQDRGphdFDJQdSdJJQ -CjPZCVCjgPwgWqWLqzzcWsVq -JNWHsPNsJNHBnfnnqfqswcctDTmPCRmmTRtgCdmD -rjGrLrbhGRZVGQhphbbmDgDZMDMwdwDcCMgcDM -zvbLvVpFvjzVhbQjGjHlnflJFlWRqBWWBJBS -NfCMfGNdGqVDhWBvncLllhBgcmgL -bJbRbHHtRtJtZTpSRtsLDLzvcvBmgnnnJlsm -SbbbTRpbQHSbbwHZZTHqfCNMfqFWGNGVQMFGDC -MdzwdMpVwVNMHQMJNcHM -mDtcPDqWnDqgnGJvLHTJHJ -mmjhhRBRBcdZrcdRCz -lvldsNpNGCGgCvCGggDLMbMmrdwnjjZdLLwrjM -HWHtPHSHPBnrmZjBbwwC -tHqWRtfttNlDClvNqs -BTRNQTQTTBFRTglDwzztDgCwLF -jZsMjqgdrrzzSbsDSwsw -jWZrMgMjGdvrWWvrWMfMfZTBHTHQBHBQNpQRfRHNpnRT -GRgFCPhnBBhPwZPnwdbWMJMlcJTLLlTlRT -VQsvVvvVNzqsscTVSLbWTStTJW -spfDNpvsnPCfhBbh -GhWSgWphprhQqqndQd -MvZRjjLcCzwcLnHfdTdgfFHQ -wCczcCgRMwRRNCtjMCtCvlBmVDGslmPpmWWNVGSpWV -PZqgTbTZvFgZbZnFvPlBsVqsGBlGVzGsqVls -MMhSmHHfrfrSrjMNfcjrSRBlBVzGVpVGgGVCGslGNd -rMhQQmDSQMjMtZvPTTnJvtQg -TNGWlqVpmPssnNssWLtRfCLbjCCwPgLjfg -ZSHvHczFBBcHhJHFvhHcSFgrCgLbfgfbwrLTtbjwLwJr -BMzSQzcQznlNQTQsnl -FVWDZDZHpDdtZlqZqZqljfNmsNFPjbbPbPRbFFjm -MJSGMghngrccvSrSzMrsQbbRmjmQmjtNtbfB -CMnvczGChCCwcgtpDDlLLLwVHdlHTZ -fTTzbQzhDwwbCnZnpbgnHncM -mGtBRBFmsRpVGMzpnnGL -lFNqtdsssrRFBltSFRFlSrvfDSWWvwfhhPJPjWfQzPvf -GWWWQlpSZzrQnjQdRHVjdjTRvddddB -ztthMtCmffcChJhChfCJdLddLBBgvqdvBBVBcgdq -smbsmbmChCJmJffPmhNthDtZwnFQZQGpSrGWGQGZpQZzWP -ZDzsjjFLFqsQzFsZqDzBHGtBHpmgdNGmGBtLBG -hbbMMTcWhbwnJPlwWrnPbbVGVNndgpVVHmdNHVBmmmtf -bCTPTclcgRZQZCgs \ No newline at end of file diff --git a/day3/program.js b/day3/program.js deleted file mode 100644 index 48d2251..0000000 --- a/day3/program.js +++ /dev/null @@ -1,47 +0,0 @@ -const allChars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; - -export default function Day(data) { - - // part 1 - let score = 0; - data.forEach((d) => { - const first = d.substr(0, d.length / 2); - const second = d.substr(d.length / 2); - score += matchingChar(first, second); - }); - - console.log(`Part 1: ${score}`); - - // part 2 - let scorePart2 = 0; - for (let i = 0; i < data.length; i += 3) { - const backpackA = data[i]; - const backpackB = data[i + 1]; - const backpackC = data[i + 2]; - scorePart2 += compareBackpacks(backpackA, backpackB, backpackC); - } - - console.log(`Part 2: ${scorePart2}`); -} - -// part 1 -function matchingChar(stringA, stringB) { - const chars = stringA.split(''); - let match = ''; - - chars.forEach((char) => { - if (stringB.indexOf(char) !== -1) match = char; - }); - - return allChars.indexOf(match) + 1; -} - -// part 2 -function compareBackpacks(backpackA, backpackB, backpackC) { - const chars = backpackA.split(''); - let match = ''; - chars.forEach((char) => { - if (backpackB.indexOf(char) !== -1 && backpackC.indexOf(char) !== -1) match = char; - }); - return allChars.indexOf(match) + 1; -} \ No newline at end of file diff --git a/day3/sample.txt b/day3/sample.txt deleted file mode 100644 index 9919ffa..0000000 --- a/day3/sample.txt +++ /dev/null @@ -1,6 +0,0 @@ -vJrwpWtwJgWrhcsFMMfFFhFp -jqHRNqRjqzjGDLGLrsFMfFZSrLrFZsSL -PmmdzqPrVvPwwTWBwg -wMqvLMZHhHMvwLHjbvcjnnSBnvTQFn -ttgJtRGJQctTZtZT -CrZsJsPPZsGzwwsLwLmpwMDw \ No newline at end of file diff --git a/day4/input.txt b/day4/input.txt deleted file mode 100644 index fe99544..0000000 --- a/day4/input.txt +++ /dev/null @@ -1,1000 +0,0 @@ -22-77,14-96 -7-99,65-98 -22-36,37-62 -25-94,24-67 -6-91,1-6 -88-88,2-88 -27-89,58-96 -21-82,9-94 -38-79,27-80 -4-90,30-55 -84-97,52-93 -12-59,11-12 -4-14,5-12 -50-84,49-89 -3-98,1-3 -91-95,8-22 -15-66,17-67 -27-27,27-90 -36-37,37-96 -31-32,32-80 -1-79,2-78 -36-85,20-36 -2-2,2-98 -33-81,80-99 -4-73,45-72 -3-89,1-4 -6-92,21-91 -7-93,2-92 -47-89,47-50 -64-84,63-65 -22-85,21-91 -16-31,11-14 -4-93,3-93 -15-61,61-62 -21-23,22-88 -59-59,11-58 -23-23,22-89 -19-87,78-86 -13-82,19-83 -22-88,76-92 -46-47,46-46 -30-31,13-31 -6-93,3-98 -54-54,13-53 -51-77,51-77 -84-84,38-84 -84-98,95-98 -34-41,29-64 -50-95,49-94 -24-88,12-22 -40-41,27-41 -28-28,28-92 -65-66,66-73 -6-99,4-7 -15-38,14-39 -16-81,15-82 -14-98,7-14 -89-89,55-89 -82-86,26-82 -9-88,10-83 -5-54,6-74 -81-95,14-96 -20-81,87-87 -8-73,48-73 -44-52,53-57 -95-95,27-96 -30-94,29-95 -22-93,23-94 -18-93,7-18 -12-88,89-90 -72-78,34-78 -53-93,54-86 -12-87,70-87 -9-84,70-83 -16-89,50-90 -35-67,36-66 -46-56,45-57 -96-99,26-90 -34-90,35-75 -20-77,21-77 -33-56,2-83 -20-75,19-73 -43-52,18-43 -15-54,21-54 -14-63,23-38 -22-48,21-48 -8-20,6-7 -64-72,6-86 -29-92,6-91 -50-88,87-88 -5-72,6-6 -81-81,31-81 -46-52,46-97 -11-36,12-35 -8-80,79-97 -13-94,94-94 -3-98,43-68 -29-61,32-62 -8-60,14-61 -21-93,11-23 -77-77,36-77 -87-98,80-87 -89-92,8-95 -20-70,21-48 -8-90,13-89 -73-82,82-82 -2-3,2-79 -56-93,55-92 -49-84,50-50 -16-69,13-14 -10-68,7-9 -14-97,23-26 -35-76,80-86 -35-86,85-99 -89-89,26-90 -31-94,32-32 -15-57,14-58 -16-30,17-49 -4-68,5-99 -5-98,6-95 -45-64,1-63 -51-75,52-74 -27-58,26-57 -7-87,4-86 -44-51,44-52 -2-2,7-82 -11-80,10-12 -10-22,29-73 -1-41,10-84 -13-42,12-59 -57-57,55-56 -96-99,42-97 -6-95,4-29 -11-91,9-10 -41-44,38-45 -17-98,17-97 -23-55,22-54 -18-84,85-92 -11-83,11-84 -19-61,18-31 -44-54,43-54 -52-87,87-96 -40-98,40-97 -1-79,2-79 -11-33,12-34 -16-79,18-80 -47-50,48-49 -10-90,89-91 -16-98,12-17 -1-19,4-18 -4-72,19-72 -2-69,4-27 -7-9,8-94 -13-77,14-76 -19-89,88-89 -85-92,84-92 -92-93,38-91 -7-65,8-64 -27-71,38-73 -36-92,43-65 -2-5,5-87 -43-95,71-79 -5-61,5-61 -8-78,9-99 -34-34,34-94 -3-60,61-61 -98-98,15-89 -2-56,52-56 -33-90,65-89 -7-72,22-55 -41-70,70-70 -15-73,14-72 -76-76,75-91 -3-82,52-83 -12-51,5-84 -94-96,19-61 -60-62,10-61 -19-95,94-95 -24-57,8-25 -1-3,3-97 -29-46,2-46 -3-73,2-72 -11-79,10-11 -12-35,11-13 -35-59,16-59 -27-88,26-27 -91-91,90-91 -30-48,30-57 -24-34,23-40 -59-98,1-99 -37-42,34-42 -17-99,16-18 -2-36,25-35 -36-36,36-65 -22-77,21-77 -35-45,35-45 -32-99,31-32 -40-54,13-40 -44-44,27-44 -41-93,41-42 -14-44,15-45 -7-63,8-64 -10-10,10-63 -23-92,24-24 -6-95,1-94 -22-23,22-92 -18-31,17-48 -45-58,45-45 -15-86,1-15 -8-71,9-70 -18-68,17-67 -1-85,49-84 -19-47,29-48 -1-74,3-75 -90-92,26-91 -95-99,26-94 -22-95,24-47 -6-79,6-6 -24-97,24-97 -12-15,16-37 -58-78,46-78 -24-43,17-43 -37-67,36-68 -2-97,1-3 -28-29,29-41 -8-9,9-36 -22-62,21-96 -9-24,10-34 -2-2,5-88 -7-16,2-9 -56-95,56-97 -54-79,78-79 -25-48,31-47 -36-82,82-83 -29-77,26-28 -81-81,1-82 -80-89,62-79 -5-98,11-97 -60-80,61-70 -43-52,43-52 -1-96,2-95 -64-91,34-92 -5-85,6-84 -97-98,56-96 -14-93,14-96 -47-86,46-85 -49-49,48-66 -5-96,7-95 -78-79,5-79 -27-54,26-27 -15-15,15-97 -77-92,76-98 -22-39,21-22 -5-31,3-31 -18-98,6-18 -3-4,4-94 -3-95,2-96 -11-56,5-10 -20-82,19-81 -33-51,52-79 -8-53,8-53 -4-82,4-4 -2-97,2-97 -21-29,32-53 -83-98,78-97 -10-88,88-97 -40-50,37-51 -4-4,4-51 -89-90,39-90 -12-12,12-81 -24-55,25-25 -74-74,68-75 -5-89,5-93 -44-86,43-45 -37-47,37-47 -22-99,23-99 -37-59,40-58 -35-99,35-99 -4-85,5-91 -14-87,36-97 -5-64,4-6 -6-94,93-94 -17-83,18-82 -29-99,28-30 -11-99,62-98 -12-64,13-84 -12-97,12-99 -22-42,22-41 -13-91,10-96 -21-49,4-21 -99-99,23-91 -5-42,43-43 -80-82,18-80 -48-97,48-99 -19-49,4-18 -82-99,6-83 -4-96,2-99 -34-40,34-40 -33-51,32-52 -22-62,23-81 -8-70,8-62 -88-97,9-89 -2-4,3-99 -63-95,20-64 -5-96,1-4 -39-79,39-56 -75-88,71-79 -5-96,5-98 -38-39,45-84 -17-96,18-26 -6-7,5-7 -5-39,5-92 -8-26,12-25 -45-51,35-52 -25-75,25-26 -10-98,2-9 -10-64,9-10 -84-86,33-83 -6-50,49-51 -17-72,16-17 -40-61,39-66 -45-50,44-50 -31-41,31-41 -69-83,70-70 -11-86,12-85 -89-92,54-67 -51-79,52-72 -5-10,3-11 -76-76,41-77 -13-53,13-88 -81-91,81-91 -9-68,3-67 -48-59,15-63 -37-97,96-96 -1-78,3-78 -12-43,26-56 -2-67,21-66 -47-58,47-89 -7-69,7-69 -66-93,67-67 -18-41,19-85 -1-50,50-50 -7-18,17-99 -61-92,61-92 -21-40,38-38 -26-99,27-98 -14-94,11-13 -16-18,17-31 -20-32,84-94 -10-97,10-99 -2-89,1-88 -27-94,28-86 -59-96,14-87 -17-91,12-49 -30-86,29-85 -76-77,1-76 -10-94,9-9 -15-37,29-38 -42-63,9-36 -35-52,36-36 -31-32,32-62 -5-11,11-23 -3-8,9-40 -8-99,9-88 -28-60,22-61 -3-42,3-42 -1-5,4-56 -45-90,11-95 -52-52,51-94 -45-51,24-50 -63-92,62-92 -78-94,3-30 -50-51,52-63 -54-58,57-59 -77-77,65-77 -4-90,3-91 -11-48,10-47 -73-90,75-90 -50-58,18-62 -7-98,8-97 -9-76,9-9 -7-47,4-48 -4-95,94-94 -23-58,24-57 -11-18,18-45 -78-99,38-62 -29-70,17-50 -8-80,39-81 -2-99,1-99 -52-67,52-53 -60-94,47-61 -99-99,39-97 -32-92,20-32 -48-81,80-91 -44-51,18-37 -4-57,3-57 -2-84,2-84 -19-20,19-19 -7-80,7-80 -38-38,35-37 -15-99,10-31 -21-55,20-73 -5-6,6-84 -48-79,10-80 -67-96,1-68 -56-95,56-84 -40-96,80-92 -3-3,7-99 -19-85,18-20 -4-8,9-80 -7-53,36-53 -20-30,2-31 -4-72,1-86 -38-85,37-84 -65-69,66-69 -3-6,1-10 -11-35,24-44 -5-70,4-4 -51-79,42-47 -30-31,30-68 -22-97,67-95 -23-45,22-54 -30-76,30-76 -7-94,95-95 -14-66,66-66 -65-76,64-65 -67-89,24-90 -6-57,38-56 -6-71,36-70 -7-73,7-76 -1-2,2-2 -98-98,44-96 -35-35,34-37 -4-99,1-3 -4-17,16-56 -17-74,16-75 -7-97,77-98 -80-94,15-80 -11-62,9-12 -59-71,28-71 -23-95,23-95 -3-70,70-91 -31-97,96-99 -33-79,34-79 -4-19,5-5 -27-63,26-63 -5-25,25-95 -44-74,33-43 -27-43,3-27 -2-96,92-95 -2-89,2-99 -16-16,16-88 -2-95,1-94 -79-82,78-83 -30-96,95-95 -14-88,14-89 -5-16,6-6 -35-72,32-36 -22-99,21-23 -7-93,8-94 -19-98,20-99 -29-30,11-31 -1-99,2-78 -76-86,32-75 -9-95,8-96 -15-40,32-33 -27-76,26-76 -21-79,17-19 -40-64,6-95 -55-91,55-90 -4-77,5-25 -13-92,12-91 -67-72,64-90 -2-64,9-65 -20-70,44-71 -8-72,8-71 -89-96,35-99 -36-36,36-83 -1-39,40-75 -38-56,10-38 -65-80,87-93 -67-69,66-70 -54-85,6-84 -27-89,93-93 -1-99,3-98 -11-87,11-95 -27-88,47-87 -13-80,12-71 -2-79,80-99 -7-74,8-73 -19-19,18-94 -33-91,92-93 -72-81,41-73 -4-66,11-98 -7-88,8-67 -54-73,60-95 -21-63,48-62 -46-97,97-99 -22-28,21-23 -57-58,9-58 -12-97,11-96 -3-98,5-80 -7-21,7-95 -28-51,27-50 -55-99,98-99 -26-48,27-48 -74-97,11-90 -8-92,14-92 -12-52,53-98 -2-96,3-97 -39-39,38-87 -34-35,35-45 -14-84,83-84 -7-93,7-93 -51-56,41-55 -16-54,4-17 -91-95,28-90 -29-93,28-96 -83-83,1-83 -7-97,6-98 -63-70,66-70 -4-21,4-21 -2-7,9-95 -28-97,28-98 -2-72,3-3 -42-42,43-53 -30-81,26-30 -46-52,50-52 -16-27,37-67 -2-92,4-89 -41-85,42-84 -1-93,40-94 -40-97,39-40 -35-69,34-36 -13-95,96-96 -15-94,16-16 -6-11,10-11 -96-96,1-97 -33-98,16-99 -26-79,27-77 -18-67,18-68 -6-86,1-93 -5-92,6-80 -6-93,94-94 -8-73,7-9 -29-43,64-70 -2-98,2-98 -47-50,74-79 -44-44,28-44 -7-19,19-60 -14-98,13-66 -26-77,27-71 -18-70,20-70 -13-99,84-84 -20-86,39-82 -11-25,10-26 -28-28,29-45 -9-9,8-55 -17-94,18-18 -38-71,90-93 -2-50,4-78 -25-43,44-93 -1-17,17-97 -17-64,18-63 -9-89,13-90 -83-97,37-99 -4-4,3-91 -47-69,70-89 -76-96,81-97 -12-13,13-99 -11-85,12-84 -22-95,22-79 -34-96,35-95 -4-17,2-4 -18-74,18-19 -4-87,3-91 -5-79,6-85 -26-99,27-99 -32-50,30-51 -40-70,41-67 -9-78,9-78 -4-98,2-2 -1-3,2-98 -50-50,1-50 -2-75,3-74 -47-71,44-46 -54-82,54-82 -49-93,50-85 -20-86,95-99 -38-86,38-86 -44-59,45-57 -6-6,5-97 -18-97,17-99 -9-31,4-6 -10-90,11-81 -15-16,16-95 -46-97,47-84 -35-47,34-95 -75-94,95-98 -55-90,90-94 -60-90,82-89 -13-51,6-12 -37-87,36-37 -35-89,35-36 -36-69,4-68 -19-24,1-25 -2-96,3-49 -24-88,23-25 -16-39,40-64 -40-68,16-40 -13-91,8-40 -70-91,69-91 -52-86,37-84 -91-99,48-68 -24-35,34-64 -54-73,34-53 -11-76,10-77 -16-90,91-98 -17-18,17-79 -54-66,37-55 -52-77,16-78 -84-97,82-84 -32-48,33-49 -37-58,58-84 -31-63,18-31 -55-67,28-67 -5-99,5-6 -5-48,6-49 -71-93,15-70 -39-75,68-74 -7-8,8-35 -59-59,39-59 -3-13,14-95 -59-66,59-59 -99-99,48-65 -3-95,1-2 -58-88,12-57 -12-12,13-96 -55-68,57-67 -28-37,37-72 -11-94,12-92 -12-91,26-82 -17-65,65-65 -37-91,90-97 -2-43,3-78 -2-14,15-55 -38-40,45-85 -15-76,68-76 -20-23,2-24 -3-97,98-99 -72-72,62-72 -27-51,13-26 -5-53,7-54 -86-86,6-87 -13-67,12-94 -1-87,2-2 -27-66,26-27 -3-86,81-87 -18-99,42-91 -16-84,82-85 -55-95,85-95 -4-96,4-98 -62-89,59-76 -6-78,7-7 -53-53,53-90 -44-72,72-88 -26-98,98-99 -58-60,59-87 -36-53,53-83 -49-74,49-74 -84-85,71-83 -1-98,13-95 -27-70,26-76 -14-83,14-83 -43-65,64-65 -14-78,7-78 -93-93,43-63 -11-40,10-41 -31-96,31-31 -2-63,64-77 -33-33,32-51 -3-17,4-72 -95-95,95-97 -15-98,15-88 -47-84,46-48 -5-5,4-87 -1-77,40-78 -2-86,37-85 -18-90,17-90 -16-95,15-17 -47-95,46-94 -20-40,15-39 -56-90,55-90 -41-90,41-90 -14-39,13-46 -98-99,61-99 -29-31,30-86 -22-33,28-34 -10-98,2-10 -6-18,14-19 -97-97,97-97 -14-62,7-50 -12-21,15-17 -73-73,74-90 -6-13,5-14 -79-86,79-87 -2-87,3-87 -51-86,51-85 -35-94,11-93 -43-78,78-78 -76-97,31-76 -12-54,13-13 -8-95,48-96 -74-85,85-95 -11-13,21-40 -9-82,2-94 -40-48,39-95 -5-16,12-29 -7-22,21-42 -10-22,21-99 -59-73,44-74 -38-60,39-59 -16-92,29-93 -38-48,4-39 -8-59,7-59 -2-97,4-96 -77-92,77-91 -39-53,40-69 -3-92,5-92 -97-99,61-97 -19-46,45-59 -16-58,14-16 -14-15,13-17 -14-92,15-15 -13-42,12-42 -70-93,71-93 -6-53,3-7 -10-11,10-11 -10-99,22-99 -7-23,15-86 -11-95,94-97 -21-45,44-45 -19-21,22-30 -8-91,9-83 -7-91,9-47 -2-93,3-94 -48-61,46-79 -8-25,26-93 -88-92,11-89 -2-30,3-29 -30-30,29-90 -50-66,25-67 -37-47,37-48 -26-34,14-17 -17-49,16-72 -35-57,3-35 -10-10,9-27 -21-22,21-99 -58-89,48-57 -34-38,35-39 -86-89,52-97 -51-69,34-50 -21-59,3-96 -19-88,88-88 -16-96,16-66 -18-49,11-17 -1-1,3-70 -8-39,39-75 -45-46,45-98 -39-91,67-91 -2-2,1-85 -14-68,43-69 -37-79,46-80 -29-43,40-40 -3-4,40-65 -14-89,15-89 -27-79,17-26 -1-2,1-98 -54-92,91-93 -22-53,54-84 -55-95,94-97 -9-36,8-35 -3-37,3-37 -49-76,49-65 -10-95,95-95 -8-98,37-99 -2-83,1-3 -38-91,39-92 -9-95,8-94 -2-43,2-43 -15-89,77-90 -41-47,37-46 -9-94,1-10 -5-99,65-98 -42-83,42-42 -54-73,38-98 -57-57,56-76 -14-44,45-73 -26-27,27-72 -20-85,19-23 -5-99,6-98 -9-60,7-8 -99-99,27-99 -3-3,25-55 -62-64,16-65 -84-84,41-84 -23-78,4-93 -35-99,34-35 -44-46,45-90 -89-89,5-88 -63-85,64-84 -66-76,45-68 -60-90,61-89 -94-94,94-95 -87-94,80-86 -23-70,71-90 -93-93,5-93 -33-80,34-79 -15-60,16-16 -57-97,53-57 -67-84,83-93 -9-90,18-59 -28-82,21-81 -32-64,31-64 -59-81,18-59 -23-85,7-84 -50-68,12-68 -75-80,76-79 -64-92,64-66 -61-71,62-70 -29-96,20-31 -57-75,71-75 -48-50,49-78 -12-82,76-82 -2-35,4-35 -18-60,13-60 -52-81,20-27 -13-19,13-20 -33-61,48-61 -65-89,24-88 -32-46,32-69 -12-12,2-11 -18-97,16-18 -11-11,10-89 -3-72,3-3 -24-92,23-23 -13-15,16-51 -37-69,24-70 -3-99,10-99 -3-73,1-3 -8-30,3-29 -28-81,28-81 -90-94,1-90 -1-14,1-1 -2-98,1-99 -62-88,55-63 -19-33,34-34 -15-94,14-97 -22-34,15-34 -41-59,42-60 -4-89,18-90 -32-84,84-84 -32-95,31-72 -7-88,8-56 -20-21,20-96 -31-80,31-81 -6-61,30-43 -6-71,72-86 -20-71,28-96 -8-72,57-86 -1-3,3-19 -38-39,39-90 -58-58,58-90 -55-55,14-55 -96-96,3-89 -9-83,8-93 -3-85,3-84 -4-4,3-81 -66-82,81-82 -11-11,12-87 -2-3,7-94 -5-76,2-96 -13-82,46-81 -7-51,4-50 -18-73,73-73 -14-88,14-88 -50-83,50-94 -21-58,59-95 -47-99,48-93 -11-53,1-9 -6-75,3-75 -2-4,3-66 -2-55,1-3 -48-58,44-58 -78-78,77-78 -31-42,39-43 -43-60,44-60 -1-92,93-96 -43-44,44-64 -3-77,3-3 -9-98,10-99 -15-16,15-56 -5-24,11-25 -58-92,99-99 -10-10,11-86 -7-54,6-53 -56-74,17-55 -57-87,48-89 -33-64,2-89 -45-70,14-71 -24-69,23-70 -62-93,15-90 -69-83,70-83 -8-15,12-14 -34-63,62-93 -3-6,7-81 -75-92,75-92 -24-28,13-31 -16-54,31-50 -53-54,53-91 -34-99,35-97 -7-64,2-7 -11-67,67-89 -70-72,71-79 -57-88,88-89 -59-60,59-88 -5-90,99-99 -4-67,38-41 -8-83,14-82 -20-22,21-45 -1-66,16-67 -59-70,34-60 -3-85,14-84 -49-93,48-94 -97-97,2-96 -38-71,37-72 -4-90,3-91 -6-90,7-99 -57-97,57-87 -37-75,38-81 -13-86,12-13 -60-76,61-84 -6-89,7-98 -6-99,5-96 -4-75,75-99 -3-91,22-62 -11-71,28-37 -26-35,13-26 -12-25,24-24 -16-35,36-47 -16-39,40-77 -1-65,58-63 -37-89,43-88 -74-74,74-84 -80-86,40-80 -4-28,25-94 -35-93,35-81 -6-97,2-99 -10-68,11-33 -4-76,34-78 -18-84,21-46 -79-82,82-82 -1-3,4-97 -7-98,8-97 -36-97,35-35 -24-61,23-24 -3-93,8-92 -67-67,65-66 -30-77,1-65 -39-64,3-63 -18-52,13-52 -24-70,69-76 -1-56,14-45 -3-60,4-4 -1-8,1-9 -14-20,19-79 -34-82,35-83 -67-88,41-89 -8-29,56-84 -32-40,33-40 -4-93,3-93 -5-5,4-78 -58-79,16-59 -24-31,15-61 -49-50,40-50 -46-46,47-95 -34-34,35-95 -19-21,18-20 -4-8,7-98 -9-10,9-97 -14-83,5-14 -20-21,20-55 -14-97,13-31 -25-39,24-89 -17-73,14-74 -14-36,13-36 -58-64,59-65 -20-92,21-55 -20-85,19-20 -19-47,18-99 \ No newline at end of file diff --git a/day4/program.js b/day4/program.js deleted file mode 100644 index 919bfb5..0000000 --- a/day4/program.js +++ /dev/null @@ -1,54 +0,0 @@ -export default function Day(data) { - const pairs = data.map((d) => d.split(",")); - let containedPairs = 0; - pairs.forEach((pair) => { - if (containsPair(pair[0], pair[1])){ - containedPairs++; - } - }); - - console.log(`Part 1: ${containedPairs}`); - - let overlappers = 0; - pairs.forEach((pair) => { - if (checkIfOverlap(convertRangeToString(pair[0]), convertRangeToNumbers(pair[1]))) { - overlappers++; - } - }); - console.log(`Part 2: ${overlappers}`); -} - -function checkIfOverlap(stringA, rangeB) { - let hasMatch = false; - // breakable loop - for (let i = 0; i < rangeB.length; i++) { - if (stringA.indexOf(`.${rangeB[i]}.`) > -1) { - return true; - } - } - return false; -} - -function containsPair(first, second) { - const stringA = convertRangeToString(first); - const stringB = convertRangeToString(second); - if (stringA.indexOf(stringB) !== -1 || stringB.indexOf(stringA) !== -1) { - return true; - } - return false; -} - -function convertRangeToNumbers(range) { - const [min, max] = range.split("-"); - const numbers = []; - for (let i = parseInt(min); i <= parseInt(max); i++) { - numbers.push(i); - } - return numbers; -} - -function convertRangeToString(range){ - const numbers = convertRangeToNumbers(range); - return `.${numbers.join('.')}.`; - -} diff --git a/day4/sample.txt b/day4/sample.txt deleted file mode 100644 index 99a66c5..0000000 --- a/day4/sample.txt +++ /dev/null @@ -1,6 +0,0 @@ -2-4,6-8 -2-3,4-5 -5-7,7-9 -2-8,3-7 -6-6,4-6 -2-6,4-8 \ No newline at end of file diff --git a/day5/input.txt b/day5/input.txt deleted file mode 100644 index 77689d0..0000000 --- a/day5/input.txt +++ /dev/null @@ -1,511 +0,0 @@ - [P] [Q] [T] -[F] [N] [P] [L] [M] -[H] [T] [H] [M] [H] [Z] -[M] [C] [P] [Q] [R] [C] [J] -[T] [J] [M] [F] [L] [G] [R] [Q] -[V] [G] [D] [V] [G] [D] [N] [W] [L] -[L] [Q] [S] [B] [H] [B] [M] [L] [D] -[D] [H] [R] [L] [N] [W] [G] [C] [R] - 1 2 3 4 5 6 7 8 9 - -move 1 from 7 to 6 -move 1 from 8 to 5 -move 3 from 7 to 4 -move 5 from 9 to 6 -move 3 from 7 to 9 -move 2 from 5 to 7 -move 10 from 6 to 8 -move 2 from 2 to 3 -move 2 from 9 to 1 -move 6 from 8 to 2 -move 5 from 3 to 8 -move 4 from 5 to 9 -move 3 from 4 to 5 -move 2 from 1 to 8 -move 3 from 1 to 7 -move 1 from 7 to 1 -move 4 from 7 to 8 -move 1 from 5 to 6 -move 1 from 9 to 3 -move 8 from 2 to 4 -move 1 from 5 to 8 -move 1 from 5 to 3 -move 2 from 1 to 8 -move 4 from 3 to 4 -move 1 from 3 to 4 -move 1 from 1 to 7 -move 1 from 7 to 8 -move 1 from 7 to 4 -move 5 from 9 to 1 -move 2 from 6 to 7 -move 3 from 2 to 1 -move 12 from 8 to 7 -move 8 from 7 to 3 -move 1 from 2 to 8 -move 6 from 7 to 1 -move 1 from 6 to 3 -move 8 from 4 to 3 -move 5 from 3 to 6 -move 6 from 1 to 8 -move 2 from 1 to 2 -move 2 from 3 to 1 -move 4 from 4 to 5 -move 1 from 5 to 7 -move 1 from 6 to 9 -move 1 from 4 to 9 -move 8 from 1 to 4 -move 10 from 3 to 5 -move 2 from 4 to 5 -move 2 from 2 to 6 -move 2 from 1 to 6 -move 11 from 4 to 7 -move 9 from 6 to 5 -move 16 from 8 to 3 -move 15 from 5 to 6 -move 10 from 3 to 6 -move 24 from 6 to 5 -move 5 from 7 to 5 -move 1 from 6 to 3 -move 1 from 7 to 2 -move 2 from 7 to 6 -move 3 from 3 to 6 -move 8 from 5 to 1 -move 3 from 9 to 8 -move 3 from 8 to 4 -move 1 from 7 to 1 -move 1 from 2 to 9 -move 1 from 9 to 2 -move 2 from 3 to 1 -move 2 from 4 to 2 -move 5 from 6 to 8 -move 3 from 7 to 1 -move 1 from 4 to 2 -move 26 from 5 to 9 -move 1 from 3 to 6 -move 7 from 1 to 9 -move 1 from 3 to 5 -move 1 from 6 to 5 -move 1 from 5 to 4 -move 5 from 5 to 6 -move 1 from 4 to 9 -move 3 from 9 to 3 -move 4 from 8 to 5 -move 2 from 5 to 2 -move 1 from 1 to 6 -move 1 from 8 to 9 -move 2 from 2 to 4 -move 2 from 3 to 7 -move 1 from 7 to 6 -move 7 from 6 to 7 -move 1 from 4 to 3 -move 2 from 2 to 4 -move 28 from 9 to 3 -move 26 from 3 to 7 -move 2 from 4 to 3 -move 2 from 9 to 1 -move 4 from 3 to 6 -move 1 from 4 to 5 -move 1 from 3 to 4 -move 3 from 1 to 9 -move 1 from 4 to 7 -move 1 from 5 to 7 -move 1 from 6 to 9 -move 23 from 7 to 1 -move 4 from 9 to 5 -move 3 from 9 to 4 -move 2 from 6 to 3 -move 1 from 6 to 7 -move 3 from 3 to 9 -move 11 from 7 to 2 -move 4 from 2 to 3 -move 23 from 1 to 2 -move 15 from 2 to 4 -move 2 from 7 to 9 -move 13 from 2 to 8 -move 1 from 7 to 5 -move 1 from 2 to 8 -move 7 from 4 to 8 -move 6 from 4 to 3 -move 1 from 2 to 4 -move 1 from 2 to 9 -move 20 from 8 to 5 -move 1 from 8 to 4 -move 3 from 4 to 7 -move 3 from 3 to 9 -move 1 from 2 to 8 -move 20 from 5 to 3 -move 6 from 5 to 3 -move 26 from 3 to 9 -move 2 from 7 to 5 -move 1 from 5 to 4 -move 1 from 7 to 8 -move 2 from 8 to 5 -move 12 from 9 to 4 -move 2 from 3 to 2 -move 4 from 1 to 9 -move 2 from 3 to 1 -move 4 from 5 to 6 -move 5 from 9 to 4 -move 2 from 6 to 3 -move 2 from 6 to 8 -move 2 from 8 to 3 -move 1 from 2 to 7 -move 21 from 4 to 2 -move 1 from 4 to 5 -move 13 from 2 to 4 -move 4 from 3 to 9 -move 25 from 9 to 7 -move 7 from 2 to 4 -move 18 from 7 to 8 -move 2 from 1 to 5 -move 1 from 3 to 9 -move 2 from 9 to 3 -move 1 from 1 to 6 -move 8 from 7 to 6 -move 4 from 3 to 2 -move 1 from 4 to 7 -move 6 from 2 to 5 -move 1 from 7 to 3 -move 5 from 6 to 8 -move 4 from 4 to 1 -move 9 from 5 to 1 -move 12 from 4 to 3 -move 1 from 6 to 5 -move 1 from 5 to 2 -move 13 from 3 to 8 -move 14 from 8 to 6 -move 2 from 1 to 6 -move 1 from 2 to 5 -move 11 from 1 to 3 -move 1 from 5 to 3 -move 6 from 6 to 8 -move 23 from 8 to 5 -move 1 from 8 to 1 -move 18 from 5 to 8 -move 5 from 6 to 8 -move 10 from 3 to 8 -move 1 from 1 to 5 -move 2 from 4 to 8 -move 1 from 4 to 7 -move 5 from 5 to 3 -move 1 from 6 to 1 -move 6 from 3 to 9 -move 35 from 8 to 4 -move 1 from 7 to 6 -move 2 from 9 to 8 -move 1 from 1 to 6 -move 17 from 4 to 7 -move 1 from 5 to 1 -move 4 from 9 to 6 -move 12 from 6 to 4 -move 29 from 4 to 2 -move 17 from 7 to 8 -move 27 from 2 to 7 -move 2 from 2 to 1 -move 1 from 3 to 1 -move 25 from 7 to 4 -move 25 from 4 to 6 -move 1 from 4 to 2 -move 4 from 1 to 6 -move 1 from 2 to 6 -move 25 from 6 to 1 -move 5 from 6 to 8 -move 15 from 1 to 6 -move 2 from 7 to 8 -move 15 from 6 to 2 -move 14 from 2 to 8 -move 1 from 2 to 3 -move 4 from 1 to 4 -move 4 from 4 to 2 -move 6 from 1 to 8 -move 3 from 2 to 5 -move 3 from 5 to 7 -move 1 from 2 to 3 -move 1 from 6 to 8 -move 8 from 8 to 5 -move 2 from 7 to 4 -move 1 from 7 to 9 -move 3 from 5 to 8 -move 2 from 4 to 6 -move 3 from 5 to 8 -move 2 from 3 to 4 -move 2 from 6 to 5 -move 1 from 9 to 8 -move 48 from 8 to 5 -move 1 from 8 to 9 -move 41 from 5 to 4 -move 4 from 5 to 2 -move 3 from 2 to 7 -move 1 from 2 to 7 -move 1 from 8 to 1 -move 1 from 9 to 4 -move 1 from 1 to 3 -move 7 from 4 to 7 -move 11 from 7 to 4 -move 4 from 4 to 1 -move 37 from 4 to 9 -move 4 from 4 to 3 -move 32 from 9 to 3 -move 5 from 9 to 1 -move 12 from 3 to 2 -move 3 from 4 to 1 -move 3 from 1 to 6 -move 3 from 1 to 6 -move 2 from 1 to 5 -move 9 from 2 to 7 -move 3 from 7 to 3 -move 6 from 6 to 5 -move 4 from 3 to 6 -move 3 from 6 to 9 -move 13 from 3 to 8 -move 3 from 1 to 9 -move 2 from 3 to 2 -move 2 from 7 to 8 -move 1 from 6 to 8 -move 4 from 2 to 8 -move 2 from 8 to 3 -move 1 from 2 to 1 -move 4 from 7 to 3 -move 6 from 3 to 5 -move 3 from 9 to 8 -move 13 from 8 to 6 -move 1 from 9 to 2 -move 2 from 3 to 8 -move 1 from 1 to 9 -move 1 from 1 to 3 -move 10 from 6 to 3 -move 1 from 2 to 5 -move 22 from 5 to 7 -move 1 from 9 to 3 -move 1 from 8 to 7 -move 2 from 7 to 8 -move 6 from 8 to 4 -move 2 from 9 to 2 -move 21 from 7 to 6 -move 4 from 8 to 5 -move 1 from 8 to 4 -move 1 from 5 to 7 -move 12 from 3 to 6 -move 1 from 2 to 6 -move 1 from 7 to 9 -move 1 from 2 to 6 -move 6 from 3 to 5 -move 6 from 4 to 2 -move 1 from 3 to 6 -move 1 from 9 to 7 -move 6 from 2 to 7 -move 22 from 6 to 4 -move 3 from 6 to 5 -move 7 from 5 to 7 -move 3 from 7 to 8 -move 2 from 5 to 3 -move 2 from 3 to 7 -move 13 from 6 to 8 -move 3 from 7 to 1 -move 3 from 5 to 9 -move 16 from 4 to 5 -move 1 from 5 to 8 -move 2 from 1 to 6 -move 1 from 1 to 7 -move 6 from 4 to 2 -move 4 from 8 to 7 -move 13 from 5 to 7 -move 1 from 6 to 3 -move 2 from 5 to 6 -move 10 from 7 to 6 -move 1 from 3 to 9 -move 1 from 4 to 3 -move 1 from 3 to 5 -move 12 from 7 to 3 -move 2 from 2 to 1 -move 1 from 5 to 9 -move 2 from 9 to 6 -move 4 from 2 to 7 -move 7 from 7 to 9 -move 1 from 7 to 8 -move 1 from 1 to 9 -move 11 from 9 to 7 -move 4 from 8 to 3 -move 5 from 3 to 5 -move 2 from 8 to 4 -move 3 from 5 to 2 -move 2 from 2 to 8 -move 1 from 5 to 2 -move 5 from 8 to 2 -move 7 from 7 to 2 -move 4 from 8 to 9 -move 2 from 7 to 6 -move 4 from 9 to 7 -move 6 from 2 to 4 -move 1 from 5 to 6 -move 5 from 3 to 5 -move 1 from 8 to 1 -move 10 from 6 to 3 -move 8 from 2 to 8 -move 1 from 8 to 1 -move 5 from 3 to 2 -move 2 from 8 to 7 -move 6 from 7 to 4 -move 12 from 4 to 1 -move 4 from 1 to 2 -move 1 from 2 to 1 -move 8 from 2 to 9 -move 2 from 4 to 8 -move 5 from 9 to 7 -move 8 from 3 to 8 -move 2 from 3 to 1 -move 6 from 8 to 2 -move 7 from 7 to 2 -move 1 from 3 to 5 -move 2 from 7 to 2 -move 1 from 9 to 1 -move 1 from 9 to 7 -move 1 from 9 to 4 -move 1 from 6 to 7 -move 1 from 2 to 3 -move 1 from 3 to 8 -move 1 from 4 to 9 -move 5 from 6 to 1 -move 7 from 8 to 2 -move 1 from 7 to 4 -move 9 from 2 to 8 -move 7 from 2 to 7 -move 1 from 4 to 2 -move 8 from 7 to 5 -move 4 from 8 to 7 -move 8 from 8 to 6 -move 9 from 1 to 4 -move 1 from 9 to 1 -move 4 from 7 to 6 -move 7 from 1 to 7 -move 6 from 7 to 3 -move 4 from 1 to 8 -move 13 from 6 to 3 -move 6 from 2 to 3 -move 1 from 3 to 4 -move 2 from 3 to 7 -move 1 from 6 to 9 -move 11 from 5 to 1 -move 1 from 6 to 3 -move 8 from 4 to 1 -move 2 from 5 to 2 -move 1 from 9 to 5 -move 2 from 8 to 7 -move 7 from 1 to 5 -move 2 from 7 to 3 -move 8 from 5 to 4 -move 1 from 8 to 2 -move 1 from 5 to 7 -move 3 from 7 to 2 -move 4 from 4 to 7 -move 4 from 3 to 4 -move 20 from 3 to 2 -move 1 from 8 to 3 -move 1 from 3 to 8 -move 4 from 7 to 2 -move 1 from 8 to 6 -move 1 from 7 to 5 -move 1 from 3 to 1 -move 1 from 4 to 2 -move 5 from 1 to 4 -move 14 from 4 to 1 -move 1 from 6 to 5 -move 1 from 2 to 3 -move 1 from 5 to 1 -move 11 from 2 to 9 -move 18 from 1 to 2 -move 4 from 1 to 3 -move 12 from 2 to 5 -move 5 from 2 to 4 -move 7 from 5 to 1 -move 1 from 2 to 9 -move 9 from 1 to 9 -move 1 from 3 to 6 -move 2 from 3 to 9 -move 1 from 6 to 1 -move 1 from 4 to 8 -move 1 from 3 to 4 -move 1 from 3 to 8 -move 16 from 9 to 5 -move 2 from 2 to 7 -move 14 from 5 to 8 -move 16 from 8 to 5 -move 1 from 7 to 9 -move 1 from 7 to 6 -move 4 from 9 to 5 -move 11 from 5 to 6 -move 12 from 2 to 4 -move 16 from 5 to 7 -move 4 from 7 to 2 -move 1 from 5 to 6 -move 3 from 9 to 1 -move 4 from 7 to 9 -move 3 from 6 to 4 -move 9 from 2 to 9 -move 3 from 1 to 8 -move 2 from 8 to 1 -move 1 from 8 to 2 -move 5 from 6 to 1 -move 7 from 7 to 1 -move 1 from 7 to 6 -move 8 from 4 to 5 -move 1 from 2 to 6 -move 12 from 9 to 2 -move 3 from 2 to 9 -move 8 from 5 to 8 -move 12 from 4 to 5 -move 1 from 2 to 9 -move 1 from 5 to 6 -move 2 from 1 to 7 -move 4 from 5 to 2 -move 6 from 5 to 1 -move 2 from 7 to 6 -move 1 from 5 to 1 -move 1 from 8 to 5 -move 7 from 6 to 9 -move 2 from 9 to 4 -move 16 from 1 to 8 -move 1 from 5 to 8 -move 7 from 2 to 8 -move 3 from 6 to 2 -move 1 from 4 to 8 -move 28 from 8 to 3 -move 1 from 4 to 2 -move 4 from 1 to 2 -move 11 from 2 to 7 -move 9 from 7 to 8 -move 7 from 9 to 5 -move 4 from 8 to 1 -move 2 from 9 to 1 -move 2 from 1 to 5 -move 1 from 7 to 9 -move 1 from 1 to 9 -move 6 from 5 to 3 -move 3 from 5 to 1 -move 2 from 2 to 8 -move 7 from 8 to 3 -move 7 from 3 to 7 -move 4 from 1 to 9 -move 1 from 8 to 9 -move 2 from 8 to 1 -move 1 from 8 to 1 -move 6 from 7 to 6 -move 6 from 6 to 5 -move 17 from 3 to 6 -move 2 from 9 to 2 -move 2 from 1 to 4 -move 12 from 3 to 8 -move 6 from 6 to 5 -move 2 from 2 to 1 -move 4 from 9 to 7 -move 2 from 7 to 3 -move 1 from 1 to 5 -move 10 from 8 to 6 -move 2 from 3 to 9 -move 9 from 5 to 2 -move 7 from 2 to 8 -move 1 from 4 to 8 -move 1 from 4 to 6 -move 7 from 8 to 7 -move 3 from 9 to 7 -move 4 from 3 to 4 \ No newline at end of file diff --git a/day5/program.js b/day5/program.js deleted file mode 100644 index f559b22..0000000 --- a/day5/program.js +++ /dev/null @@ -1,90 +0,0 @@ -export default function Day(data) { - runPart1(data); - runPart2(data); -} - -function runPart1(data) { - const { stacks, instructions } = extractStacks(data); - executeInstructions(stacks, instructions); - console.log(`part 1: ${topOfStacks(stacks)}`); -} - -function runPart2(data) { - // part 2 - const { stacks, instructions } = extractStacks(data); - executeTrueInstructions(stacks, instructions); - console.log(`part 2: ${topOfStacks(stacks)}`); -} - -function topOfStacks(stacks) { - let solutionString = ""; - stacks.forEach((stack) => { - solutionString += stack[stack.length - 1].substr(1, 1); - }); - - return solutionString; -} - -function extractInstruction(row) { - const instruction = row.split(" "); - const amount = parseInt(instruction[1]); - const fromStack = parseInt(instruction[3]) - 1; - const toStack = parseInt(instruction[5]) - 1; - - return { amount, fromStack, toStack }; -} - -function executeInstructions(stacks, instructions) { - instructions.forEach((row) => { - const { amount, fromStack, toStack } = extractInstruction(row); - for (let i = 0; i < amount; i++) { - stacks[toStack].push(stacks[fromStack].pop()); - } - }); -} - -function executeTrueInstructions(stacks, instructions) { - instructions.forEach((row) => { - const { amount, fromStack, toStack } = extractInstruction(row); - const remove = stacks[fromStack].splice(stacks[fromStack].length - amount, amount); - stacks[toStack] = stacks[toStack].concat(remove); - }); -} - -function extractStacks(data) { - let stacks = []; - const numStacks = Math.ceil(data[0].length / 4); - - for (let i = 0; i < numStacks; i++) { - stacks.push([]); - } - - const containerRows = []; - const instructions = []; - let status = "containers"; - for (let i = 0; i < data.length; i++) { - if (data[i][1] === "1") { - status = "split"; - } - if (data[i][0] === "m") { - status = "instructions"; - } - if (status === "containers") { - containerRows.push(data[i]); - } else if (status === "instructions") { - instructions.push(data[i]); - } - } - - containerRows.forEach((row) => { - const parts = row.split(" "); - let pos = 0; - parts.forEach((part, i) => { - if (part === "") return pos++; - if (part.substr(0, 1) === "[") pos += 4; - const stackNum = pos / 4 - 1; - stacks[stackNum].unshift(part); - }); - }); - return { stacks, instructions }; -} diff --git a/day5/sample.txt b/day5/sample.txt deleted file mode 100644 index 43277fb..0000000 --- a/day5/sample.txt +++ /dev/null @@ -1,9 +0,0 @@ - [D] -[N] [C] -[Z] [M] [P] - 1 2 3 - -move 1 from 2 to 1 -move 3 from 1 to 3 -move 2 from 2 to 1 -move 1 from 1 to 2 \ No newline at end of file diff --git a/day6/input.txt b/day6/input.txt deleted file mode 100644 index 8a9b7aa..0000000 --- a/day6/input.txt +++ /dev/null @@ -1 +0,0 @@ -zdnnfgfsgffgllwrwprwrgwwpssznzrnznllstszsttpdptdpdmdsdzsdscsmcmttdllbsbwwtwnwswcchshlhjhfhwfftcchnnfwwbqwqwrqqgmgzmmwzwfzwfzzzsmzzrczcmmhphzhbbbgdbgddmggwwbbttvmtvttfsfttjlttdfdsdqqczqzffbrfbbfbrrmdrrlslshllwzwrzrzzlqldqdjdjwjvjzjrjjcsszjjqfqnfqqsrqrccbhhwphwhbwwlzwwjwfjwfwzfwzffssvjsjddcsdslslrsrfsrffsggdffrcrcdcpprrzbrzbbtstvvqttbqqgfgsggtvtrvtvbbrqrsqrsqsvsbbzmbmgmvgmmrqrzzbbnjjlwjjfssdrdbrbffwrrrjjgcgtgvvjbjjjsqjsqqncntnndcdrcrhhsgstslldwdbwdbdtbdbggpnndhdvhhvrrlzzfjjffzszvvzgzhhqzqttdhdrrwdwzdwdbwwfsfwsfwfqqzwzbzmzwmmvgggvssvwswfwswhwzzqtqrtthhbbjggjppnpfnfmnnghgrhhtvtqtsttbpprzzwqqfhqfflttzffrprwpwspplzpztptgtltjlttwwsrsrprwrsswnwttcscqsqlsqqhshbhlblnnpznnzlnndrnrcncvcqcjqqvhvppjzjddzbzsztzqqlmlnlnblnlwnllswszwzrzddqhdqhqffhfhjjpbbhvbvmmfhmhcccjlclhcllbrlblddnpplggcmmvddmmqzzmqmppnjpjjjzllqjqccrwwhzhnnlmlhhbbtztvtltvtnvtvltlrtrllbttbzzfwfrrjzjbbmgghjhqhlljnjhhhjzjcjvcvwwzczwcwgcclflnnsvvcncbncnqqpjqjnjwjrrgqrrmqmfmmmjgjfgjfftggqdgqddgcdcdwdrdsswqqphpjhhdjjwswfwfnfqnqccvhvzvmzvzzplzljzjpzzhmzmqzqjjprpvrrhqqnbngnnpvpfvpvqvwwrhhdndqdppmcppzddbzzjcjdjfjnfnngqnnchcqqpllpwppgllcblcblbddzhhqsqbssjqqgmgbgzzvhvnhvnhvvpmpvvlddgppzrprmpmbpbjpbpfptpspddcgddqhdhhthrhjrhrvrlrffvbfbvfvbblssftfnfwwrwnnzdznnbwnbwnwlwttszzmmlzlhhpjhhjvvlvwwdnddzwdwgdgdssflfvfzvznzbzrbzzdssphhgttllcjcvcjjdrdqdhdnndlndldcllcnllslvlnvllmglgnnplpmpzzjwjtwtnntrtjtvjtjffhcfclltppftfwwprrwsrwwzdwzdztzccbmccfcfzczbcbsbqsstjtrrpnnfqqfmmchmmwmrwrwzwztzddgzdgzzfwzzrppcscrrgvgvgvtgtsslrsrvsrrdcdscscwcwqqsccwjcjgjvgvpvnvhhchrrgprpvrvsvsttgghdghhmphmmbvbcbsccdbcbnccbnnsjnjhnnzbnnpjbwdpczcvgjpgwfqrmnvwncflvnttwhfgmfqvngpdhbhvlglfhtdqmqtqcgjcqghzvbdghdgvjcsjrlpqvgcdnbpqrcrcvqqdlcpscqbfpsnhzcdbbcssslrjlzsqpprsbmtqhzblvwbswprhztmpcgfqfsgshchrhjmwwhpzsjzrmrvgdgwjrlwpgqhbzrmnmnnsnvzsrlhthgvlpljsjrpbhbzctdqgvdjcmrgtvqjqbcwsprnfmntzpbjcdtlchhjgwpmldmsstbtztfdbgbstgnlwbzrrzmvbrhnrlcwfgwwbfnntbjspqwngbjrvhdcnblqssgjlbcwbbgphhnmfcmdhqdhsnmvdjnwwwjlffswhsmwqrsprftjwtbtcvmpctgvfqvvcjpnwzqldglfbwfzpnqmdlrdpjmjptvwsctlmhmzzgvplglfgsvrfbqbmrhplczbvqpdjjhhvfqswhzhqfgzstwwpbtbsnnlgpshwqgppzbpsfpfvcntbbbzwdnfcgcwzbqwmhjrhpdfvpbzpmfnmllrcqlqhcbzfltzcgccwwqmtsmwchhvbqtdrnsbrchqqcmtfqpddcjplbvdhhtndrrmfdtmbpdvwthvgdccnrcqmpznlvzqzfjqmpvgjtfbtfjnrmlzhwhljrrqnbqzpfhcvncblfggrtbdfjqnlgpbrzmwcvrvjtjscfmcnfjgqzqsphldvhdbpvmghrvsdmvpmvvdmdhwdghtjltmlcmfhvrsvcvpblwhhfcfdqnrsjbcldgbwhtnjntmgvprhbjrcvsmhgtfphcwncpjtngqhvwrmgprstbtdstmttpzcntmzvncwslqlldpnjbtpmsfnwbpwpnlfgdvcqplvlqqjvfftnnvpcmwjrvwqhlrshftrbhcwnczzsnvtnjnrbzzgzfsqhnfwlcgzvvhqcgvqtmcpnhlvdlmwgsvtwbqgrdsrrddszvscbgtlpwpzjrbvwhjnrpprhtzmthbpfzvplzwfdtnwqwtctgjslmcczjvwplsqwgfnfbgdjbsdpwbgflttvvqlhzgmmpjsnwbqqtcdszfqbhgnmbbmrbrgnrzdmzwnjjzjqcwqcqfchjrzlspgbrchcbgwbhvggsqbvdpzbpnwdtqvcjwcwnbjdhsdfmbtwfbfhzwwtnqzhmtvtbfwrsqjzgssvlwszvlmvbslpncnhmsdhcqqfpftztpzbbhsgbnscddbjlgwgjjndgwbrhwmsfdmmsnlwgwdsdltwjfvwnczjrbgcvsfczppltdptlgcdfzgmqpjngstldqgmwhdmfrwwfqwdgswvfdrtsgtvttpcbnhzbscnchpvfjvbcszbwchnbmfrvsswslbzlhgwlvfchdbfthbpdbwwqtmlgwjqtjhzrjzzmrpdwnvfgrnqdcqmwtttmwjvgcmjsddvtlswldzhtppwvhmlghwlgblfttctnglwhtfvqgjmdjcnflsrjvpjwcjfftbdmmcbqvfwnnnzsltllncbstgnhtmpsltgztqzjbbrtqpcvdlnhpnhvmmztpfpplbqjlpqvfsdvhwvstdmqbtnpzrcbdhvdtghqwcppcfzjfjsfwvqrtfgcdzwgzjvrqqsjtnhlbjcmtjcnmtpffwcwhqqphwjsrhpqvnnhhrcnvztfdjzbjggwlgjprbpssgnmtcrvprwbsrfvvphrsgzgbrfnpgtqbbprhfphqntsglrmhzfnwqptlslnhtrhfprjpdcglcffsblnjwczmgwhmmtgsgwljmqlvdglqmzwmtqcvgcrmqjldlsnbssdvrrtltngvrsqbctqlsngqvcphjvhmwsssgwmvgzdctjcmjtpcjhvfcrfhbffdqfjjvpqwgvnlzhgfnfmlrrfvjrdvhzdcvdvmpncvtjbbnczpzmglfqnpbsrsjwgvszsnqvrnvlhmqjjnmsfngbdlpwbqllcptjtlbhrfdvhlrpdlznpvndjzjdtjflqqjdgjjpmnpmjgcglllgcqbfpvdtpbjdnvrclmnlfdrpbmwzgvdhgbzvbhwqfslhshbfcbwrnsjndgjgccllfbzgmcjqcmdnfftnccphqtwmgqgfqlvlwsrprctchqrscwvgpdrwgcfgzjwmzmmsmwzgtzsjtqfggcczcmghlqgnqqjvsrsfrrmwmnrnhbsszmwsqlrggsbdwzzfnhwcggjszfrlffplvcblvphqmzjnzwzdshhdprfrdbcrmbtztcfvgpzpmmgflswphvnvtwhbbhjwffsvqfjlfvzqmhmsmddwdwsqfnnplbqnptbvgjqgmflsbfdtpvdgbfnqmcqznhpqbpwtbfpqllvqwvcftdjjtlsvzbssbtcdzqqqvzlqhfpdthscqmvhpndmnztthvvzccqswswspnqcbncvszrgjshjhdsclrjdnjdczqmcjldbspclgrmwqdvcvpcsvjggfdqlrwlnzptfvcwjsgblpjzgcrrmjqptvdnwr \ No newline at end of file diff --git a/day6/program.js b/day6/program.js deleted file mode 100644 index c6f6d2f..0000000 --- a/day6/program.js +++ /dev/null @@ -1,23 +0,0 @@ -// Today's input is only 1 line, but my program still accepts multi-line -// as that is what the runner does. This means the sample input is actually bigger, line-wise -// than the actual input. This means I'm writing the code to handle sample input, thus making -// the code more complex than it needs to be, though only by a loop -export default function Day(data) { - data.forEach(line => parseLine({line: line, part: 1, amountOfChars: 4})); - data.forEach(line => parseLine({line: line, part: 2, amountOfChars: 14})); -} - -function parseLine({line, part, amountOfChars}) { - let chars = []; - for (let i = 0; i < line.length; i++) { - chars.push(line.charAt(i)); - if (chars.length > amountOfChars) { - chars.shift(); - } - - if (chars.length === amountOfChars && (new Set(chars)).size === chars.length) { - return console.log(`Part ${part}: Unique after ${i+1} chars`); - } - - } -} \ No newline at end of file diff --git a/day6/sample.txt b/day6/sample.txt deleted file mode 100644 index 698fdf2..0000000 --- a/day6/sample.txt +++ /dev/null @@ -1,5 +0,0 @@ -mjqjpqmgbljsphdztnvjfqwrcgsmlb -bvwbjplbgvbhsrlpgdmjqwftvncz -nppdvjthqldpwncqszvftbrmjlhg -nznrnfrfntjfmvfwmzdfjlvtqnbhcprsg -zcfzfwzzqfrljwzlrfnpqdbhtmscgvjw \ No newline at end of file diff --git a/day7/input.txt b/day7/input.txt deleted file mode 100644 index 3601b1e..0000000 --- a/day7/input.txt +++ /dev/null @@ -1,1105 +0,0 @@ -$ cd / -$ ls -dir hdwsmn -dir lmlsvqsw -dir rlfgcqz -dir sjq -dir tpnspw -$ cd hdwsmn -$ ls -dir mrrqnc -dir qst -dir rlfgcqz -$ cd mrrqnc -$ ls -227398 rwhw -$ cd .. -$ cd qst -$ ls -152795 bblss.hnl -dir lvs -$ cd lvs -$ ls -81813 jwvtjgjb.sss -$ cd .. -$ cd .. -$ cd rlfgcqz -$ ls -dir hlltch -dir jqpnnmwc -$ cd hlltch -$ ls -219753 rtgdsbz.qlg -$ cd .. -$ cd jqpnnmwc -$ ls -164333 dmvchsd.ncw -141721 njsfs.pmd -dir rlfgcqz -$ cd rlfgcqz -$ ls -278398 vhh.jtr -dir wfnpcnr -$ cd wfnpcnr -$ ls -dir njsfs -$ cd njsfs -$ ls -46895 twfg.gzb -$ cd .. -$ cd .. -$ cd .. -$ cd .. -$ cd .. -$ cd .. -$ cd lmlsvqsw -$ ls -81577 bblss -12519 dlghs.dcz -260260 gphgq.ztw -dir mldg -6570 qgbg -61210 twfg.gzb -$ cd mldg -$ ls -152240 bgddpvj.cgb -dir rlfgcqz -$ cd rlfgcqz -$ ls -dir dbvjfgff -dir dnnd -112649 qwhmdlf -dir wcqpzpp -$ cd dbvjfgff -$ ls -dir rlfgcqz -$ cd rlfgcqz -$ ls -278899 wmclvlvq.fbf -$ cd .. -$ cd .. -$ cd dnnd -$ ls -17486 zhqjt.dwq -$ cd .. -$ cd wcqpzpp -$ ls -195207 cvqtfn -$ cd .. -$ cd .. -$ cd .. -$ cd .. -$ cd rlfgcqz -$ ls -63895 gbwqg -35085 lllv.jpl -155195 nhrbwg.dcf -84099 wsh.sps -$ cd .. -$ cd sjq -$ ls -48652 dmvchsd.ncw -$ cd .. -$ cd tpnspw -$ ls -81312 ftjrpmr.mfd -dir gcwq -dir lvvztw -dir msrdg -dir ncgljn -dir njsfs -dir ptncs -263168 rwglhrm -192446 twfg.gzb -$ cd gcwq -$ ls -dir bblss -dir hlmm -$ cd bblss -$ ls -120988 qgbg.tcm -326021 tbvgfdnc.cvl -$ cd .. -$ cd hlmm -$ ls -287707 dmvchsd.ncw -319996 gpvfhpnr.jjl -$ cd .. -$ cd .. -$ cd lvvztw -$ ls -dir bdsvzhbm -155345 ftjrpmr.mfd -112094 qwhmdlf -9917 vnmtgsq.gcj -$ cd bdsvzhbm -$ ls -dir jmmltt -dir zgcjl -$ cd jmmltt -$ ls -130686 zsp.dcc -$ cd .. -$ cd zgcjl -$ ls -318547 dmvchsd.ncw -$ cd .. -$ cd .. -$ cd .. -$ cd msrdg -$ ls -dir wjp -$ cd wjp -$ ls -301898 bjccpf -97684 mcnqbl.bwn -160132 qwhmdlf -315893 twfg.gzb -$ cd .. -$ cd .. -$ cd ncgljn -$ ls -dir bblss -119737 gdc.mrs -196706 ggljwvgj.blh -162440 mlgnvbhj.gbw -163186 qwqlfwfw.mfj -167447 twfg.gzb -$ cd bblss -$ ls -dir bblss -dir njsfs -137986 nlmbnm -dir qgbg -229544 zhqjt.dwq -$ cd bblss -$ ls -186733 wcqpzpp.mmr -$ cd .. -$ cd njsfs -$ ls -dir tjbrtt -$ cd tjbrtt -$ ls -284955 rlfgcqz.ltq -$ cd .. -$ cd .. -$ cd qgbg -$ ls -dir dmcmw -15196 ftjrpmr.mfd -dir gbpqj -236891 ghlm.wlm -156863 qgbg -dir wfvqv -$ cd dmcmw -$ ls -116526 dhzhmj.qpw -251858 dmvchsd.ncw -dir ffqghmp -dir njsfs -148820 njsfs.zvm -290169 twfg.gzb -186117 wcqpzpp.vsd -$ cd ffqghmp -$ ls -dir wcqpzpp -$ cd wcqpzpp -$ ls -dir rfmsdjr -$ cd rfmsdjr -$ ls -291669 psmg.ldm -$ cd .. -$ cd .. -$ cd .. -$ cd njsfs -$ ls -35762 dmvchsd.ncw -97427 njsfs -261675 twfg.gzb -15426 wcqpzpp -dir zvnjrnrw -$ cd zvnjrnrw -$ ls -18370 dmvchsd.ncw -10620 wsgd.fjt -$ cd .. -$ cd .. -$ cd .. -$ cd gbpqj -$ ls -10204 fdlpjd.tgr -117954 rlfgcqz -$ cd .. -$ cd wfvqv -$ ls -dir fsq -133485 twfg.gzb -$ cd fsq -$ ls -156862 qwhmdlf -$ cd .. -$ cd .. -$ cd .. -$ cd .. -$ cd .. -$ cd njsfs -$ ls -dir bblss -dir bzlpqv -dir cvm -dir dbbngm -dir gbtmsjgl -224200 nrffnj -$ cd bblss -$ ls -dir dhmwcmf -280202 hmp -66351 ndnr.wjh -85218 qhrhjb -dir tcqnf -dir wjv -dir zwlpqrb -$ cd dhmwcmf -$ ls -dir qtdf -dir scsllc -$ cd qtdf -$ ls -dir fmbsgvr -$ cd fmbsgvr -$ ls -1641 jdtcd.qhw -109819 qwhmdlf -$ cd .. -$ cd .. -$ cd scsllc -$ ls -dir brthfcm -dir qqgh -81391 rlfgcqz.pcj -192835 rlfgcqz.rnf -$ cd brthfcm -$ ls -135591 qwhmdlf -$ cd .. -$ cd qqgh -$ ls -270614 djjq -dir njsfs -$ cd njsfs -$ ls -18629 fngbfvr -$ cd .. -$ cd .. -$ cd .. -$ cd .. -$ cd tcqnf -$ ls -25594 gvqjrdlr.fps -314758 rlfgcqz.ndb -269846 wcqpzpp.gvz -$ cd .. -$ cd wjv -$ ls -dir dtddhqbj -dir njsfs -dir pgfrd -95552 pjzgwggg.hpc -29427 rlfgcqz -dir shhzzrf -$ cd dtddhqbj -$ ls -dir fmzhtfd -36982 ftjrpmr.mfd -dir gqsg -dir wcqpzpp -$ cd fmzhtfd -$ ls -dir psqnghl -226561 rttdhnnm -220713 tsfcpzzv -$ cd psqnghl -$ ls -136028 qwhmdlf -280539 rlfgcqz.nzf -129468 zhqjt.dwq -dir zlb -$ cd zlb -$ ls -dir qgbg -$ cd qgbg -$ ls -188576 ftjrpmr.mfd -$ cd .. -$ cd .. -$ cd .. -$ cd .. -$ cd gqsg -$ ls -302134 dmvchsd.ncw -161569 drzt.pmq -$ cd .. -$ cd wcqpzpp -$ ls -254804 bblss.sqp -280941 dbvw.mdw -dir gfs -317925 njsfs.wpr -dir qgbg -$ cd gfs -$ ls -dir jrctzlg -dir lrnzq -233927 njsfs.bmd -45942 twfg.gzb -125290 vbtr.wvj -dir wcqpzpp -$ cd jrctzlg -$ ls -88635 qwhmdlf -204938 vlnwcv -$ cd .. -$ cd lrnzq -$ ls -253736 bblss.ddj -272769 vsrvgsc.cwl -$ cd .. -$ cd wcqpzpp -$ ls -301739 ftjrpmr.mfd -63733 qwhmdlf -$ cd .. -$ cd .. -$ cd qgbg -$ ls -dir cpr -196886 hgj -188348 lqvq -132024 twfg.gzb -213866 zhqjt.dwq -$ cd cpr -$ ls -dir wznlzpzj -115532 zhqjt.dwq -$ cd wznlzpzj -$ ls -dir bcwnrc -$ cd bcwnrc -$ ls -289013 dmvchsd.ncw -$ cd .. -$ cd .. -$ cd .. -$ cd .. -$ cd .. -$ cd .. -$ cd njsfs -$ ls -296178 mpprqbgc -128104 zhqjt.dwq -$ cd .. -$ cd pgfrd -$ ls -dir slgztr -$ cd slgztr -$ ls -dir htjd -dir rlfgcqz -243751 twfg.gzb -dir wcqpzpp -$ cd htjd -$ ls -216650 ftjrpmr.mfd -$ cd .. -$ cd rlfgcqz -$ ls -144834 qwchd.qtn -$ cd .. -$ cd wcqpzpp -$ ls -133476 qwhmdlf -$ cd .. -$ cd .. -$ cd .. -$ cd shhzzrf -$ ls -dir hbp -dir jqfhdn -dir qgbg -dir tftrnfpd -dir zppjlf -$ cd hbp -$ ls -158562 fbwsrbbg -297036 zph.mbd -$ cd .. -$ cd jqfhdn -$ ls -166463 bblss.sgd -125240 dmq -48389 ftjrpmr.mfd -dir njsfs -dir rlfgcqz -$ cd njsfs -$ ls -dir tbjp -307427 zhqjt.dwq -$ cd tbjp -$ ls -76200 rcfv.bgh -$ cd .. -$ cd .. -$ cd rlfgcqz -$ ls -294331 bblss.vwj -$ cd .. -$ cd .. -$ cd qgbg -$ ls -dir qnpdnjdl -dir rdmj -$ cd qnpdnjdl -$ ls -dir sblj -$ cd sblj -$ ls -39051 twfg.gzb -2405 zhqjt.dwq -$ cd .. -$ cd .. -$ cd rdmj -$ ls -213965 zhqjt.dwq -$ cd .. -$ cd .. -$ cd tftrnfpd -$ ls -294450 chbgd.vjv -318594 hvwbj -dir nznzzw -96252 twfg.gzb -dir vlfdtwj -dir vsvj -dir wvnjtmt -dir zlj -dir zwqff -$ cd nznzzw -$ ls -115971 nndbd.rhl -$ cd .. -$ cd vlfdtwj -$ ls -167648 ddvqzlh.cpw -$ cd .. -$ cd vsvj -$ ls -dir dfzcrmt -dir ffpvbczr -110196 njsfs.zsh -257204 qrgnw.mhw -dir rptmp -131871 zhqjt.dwq -$ cd dfzcrmt -$ ls -dir hqbthjc -dir hztrwjr -11874 rsd -252800 zhqjt.dwq -$ cd hqbthjc -$ ls -135533 bblss.clm -231343 rlfgcqz.zfh -176061 rrzqhdp -$ cd .. -$ cd hztrwjr -$ ls -dir zmpm -$ cd zmpm -$ ls -297930 rpb -$ cd .. -$ cd .. -$ cd .. -$ cd ffpvbczr -$ ls -dir qdvppt -dir qgbg -$ cd qdvppt -$ ls -323419 bblss.lnl -$ cd .. -$ cd qgbg -$ ls -158408 dmvchsd.ncw -$ cd .. -$ cd .. -$ cd rptmp -$ ls -280342 rqlbtpw -$ cd .. -$ cd .. -$ cd wvnjtmt -$ ls -dir bblss -249330 fgc.ftp -dir gtbbfzzn -dir wcqpzpp -$ cd bblss -$ ls -1570 zhqjt.dwq -$ cd .. -$ cd gtbbfzzn -$ ls -65850 lmbrdhc.jbz -$ cd .. -$ cd wcqpzpp -$ ls -62362 qwhmdlf -$ cd .. -$ cd .. -$ cd zlj -$ ls -103758 lrhflmsw.qhq -163919 qwhmdlf -$ cd .. -$ cd zwqff -$ ls -dir ghfc -dir njsfs -$ cd ghfc -$ ls -131979 hpcgrvms -$ cd .. -$ cd njsfs -$ ls -126387 wcqpzpp -$ cd .. -$ cd .. -$ cd .. -$ cd zppjlf -$ ls -241176 rlfgcqz.ctz -$ cd .. -$ cd .. -$ cd .. -$ cd zwlpqrb -$ ls -272627 bblss.gpv -261635 blczb.srs -dir lnhzzl -153210 njsfs -55633 twfg.gzb -$ cd lnhzzl -$ ls -dir dtwcsvzf -$ cd dtwcsvzf -$ ls -74858 dtz.rpc -$ cd .. -$ cd .. -$ cd .. -$ cd .. -$ cd bzlpqv -$ ls -157801 gdqhdd -318418 nmq -266938 qwhmdlf -$ cd .. -$ cd cvm -$ ls -1145 dmvchsd.ncw -233344 ftjrpmr.mfd -263393 njsfs.hvb -74436 twfg.gzb -dir wcqpzpp -96596 whq -$ cd wcqpzpp -$ ls -dir rlfgcqz -$ cd rlfgcqz -$ ls -244048 gspw -324759 qgbg.wrf -190410 qwhmdlf -$ cd .. -$ cd .. -$ cd .. -$ cd dbbngm -$ ls -dir bblss -184222 bcfzt.grj -dir rlfgcqz -41851 sshb.nzv -113784 wgjc.mrr -13594 zhqjt.dwq -$ cd bblss -$ ls -102201 qwhmdlf -$ cd .. -$ cd rlfgcqz -$ ls -91063 bblss.msn -2918 dqhbnt -74771 nbprqmbs.jwj -$ cd .. -$ cd .. -$ cd gbtmsjgl -$ ls -207664 cnfpq.wbl -$ cd .. -$ cd .. -$ cd ptncs -$ ls -dir bmpts -dir bpmf -dir brhp -dir gzjppjfr -dir jrd -321627 jss.jsh -130602 lfmrp.csp -dir prfz -dir qgbg -dir qjgchtwb -dir rvqrjms -174888 ttmwlrs.wbc -dir vwgsmc -55854 zhqjt.dwq -$ cd bmpts -$ ls -124846 dmvchsd.ncw -283278 mlcmzqdf.pfj -dir plbpr -312240 qwhmdlf -74910 rlfgcqz.jqp -dir tvrvwv -$ cd plbpr -$ ls -37432 dmvchsd.ncw -dir wcqpzpp -$ cd wcqpzpp -$ ls -18638 bsfsc.gfs -$ cd .. -$ cd .. -$ cd tvrvwv -$ ls -dir tsgp -$ cd tsgp -$ ls -141689 wcqpzpp.jdc -$ cd .. -$ cd .. -$ cd .. -$ cd bpmf -$ ls -201372 ftjrpmr.mfd -dir nhtjhsp -dir qgbg -dir sbqfdzh -dir wcqpzpp -178078 zhqjt.dwq -$ cd nhtjhsp -$ ls -225213 ftjrpmr.mfd -$ cd .. -$ cd qgbg -$ ls -214193 cwnphff -296165 ftjrpmr.mfd -260246 zhqjt.dwq -$ cd .. -$ cd sbqfdzh -$ ls -281546 njsfs.rjz -dir qgbg -246263 qqbsjtp.nbn -10231 srllsw -$ cd qgbg -$ ls -92801 dmvchsd.ncw -66784 pbz -226132 wcqpzpp.vjs -242775 wgt.bbw -$ cd .. -$ cd .. -$ cd wcqpzpp -$ ls -55886 bblss.vzh -313619 rlfgcqz -$ cd .. -$ cd .. -$ cd brhp -$ ls -321184 nnfzrm.mgz -190867 rlfgcqz.qbs -$ cd .. -$ cd gzjppjfr -$ ls -67036 ftjrpmr.mfd -$ cd .. -$ cd jrd -$ ls -293867 dmvchsd.ncw -dir drjbp -dir njsfs -10759 pcpvd.hsg -dir qfghvhsr -dir thf -268195 tmwvbl -$ cd drjbp -$ ls -dir ccdmcgvz -276381 gbhhwlv.rlt -252224 zqt.wpc -$ cd ccdmcgvz -$ ls -4082 cffmcz -31006 mws.tvb -dir njsfs -$ cd njsfs -$ ls -dir bblss -$ cd bblss -$ ls -180561 lfd -$ cd .. -$ cd .. -$ cd .. -$ cd .. -$ cd njsfs -$ ls -115688 qgbg -34653 qwhmdlf -$ cd .. -$ cd qfghvhsr -$ ls -3280 ssg.ctr -$ cd .. -$ cd thf -$ ls -dir bzhbrlh -dir qgbg -$ cd bzhbrlh -$ ls -148423 wjtlhwq -$ cd .. -$ cd qgbg -$ ls -dir rrtb -dir slhbmldf -$ cd rrtb -$ ls -30387 rlfgcqz -$ cd .. -$ cd slhbmldf -$ ls -dir vszhrc -$ cd vszhrc -$ ls -235629 qwhmdlf -$ cd .. -$ cd .. -$ cd .. -$ cd .. -$ cd .. -$ cd prfz -$ ls -254587 bblss -dir bmfg -dir bsw -dir cfjdjcmt -321761 dmvchsd.ncw -35369 ftjrpmr.mfd -dir nqrbhdcn -237737 rlfgcqz.wsp -dir smdsrzlc -25049 tbwfsp -$ cd bmfg -$ ls -dir bblss -275693 wcqpzpp.zvw -$ cd bblss -$ ls -dir lddn -$ cd lddn -$ ls -dir mqlpwvcg -$ cd mqlpwvcg -$ ls -34635 zztv -$ cd .. -$ cd .. -$ cd .. -$ cd .. -$ cd bsw -$ ls -dir ljqv -dir vhpqbw -$ cd ljqv -$ ls -119525 ftjrpmr.mfd -$ cd .. -$ cd vhpqbw -$ ls -154199 twfg.gzb -$ cd .. -$ cd .. -$ cd cfjdjcmt -$ ls -22258 zhqjt.dwq -$ cd .. -$ cd nqrbhdcn -$ ls -dir bblss -84121 fbgqdsn -232625 hrjft -201822 ltfpl.lsq -194572 pgbqncwc.vqq -43024 qfgrmw -dir wcqpzpp -dir wvtnznjn -$ cd bblss -$ ls -326048 jctnwzn.zcq -$ cd .. -$ cd wcqpzpp -$ ls -265643 bzjmjng.vhr -dir lwt -dir qgbg -164876 twfg.gzb -dir vswqzjc -264349 wcqpzpp.lzp -$ cd lwt -$ ls -156024 ftjrpmr.mfd -287930 lmjwqw -dir qvr -56184 qwhmdlf -203952 twfg.gzb -95508 wcqpzpp -$ cd qvr -$ ls -dir ndqmn -$ cd ndqmn -$ ls -153880 njsfs.fvr -$ cd .. -$ cd .. -$ cd .. -$ cd qgbg -$ ls -244154 ftjrpmr.mfd -dir pztf -dir qgbg -dir rlfgcqz -dir zpvcn -$ cd pztf -$ ls -dir njsfs -dir sfrbvhp -$ cd njsfs -$ ls -268512 dmvchsd.ncw -$ cd .. -$ cd sfrbvhp -$ ls -dir wcqpzpp -$ cd wcqpzpp -$ ls -2126 dmvchsd.ncw -$ cd .. -$ cd .. -$ cd .. -$ cd qgbg -$ ls -123331 zhqjt.dwq -$ cd .. -$ cd rlfgcqz -$ ls -4261 lflphd.cfn -144504 twfg.gzb -110656 wcqpzpp.cjr -$ cd .. -$ cd zpvcn -$ ls -259119 qgbg -$ cd .. -$ cd .. -$ cd vswqzjc -$ ls -dir qgbg -dir rlfgcqz -$ cd qgbg -$ ls -76795 qwhmdlf -dir wcqpzpp -293923 zfcwvpz.vrn -$ cd wcqpzpp -$ ls -296986 qwhmdlf -$ cd .. -$ cd .. -$ cd rlfgcqz -$ ls -dir dtwv -dir rfbrzf -200095 rlqrlh -$ cd dtwv -$ ls -306977 bblss.dzm -139644 njsfs -$ cd .. -$ cd rfbrzf -$ ls -96622 cnb.wdl -$ cd .. -$ cd .. -$ cd .. -$ cd .. -$ cd wvtnznjn -$ ls -320558 lvtrqjnv.twq -$ cd .. -$ cd .. -$ cd smdsrzlc -$ ls -dir mbfqdbl -$ cd mbfqdbl -$ ls -dir hrhc -$ cd hrhc -$ ls -110162 hgbng -$ cd .. -$ cd .. -$ cd .. -$ cd .. -$ cd qgbg -$ ls -41978 mrfvnb.zbh -172912 rlfgcqz.qlf -$ cd .. -$ cd qjgchtwb -$ ls -243299 dmvchsd.ncw -91104 jbwss -207317 llqnrd.czw -145298 znzb.lsj -$ cd .. -$ cd rvqrjms -$ ls -40049 twfg.gzb -$ cd .. -$ cd vwgsmc -$ ls -dir qzl -dir rlfgcqz -dir tmpjd -dir vqt -$ cd qzl -$ ls -324024 cspbrpgv.fcc -8468 hfdwz.bjq -dir nvrpj -46755 qgbg.lhn -247926 qwhmdlf -dir thtq -17180 wcqpzpp -$ cd nvrpj -$ ls -dir vpscvbj -$ cd vpscvbj -$ ls -225620 bvrzrw -$ cd .. -$ cd .. -$ cd thtq -$ ls -dir pqqhcl -276922 qwhmdlf -59145 sshgg.bcf -dir wclbp -$ cd pqqhcl -$ ls -123067 vvhlq.bbg -$ cd .. -$ cd wclbp -$ ls -dir djbbpzjz -$ cd djbbpzjz -$ ls -5446 wtn.gnz -$ cd .. -$ cd .. -$ cd .. -$ cd .. -$ cd rlfgcqz -$ ls -dir njsfs -$ cd njsfs -$ ls -178834 flrr -$ cd .. -$ cd .. -$ cd tmpjd -$ ls -1973 fnlwgc.rbq -240728 njsfs.sgm -dir qgbg -51532 qgbg.vdc -330859 rdvzpf.lld -dir sjlq -259561 twfdn.vnm -dir zlbmf -$ cd qgbg -$ ls -273408 bznqvg -45710 dmvchsd.ncw -306311 jcvn.brh -269315 rlfgcqz.crg -51046 rnqb.wlt -dir wqfprrd -dir zjscb -$ cd wqfprrd -$ ls -276417 zhqjt.dwq -$ cd .. -$ cd zjscb -$ ls -276541 bblss.dhl -dir mlsdv -dir njsfs -$ cd mlsdv -$ ls -251030 qwhmdlf -$ cd .. -$ cd njsfs -$ ls -dir cfmfsbc -$ cd cfmfsbc -$ ls -234880 zhqjt.dwq -$ cd .. -$ cd .. -$ cd .. -$ cd .. -$ cd sjlq -$ ls -25547 nqvnpgs.zhl -$ cd .. -$ cd zlbmf -$ ls -21812 pjn.hbf -dir rcgvwrg -$ cd rcgvwrg -$ ls -19512 qwhmdlf -$ cd .. -$ cd .. -$ cd .. -$ cd vqt -$ ls -80263 njsfs.zmr \ No newline at end of file diff --git a/day7/program.js b/day7/program.js deleted file mode 100644 index 308d194..0000000 --- a/day7/program.js +++ /dev/null @@ -1,58 +0,0 @@ -export default function Day(data) { - const { files, dirs } = loopThroughCommands(data); - dirs.sort((a, b) => a.size - b.size); - const sum = dirs.reduce((acc, dir) => { - if (dir.size < 100000) { - return acc + dir.size; - } - return acc; - }, 0); - - console.log(`Part 1: ${sum}`); - - const totalFileSize = files.size; - - const sizeRemaining = 70000000 - totalFileSize; - const sizeRequiredForUpgrade = 30000000 - sizeRemaining; - - const smallestDir = dirs.find(dir => dir.size >= sizeRequiredForUpgrade); - console.log(`Part 2: ${smallestDir.size}`); -} - -function loopThroughCommands(commands, from = 0, name = "/") { - let dirStructure = { - size: 0, - files: [], - name: name, - }; - const directories = []; - - let i = from; - for (i; i < commands.length; i++) { - let command = commands[i].split(" "); - - if (command[0] === "$") { - if (command[1] === "cd") { - if (command[2] === "..") { - return { files: dirStructure, newI: i, dirs: directories }; - } else if (command[2] !== "/") { - let { files, newI, dirs } = loopThroughCommands(commands, i + 1, command[2]); - directories.push(files); - directories.push(...dirs); - i = newI; - if (files) { - dirStructure.files.push(files); - dirStructure.size += files.size; - } - } - } - } else if (!isNaN(command[0])) { - dirStructure.size += parseInt(command[0]); - dirStructure.files.push({ - name: command[1], - size: parseInt(command[0]), - }); - } - } - return { files: dirStructure, newI: i, dirs: directories }; -} diff --git a/day7/sample.txt b/day7/sample.txt deleted file mode 100644 index bcbb513..0000000 --- a/day7/sample.txt +++ /dev/null @@ -1,23 +0,0 @@ -$ cd / -$ ls -dir a -14848514 b.txt -8504156 c.dat -dir d -$ cd a -$ ls -dir e -29116 f -2557 g -62596 h.lst -$ cd e -$ ls -584 i -$ cd .. -$ cd .. -$ cd d -$ ls -4060174 j -8033020 d.log -5626152 d.ext -7214296 k \ No newline at end of file diff --git a/day8/input.txt b/day8/input.txt deleted file mode 100644 index d478f8b..0000000 --- a/day8/input.txt +++ /dev/null @@ -1,99 +0,0 @@ -313213123212200312011243203120214010202554420335045116203101005212525131015305511140012431022113113 -222021333112322244231542054023354511304431216312534453560105660253445311020244233130144313440030322 -200012220300132310233100025524032003355144536126232161330106115213441450552235514000243120210031130 -102111124044033113241415155401056014506203413216651520206613342353052505445000321043121021430440021 -221134021010031320101542213340113552161113350123516154134654046250223033000413443321231233142213010 -112241233114245202523201433013460320664034202602144006022621253536213222400131120345151014014131133 -132211130114141401325141212460540656525106651152012063404633651340223361443201520054113541144043031 -323140320024314005210155316202152552621415660063112177564603241212312025036551350313225504314404112 -014013242041230510442265205625331115540222744516266167254216354043533020346502032534231121044441220 -233414030101315255335126055263144512111777464611565216157441673706100506241423030403420343112342030 -133144314412553330012446404244433465434666762135116677765213463444460612511131340332552424201204120 -010320402332512110363213044530335655613562223756572424746437567672262256431540210005310544243444101 -324403411232230200215144254550257275144535323452276762234354361552536153612012260502425410505314212 -044143021304533036524115200363122146144443357746134567133417572143572217253466665420004544002052304 -031301205442313664253200353721523337451137554555385833341715227554331566151244334446363035232422032 -412021132254126340642250212415471513377143653545744364662761514364426436251422450305502445230351142 -423013525424334650512351242132544127615655738268233852527877887577454317715373566210510633013145020 -314013042244622602006117664713652263528475833433263846468763678447134716635345050225504112315124312 -210530032555051320514661111414734263472852682724485772623266565822423365264512541061226540103142223 -202523210140346233027372362557125436368725536228624865344774378537888747171665564143331101501212340 -312102150200503360534132445517484678583587678756766763747725475724228724317675166660536246102044404 -014501150514404506226424155762432386227846258625478334768375862827476433553651311460116133631440213 -145345025402132601222234271268834838244287765994936689397836424284644676342577451356463132062234232 -030520533600060465674743543832435622275594666933473957864637427284284528866426734257033413611153542 -111125222126126664625217555874224623337857863456948836785373353757744683247375632677514312554402024 -454344234313551645731724622525365832657894545768964536939387863978465673442253722125752553236132004 -141351656653224237252122854224855258938593946648537669944575478986734723225856761571634036114323202 -301354130411223555466416844555847677853855433636774857897563386873392265447728545634555234214003555 -324351500351156142554654722557458488698547355994463766454687489898485753473777574124613414652504004 -000202526603566624271288867428799685358698759656849978553895836996388433252545546266753551322305123 -142140450656776227714466585833798874975635767795445874946645465477849772464684527525213236023524220 -324262353505673315724236445748536388973668654588599896854469535494838643744387872721615221063235321 -552206463167666154577658258569744567339446596474586868848866645743399869362886626547344767533546153 -352323434663437355725427826449799477395999565764668865854945787936654594832633678767541225131001503 -440166362233562667478335763956389857755767497475848959778498799895595785387844464757513162265652640 -104122124642766642664452283555537376598457767558647554969995685645795999475473687336165523560052001 -255352243015641217534667849769975859955778464876555786747474774794864778373768452562637255330444232 -456220432747476336866782246873698697677699688678997975678548856759743777979632262638565415133210633 -354641641663166247236463863687744889449497969668886767686756898498698544578857834482516366746042103 -125201564115437683566423743488648645944969969766988857659599646944656843556585768447477145122536100 -565166453317161563746425435958546648857589858689866779576599554476785965354884443284615264253254316 -121246126671552573824643637663796768749697876859599686798755755668478994537789677336675255111501306 -360355134677155672632437676667797548778989878956585555755888869798448799556895227877387243567410342 -201045427623176635776469999883749944896899977995889968875595559556975886998744463243563112165201326 -352250115546124536536769454447786744475757988989886986985776968688899563536676844455461472345336201 -444012305276547277522595375654994558855859877987996678887769879954854599865599846623773465534004160 -003621673437674224248486547979885878957565757686996887766986595599447858644667462254244517674205046 -045265132276456334554365893935749649965989576778789869677576755756899986563778785582684657425224532 -256151375615717542563666894835779554876779596976976699887778577957456866545674477228666746346403631 -161152464371764263643334333389748956969597666797767878866755966565484647664843525828682412373755454 -502011544714165463843278447485479797867666888668797796768977767569575788836334565474627531473704246 -151460364232447443233565968759985868786557997798976867676959589967898874545836432537554441566122314 -325354014323767722264889584534897666569996596668678778968696799996649764974489874252576563221244356 -300165663442414468382638967476995984959988868887699967676597986577798947648889527728225341345144126 -523044146537227284236854867884546566896896589678689877799567996884747789569869374746443236356121631 -623520016256236672238393557665746588457977578897867867689877778857948885353767526367472655634211324 -513112323743777428355697564974758755988785986568979868979685685997847967586943842248473255451053311 -450020506764535784366644976997588757498856779786876686775868855996746554394579645638756632417635430 -333302106653766675873339799535474646879996789788987875587977755587884588498366525263657241244563411 -021603345313213632267754575346995947848565695878969885767869775868759846376874235783854235221066060 -451051105676415353834239879477689664878678578559658579558858859685656646333643282578751361221450043 -323133151167312457234657559765757999468467698869969666865897797857485499569838464565771443341433624 -351226435216677645378442636393858569688464696659679658777559879978765539986842833528347477142364355 -312522015134552576843564246393479975856585945659576986575979678487794748787843877358147735663364153 -436221405132742616333723774335457748498747869445768557777496645469557694497322763335217424704452516 -531453464276746646458848784658447874499485559877948986585644748765566863496685884585514544145343261 -124004035175455643547236885494794479865464946999998568586788689967343377758845738571672264321061003 -200155306351543777457257657968974568856495865454798449784799858884637386375422526864243565062364102 -445601414321444235648773664866559437996644487476459565964785659539635568456223755627145663416360463 -450034302502443262354377457789598776596746648495968457946465588399656898646426472411777146341644150 -023146264504256441756645634487555664987468946766784647877558359936934483654774826324735714633603030 -333342045300642417421427522458538378785933374679488696549488964673985948667688553344343522163201010 -455545402043235615564685485576228935958544883643955984493945756635487843653852747147246556553523510 -521503005555124536565566284723484688885348465998948435535997783785742684873228712152117622054235215 -312504066020457274731625463858577544637764966338466339435677364997568623562286441516367015430243140 -205031053461063473777474186844553532897797357638539497889554739476455778658267742121765420506102155 -234254241452503617412556672484735427269749864873783849964559983463526474536714377341620430652445005 -005122256601541121767617243673775345873688335643477574686454362545566824655271216641353663405312143 -433412443503526366274346321587248483458325774873734889987843368227357425636513234740304061623033442 -150425005143315445343366357776572258884478742563678357783845862235758564513525337622046146253440425 -225155323264631456635462325511885764326675428846268646575225734474437376612544667111053406332354205 -035014011000365630427277363261244836668367562448734772533252234588746775752633154601553624254020455 -012332415442566650666617225747354638747746384682743326746678826728355131225614470132623462424342514 -013524113311511615516563562155256314453777643324383464236254565752742637247411046651633511302344051 -212122212430404140032134131564756752725322885466434352224875446515552517267614410524244004301240143 -311400235445132520254065617566464245641623888587556667385287735312776421161334445544251524420400232 -440215452341344043062300567544524332733611636552822742567416277354477557756312354353622415135520342 -212430430313114143406656305336551452762327233736172563224242725162751616161102623013055041203553040 -321010353433305435042151016603142762425754273737777221111751751754217734105034366116400050235001301 -141012030043441152515110066520525231112547624256173331346341451761472053411546323404310404443302411 -133133034522454043232213312145664546126452755453724144154261454733124054403605004150535010413000334 -331412441152240551104612131344064131112564126362561532523311462604061151623121543003234021543312303 -010301442302500534021525552205536466144454523741535255444641345430402356234514221410435324321440211 -222301014410242404221240250563134040056104626021173454550103400400616550340400310015454450242211021 -233412422204111420244300456264320032401430366334634641441411125102262216452333414201235210001133200 -132244430320123233143125240232350142156620032556633233042303530460352401020133104323414224314240333 -003213243020203044035550441012322051645661162162123160565554312321050133555533333123214002014231123 -000032030402033315113220225514041611664662663525144303562161423513133325130431534323303033322212313 -101211324120322333355055001035515221630532526633042003421442155144120444232152535003241233413001002 \ No newline at end of file diff --git a/day8/program.js b/day8/program.js deleted file mode 100644 index 619563a..0000000 --- a/day8/program.js +++ /dev/null @@ -1,125 +0,0 @@ -export default function Day(data) { - let treeMap = convertTreesToMap(data); - initiatePart1(treeMap); - - // part 2 - let scores = []; - treeMap.forEach((row, i) => { - row.forEach((tree, j) => { - scores.push(calculateViewScore(treeMap, j, i)); - }); - }); - - scores.sort((a, b) => b - a); - - console.log(`Part 2: ${scores[0]}`); -} - -function initiatePart1(treeMap) { - treeMap.forEach(row => { - traverseRow(traverseRow(row), true); - }); - - let rotatedMap = rotateMap(treeMap); - rotatedMap.forEach(row => { - traverseRow(traverseRow(row), true); - }); - - // count number of visible trees - let visibleTrees = 0; - treeMap.forEach(row => { - row.forEach(tree => { - if (tree.visible) { - visibleTrees++; - } - }); - }); - - console.log(`Part 1: ${visibleTrees}`); -} - -// function to rotate the grid of the map -function rotateMap(map) { - return map[0].map((col, i) => map.map(row => row[i])); -} - -function traverseRow(row, reverse = false) { - let from = reverse ? row.length - 1 : 0; - let to = reverse ? 0 : row.length - 1; - let step = reverse ? -1 : 1; - let tallestTree = 0; - - for (let i = from; i !== to; i += step) { - - if (row[i].height > tallestTree) { - tallestTree = row[i].height; - } - - if (row[i+step].height > tallestTree) { - row[i+step].visible = true; - } - } - - return row; -} - -function convertTreesToMap(trees) { - let rows = []; - - trees.forEach((treeRow, rowNum) => { - let row = []; - - let outsideRow = rowNum === 0 || rowNum === trees.length - 1; - let rowLength = treeRow.length; - - for (let i = 0; i < treeRow.length; i++) { - row.push({ - height: parseInt(treeRow[i]), - visible: outsideRow || i === 0 || i === rowLength - 1 ? true : false, - x: i, - y: rowNum - }); - } - rows.push(row); - }); - - return rows; -} - -function calculateViewScore(map, x, y) { - let row = map[y]; - let col = map.map(row => row[x]); - - const score = [ - calculateVisibleInRow(row, x, 'right'), - calculateVisibleInRow(row, x), - calculateVisibleInRow(col, y, 'right'), - calculateVisibleInRow(col, y) - ] - - return score[0] * score[1] * score[2] * score[3]; -} - -function calculateVisibleInRow(row, from, direction = 'left') { - let score = 0; - - if (direction === 'left') { - row = [...row].reverse(); - from = row.length - from - 1; - } - - const fromTree = row[from]; - - const testTrees = row.slice(from+1); - - let blocked = false; - testTrees.forEach(tree => { - if (blocked) return; - score ++; - if (tree.height >= fromTree.height) { - blocked = true; - } - }); - - return score; -} \ No newline at end of file diff --git a/day8/sample.txt b/day8/sample.txt deleted file mode 100644 index 6557024..0000000 --- a/day8/sample.txt +++ /dev/null @@ -1,5 +0,0 @@ -30373 -25512 -65332 -33549 -35390 \ No newline at end of file diff --git a/empty/program.js b/empty/program.js index 2101edf..c3a2c06 100644 --- a/empty/program.js +++ b/empty/program.js @@ -1,3 +1,9 @@ -export default function Day(data) { - -} \ No newline at end of file +export const part1 = ({ input }) => { + const result = 0; + return result; +}; + +export const part2 = ({ input }) => { + const result = 0; + return result; +}; diff --git a/helper.js b/helper.js index 952d5b3..70c210e 100644 --- a/helper.js +++ b/helper.js @@ -1,14 +1,14 @@ import fs from "fs"; -export default async function loadData(day) { - const filename = process.argv[3] ? 'sample.txt' : 'input.txt'; - const data = await fs.readFileSync(`./${day}/${filename}`, "utf-8"); +export async function loadData(day) { + const filename = process.argv[3] ? "sample.txt" : "input.txt"; + const data = await fs.readFile(`./${day}/${filename}`, "utf-8"); return data.split("\n"); } export async function fileExists(filename) { try { - const result = await fs.existsSync(filename); + const result = await fs.readFile(filename); return result; } catch (err) { return false; diff --git a/index.js b/index.js index 8d9011a..e69de29 100644 --- a/index.js +++ b/index.js @@ -1,30 +0,0 @@ -import loadData, { fileExists } from "./helper.js"; - -if (process.argv[2]) { - try { - const dayName = `day${process.argv[2]}`; - const filename = `./${dayName}/program.js`; - - if (await fileExists(filename)) { - console.log("found", filename); - const data = await loadData(dayName); - const { default: Day } = await import(filename); - - console.time("Day Execution"); - Day(data); - console.timeEnd("Day Execution"); - } else { - console.log("The provided day does not exist or is not yet implemented"); - } - } catch (e) { - console.log(e); - error(); - } -} else { - error(); - process.exit(1); -} - -function error() { - console.log('Please specify a day as a number like "node index.js 1"'); -} From 5d029fabc89173fe302c0c2881d049beca069e7f Mon Sep 17 00:00:00 2001 From: Rene Pot Date: Fri, 1 Dec 2023 22:12:06 +0100 Subject: [PATCH 45/59] bootstrapping --- empty/program.js => day1/index.js | 0 day1/input.txt | 0 empty/index.js | 9 +++++++++ helper.js | 33 +++++++++++++++++++++++++------ index.js | 16 +++++++++++++++ package.json | 1 - 6 files changed, 52 insertions(+), 7 deletions(-) rename empty/program.js => day1/index.js (100%) create mode 100644 day1/input.txt create mode 100644 empty/index.js diff --git a/empty/program.js b/day1/index.js similarity index 100% rename from empty/program.js rename to day1/index.js diff --git a/day1/input.txt b/day1/input.txt new file mode 100644 index 0000000..e69de29 diff --git a/empty/index.js b/empty/index.js new file mode 100644 index 0000000..c3a2c06 --- /dev/null +++ b/empty/index.js @@ -0,0 +1,9 @@ +export const part1 = ({ input }) => { + const result = 0; + return result; +}; + +export const part2 = ({ input }) => { + const result = 0; + return result; +}; diff --git a/helper.js b/helper.js index 70c210e..11c1d84 100644 --- a/helper.js +++ b/helper.js @@ -1,16 +1,37 @@ -import fs from "fs"; +import { readFile, access } from "fs/promises"; -export async function loadData(day) { - const filename = process.argv[3] ? "sample.txt" : "input.txt"; - const data = await fs.readFile(`./${day}/${filename}`, "utf-8"); +export async function loadData({ day, dataType = "sample" }) { + const data = await readFile(`./${day}/${dataType}.txt`, "utf-8"); return data.split("\n"); } export async function fileExists(filename) { try { - const result = await fs.readFile(filename); - return result; + await access(filename); + return true; } catch (err) { return false; } } + +export async function argsChecker(args) { + if (args.length === 0) { + console.log("Please provide a day number"); + process.exit(1); + } + + let dataType = "sample"; + if (args[1] === "input") { + dataType = "input"; + } + + return { dataType }; +} + +export async function partRunner({ part, input }) { + console.time(part.name); + const result = part(input); + console.timeEnd(part.name); + console.log(result); + return result; +} diff --git a/index.js b/index.js index e69de29..9fe95b8 100644 --- a/index.js +++ b/index.js @@ -0,0 +1,16 @@ +import { fileExists, argsChecker, loadData, partRunner } from "./helper.js"; +const args = process.argv.slice(2); + +const { dataType } = await argsChecker(args); + +const dayFile = `day${args[0]}`; + +if (!(await fileExists(`./${dayFile}/index.js`))) { + console.log(`Day ${args[0]} does not exist`); + process.exit(1); +} + +const { part1, part2 } = await import(`./${dayFile}/index.js`); +const data = await loadData({ day: dayFile, dataType }); + +partRunner({ part: part1, input: data }); diff --git a/package.json b/package.json index 35275ad..02bc525 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,6 @@ "description": "Hi all!", "main": "helper.js", "scripts": { - "test": "echo \"Error: no test specified\" && exit 1", "launch": "node index.js" }, "repository": { From 4a0c00dd1fdb484bfd6b16876d9358fdf169b941 Mon Sep 17 00:00:00 2001 From: Rene Pot Date: Fri, 1 Dec 2023 22:12:12 +0100 Subject: [PATCH 46/59] add day 1 sample --- day1/sample.txt | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 day1/sample.txt diff --git a/day1/sample.txt b/day1/sample.txt new file mode 100644 index 0000000..1ba8437 --- /dev/null +++ b/day1/sample.txt @@ -0,0 +1,4 @@ +1abc2 +pqr3stu8vwx +a1b2c3d4e5f +treb7uchet \ No newline at end of file From 99a519451a6eedb0b6819d854a998c355d8fdca0 Mon Sep 17 00:00:00 2001 From: Rene Pot Date: Fri, 1 Dec 2023 22:14:54 +0100 Subject: [PATCH 47/59] bootstrapping --- index.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/index.js b/index.js index 9fe95b8..c99df49 100644 --- a/index.js +++ b/index.js @@ -14,3 +14,5 @@ const { part1, part2 } = await import(`./${dayFile}/index.js`); const data = await loadData({ day: dayFile, dataType }); partRunner({ part: part1, input: data }); + +partRunner({ part: part2, input: data }); From 454f8fac232666bd8120f55d568f8bf9ff5945c1 Mon Sep 17 00:00:00 2001 From: Rene Pot Date: Sat, 2 Dec 2023 16:03:45 +0100 Subject: [PATCH 48/59] day 1 --- day1/index.js | 47 ++- day1/input.txt | 1000 ++++++++++++++++++++++++++++++++++++++++++++++ day1/sample2.txt | 7 + helper.js | 8 +- index.js | 8 +- 5 files changed, 1062 insertions(+), 8 deletions(-) create mode 100644 day1/sample2.txt diff --git a/day1/index.js b/day1/index.js index c3a2c06..38b34ba 100644 --- a/day1/index.js +++ b/day1/index.js @@ -1,9 +1,52 @@ export const part1 = ({ input }) => { - const result = 0; + let result = 0; + const regex = /\d/g; + + input.forEach((row) => { + const matches = row.match(regex); + result += parseInt(matches[0] + matches[matches.length - 1]); + }); + return result; }; export const part2 = ({ input }) => { - const result = 0; + let result = 0; + const regex = /(?:\d|one|two|three|four|five|six|seven|eight|nine)/g; + + const numberMap = { + one: "1", + two: "2", + three: "3", + four: "4", + five: "5", + six: "6", + seven: "7", + eight: "8", + nine: "9", + }; + + input.forEach((row) => { + const matches = row.match(regex); + const firstNumber = matches[0]; + + const first = numberMap[firstNumber] || firstNumber; + + let lastNumber = false; + let count = -1; + + while (lastNumber === false) { + const testString = row.slice(count); + if (testString.match(regex)) { + lastNumber = testString.match(regex)[0]; + } + count--; + } + + const last = numberMap[lastNumber] || lastNumber; + const sum = parseInt(first + last); + result += sum; + }); + return result; }; diff --git a/day1/input.txt b/day1/input.txt index e69de29..2daa7d4 100644 --- a/day1/input.txt +++ b/day1/input.txt @@ -0,0 +1,1000 @@ +twovgtprdzcjjzkq3ffsbcblnpq +two8sixbmrmqzrrb1seven +9964pfxmmr474 +46one +7fvfourgkfkkbloneeightdrfscspgkdrmzzt1 +15two6six +htxxfmfd7nb +sixfivesixeight4pfsgxvn9sfjfk5 +pmjjpggvhkrq2 +tvbrkhlxdsnine65 +four5gkrptqninenbdvffour1z +foursgnlxmjtcrrfour7 +3onetwogkhmllzvrsqzhhnkvdg +nineninegxknqzpsix28 +1seven85189mv +gtwonejcncdlhpsxjrxnmpvfgtdrcdtd2nm +1ninemxzntjptl +qcmqfour2onesgplvgzkdltqtvzhtb1 +seventhreerxqvgkzqhfxfdhnp628zxtbjklkpdtwo +fjdsgcsqppzdthreefour3one3lvmpm +sixsevenfivefourxf4mzhmkztwonepzt +nineninesixskjkbhx6nineoneightj +four6nzqxhhnrg +86fiveone9dhrkkh6 +8ninetvnsrcsbpn +two43one +8vfvbrnclnmthree8onetwoeightthree +one2czxjgbzsn46ktj8twones +qfnlfivemqninextzppkfkb8 +ntvcmxsevengxdtc3five +8lsfkbbxkscc +seven5817smvjfpdktwo6mdfngz +92hqxbchfpnine +tvxbltz53oneninethreeonek9 +hvvjhd1 +six1six7sevensixqcvhsfour7 +seventwo2 +2svpbhrlhfjhbkf3fourvvspkfmbvztmtpcxndfnine9 +fivefour42 +sixvstzdtfive3qzmbbx +rfcxmthzlgxgrmjncszdvlnp6 +lhlncfjlhrqrfzr1 +cqnkmtfj5 +tctfngvrxljlt53pntbcfrftjpjvzqbqxh +6fgcdfive +4834sevenvssix1eight +rpxcthbpmhgrcxk4 +threecthhnine781 +pppqkscmthreeseven1sixfive +2tgrmvxpthree6 +7ckxjmlpkqqqjtfiveeightbmmdoneighttnv +six2two +lsshzhtdfour24 +mrjjgzsb92fivetwoxh3 +5fourcqhk3two85fiveeight +lsxpkxfmq97one +b87twosshtxkkplq5zkrrqcmfn +threeqsnd64hthreeldbtfkqpbqpdlmtwo +eight2one +14r +71fourzrmsevenseven9 +threesixmmcjzzml4 +stnmbsix41 +cztnnflpcl4txplfour +five6six4kxv +5oneqmmbnvgvbq6vsncbrjrsix7eightpzkhvrjz +kflckfgxfeightlr37fourfiveseven +9three7three +rkxbqnine7onevvqgzcvvjthreendkddfournine +fzzfstwo44vm +19648 +7fivesixhdxhlgmv9 +six9hzlctfiveonefour +66eightthree4nine +jcgk8three +tbctwonefive2eightsixbntmjceight +ninemrqkzsevengvq6 +rsmmpmrlmq92fourfour453four +6eightbmjhnpbgnccfninefonenineglkfgp +8onefive7kn +eightrgzfdksevenftbvkt455oneightnl +3vxtwogxpdhjmqskjc +shzvnlgvvvthreenkv14eightbcmjd +2sevenlbq +1zfjpz1mdfourstvj7zpfxxlqf +twogm22trvplbsk29rbjtvctqr +twoqpgcbskdgh2tktbbpnzll7twoxljpdhthree +5nineeight6 +936 +218ptffour +1clztnnsix1 +bsevengsxbpjmbg5eight +1cpeighteightpb +vrlnveight2twopxmtwo +fgrjr8six +5sevenspppgjtxbtqlzt +5sixczhncsix2qcqsevenfive4 +kgcdpqclsggzm79nine +eighteightone6sevensixthree +92eight7plhftxkntl1two +5dqrhhqrrgmvrqznbgx4three3 +twoone953cdkm5stzdbdh +heightwothreennzljtptwo94 +6sevensevenfoursix5nine +cnbslkngtk9five58xpqvgjpqrnpjnzbk +onebrcg1bnfivekftnzpclqxvhchloneightzrn +four855dpknm +4hkdseventggkffhrkvsixcrsqjsix9 +8seventwo +two9sixthree9cdrmqntmcv +525tg4h +five7kxrlmq1bzhdmhtgglmvzrtfbqqd3 +bnbbsbhlcbktsqlpq69ninesfxhq +gndxnlmnrmnk29qkfxfoursnnbvjtq +5bzppjrgcpk +2three79pmgtcgmtdf2fjh +sixmmpbmtznseven62 +4rrm +ztlthreesix28ninesix +j7fourfourfbrlxplk +zjhrqtqsix1 +4three6hhndrlszfrgphcbonenxfive +jmg8hfsxfsvdxz3four7jfbczjmdhbpn +39ptfzqjfpnpxrnf7eight +three6jrcrgpfxg8vxgk8 +57kvbczxn5eightfour +8xbdbrbpjp +sixtrhhl2tktvvmkffl5 +three6fgsjtmnine54sm5k +ninenine3stfpft2nine +one61onenrhmtwos +pzdq8 +pltd9sjdkrscxr25 +dzsldkmzd1 +vlvpfmz24sevenshcrvx389one +1rfvlnmfkdbmdjj +sixbzzbftqggn8zggtbcd +hzxzjhkvd5twofivedxfdlrdeighttwo +six9nlgcdznskrsb +sixrxkfhvsjxzbt4fivenineninenine +dsbmqpgmf8nine634two +fourknfzpthpf1 +two9twovbmldd +5zgnnrxtwo2two2 +fivezfvzfdxkmrbvtpdhqbmdhcthreedvlstmq28 +ppfqqq75seven954 +sgtjpsix3 +twospnc9cnchkzthreegj +3eightwoqs +goneightghmkgksqfk2two2six +sixthree6bjzpqlsbgq2rkbffxtmprpddkxv +rkv43 +bzfnbq8onefourthree4 +3mqvr +fiveninefflpllcqzonejqqbtwofive43 +tvoneightfour3three5 +mvhlv6bzbjggrsvvxh4dfcpmrnhnq4 +fcrsmfmpnmkfs3fivekblglhqmvfourchc7 +svfmfbdrgd81one4 +mf7threetwo8nine1 +qngfr4gnnxbszqzsixp +px5gfx7two5seven9 +4gp +8lxkgvpzxch6 +3mdgqrvtgnthqnhpxteightfour +onethree899btbpjnxxjhone +fnjdzx5vrzc +four5twofour +9fivetwo2 +threezlpsdhxvdlfpsvkxxnnine3 +hvnnq9two2fourpdjv +bvjkdg9four1 +2412 +threethreeszmhdndctj1eight8lcqtwo3 +cdnmjmxqrz6vrkkxtfour8cc +njldrqggdnfsix5 +9csxcksh6three697 +92four2sr32 +3jdpqdjjct44oneone75pjgkgv +576sreighttwosixxzqmj7 +twoscdxdlfddmfive54 +ninefiveznine33 +threenffnvx3 +916tpsgsxmtml8 +6five3 +fdztvpctnr5dmbjnrjslr +16four +4oneightk +three5fouronenm +threezrksvlbdb891zfbbcdrbpd7 +five821ndfftdbmbr3nine +ninehvdxftmgcvnkrlrvmmbb4nine +xkkzphgfv1two +3pm +ninetwobtjxdvnhv12 +fiverbkmfbx8fiveeightksjzphkrj23rdlrtnb +kseightwo2fivesix +5snpchthree3 +71oneone +6frxncksfxboneftdpvmnfdfxreighthrmnqc8 +two48mhgdtlp246four3 +993three8 +threenine7twohbmcrpd +9bpdccqbts +kptwonejntgcdqdfffour4twobvtxnhqkl7 +1637sevenfour +soneight6lbcrzdmhltpbkbjfivechxzfrqqgfeight +99five3hjvjrdmgl +qncqlreighthkfmbbfqx87five3 +7jqkdsfour +ninemmvcxlkcrg1 +mkdhgzcvmseven3onesnkhtxbgf7threestvjqn +nttgqsmsl4five1eighttwo9zg +one2ninefour5 +bdfbveightseven1lcrshdgxznineeight +qsnvsonezqhsjmfive9one +6kvdrgkgznf1cmklmxgnine6 +xkmzzdpknl661 +ninefoursix7gnbmzd37 +mmxmfnsrmt2bnhkmftxnjsix +fmhsrdtnrxlqgjttlgvmqxgzpl756sixllmdvblrvrrzkqgb +7xmppbvd976dqt87 +fourzdctfglzzf1xdbfmrbfeightwor +8thncgqzvr989lthreeseven +5qmrzeight169 +4qgvkmninegcsdgcthsp62onehczjhdxcgm +25tlppkmctwo2 +668four4 +rjbxtvfktchflstwo639one4 +seven6eight4onehfztk +five53 +nine33threethree3pznjbtxjmrrxm +19six +fivethreefivegxcqflqhjrn3fivehcn +vpbntqnpkjfninesix6341 +7eightb7 +bktffkqsx6fzvpnjhk +38jrjprtwo628 +77tplflrp7 +4one9one6 +pkdhkbxrbshccxgknrjgseven44 +49rthxdvlmeight +5twodhkpfn1 +znine2fbsmeighttwo7 +5ninexvmg +dbjbfmqtkp66 +mdsrdjdnxkzr3xfm +two9twofive3 +9kfivetg2five18 +6fivenine2 +2dlgpxsq7sixone6 +tnqxgjbnc9bhqbgtwodxssml +18sixcjthreetdtprgsix +65sevenfive9nine4seven +nine34fiveqjdqc +threetzvxrb5vspdhrmjcnhtrzkqhd4 +67nine8jrxt39 +443oneklzsrtwo4tbbvxblk +xp7fourseven +ktsrninemlldztwo5ghqfgh55 +five6eighteight7mtstgjlqmngzonetwonec +rmfourseventwothreedjtvf9 +rlsgqhhvcdvthreekzjdssslmsixfour5rxk5 +sgnfjqm4fivefiveone87nine +6twoonefive +sevenrftrnqrjs1 +bcfgjklzfbnineninefivesrpcqtwo4 +threek7seven1fxslmvnhmffqqvbfbhlceight +sixxzqz9fivethjgdv2 +nineonefivesixtcrjd5 +5645ptsjfrszgr8 +1threezkpgczxr8four3oneqm +tvlfrfcnlc56eight8ninesix7seven +7clvmrdvdgjg +7mcstlktwo +dlxlpchr3eight +3ninelrzgkhx85 +jlkqzonefourrvlptlxxgrthree4six +rxhpprsqtd982t +six4671nineonesix9 +eightsixtm9vngskjglgvrbsqgcmxczbqqvxqxfj +vxfmc1six1ninesixnine +39fivesixthreevmpm4 +xllclztxcxjskgfourlvggrvr25fourthree9 +31sevensixninedpfrvvfftc +three64ctshdpcsfdjth95 +fourgcqf8sixfivepsrdqvrld +5nine1qldrqhvfour +5three1three +6hjbgdqjtlppzoneninesevenqlmvgkq +eight1three6sixthree5two9 +17141oner +five1two7 +sxcfxblvfbtdtlkdpnineztnsfdkmeightvrr7fivejj +eight183krc8nkqk +sixthree38fourkgfbbv2sixsix +922threeeight4moneightsm +3threefive8bdzjs +onechvnhrfthreebqfive9 +8sixgkvzgnfkjrrxrxvbvgvx +meightwo1dnbbpzrxftwo8 +253lqt1bzfpqznz +klsgclc549rbksgrbbh56 +3xksqcrhdsthree +55nxbjvps3nbmf +7qzzfourtwo1688 +h5skqsrnnpxdone5fivefourkffrsblv +3fourfive2 +25stdpqvgmzg9qksix5three +fivenxhkvbscrxx1j4 +dtszrbcgpgxbh1 +fivefvrp159three +68mdjsggnbtwokmthtwo286 +xtwone7bkhjqkmmdkxvqtxfkpmckj5 +btwonetjkkdfqphr2gkknfz7one +ninejgnxcchjqsevennvdjvttnqqsix6 +395seveneight +lfrsoneoneeightfour6 +four9prvhcqdnrgjl +qhbkninefive73six8 +sixkqjtrs1hrmnt +5lmctnqtqc49eightnt +sixghthgcnpfeightseventwo3 +vvvjbvnjfeight41nine +9gkxpcrql9three4 +65seven4eightmjnh2gbjjstdgb +8four68seventhree +19924nine1lxnfzgt +fgjtbsfour4nine4vqfznznqxnsevenvzn +fiveone9bzshjmdvdsixxknhmmqskone8 +xqjzgmdmnfivefourthreemmksmdsix6cct +eightklfnlkb9 +rmtsdblmcghszsfgd66seven1bct +twoseven6 +psbfmmmrppdfm5ninetwosixnine +rkcgdnslc9pjtqvgdmbvpkbbksxgr +mxjpns69 +rspjpcv4fourthreesixfourninevlfive +2dgjgdn +66five8qxeight +five93 +six7twovssixsixztrmfdrrvgqtdhmh7 +32sqltqgoneightd +4five8tns1six +277 +pmrzrckf6 +8rglvpcttwo1twofive +fivethree644hrphp +fdpjb6 +dfkpmgxfgfmtklbffk4sevenfive +nhqfpnvpsqpffour6neightfour +threeseven9eight67three8five +txttqnnineonefiveninesixlbscpqp1 +three2sixtwotwo7smkmq5 +8bjzjrnpspnine5 +5three659fourfour +qrdrk7fouroneseven +three7threevhct +mpjpgfbt8five6fqjbghvbpcnine +7zonesevenzmlvfvzn +2hzldqdntffxhfpxlghf6threeninejrxngnjq +dfppvqcvthreessnnm65tqtn +56nine75rdkxdcmj +8twozvjkdltz4sevensixfive6 +vzpzllmbghcccksevenjgjghqjr98 +fgjsgxlh48sixg3three8 +4eightfbppqltgxttoneoneseven3 +six1eightddcthzd +fiveggljcppdeightnine5hsbfrtninenine +2xrdtzfnhpvpgone +982 +two7nine7eightnine4 +one431 +eight9fmbfqxgzlskgjrrksr8six +9zhvdllsszd +4pnkpxrgltkdbztlnz2 +4ninebkh6ninefiveh +five9ninevrzxhfnggfourfoursevensixlncsfdvrz +rqhjjxzeightnineseven7fnmbkrtqgr +8xfmqdone +pnszhd1trqb71gfhpjpq +9htfkgbxlht +sevenoneqgx29three5six +fourdlscbpbpb9four5jbdjzqqdthreerhqdsbb +five31sevennbmrbhtthreebzqxvthree +one4c +three38183threesix +6rtdclcbfbbdbeight1 +2one8xdeight +2sixsixtwo +nine3pcjthmlmtljkrzxcdxkbmgzneightzcmtwohpdpkvqg +9two81qlhsrnfpdksdkd +threejrgxc4seven26njlmtbheightwodjh +lrjzhghhpk342threeninejskdnjjltt6 +46threegj +ninedgpkqblftq2b3four +3951sixssgmjj3 +8jteight4 +three6mdvfkgrxcjmfoureightfour3 +hvbf28 +9fournine713six3 +four1seven +763twoseventwonine4 +ctpfmnsvcthree9sevencbqtjc3 +sevensqdhvxd36 +fourninergfmdxpdbt1ninefour +2kptonesixzpqrsqzhv +h4qcscfxfctjbqnff1sevengxvjjc3 +d8cnjksdf +hzcgnine35fcbxtlg8rjhzbjfkv +jdvoneightdpfvzvp758fourfour +four27jhrgqnrjnkzffour5 +fivetwoszrxz2fzfrbgqntjf +onergnqpl3 +ccfqnc5twothreefoureight +grgsgxsevenkvzfjppnzq2sztcfive +9two94onesix +nine7seven7 +eight36 +plgsevenvfljnqvtfq5two +threethxdbnz49two2vdxbpqtpb +cf9fkrbrvjhssptthree +one5lrcn3klrcphllmz9 +onesix6seven8tzgfdbm +964khvfxtrljs88 +trszhb48fmseven +tdfxvnhrzv8threesevenkgp +ninegnmjxzbtcb32four9mlpkbfqdxdkoneightg +sixnineeightnhlqfslb2v +one83fc7zs +pxfkljdbdqqqvnrfivefoursg5nine +2onevh +1fgjrsdlgnbmsbzsevenfive +3nine87pmsqqntwojtnrksdtwo +two59kltcxhzszhdtwo +6451 +sevenzscjhgpfgsseven7threeseven4threedlbtxtcvl +eighteight8sfsvhbkf9jgfrddx +qlvdplcqtrcj2eight4 +sixbcpxtjt4onetwothree69 +91fourrbblcl +twozvqbsx4 +twogfh73 +onesixljjrlonethree3rxtwofive +onefour62 +b7vfplpqnine5 +67dgbmmjsevenfivedktq +7foureighttwo4 +sevenctctvfg51tsbzqgcvpvslqb +mjkeightwo7eightsb6one5xzsix8 +151dht66 +93tkbs +29two +foursixtwo5gprqslprxkrbfbmsl1six5 +one3six3 +three66rbh82bgtfzsfrkhrv +2sixfivethreefiveseven +fcjttg4onesixtwofive +15seven54 +5kjdkr9htl +gclrsklbvkfbdcb9seventvdtdmmmksh52xkxtpmfpvk +spone7eight5xzjrlxrnzjtqgpdcgrsjn +vs3fourdkdlhx7rb +9ldxtdk3 +4dppnthreetwodvkhjjrqh1zbqxntvtxgchv1 +1sevenmsdrjgqfivevphqmxzghktwo6fdvkvqhj +tbptrcvxhs9qcdxcpvp +8five2ssrrhgtxfone +3clvbm2g961 +four2onegkhbdfive5vxvxvtxglg6hxrtlhzjh +kfhcmflznrg9qnkkxqcsm2vqqtrdg8tjkshzpnddvd +eighttwojfktjcrqthreepssfour39 +359nine2fivevvscbvggjhbnnzqtxfsbpb +vvshjlcfqt6qjvfjsix2tgsjbdxgppq1jmr +ninehhmeightcvqskvjptz2kdnhpptvkz54 +39threefourndztxcl +sevenfive7 +csmmpzfsix41 +9cgqxtpdxt2 +3mpzvlxrzvhtj +fourkqhzsjjjvx3six1 +52one +nineltplrl8tfzqmnqeight +sixfourdqrfvrvbvfzzgb6 +mqnxglzjk6qqhzksklvsmthreesixmvhmhbdkqpnxcsgvcsl +65 +zqconeone85three +rxnhdflsqdqglxdmfxlxponeseven4one +88nkgcglftwodfxfhzxbqdpfrqmtwonenf +jzoneight9htkkpszpcqvkmlvl +388xnq +9xhlrqnkjpthreedfknpmqqtwo +4onemfzjfvmhhfive3two5pjdcf +djqjglztxs5nineeight8jdzone +four35ninefourfivethreecnhntp8 +gxqxl6fourlfdtndgdql +fivenine6 +1pqctbpbbgrmgqfqbzbjjt6 +xzvjjfnfr28jblqseight +ctwone23 +6sevenqjtwo +8nineplhlmsgjvs1 +lmjgmltfivenine9 +8gxnnnjonesixtwotwo1 +2seven678cdxhkflhj3eightthree +djzninefour3one +vbqhjjhpzg86rkzdjzfj +eight1twotthreeqqlr +bkxseventhreezcjvdkxzksxrznp6four8 +five77xcvphzcnlfbgbxnqbhfrldg +71qxqdncxdjsix +eight6one6jnpspgmhngzrfneightzdnrdhj +xb9skhpnfjsmq +jxgtk618fiveone1zr +8dkdnbfr +3llplnp4dzdxfhbvbn7two +eighttcgrbhrspktwo6eightddxhqqbprrf +eight2mpmzsevenrcbmsqg2cxjvmblnqbqdjsl +seventwo54 +koneightsix22three +zdsnjr5vxrhkthkr8qmddrzclmrkprmvbll +fbkmfxncztwohjbfgkhgvcdkrpnc5 +ksprkgxkjnineseven3fivebjpqhrmbdtwo +fourpss5 +1three9fbnnrjcgllkvcs6 +oneone9kjchnfsv9ffcdspfive54 +26ninejctplmsgb +9ftfjrmvjblzqqmrdczpone3bphtmmkm +7lpssdtbc67mhnthree9cndbsthree +fourfour49four +nineeight8bzeight +128zpqftnxnqz2threettrhscsll +1xdtxcg4tkxtsnl +hmxbjczvgmcrd9mqsfivefourninethree +5hseveneighttwomgxmlmskr8 +zdtbtszzkbk5 +eight5nine6xthreefour +9rbfcnjztthree4v9vn +voneightqdtnrtc4 +86cnzxs2three5 +eight9seventhree +tjmrjgcfldqtbrvnzzxshxkrs3onefour +2rxplslzcglskjxgthk76cczdbxrp +sevenpdvsbhkknxqkqxfcz6bhmkxmhdbvhcvvhpmv49 +three1twotwopr2lctfjb +zrbrqmh87dmxzmtfvthreelsleight +34dcnd8eightwombx +two9xnqtcfgq8tsqzvd3three +nine5fq3 +eightsixfivemtcgzlbkheight4 +qlspgfndmx5twobtjgzgvzmcone +5zlldrzrffgggtwo648 +seventbqtkpfivel6 +hjqbmfnnqzmf4 +fiveqhdfsnjvqtwo6two +jftwone7 +4twolqvglgxcc +twoqjmgjtrrjjt1eightcpj +eight9sevenmlkpsbzmtnhdrkbmj +trrpdninesix8oneqxtrzf +5sixtsxqdbnczhbvmfkvkc +tvbf2 +sixtwonjssgpljqrxhlstfx4xbhqzlqktsixfour +kfxccb45tzsftztxjhgnxqsxknl29 +tworjdcgsgvsix6 +eightjbqfive26gfspjh3nine +2sqhleight7cfkhzrsevensevenfive +kzpzjcrl98sfive +sevenrsgtnine4pbgvrbcpf8 +25q3qkcxlvhrxdonednbtcrrvjlnngq +twothree4lffpxvfcgqrkvdgzdsdjxjsh +seventhree34seventwofive9ckm +three25skfkvqdmbmsixxgqx +three1eightthreesix4 +threeftjlv9 +6spbhfckxcdrxlcg6hxcfive6five +8drbfjrgzvs834slzhsbgrjm2seventwo +sixsevenfmrvpqbgx4ncrmvfkjx62 +lqfsslkmstwo7rgnqeightthreetnlnonehszkrghlnt +5onethreebxxfstvd +djchrbjcrddcqfourmnninesevenrdlpfxthr2one +three3threeoneninepcrjr1 +twothreernxmhmtbn2fourtccrqhqs +lzzdpfourtwo1six +two3one3 +zzcnprtjdr22286 +seven5qjlfrhj7seven8 +seven99 +mtztq6one37oneeight +mrfcssmzxpvcz2sevenfourfivelpzqkvvdxmmpmxqshskfnh +nine8rtx71 +1llzpvcdgmvoneonepksninefourthree +gbbvkcfive18two8twonineseven +2fivenztsix2nine +gjqnnr422seven4ppbsqdbpcfour +fourtwo5one7qfgpmmphdtl +pglzjrr4fivebclpf +slrrcqxxhtwoeightseven6 +dnknxxkbjplrkjone2threesix9 +htctqnkcmfqdxrzd9eight9seveneight +8sevenfiveninermlrrzpcdxkjkczhgpx6eightone +eighthnfxhrtssbmfxv6v +6fp539 +sixzmsfqjzpvxjkhfqcrbss7xgg15 +nine5ninevddknzczpxgzjx +jbcsf3 +jjbstlskzxc5nine +jlrvgcbch7tnpfjnczdsrgddrseven156fvdmfhtl +one89 +three52sevenlxxskf7gxh3gb +eighttwo59mqzdlqjdkkxgjhnktwoone +519six +1onemneightsixdlqx7 +7fgszpqcj +sbfjtrfvnv6four +qtwonedvkninercj8 +ntrnzldltrvtcsh8eight77sprgsvfdljthreecndckrzmjl +gtspn2 +54six6mkjznlb +sevenonethree3sbpjqgltv +four8two +xdzrskv3974mgvjlhzbkddhcxzzxv +6three1mtlxshtxfpnine +14threeseven6 +37threeonefpfgmz9 +three3sevensixeightfive1nkjtndgrd +2dsmr7qhmnrgbsrvjmsbctwovb +gkdsnnqzlzdvcgthree3fivedzvpcfive6one +3vkftsclsxtxmsjeight +sglkcnzgz4mnhgblxqgdv69 +tpcjb4one73s4 +sevenrvhhxjcfqgs32six1pjvltwo +8zmktmxkbc5mpgrtnxmnp35fttpmdbhfm +1sevengeight +hghs1sixvvjpmlcponethree8kckgkf +gkbpflqvh1cbddlvdkzhfmzcfourkmckngsevenxkjknplzv +5sevenfk5qgfshtqseven155 +dfjdtxjxb8fivefivebjtbggkdlpxlmnrcdt4jrrpnbtvlthrhmczn +2fivefivejxhh6 +41threehtwo4nhzdn2 +2fzngnxvvpjrqxk6 +53sdthreeninexrfone +6qmrthlzgqeightrzrdglxvscgr +snkmhszcbmthree5threejsvkpkknpeighthbv +cmgb9seveneight +5djnine3bcffxgjbrhxbfhgthxb +1flqjgsf2ms +fivefive7onefour +threeeightksmhj94jvfvqrsgqrsevenj +jttgbfmh9468ddshrxnjthsix3 +25four +9sixseventhreefiveninefive +eight5twoqrfgpkbdfc3qxfmchrjx8kpp +nineftnvllx1rjzkkt +gmeightwothree1fgfivejldgmt +nine966fivethreeninecpmgsxsxz +77bfhphxczdg2eight +89hcgjjtchsix +1onexps1 +3fourkgm +hjgnbninevxdtpnct7bmstnczzteight23 +twoone1qt8 +43744 +fourtfgn2 +sixppztkbvllkltbs51xknnfive +tqxoneight5 +twong3zdrbpqnb +fivebcrxk198three +435sfddjvfg56vkddkzhhj3 +qcnhlbzmbld2fivebsix +zfsrtwothree8 +nineeightfivetwomcjm2seven1 +3gbnxlzxhvzzgfjjhf44fgbccpthhnkpht +3ccmrkbfour68ninetwonebz +sevenrccgdjrqj9one +fourzgdfbsnlb66txclxgp7 +jmzlbtgbtl8three +6nine32pr +sixffcsmhlfiveklbmgj8nine +psmjrt65tppjqeightzqvglglnine1seven +fourninehhzh8seventwoone +48two2vzbrl +mdlzptrcsix3three9 +sevenlgr3t +7sevenpphjhvdhkheightwojv +seven3756 +four85 +4twoonettmxjncsqmgsrxsf +fivesix6twofvzqxpphzmlkj +eight1twojrzspbfbzkftwo +5eightthree5 +31ninecjnsevenjvbsvpphpxxkcnine9 +nine5vnine486vrhbkgl +sevennineeight97qpdlfbskz7sfbtm +onernqbxt8twoone +gftjrbmkmngtshchbgfc1nvvt5 +four5dgvsixzhlxnnmjhkhkljcfdpeight3 +ttmfdxhd3ninekzbtsixnfmvfour +8pfkhxhmh8xkghgdk +nhs4threemxjpbgsix1s +ghtwoz1 +sixdthree7vlfbpzcm1ndbbczvc +ninetwo183 +twofxsdt36fcthreethreeseven +7grvvzqhcbeightwopx +twoninevknhnkgdmhmlbxkeighttwonine4 +4fourdmclrghj2 +sevenmtgvr8four76fivekdqbsmmtq +klgpeight5sbknbhvsixfive6 +2vddxlzfpsrqsbsixlgrfnhone +jxfhlzcp6qctpqhb1 +eightd1162jsfcsplrctwogcpzlhqf +one4four7xx5 +threebqmzstphclb5fiveninethree +bkxfxxms6eightwoxz +nineeight4four +sdsgszdznng4sctkfiveszkdknqjf8 +vtzmnllvvhrcfdlxcxxlqvzst1 +htzxcxpvqj91sevenxrggdtjzbrgcv +ldcnbzstq4ktzdxgmcl +twohshbblseven4grzpdtfmjn13cmg +cktjnhdnine1three9mjqvnjtkseven +891ninesevenxbdjs +kxjpngdtwomxttdqcdkhdj686sixl +hsninefourcxfj3five3eight2 +6eightgkkr1one +658one +zqgrxfourfour8 +twobbnfkdtb9five21zcfiveoneightjgt +79jsm55twonine5 +eightftk2two +eightbjbvqscs5pvmb14lgvgfv +four4four +qmzheight5hgfourkgtqfhjfournine3 +twofzdqtvssx2 +1fivefivesixsevenone47 +xhrjffnine8 +oneseveneight72fqgzscqt5 +nine7fours58 +three2fourseventhree +35ninesix +qgjsrxgqb5 +fiveqghjjvjthree4eightqfgrhblkjtwo +9mvcm +96fourqzdsix +vbzqmmzbvrbxltvlfmcpfvnddmgsbb6four7onegn +three3qnlxmkhpctwosevenfourvmqmqlgfrsn +2seven5one2six15vgnqzpggn +sixljtvqzlh1 +45onesix +foursix44eightseventhree +djsix84rnx8z34 +1mkgthree8two9956 +psgnl6six5seventwoone +546cfgr2three +thtpczmkskptzn9pqzncp +31threeninesn7xhqvrsv +threehmjpvctfhnmhs57ninepzfvq +teightwothreesixdzqhvljk84nineninesevenb +gvptkx9rlsnmtwoonesqfxmzkv +7twojszdrxcxfour +3eight617npsbbrpkjtzsmeight +3sixqntvpttddsixninemtpb4 +1onefiveseven2fourseventwo6 +67foursevensixsix2 +one7qeightonehckxhxdfjjzsrdnj +38onehzjxg +4splxs1zfvfksevenkrzfive +fourfournkcj9 +1ljmbhcpttjnine +2xnvfpdgccxfivellztmtpnc +ljvlxplhxfsjqv6sevennine44nine +qdonefourlnrzrgthbt1 +twothreehvvhsxzqz1chvbcsxtll +82vmfjbvssmlgk2dbsljgvd3 +xzfbfmbbxfeightgfz3lvzpzbpmv1four +oneeightfd5ninetwo +ghddk7six7xqmglkvnqonesix +six1eight +7five5ptkbvvvfive +3hftgthreehcfrsnl1fivetwo +7six12onebhpz +mkqjv8bzdnt9sevenfourtwo +five3mzgqnm +sixtwocbjxlgvp1twoseven +dkfmbzmvxseven971 +bninetwojnsnkc7 +ninekzcpfive4five3phz3 +eight8143 +eightrzdmxzb8eight6 +5pdjm22ninej37two +fourtwo8fivetwosixthreetwo +ncttc71fourfivejpjzcgzpj4 +5882three8glcvgnfhscbtmnqmnh +ngxkxtwo9pltbbmxrknvjheighttwo53 +twoninenpqqqgsbsq3fjdk +eightsevensixhtsjvxjc8jxftgnptgqsixvcncglzlgq +sjxtcnt8gpeight7cbgffmgqksix +fdsn9threenineninetthree37 +19rrfdqtpmonetqjdcjtxlhkptccjn6mtztqhvvtqftbv +vrhprdjsfour28p4 +eightfiveeightninevdvnmbv58vrs +qdzhzrhlfl7hhxqzxqdxeight +svnbzgbhxjcx26xclfgs +5lcggbhzrmnknine83txffvcdonecrqvvjf +six5fpncsbbqbbcczcmbgrqmndxmrxloneone +1one6 +88gctsmp7eightrvshklprtm +xf874onehhcknx +sevenvvncrhvxjxnzsftkfhsktwo3eightfour +8ngprdqfour +98fmrxpxzzbrjpxzqdxmv +2zbxzsthreefivefhdbhvjjxv6btwonef +jzkjcvpn924qjcbr97h3twoneff +foursix3 +9pmtdjvrxjrponetjlxbdzbvrcjtc77 +52twoeight2fourh8 +kpzfztlzlkdprbmrhsjcxfzsbch31 +4fivebtfjmfive6seven +ccttxjmheight6twothreelnjmfoureightnvcvpmpc +6twoz1dzv95 +threelsmgdnxcsevenqr4xrtthzgkqxsrdssmjqv +fourgpvjxdg4qpvfivefive8nine +9mncmnhrclsq +9zjfmctz +pndgptggnsthree8xlcctvpsix6three +98npgrlkqmcninethree +fivexp6fourdpckhqpcxczrfbr +six2xdgsqdpsbmgftzvqhnjg +7ninepqheight2eight7g +2zrsevennlpcljnp +twoonethreevvpfp1jrhsevenfour +threebzmggv7bjm6cczkbsronetwo4 +three1foursgvfdrrqmk4two6 +onengzkkjsxsjlxxxthpd7xfcvkthreefour +sixnine5sixeighthlvmf +63gkmbsdc3fourmgrjhrlbqgcfxf +2bmldthree7skhhpxfonenineone +b6seven7 +seven39 +twoffxbsgpcxctmmvb4kdhn89 +seven1fmgtseven +ninegxbdmztzzbqq6lgcvsbhzplqt +7twoonev +24nine +tvjmbzlsjtrtdhdlvnffmcfoursix6sevenonebvq +5jpntjsthree1threetkbsh7 +sixone423fourqnczdxcpmsvjpzhl +33zdfourseven3 +77lltwo5nineseven7djjmdqkqfd +4xfnpfbtdl7 +two5ninejbrfrsbrsvzfivenineseventwo +89znjldjptdnfkeightkpcxdxcc3bkmfhtzkkh +qlkxd1rv44qlhhpjrninetwo +6l2rfscvcgdm7 +rhtsrbrmlnfvseven1eight23dd +7xcglznxrjzsmhqnkqjhbjqxnjpjx15six +fourfiveq1vcsnnsxkmrcjscn4sevendbbtjh +6qcvjplvnine91rfjk51 +jmdsgfxd5 +tlzpvtsvkdsixtwo95 +8threeeighthvhlqss +threetpxxlmfrhpf15 +4twoeightsix +rg8nvrtzxjvfddkeightwofzs +tggqninemk1 +mlchhftqkxtbhfpjsixnine817 +231rpkxcvcz5fcztnqskqtwo +five9hhrtmp9twosixthreeeightv +9threeschsm17 +hhreightfour171dtbmhzhhjb9fgbg +bhgp6 +fourztzlhdr2hbdlv8fivenine +fourseven8seven +eighttwo8eight +two12 +threenine76ndvklb +twoseven9jxfcthreecnrpvglksc +84fivehmf +jpgbtnrsb15eightgdtqmk +34two8eightbxqvc5nine +four4hsgjmtbfrvfivenine +threecfcx8ninefive3xone +cvhtlnlnhh71 +four9sevenonenine9ninejlgmtvxmxseven +vttchshfgfpdbmpmp338 +nfcdnhq6nineeight79 +rgltnqzrzfqdjsfrhzmfivetwogklxqdhzbjtwo5three +five3n69fiveninesixtwo +nfhheight12clcqcnpdbz6nineseven7 +eightgxtmstbthreedvrqllvp1ljqstbjdhcmbmbeight +two26four7three +6rtninethreefive +vhnqgdzzbxr9two7mdjzsx3lf +twothreepzxljpd6sixcmsxkcqkfive +6threesevensevenjzkcqthfivegmjvstrsix +five7fivetwofour +onesixseven767 +36onehxdpmcqxsfbfive +2hdvqrlhs5six +pjfcjrnjnk9four99nineskshccmmnvxzvhvqmcprkdqvhhk +4gronexqnzdfthreejgqt +kvrsixtwofive2 +eightfourone4hone +cgbjtdbvptworbcz3 +jpgmhfour1 +ngbgjhlstwokxc8onejlhczxvnjbrkqzdl +chbmqrz3fourthree +rgvmkpeightqdssbcgf9fivefive +5vgrscgshtbfgbljt5 +pxgq5kffxbdjgq5cjnpzfdt738six +meightsvfb47xcdfkhf5 +clzqdc4five1onexfxlxnltfourfour1 +fivesix3threeseven +tworgklxh1threefourcsrsbj5 +3fivepdppjlmmb6fkgrcbldbxsdjpbvbqgpj1nine +9clvlvsckdmjsbxzrmrhfour +fourlptwofqspctl913 +28foursevenrfjfive5qrfsl +gfhmkfln2jcqttonethreetbmcdhhvbnmqdgsbrrmpk8 +eight35qvkxtwo3fivevfive +26fivegpcqqsjr7five +three1seven4 +9fiveonevmxhtndtfzmnxvtjkmr51six +64vgrgtwofour +four9one +nxjtdt2three1three96lfzglzcfour +355six +9lvqslrvdrd8six +9threetwo35six +two57 +phpkcmfxvt7gphd1qglpmckhnj +sixthree1ffrdbsix4two +spbscvjfl8vvkpjkshkx3 +5nnjdbjj3 +bmmqrrkdcfbctmsk124eight9one +4rxdpvqlhn +seven13glpzfknqtxdqjq3qblzcjvx9 +8bnkbzszkxkrrfdmcstvfvp +nndndjrs1qd1421 +twovn9four8five +eightrc1 +ltjvtcqfzdfourseven8kvcx43 +vn6ninelr8 +2seven1 +7rldpqrfoureightthreesfhz11six +56fourkmvl6threegzfqnlrlz +8mkpcsnzmknmzpjppf8two7 +bzgvzcpkqxmbxcqsix4qjzt28eightwoj +threesixxqkshhnine7njtvvxfmjl8 +5seven6vqcd62sixone +three552 +hsslkhbd88zjhqvgtzpfour1 +oneone96fvjbmcnzrr +pspndcdtctwo6 +v3one9 +fivefournmrfrzghdh7twoxmpgkps772 +vdkqxqnsthreefive25 +kgjsevenczqrqf14pjchtfbnnninexhgn8 +lqkhzjzm3six1one3 +1three3l61seven +1flsfhznl +r8hnbpbtrzkstdg +hhrmnkktv7seven29fourpvjceight +2mbft +954five9fivegbmlz5 +dshbfdqdjjgtxffjmllgvxjfrstgldgdxjsfxbone9tgseven +fourseveneighttdgghnfive7pchxddgggcq +8zx5seven7pffldzjhdb8 +bpqslhkt33sixnlxckbbr2 +xqmxvjcplh4seven +jd9zxmz2two1kvsghkvkpz +9blk3 +6rjvmrjk46 +onetwo6ninehdrlnxgbc +6drvnkssqzv5jfnineseveneight +sevenmvxlzmtwox49one1 +8fxnnjr18fivefcf +five98sixkblsvns7mgttvhhz +85qkkg463lxdhzdtllqtv3 +fivethree5eightfivessrnhsmdrnvssxfgxmsix +xgmqjone7j +pkclcg54 +dvllcqqghh891pdlqnbtb6183 +2qbnqkgncqrvlfntwo +seven7qdfzfpfivepnbhrqx48 +682sixqtwotbgnsspzqcntlrhpzcq +2sffrxkgmsixfivetwokfvnlhz +sv9klzvnzsgjmoneseven +bzbppxbdpxs9 +68ninetwo99four5grdrrkpr +mtfcscprzkeightfzdbhdndqh1njdfourtdtflbfjrth +8nvdtbrfrvfivesixtwodzxfhgpzlk6cgkbr +3slmzvnine5fm +eightone16nine +kdzrjbh2txzz5hbone96one +17pgtwofl41 +eightoneqjvzv3 +fivetwocrhmvxqkvbeightfive1qzcxvds +2htzsvdhvqvdjv \ No newline at end of file diff --git a/day1/sample2.txt b/day1/sample2.txt new file mode 100644 index 0000000..4316a6b --- /dev/null +++ b/day1/sample2.txt @@ -0,0 +1,7 @@ +two1nine +eightwothree +abcone2threexyz +xtwone3four +4nineeightseven2 +zoneight234 +7pqrstsixteen \ No newline at end of file diff --git a/helper.js b/helper.js index 11c1d84..97bcc6c 100644 --- a/helper.js +++ b/helper.js @@ -20,9 +20,9 @@ export async function argsChecker(args) { process.exit(1); } - let dataType = "sample"; - if (args[1] === "input") { - dataType = "input"; + let dataType = "input"; + if (args[1] === "sample") { + dataType = "sample"; } return { dataType }; @@ -30,7 +30,7 @@ export async function argsChecker(args) { export async function partRunner({ part, input }) { console.time(part.name); - const result = part(input); + const result = await part({ input }); console.timeEnd(part.name); console.log(result); return result; diff --git a/index.js b/index.js index c99df49..305bbc9 100644 --- a/index.js +++ b/index.js @@ -13,6 +13,10 @@ if (!(await fileExists(`./${dayFile}/index.js`))) { const { part1, part2 } = await import(`./${dayFile}/index.js`); const data = await loadData({ day: dayFile, dataType }); -partRunner({ part: part1, input: data }); +await partRunner({ part: part1, input: data }); -partRunner({ part: part2, input: data }); +if (dataType === "sample" && (await fileExists(`./${dayFile}/sample2.txt`))) { + await partRunner({ part: part2, input: await loadData({ day: dayFile, dataType: "sample2" }) }); +} else { + await partRunner({ part: part2, input: data }); +} From 9722b354ec590a85230d647593c2d19d7e4807f9 Mon Sep 17 00:00:00 2001 From: Rene Pot Date: Sat, 2 Dec 2023 16:30:55 +0100 Subject: [PATCH 49/59] part 1 --- day2/index.js | 43 +++++++++++++++++++++ day2/input.txt | 100 ++++++++++++++++++++++++++++++++++++++++++++++++ day2/sample.txt | 5 +++ 3 files changed, 148 insertions(+) create mode 100644 day2/index.js create mode 100644 day2/input.txt create mode 100644 day2/sample.txt diff --git a/day2/index.js b/day2/index.js new file mode 100644 index 0000000..ce54a01 --- /dev/null +++ b/day2/index.js @@ -0,0 +1,43 @@ +export const part1 = ({ input }) => { + let result = 0; + const constraints = { red: 12, green: 13, blue: 14 }; + + input.forEach((row) => { + let success = true; + const { hands, gameNumber } = splitInput({ row }); + + hands.forEach((hand) => { + ["red", "green", "blue"].forEach((color) => { + if (hand.hasOwnProperty(color) && hand[color] > constraints[color]) { + success = false; + } + }); + }); + + if (success) { + result += gameNumber; + } + }); + + return result; +}; + +export const part2 = ({ input }) => { + const result = 0; + return result; +}; + +const splitInput = ({ row }) => { + const game = row.split(": ")[0]; + const gameNumber = parseInt(game.split(" ")[1]); + let hands = row.substring(game.length + 2).split("; "); + hands = hands.map((hand) => { + let splitHands = hand.split(", "); + return splitHands.reduce((acc, nums) => { + const [count, color] = nums.split(" "); + acc[color] = Number(count); + return acc; + }, {}); + }); + return { gameNumber, hands }; +}; diff --git a/day2/input.txt b/day2/input.txt new file mode 100644 index 0000000..0698456 --- /dev/null +++ b/day2/input.txt @@ -0,0 +1,100 @@ +Game 1: 4 red, 5 blue, 4 green; 7 red, 8 blue, 2 green; 9 blue, 6 red; 1 green, 3 red, 7 blue; 3 green, 7 red +Game 2: 20 blue, 12 green, 2 red; 1 red, 2 green, 20 blue; 1 red, 14 green, 17 blue; 7 green, 17 blue +Game 3: 3 green, 4 red; 10 red, 2 blue, 5 green; 9 red, 3 blue, 5 green +Game 4: 10 green, 1 blue, 3 red; 1 red, 12 green, 1 blue; 1 blue, 2 green; 4 green, 3 red +Game 5: 3 green, 8 red, 1 blue; 4 blue, 7 red, 3 green; 2 green, 2 blue, 13 red +Game 6: 1 green, 4 red, 2 blue; 9 blue, 1 red; 2 green, 4 blue; 4 red, 11 blue; 9 blue, 3 red +Game 7: 13 red, 18 green, 4 blue; 15 red, 5 blue, 14 green; 15 red, 11 green, 7 blue; 3 green, 3 red, 7 blue; 3 red, 5 blue, 9 green +Game 8: 1 red, 4 green, 4 blue; 15 red, 8 green; 6 green, 1 blue, 15 red; 6 blue, 15 green, 6 red; 2 red, 1 blue, 9 green +Game 9: 18 red, 8 green; 2 green, 18 red, 9 blue; 14 red, 2 blue, 10 green; 4 red, 2 green, 4 blue; 4 blue, 12 red, 9 green +Game 10: 4 green, 1 blue; 3 blue, 2 green, 12 red; 15 blue, 12 red, 2 green; 10 red, 8 green, 11 blue; 8 green, 10 blue, 10 red +Game 11: 5 blue, 7 red; 2 green, 1 blue, 12 red; 7 green, 8 red, 4 blue; 3 blue, 8 red; 6 green, 9 red, 3 blue; 11 green, 12 red +Game 12: 1 blue, 3 green; 3 red, 6 green; 2 green; 1 red, 6 green; 1 green, 3 red; 1 blue, 2 green, 2 red +Game 13: 3 blue, 12 red, 12 green; 5 green, 3 blue, 2 red; 3 green, 7 blue, 13 red; 4 green, 7 red; 3 green, 3 blue, 5 red +Game 14: 14 blue, 1 red, 6 green; 3 red, 9 blue; 5 green, 11 blue, 3 red +Game 15: 9 blue, 2 red, 5 green; 8 blue, 3 red, 6 green; 17 red, 2 green, 7 blue; 11 red, 2 green, 9 blue; 1 red, 4 green +Game 16: 2 green, 2 red; 3 red, 2 blue, 2 green; 5 red, 2 blue, 2 green; 2 red; 2 green, 7 blue, 4 red +Game 17: 8 blue, 6 green, 11 red; 5 red, 2 green, 2 blue; 4 green, 15 red, 10 blue; 6 blue, 2 red, 6 green +Game 18: 1 green, 11 blue, 1 red; 1 green, 1 blue, 4 red; 10 blue, 2 green; 3 green, 12 red; 4 green, 8 red, 5 blue; 13 blue, 4 red, 3 green +Game 19: 5 green, 3 blue, 5 red; 5 green, 15 blue, 10 red; 15 blue, 12 red, 1 green; 7 red, 5 green, 10 blue +Game 20: 4 red, 9 green, 9 blue; 5 red, 10 green, 10 blue; 3 blue, 11 green +Game 21: 13 blue, 9 green, 13 red; 1 blue, 11 green, 14 red; 14 blue, 8 red, 9 green +Game 22: 8 red, 12 blue, 6 green; 12 blue, 10 green, 4 red; 14 green, 16 blue, 3 red; 2 blue, 8 red, 5 green; 12 blue, 9 green, 9 red +Game 23: 9 red; 3 blue, 11 red; 2 red, 7 blue; 5 red, 4 blue, 1 green; 4 red; 7 blue, 12 red +Game 24: 5 green, 7 blue, 3 red; 5 green, 3 red, 13 blue; 11 red, 2 green, 4 blue; 11 blue, 1 green, 13 red; 3 green, 9 red, 5 blue; 1 green, 9 red, 17 blue +Game 25: 5 blue, 12 green, 4 red; 2 blue, 2 red, 9 green; 8 blue, 16 green, 4 red +Game 26: 7 blue, 2 green; 5 blue, 1 green; 1 red, 2 green; 8 blue, 1 green +Game 27: 1 blue, 4 red, 17 green; 3 red, 2 blue; 18 green, 1 blue; 3 red, 7 green; 1 green, 3 red, 3 blue +Game 28: 6 green, 1 blue, 7 red; 10 red, 9 green; 10 red, 9 green, 1 blue; 3 blue, 19 red; 12 red, 3 blue, 14 green +Game 29: 4 red, 7 green, 11 blue; 2 red, 3 green, 1 blue; 1 red, 5 blue, 18 green; 11 green, 4 red, 6 blue; 6 blue, 3 red, 11 green; 5 blue, 17 green, 2 red +Game 30: 1 red, 15 green, 1 blue; 2 blue, 1 red, 12 green; 6 red, 8 green, 1 blue; 2 blue, 4 red, 11 green; 2 blue, 5 green, 5 red +Game 31: 9 blue, 6 red, 7 green; 4 green, 2 red; 11 blue +Game 32: 15 green, 1 blue, 11 red; 1 blue, 7 red, 13 green; 2 blue, 9 green, 3 red; 2 blue, 13 red, 18 green +Game 33: 2 red, 2 green, 4 blue; 2 green, 7 blue, 4 red; 3 blue, 2 green +Game 34: 1 green, 3 red; 13 green; 2 red, 14 green; 2 blue, 14 green; 6 green, 3 red, 1 blue +Game 35: 2 blue; 8 blue, 3 green, 3 red; 15 blue, 2 red; 12 blue, 1 green; 3 blue, 2 green; 2 red, 8 blue +Game 36: 4 green, 1 red, 1 blue; 16 green, 3 red; 18 green, 4 red; 4 green +Game 37: 6 red, 1 blue, 3 green; 2 blue, 3 red, 2 green; 2 red, 1 blue, 9 green; 2 red, 8 green; 2 blue, 2 red; 1 red, 1 green, 1 blue +Game 38: 9 red, 1 green; 14 red, 1 green; 6 green, 3 red; 1 blue, 3 red, 5 green; 5 green, 12 red +Game 39: 13 blue, 2 red, 3 green; 5 green, 8 blue, 8 red; 11 blue, 7 green +Game 40: 1 green, 7 blue, 6 red; 4 green, 1 red, 5 blue; 7 blue, 2 red +Game 41: 12 red, 5 green, 6 blue; 12 blue, 7 red, 4 green; 7 green, 9 blue, 14 red; 1 green, 6 blue, 4 red; 1 blue, 6 red, 6 green +Game 42: 9 red, 2 blue, 11 green; 5 blue, 6 red, 7 green; 5 blue, 2 red, 3 green; 7 green, 7 blue, 1 red; 11 green, 12 blue, 4 red; 2 blue, 6 red, 10 green +Game 43: 8 green, 7 red, 7 blue; 7 red, 11 green, 2 blue; 17 red, 12 blue; 10 blue, 5 green, 3 red; 2 green, 4 red; 16 green, 10 red, 2 blue +Game 44: 6 blue, 16 green; 7 green, 4 blue, 6 red; 8 red, 5 blue, 7 green; 6 green, 6 red, 6 blue; 10 green, 1 red, 9 blue +Game 45: 10 blue, 4 green, 10 red; 5 green, 9 blue, 3 red; 8 blue, 9 green, 10 red; 7 green, 4 red, 3 blue; 2 blue, 5 green, 9 red +Game 46: 11 green, 1 blue, 3 red; 3 green, 4 blue, 5 red; 5 blue, 10 green, 3 red; 17 red, 4 blue, 5 green; 8 red, 1 blue, 6 green; 9 red, 9 green, 1 blue +Game 47: 2 blue, 16 green, 11 red; 1 blue, 7 green, 4 red; 1 green, 3 blue, 9 red; 2 blue, 8 green, 1 red; 14 red, 3 blue, 5 green +Game 48: 6 blue, 7 red; 2 green, 1 red, 1 blue; 2 green, 3 red, 2 blue; 5 blue, 8 red; 4 red, 5 green, 1 blue +Game 49: 7 green, 3 blue, 11 red; 5 green, 10 red, 8 blue; 6 green, 18 red; 7 green, 9 blue, 14 red; 5 green, 6 blue, 3 red +Game 50: 3 green, 1 red, 6 blue; 1 blue, 4 green, 13 red; 12 blue, 10 green, 3 red; 18 blue, 4 green, 14 red; 4 green, 6 blue, 7 red +Game 51: 2 green, 4 red; 1 green, 12 red; 1 blue, 12 red, 5 green; 1 blue, 9 red, 2 green +Game 52: 1 red, 2 green, 9 blue; 6 blue, 5 green, 3 red; 3 red, 8 blue, 4 green; 4 green, 1 blue, 4 red; 2 green, 5 blue; 2 red, 3 green, 6 blue +Game 53: 1 blue, 16 red; 8 red, 4 green; 2 green, 3 red; 2 green, 2 blue; 20 red, 4 green, 1 blue; 1 green, 15 red +Game 54: 1 red, 8 blue; 2 red, 1 green, 6 blue; 9 red, 9 blue +Game 55: 1 red, 6 green, 1 blue; 1 green, 1 red, 2 blue; 1 red, 5 blue; 1 green, 1 red; 2 green +Game 56: 8 blue, 8 green, 7 red; 3 red, 1 blue, 9 green; 4 green, 5 red, 12 blue +Game 57: 11 green, 16 blue, 5 red; 9 green, 13 blue; 16 blue, 4 red, 15 green; 17 green, 7 red, 15 blue; 1 red, 9 green, 5 blue; 18 blue +Game 58: 2 green, 2 blue, 1 red; 7 green, 3 red, 5 blue; 6 green, 1 blue, 2 red; 5 green, 4 blue; 2 blue, 6 green +Game 59: 8 green, 11 blue; 13 blue, 4 green, 3 red; 6 green, 19 blue, 14 red +Game 60: 6 red, 4 green, 4 blue; 12 green, 2 blue, 13 red; 2 green, 1 red; 3 green, 9 red; 1 red, 1 blue, 2 green +Game 61: 10 green, 1 blue, 1 red; 11 green, 7 blue; 2 red, 3 green, 6 blue +Game 62: 5 green, 7 blue, 3 red; 9 blue, 7 green, 3 red; 5 red, 2 green, 12 blue; 14 blue, 10 red, 7 green; 3 blue, 1 green, 10 red +Game 63: 1 red, 4 green, 6 blue; 2 blue, 14 red, 1 green; 1 red, 4 green, 3 blue; 1 red, 2 blue, 1 green; 4 blue, 11 red, 6 green; 3 green, 7 blue, 1 red +Game 64: 14 red, 4 green, 5 blue; 7 red, 5 green, 6 blue; 8 blue, 8 red, 1 green +Game 65: 3 blue, 6 green, 1 red; 2 blue, 10 green; 16 green, 1 blue, 1 red; 20 green +Game 66: 7 red, 4 blue; 4 blue, 8 red; 2 blue, 3 green, 7 red; 7 red, 1 green, 4 blue; 3 green, 5 red +Game 67: 2 green, 14 red, 5 blue; 20 red, 15 blue, 2 green; 15 blue, 15 red, 1 green +Game 68: 6 green, 9 red, 7 blue; 3 green, 9 red, 13 blue; 9 blue, 4 red; 2 red, 4 blue; 6 green, 9 red; 2 green, 6 blue +Game 69: 8 green, 1 blue, 11 red; 7 blue, 2 red, 11 green; 7 blue, 14 green; 2 red, 10 blue, 8 green; 14 red, 4 green, 5 blue; 16 red, 5 blue, 7 green +Game 70: 7 green, 11 red; 11 green, 2 blue; 11 green, 17 red, 8 blue; 4 green, 7 blue +Game 71: 4 blue, 4 red, 2 green; 2 green, 6 red, 5 blue; 1 green, 2 red; 2 green, 6 blue, 2 red; 2 green +Game 72: 1 green, 1 red, 1 blue; 1 green, 4 red, 1 blue; 2 green, 1 blue, 5 red; 3 red; 2 green, 1 blue, 1 red +Game 73: 10 blue, 2 green, 3 red; 13 blue, 13 green, 4 red; 2 red, 8 green; 11 green, 1 red, 1 blue; 14 green, 15 blue, 4 red +Game 74: 3 green, 1 blue, 7 red; 15 green, 4 red, 1 blue; 3 red, 6 green +Game 75: 15 red; 15 red, 4 blue; 14 red, 3 blue, 1 green; 8 red, 1 green, 2 blue; 1 green, 13 red, 1 blue +Game 76: 4 blue, 7 green, 1 red; 1 red, 1 green, 10 blue; 2 green, 3 blue; 9 green; 4 green, 11 blue; 6 blue, 3 green +Game 77: 2 red, 8 blue, 12 green; 10 green, 2 blue; 7 green, 1 blue, 4 red; 3 green, 2 red; 13 green, 4 blue, 3 red +Game 78: 8 blue, 2 green; 1 green, 5 blue, 2 red; 3 red, 3 green; 3 blue, 1 red, 5 green; 3 blue, 4 green, 3 red; 3 red +Game 79: 8 green, 5 red, 2 blue; 1 blue, 6 red; 9 green, 2 red; 1 blue, 8 green, 8 red; 6 green, 1 red; 2 red, 9 green +Game 80: 2 blue, 11 red, 15 green; 6 blue, 9 red, 19 green; 16 green, 3 red +Game 81: 15 blue, 18 red; 18 red, 2 green; 7 red, 2 green, 11 blue; 17 blue, 8 red; 8 green, 8 red; 2 red, 10 green +Game 82: 6 blue, 1 red; 2 red, 5 green, 8 blue; 3 blue, 5 green; 1 green, 2 red, 2 blue; 2 red, 4 green, 5 blue +Game 83: 1 red, 16 green, 7 blue; 1 blue, 4 red, 4 green; 4 blue, 5 red, 1 green; 1 red, 7 blue, 11 green; 6 red, 7 blue, 2 green +Game 84: 3 red, 4 green, 16 blue; 3 blue, 2 green, 2 red; 10 green, 15 blue, 3 red +Game 85: 7 red, 2 blue, 15 green; 1 red, 12 green, 6 blue; 5 red, 16 green, 1 blue; 8 blue, 10 green, 3 red; 3 blue, 2 red; 5 blue, 16 green, 4 red +Game 86: 10 red, 3 blue, 4 green; 1 red, 2 blue, 3 green; 15 red, 1 blue; 2 green, 2 red, 2 blue; 4 red, 4 green, 1 blue; 3 green, 2 red, 3 blue +Game 87: 19 blue, 2 green; 12 blue; 15 red, 2 green, 20 blue; 14 blue, 9 red; 6 blue, 3 green +Game 88: 19 green, 4 red; 2 green, 7 blue, 17 red; 7 blue, 9 green, 8 red; 9 blue, 5 red, 14 green; 11 red, 9 blue, 19 green +Game 89: 20 blue, 13 green; 4 green, 5 red, 14 blue; 3 blue; 4 green, 5 blue; 3 red, 6 blue, 7 green +Game 90: 1 blue, 12 red; 3 green, 9 blue, 8 red; 2 blue, 3 green, 10 red; 8 blue, 5 red, 1 green +Game 91: 4 blue, 2 red, 5 green; 5 blue, 5 green, 2 red; 3 blue, 14 green, 3 red; 8 green, 1 red, 8 blue; 8 green, 2 red, 3 blue; 19 green, 8 blue, 10 red +Game 92: 11 green, 8 red, 5 blue; 12 green, 14 blue, 11 red; 4 green, 16 red +Game 93: 13 blue, 3 red, 3 green; 2 green, 6 blue, 3 red; 2 red, 19 blue, 5 green +Game 94: 5 green, 7 red, 10 blue; 5 blue, 8 red, 8 green; 5 blue, 6 red, 4 green; 12 blue, 9 red, 4 green; 6 blue, 5 green, 5 red; 8 green, 10 red +Game 95: 1 red, 4 green, 10 blue; 7 blue, 5 green, 3 red; 13 blue, 2 red, 4 green +Game 96: 2 green, 1 red; 5 green, 10 blue; 3 blue, 5 green; 1 red; 2 blue, 6 green +Game 97: 6 green, 12 red, 8 blue; 4 green, 7 red, 7 blue; 1 green, 4 red, 9 blue; 7 red, 4 green; 6 blue, 10 red, 15 green +Game 98: 3 green, 5 red; 12 red, 11 green, 1 blue; 16 red, 4 green, 1 blue +Game 99: 8 blue, 7 green; 1 green, 5 red, 3 blue; 7 green, 1 red, 2 blue; 5 green, 3 red, 12 blue; 2 green, 7 blue, 3 red +Game 100: 4 blue, 1 green; 13 red, 2 blue; 16 red; 15 red, 2 blue; 9 red, 1 green, 1 blue; 7 red, 4 blue \ No newline at end of file diff --git a/day2/sample.txt b/day2/sample.txt new file mode 100644 index 0000000..1cd7d33 --- /dev/null +++ b/day2/sample.txt @@ -0,0 +1,5 @@ +Game 1: 3 blue, 4 red; 1 red, 2 green, 6 blue; 2 green +Game 2: 1 blue, 2 green; 3 green, 4 blue, 1 red; 1 green, 1 blue +Game 3: 8 green, 6 blue, 20 red; 5 blue, 4 red, 13 green; 5 green, 1 red +Game 4: 1 green, 3 red, 6 blue; 3 green, 6 red; 3 green, 15 blue, 14 red +Game 5: 6 red, 1 blue, 3 green; 2 blue, 1 red, 2 green \ No newline at end of file From f1746f92874a7276f0582613f1784c3d35a1e49f Mon Sep 17 00:00:00 2001 From: Rene Pot Date: Sat, 2 Dec 2023 16:37:59 +0100 Subject: [PATCH 50/59] day 2 complete --- day2/index.js | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/day2/index.js b/day2/index.js index ce54a01..56da886 100644 --- a/day2/index.js +++ b/day2/index.js @@ -23,7 +23,28 @@ export const part1 = ({ input }) => { }; export const part2 = ({ input }) => { - const result = 0; + let result = 0; + input.forEach((row) => { + const { hands } = splitInput({ row }); + let blue = 0; + let green = 0; + let red = 0; + + hands.forEach((hand) => { + if (hand.hasOwnProperty("blue") && hand.blue > blue) { + blue = hand.blue; + } + if (hand.hasOwnProperty("green") && hand.green > green) { + green = hand.green; + } + if (hand.hasOwnProperty("red") && hand.red > red) { + red = hand.red; + } + }); + + const power = green * red * blue; + result += power; + }); return result; }; From 46e005f67b3a4eddea6e48bbb0e21c3b8a24fca0 Mon Sep 17 00:00:00 2001 From: Rene Pot Date: Sat, 2 Dec 2023 16:53:03 +0100 Subject: [PATCH 51/59] updated readme --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 0d97209..05ce592 100644 --- a/README.md +++ b/README.md @@ -6,9 +6,9 @@ My AdventOfCode is `node.js` based. To run any day, type `node index.js ` and it will execute the day you inputted. Make sure you fill the relevant `input.txt` file with the input for that day if you want to see your own code. -The current main branch is 2022, but my code from last years is also available in branch 2020, though both years are limited in number of days. +To run code using sample code, type `node index.js sample` and it will execute the day you inputted with the sample input. In case of 2 different sample inputs, like day 1, it will automatically find sample2.txt for part 2. -For 2020: Step into each day folder and run `node program.js` to run it. +The current main branch is 2023, but code from previous years is also available. In any solution you can replace my input.txt with your content and see if it works for yours as well. From 788bc18778380f72b150a03e504ed75187439ad5 Mon Sep 17 00:00:00 2001 From: Rene Pot Date: Sun, 3 Dec 2023 15:17:55 +0100 Subject: [PATCH 52/59] add day 3 --- day3/index.js | 94 ++++++++++++++++++++++++++++++++ day3/input.txt | 140 ++++++++++++++++++++++++++++++++++++++++++++++++ day3/sample.txt | 10 ++++ empty/index.js | 4 +- helper.js | 4 ++ 5 files changed, 250 insertions(+), 2 deletions(-) create mode 100644 day3/index.js create mode 100644 day3/input.txt create mode 100644 day3/sample.txt diff --git a/day3/index.js b/day3/index.js new file mode 100644 index 0000000..efec294 --- /dev/null +++ b/day3/index.js @@ -0,0 +1,94 @@ +import { isNumeric } from "../helper.js"; + +export const part1 = ({ input }) => { + let result = 0; + const partNumbers = []; + const positions = findSymbolPositions({ input }); + input.forEach((row, rowIndex) => { + const numbers = findNumbersInRow({ row, rowIndex }); + + numbers.forEach((number) => { + const matches = findSymbolOnPosition({ + symbols: positions, + rowIndex, + startIndex: number.position - 1, + endIndex: number.position + number.number.toString().length, + }); + if (matches.length !== 0) { + partNumbers.push(number.number); + } + }); + }); + + result = partNumbers.reduce((a, b) => a + b, 0); + return result; +}; + +export const part2 = ({ input }) => { + let result = 0; + let partNumbers = []; + let gearValues = []; + + const symbols = findSymbolPositions({ input }); + input.forEach((row, rowIndex) => { + partNumbers = [...findNumbersInRow({ row, rowIndex }), ...partNumbers]; + }); + + symbols.forEach((symbol) => { + if (symbol.item === "*") { + const matches = findNumbersNextToSymbol({ + numbers: partNumbers, + symbolRow: symbol.rowIndex, + symbolPosition: symbol.index, + }); + if (matches.length === 2) { + gearValues.push(matches[0].number * matches[1].number); + } + } + }); + result = gearValues.reduce((a, b) => a + b, 0); + return result; +}; + +const findSymbolPositions = ({ input }) => { + const positions = []; + input.forEach((row, rowIndex) => { + const items = row.split(""); + items.forEach((item, index) => { + if (!isNumeric(item) && item !== ".") { + positions.push({ rowIndex, index, item }); + } + }); + }); + return positions; +}; + +const findNumbersInRow = ({ row, rowIndex }) => { + const regex = /\d+/g; + const matches = []; + let match; + + while ((match = regex.exec(row)) !== null) { + const number = match[0]; + const position = match.index; + matches.push({ number: parseInt(number), position, row: rowIndex, endPosition: position + number.length - 1 }); + } + + return matches; +}; + +const findSymbolOnPosition = ({ symbols, rowIndex, startIndex, endIndex }) => { + return symbols.filter( + (item) => item.rowIndex >= rowIndex - 1 && item.rowIndex <= rowIndex + 1 && item.index >= startIndex && item.index <= endIndex + ); +}; + +const findNumbersNextToSymbol = ({ numbers, symbolRow, symbolPosition }) => { + return numbers.filter( + (item) => + item.row >= symbolRow - 1 && + item.row <= symbolRow + 1 && + ((item.position >= symbolPosition - 1 && item.position <= symbolPosition + 1) || + (item.endPosition >= symbolPosition - 1 && item.endPosition <= symbolPosition + 1)) + ); +}; diff --git a/day3/input.txt b/day3/input.txt new file mode 100644 index 0000000..97faf0b --- /dev/null +++ b/day3/input.txt @@ -0,0 +1,140 @@ +......124..................418.......587......770...........672.................564............................438..........512......653.... +665/...*......................*599.....*.983......794*..140..*...........@..963*....................445........*......*.........709.....*... +.......246.....581......701..........108....%.532........../.73..699...927............................*....579.354.464..............298..86. +........................*.....@...............%........$............+.........167..................408............................$..*...... +....914......335.......513..245....106=...............974................749.....*.702.......589........803........*176..386.....631..340... +....*.......*...........................48...203@.............767......*..../.362...$......................*159.381......................... +..620.....430.....612.507.........365.....................335../........938.................154.........@....................682............ +.....................*...........*..................470.........................889...........*.....@.489.....453$.329..334............86... +..........324...............431..58..533-../..-...../......*405.................$.............47..474..............*......*.......930.*..... +............/.....*350....................400.502...............$...........168.......855.635....................258.......794...+.....846.. +........................560...72.945..............866..........783..328....*....116......*...........179..904........682$..........333...... +.....674...........152....*....*....*815.........*........$609.............737../................583*........*.84..............767*......... +..../......55@....+........645.914................987..................*..........972.........#.......80..750........588................=260 +.....................349&...................../.................754.407..203*720./.......207...14...............=88...+...767............... +.........*824.............890.......269....893..271*139..645....*...................233...%................428...........*.........79....... +..........................#............*.................@.../...316...844.............*........@439...287*......*974.....182............... +....*.....50.......671+.................267........634*....417............-.598.....531....891................331................358.....341 +.883.561..*....428.........../14...742...........@.....654.....809../716.......*456.....=....*........$..............................607.... +...........835..*..796*............*..............321......612*.......................299..203....962..431..........277.......40......$..... +......+591.....916.....294.........446..111......................237*77.....&........................-................*...150*....*......873 +....%..................................*.....................819............522.................922................738.........214.595..&... +...552.........*...............+545.....627...........601......*..801..............867.....954....*.984.....752..........*830............... +............276...939.............................979....*.........*........866*.....*.......*..963.-.................172................... +278................*......@..........52........51*....851..766@..515.949=.......736...456...107............796.@668..................#...... +...*...431.................616..............................................79..................651.806.....%.............554.........740... +.969...-............................-..........721.......555.657....+.........*....#....704........*.................556...*....196......... +................*228..........312.201.....490...%.........*..#...815........896..417.....=....890.....274....884.683*.......327...*......... +......@......742.............*........393*....=........715..............535...................*.........................529.....741.....#... +.......386........244......196...............815...........869....+580...*...................71........654...454..346=.$.............909.... +....................................................265...$.............738..401...984...........265.....*......*...............-........... +.......=.....184....148....14.........685...990..................80..=....../........$.......511....%.....424..400......184..551............ +.....71......*.......@............812.........&..$.....573*613.....*.677.......#.......299..&.......................933..................... +...=.......142...917...-989....76*....230...*....105.............920.....+......371.......*............660..692.........553*........%....... +341................&.....................=.29.............643.82......*...714............222....934......*....@.............178..581..+..... +...............874...129.......................739*971.......*.......176.............3.@...........*..219..40..........#.............168.... +.....179..............*...741.......524...................................757.=633..*...136......63........*..........399................... +.......*....315....307....*.....%..*.............718......371....=....654*..........89...................194........................+.23.... +.....737.........&........540.253...80...273......*.........&...773............492.................722........113....970..=195....702....... +..............869..........................*.539...434...............393*933......*........679.874..%......=....*........................... +............................$....148......43...*............@....................67.876........=......./..388..920......423.........-....... +..118*773.142....%565.......397....*.........352..#..........217......................*....865......257..................*........421.415... +............&.........898.............607..........897...631.................787...840.......*..............684.........34.359.........*.... +........995....235.....@.........#.......*.932*.............*73...940..997..#..........&.&...942...$.727..........115.........*122....380... +................-................131...........265...827...........*....*............797.490.....845..*..........#....+823.................. +............96.......................383.......................53.292....19...536......................42..668..................579......666 +...-..487............680..&...*45...&........801.............*.*.................-........374.....................128..109.......%....*..... +.611.+..............*.....151................=......739....622..572................103...........683.....245..748*....*............298.67... +........*735......911...................562........@.........................458.....*...753........................275.362*................ +.....683......702.....736.230.....457.........................13................*..126...........458........................890.........992. +...............*......*..........*.......499........10.........+...227.227...542..........................167....661....................*... +.............691.7....135.62..157..570..*....304......*...........*......*................$589....#946....*.........*............132....190. +........687.......*.........*............768..-...453..643.........844....706...%......................509........767......*................ +...........*....485......859...........*.........................................92...268.........193.....................385.....991*722... +...-.....18..................217......853................................28..............*........@.......+......302........................ +...103......60=..*352...........*916........351.....347..=..452.810....................304..........539.346.......*....................*.... +......................610..........................=....990.....=...819....*496..797.................*........946..44..................261.. +.......630.............*........882.........................173....*...............*....903....44.....318.212.@.......-..................... +.......-......-...........@..=.....*841.....812.......515......*....713....+.....566....*...................*......344..297....356.430..%... +.........*482..453.......279.554./............#..320..*.....................671......873........&...637$.....413........@.........*.....906. +....263...........................861......*....*.....908......365....123.......494.............134.................808.......*.....*....... +..........465.....520%.....................432.76..........160........*......................26.......218....14.......*......598.874.844.... +...417......%.............138.....................$..............84..............272...573.....*.296.*................585................... +...*................596...&......................783.....992..........*....982.....*.........857..*...314...797..265........*....*..547.#... +....260........75....*...........389....616=.........5.....*.....695..427..*....780....-425......872..........*...*.......49....599.....19.. +..............+.......389...........*33.........596.......600......*......67......................................567....................... +...802............................$.....302....*.....-93........434............$........554../339..............................277.......... +.....*....................$.....822.....*.....89...........233..........602.....911.....#..........958............475......773*.........%989 +..849.............228..868..217......679.......................99*...../............................*....................................... +.........253.........*......*....................643..............796......-200...355..469.........174......=........174....279.638......... +295*22..*............664...462.-238...................&765.........................*........................241..............$.......%...... +.......937.....25....................422.264.................244...........628...340..................106.........................551.....82 +897*.........../..60.......361.......*......#.....164.........*.......804*....%..........670*194........#.......#..........83............... +....754............*.................51..47.......*.........487...585.....202........838..................28...734...*457..............427.. +............155...705......................*....912.....887..........................*....*875...........*........................&......... +..952.621......*.............+983...........832.....783....@.......432#...+........530.223.............456......462...257*100......763...... +..........=..905........................892...............................262..85..........#..................-../.....................671.. +.........994...............476.............%.665...524...53*........939*........*..........703..497.........186............=.567........*... +154...............$412......&..........-.....&.....-........41.109......282......676...........%....&80.@...............439...*.....@...997. +........+130..................296.....308................@.....*...902..................................77....833.....%.....932.102.48...... +................407%.%685......*..........927.=222........426.450...*........12.....82...../..570................*...798..........*......... +..825.....................923.429......#..*........#630...........409..314*..........*...569.....*....273..648...961.............279........ +...=..827=..........293.....#.........875.401.............457.433..........690.....600............929......*..............*245.......93..94. +.............557.......*.......................52........@..........284.......................450......................986..........*....... +........................463.....583..708...........................+........101....834.445.......*.....336...................694...333...... +....556....923................./......*..433.....182....181.........................*..*......492..598.*............260.....*............... +......*.....*....430...............960....*...+..&.......*..=96.....628.282...@355.833.883...........*..468...420...........288............. +...140...682......*..945...150............7.654....+83.941...........*......@................#....7.780.......*......922.........334........ +.............365..49.......$...590............................608.........503......./......36.....*.......74...340.....*.................... +..........@..*.......870.-.....*...284*556................288..*...@.............$.526............587....*...........387.................... +.......188....626.$......372.733.............................*..97.466.....776.541......................413.950..........696.162............ +...../.............755...........62......99...............224...............-.........333......................*..337.....*....#......%233.. +442..7.......=...................#...........875*705.548..............963...............*......180.....581...350.....*....513............... +..............377....................................*.........#......*.........291......981..*...........*..........74..............&...... +......895.........644...................613.......540...........756.............%............390.263....754........#.....713-.....450....... +...85*....$.............297......%.........*..........156............974./870....................*...........12....426.................483.. +.......774............#..*.....872.............361......-...196..................849...........419............*.........221....667.......... +...................961....604...........644....*...............*........../927......*......503................124........-......../...238... +....370.............................531*......174.693.........349..................495.......*....925....................................... +.....+...104....582...602*604...123..................*..896..........71@.....................767...............573@....656......%........... +140........*...@...............*.........-........592..*....................806..692.....511...............755..........*......917...636.... +..........905.......462.....+...655......860..150.....800..903.......8*920..........*867.@...................=..........269................. +....582..................217........842.........*...........*..................912...............551...615.......-..........343*129....+.... +....*........................./.....................752..347...275...127.@........*.....804.....#....+.#.........252...845............671... +..862..........38..........293....429...@............*.......*...#.....*..245....330.......*18.....182.....$538..........&..725............. +.................=.............46*....696.............581.664.........608...........................................%.......=............... +...*724.....977.............................../................565...............#15...............................782.........359....$..... +529.....373.*............198.983.....980..559..592...100.579......*889..145..839..............790.....496....193......................545... +.........*..560..769.......*.....775...*.............*....@..104................*...%..820.....*......*.....*.............245...160......... +.....338............@......28.......*...725.687....761......%...............%..423.773..*.....315....765..69.................*...*.......... +.851*.....619...333..............907..........*.........512....536..........98.........434....................48.613.973..941...554..751.... +....................*564....122.............608........$.........-.........................48.........435.......*.......*............&...... +...........165*967...........-..799.186.938......@.615...317........................630...........551*................345................... +....968............281.546.......*.....*.......225.......*...162....372.........&85...+...177@...........719..55................360*........ +.......*.......%.......#.......226....................341.....*......*.............................341.........*...........989&.....321..618 +....884..554.163...%...............*423.233.................653...557....$....910...................*...........109....772.................. +..................854......167..560......@.....311...958..............492.....*.....*877.........@...911..797%...........*.................. +....852.815.....9.................................*....#...../..941.........960..494........56.375.....................50..+......=...106... +....*......*461.&.......739....$..........=.$562.276.......408.....=.....................=...%.................769.........893..463..*...... +.133..................-........797.....313...........................................20.214.....357..776.471......*687.@.............527.... +.......14........899...845..........*..........+.....46........634........914.....84../...............*.....*780.......878..%36.435......... +542.....*...........$........*833...257..329-.147...........+........150..*......*.......907...........429.........................*....#... +.....517..799.44@.........230..........................477.579...........836......839.....-.....................964.704.............194..310 +298.......*....................307..800......346.65.....*..........414........@.......619........&442.............*..*...................... +...........510...+.....837.237*.........../.....*.....270.....818$..+..........27....*.................163.....140....647....764.163........ +................181...*..........536#....335......................................610..170...............*.-....................*.......&... +.......................832........................#........&........611.........................&55...428..472....586......111........768... +.......763.....................................461.........381......-............566..814.....*.....................*........./............8 +.............+.......................318............695............................=..%....323.756............711..663............827....... +...........526....=....675...353&.....@..982#......*..................+.62...880+..................631.......$......................-.118... +..................655....*....................795..30...922*.......978...+.&.........539...........-....719.................599............. +......2...574%..................#.698...475.....*...........652./...........464.163$...*..338*966.........................../.....534..386.. +......*.......................404..#............747...703........231...-...............................................................*.... +.......906.................................&575.........&....457.......633...395..761...355.#780....3+......799+...............496...264.... +311............967.682............%.838...........253..........@..551.......@....*.....*.............................487.........*.......... +..........@.......*......925....376....&...419......=.............*..............20..952.111/....648.&........748................834..706... +..443....940.............*....................*..........................820.684...................@.755........*........106.283............ +..............397.........803...84............627..........704.983..........*................522............................*....541........ +.....32....$.....#...643*..............116........./905......*..../...........311......811$.*........*890..........924..670........=....882. +......*.....81.....*.....636.......317...*...................899.............*....*698............626....................-..+..@.......*.... +.......877......256.714...................825.........458....................869..............................54............28.823..110..... \ No newline at end of file diff --git a/day3/sample.txt b/day3/sample.txt new file mode 100644 index 0000000..624ea4f --- /dev/null +++ b/day3/sample.txt @@ -0,0 +1,10 @@ +467..114.. +...*...... +..35..633. +......#... +617*...... +.....+.58. +..592..... +......755. +...$.*.... +.664.598.. \ No newline at end of file diff --git a/empty/index.js b/empty/index.js index c3a2c06..a6f81b0 100644 --- a/empty/index.js +++ b/empty/index.js @@ -1,9 +1,9 @@ export const part1 = ({ input }) => { - const result = 0; + let result = 0; return result; }; export const part2 = ({ input }) => { - const result = 0; + let result = 0; return result; }; diff --git a/helper.js b/helper.js index 97bcc6c..43fe726 100644 --- a/helper.js +++ b/helper.js @@ -35,3 +35,7 @@ export async function partRunner({ part, input }) { console.log(result); return result; } + +export function isNumeric(n) { + return !isNaN(parseFloat(n)) && isFinite(n); +} From dcbc442365b2e1d838e56952f8cb068a12272713 Mon Sep 17 00:00:00 2001 From: Rene Pot Date: Mon, 4 Dec 2023 16:14:34 +0100 Subject: [PATCH 53/59] completed day 4 --- day4/index.js | 38 +++++++++ day4/input.txt | 201 ++++++++++++++++++++++++++++++++++++++++++++++++ day4/sample.txt | 6 ++ 3 files changed, 245 insertions(+) create mode 100644 day4/index.js create mode 100644 day4/input.txt create mode 100644 day4/sample.txt diff --git a/day4/index.js b/day4/index.js new file mode 100644 index 0000000..b769598 --- /dev/null +++ b/day4/index.js @@ -0,0 +1,38 @@ +import { isNumeric } from "../helper.js"; + +export const part1 = ({ input }) => { + let result = 0; + input.forEach((row) => { + const { have, winning } = getNumbers({ row }); + const matches = winning.filter((n) => have.includes(n)); + result += matches.length > 0 ? Math.pow(2, matches.length - 1) : 0; + }); + return result; +}; + +export const part2 = ({ input }) => { + let result = 0; + let cards = Array(input.length).fill(1); + + for (let i = 0; i < input.length; i++) { + const { have, winning } = getNumbers({ row: input[i] }); + const matches = winning.filter((n) => have.includes(n)); + + if (matches.length > 0) { + for (let j = 1; j <= matches.length; j++) { + if (cards[i + j]) cards[i + j] += cards[i]; + } + } + } + result = cards.reduce((a, b) => a + b, 0); + + return result; +}; + +const getNumbers = ({ row }) => { + const split = row.split(": "); + const numbers = split[1].split(" | "); + const winning = numbers[0].split(" ").filter((n) => isNumeric(n)); + const have = numbers[1].split(" ").filter((n) => isNumeric(n)); + return { winning, have }; +}; diff --git a/day4/input.txt b/day4/input.txt new file mode 100644 index 0000000..6f6e972 --- /dev/null +++ b/day4/input.txt @@ -0,0 +1,201 @@ +Card 1: 58 96 35 20 93 34 10 27 37 30 | 99 70 93 11 63 41 37 29 7 28 34 10 40 96 38 35 27 30 20 21 4 51 58 39 56 +Card 2: 64 84 57 46 53 86 90 99 59 70 | 99 59 30 83 84 70 31 57 6 29 18 82 15 88 86 53 51 64 32 47 44 46 80 39 90 +Card 3: 55 87 51 18 86 5 66 83 92 95 | 73 68 49 57 29 14 41 42 65 10 84 34 67 44 6 48 61 13 28 38 52 19 78 64 11 +Card 4: 52 21 59 78 18 42 46 91 31 10 | 48 83 13 68 42 72 4 10 6 36 63 81 21 94 8 3 78 53 2 47 62 77 56 97 7 +Card 5: 8 79 31 1 26 57 90 62 93 10 | 26 70 73 6 16 15 93 57 34 56 87 31 10 45 1 22 79 77 90 47 42 58 41 62 8 +Card 6: 90 75 24 69 81 93 39 38 96 33 | 2 78 68 31 99 35 49 66 36 84 54 27 43 80 50 3 22 74 60 98 57 83 13 82 91 +Card 7: 74 86 51 70 28 54 6 34 48 53 | 51 82 34 74 40 24 42 66 20 61 84 15 89 62 69 48 95 31 93 52 76 12 90 75 99 +Card 8: 54 44 69 6 51 24 84 39 20 99 | 89 93 96 85 18 94 15 87 72 67 5 52 45 43 55 65 14 47 30 61 82 41 76 29 38 +Card 9: 26 44 60 20 11 15 16 95 18 47 | 71 56 10 57 65 90 32 30 13 42 19 55 29 12 89 91 2 67 79 58 99 4 81 41 69 +Card 10: 68 65 79 3 44 55 12 71 47 84 | 47 65 93 4 71 23 17 30 59 85 3 28 95 36 88 12 7 97 68 62 84 21 79 61 44 +Card 11: 96 57 36 49 80 73 3 60 11 53 | 83 78 6 39 42 4 96 84 3 80 95 60 97 57 49 66 27 93 31 45 86 90 50 9 73 +Card 12: 85 69 14 3 54 56 61 43 77 80 | 84 8 53 72 9 24 52 88 40 2 95 31 34 90 61 70 89 97 58 56 14 65 98 38 3 +Card 13: 69 29 79 83 89 94 44 68 15 35 | 37 39 29 55 2 82 96 42 73 32 31 79 8 53 88 40 44 49 69 94 87 62 41 81 89 +Card 14: 27 40 19 34 91 84 98 49 21 68 | 58 94 2 1 55 53 52 44 98 8 75 46 50 79 9 56 43 67 10 3 11 19 69 95 17 +Card 15: 3 47 44 77 95 25 60 65 93 53 | 15 40 3 93 33 44 60 19 62 90 35 50 30 65 10 94 38 47 1 29 56 46 99 91 42 +Card 16: 96 27 10 19 93 22 87 53 97 1 | 52 36 77 72 13 61 48 22 94 5 76 51 62 4 41 81 11 17 79 64 40 24 54 23 33 +Card 17: 58 74 26 97 13 61 88 82 89 22 | 9 90 82 88 61 80 3 95 94 81 75 34 71 98 89 74 97 14 47 22 64 52 73 45 35 +Card 18: 29 90 8 16 69 48 40 21 18 9 | 79 26 84 12 40 36 85 19 69 25 21 9 13 16 83 4 22 90 54 97 17 2 89 73 50 +Card 19: 10 66 52 31 72 16 62 1 58 5 | 59 36 75 11 73 92 91 12 37 9 40 52 85 53 24 69 57 82 99 35 27 34 3 2 77 +Card 20: 96 5 9 50 28 34 80 2 36 43 | 90 77 12 17 75 24 32 67 28 22 73 23 68 84 6 25 96 95 85 9 11 36 49 39 98 +Card 21: 84 16 48 91 50 1 94 45 8 88 | 45 96 15 85 62 81 77 61 92 22 76 52 59 36 73 80 64 72 89 79 93 82 83 60 67 +Card 22: 21 46 26 27 28 3 8 44 32 24 | 76 6 90 80 26 11 83 2 18 81 93 95 53 85 31 78 66 35 5 1 56 65 89 14 94 +Card 23: 58 52 2 38 5 63 8 20 99 73 | 23 29 97 91 43 1 37 95 89 80 94 41 22 72 77 62 85 4 24 16 10 39 88 56 19 +Card 24: 36 94 57 12 16 64 4 62 39 41 | 19 6 72 9 17 46 68 34 28 80 59 74 18 13 76 77 43 82 48 58 5 52 30 25 23 +Card 25: 19 14 23 16 7 35 57 40 83 80 | 80 85 7 68 91 22 40 49 35 87 83 93 19 57 23 84 14 16 18 51 77 69 28 54 56 +Card 26: 25 58 34 14 13 30 56 22 97 6 | 38 13 97 24 94 88 30 77 14 34 73 6 44 17 26 57 47 22 31 85 58 56 25 96 10 +Card 27: 41 64 75 24 62 67 45 99 73 27 | 33 9 14 5 32 50 54 20 46 4 45 71 26 59 58 22 7 30 96 34 48 37 23 15 85 +Card 28: 89 90 33 58 59 69 49 72 2 32 | 79 43 28 97 72 92 58 59 31 33 44 89 71 90 11 80 51 2 30 32 69 82 77 49 95 +Card 29: 15 6 27 80 12 2 36 34 64 58 | 15 38 53 34 32 47 64 16 60 2 3 14 62 80 79 27 12 36 6 85 58 33 69 24 57 +Card 30: 54 63 65 76 87 6 47 89 10 79 | 87 73 12 10 92 86 39 76 79 6 97 67 84 47 65 54 22 51 19 31 9 37 89 82 63 +Card 31: 23 96 48 30 75 9 72 11 78 62 | 75 24 23 1 14 72 54 2 47 95 48 18 50 12 94 78 9 96 34 30 11 98 46 62 66 +Card 32: 41 27 4 60 29 24 82 31 17 26 | 4 40 59 27 70 37 60 77 31 46 99 43 61 67 45 5 73 35 30 33 41 17 24 29 76 +Card 33: 90 49 23 13 57 1 72 5 20 81 | 61 20 51 83 54 85 8 23 17 7 1 49 39 11 92 27 90 76 10 25 57 93 13 81 66 +Card 34: 12 16 36 14 17 73 97 74 83 11 | 76 91 97 26 36 12 10 73 85 7 17 14 25 29 80 16 74 32 60 94 83 11 67 37 35 +Card 35: 92 80 27 26 61 91 28 66 15 76 | 19 64 36 42 70 77 27 91 29 66 61 18 58 15 32 8 68 67 92 80 93 76 28 26 48 +Card 36: 70 49 5 86 84 71 72 40 22 47 | 98 68 10 75 88 16 61 17 21 91 14 48 44 73 81 2 82 83 80 93 87 59 92 41 34 +Card 37: 18 9 71 88 72 74 33 50 4 40 | 96 72 41 21 40 33 18 73 91 53 71 74 46 61 80 12 88 36 70 26 66 69 39 38 9 +Card 38: 52 91 3 1 58 80 78 15 99 25 | 70 55 27 59 62 56 78 97 91 52 18 2 23 80 9 8 89 51 19 46 10 71 25 49 99 +Card 39: 85 9 86 88 36 60 90 56 77 16 | 34 26 85 46 86 2 28 31 16 22 36 83 60 37 74 81 19 27 7 17 91 49 56 3 47 +Card 40: 38 12 23 15 31 48 24 76 82 54 | 44 30 45 97 3 20 38 52 43 53 47 8 71 92 12 41 79 42 28 25 65 59 83 89 24 +Card 41: 78 11 68 8 89 13 26 93 65 54 | 84 22 71 3 53 4 15 9 81 96 26 6 40 56 95 75 30 62 65 13 33 78 41 66 44 +Card 42: 41 90 34 15 47 56 39 59 21 53 | 11 87 9 37 47 78 5 61 93 89 58 81 46 48 4 42 40 33 67 27 97 43 55 22 26 +Card 43: 42 99 37 62 40 79 15 55 76 82 | 91 21 53 1 54 63 4 51 28 59 71 61 18 66 23 10 25 38 6 20 30 87 44 11 14 +Card 44: 59 19 4 75 62 55 38 82 60 22 | 25 89 80 19 87 97 40 53 98 10 73 77 81 76 48 83 44 69 34 36 24 42 27 78 88 +Card 45: 19 76 23 87 25 13 67 52 3 60 | 92 1 96 22 26 42 54 24 57 41 49 33 72 17 77 14 78 62 11 74 73 4 47 99 59 +Card 46: 80 48 27 98 36 29 28 83 82 39 | 2 74 47 43 27 48 82 91 28 99 9 29 36 80 66 4 46 25 83 20 37 72 49 39 98 +Card 47: 39 12 2 66 78 8 58 98 95 15 | 63 78 90 49 83 72 66 56 82 92 20 21 11 89 17 51 5 55 39 48 97 19 33 22 12 +Card 48: 91 29 16 88 11 46 75 55 3 51 | 99 71 4 26 16 2 98 44 32 1 46 28 36 67 14 49 93 72 83 35 65 8 27 96 74 +Card 49: 71 93 41 5 84 26 1 33 2 94 | 2 41 54 74 33 5 13 91 1 19 65 14 34 58 84 94 23 61 85 26 20 11 71 93 22 +Card 50: 9 69 66 54 4 18 56 15 80 63 | 35 59 38 62 54 16 8 69 89 74 71 93 64 15 80 39 13 84 9 28 79 27 18 45 75 +Card 51: 83 65 33 4 48 7 68 77 42 81 | 84 4 65 48 15 77 79 92 42 7 68 96 33 85 17 87 81 58 54 83 36 75 18 94 97 +Card 52: 86 34 54 12 13 67 61 57 41 4 | 91 35 27 3 68 39 12 30 65 9 50 46 66 80 20 77 29 45 72 98 19 10 55 47 73 +Card 53: 54 98 74 15 77 79 13 41 56 33 | 18 87 53 94 98 54 92 17 72 32 10 46 47 69 6 35 63 61 89 52 55 77 49 14 60 +Card 54: 55 76 46 69 22 60 13 90 86 48 | 90 57 63 23 39 47 34 65 97 6 93 95 13 48 60 22 86 96 33 92 94 29 56 72 18 +Card 55: 90 10 36 50 2 87 48 25 56 3 | 36 16 40 26 74 57 56 6 67 3 10 2 87 25 48 69 49 61 65 68 42 91 90 50 72 +Card 56: 79 48 63 72 24 98 64 80 42 87 | 98 63 15 40 28 39 85 81 60 48 64 92 80 82 74 91 72 41 23 99 17 93 42 59 87 +Card 57: 17 95 91 39 51 56 16 14 54 33 | 20 65 34 80 27 13 1 43 59 26 76 54 41 85 14 83 17 39 23 16 12 37 49 44 24 +Card 58: 50 9 39 92 89 62 74 56 73 61 | 78 92 68 31 13 28 83 61 8 14 56 62 6 16 50 39 24 9 58 1 17 89 48 15 12 +Card 59: 6 92 15 50 99 29 3 72 12 95 | 73 72 80 92 88 19 55 12 53 93 91 45 26 15 99 43 84 62 59 49 6 64 77 3 16 +Card 60: 14 93 76 15 7 90 39 30 83 32 | 83 35 69 40 60 77 73 75 36 27 94 80 90 1 56 99 93 13 37 45 22 26 31 20 70 +Card 61: 50 64 24 26 72 8 33 13 22 27 | 45 60 37 19 55 95 76 52 4 9 75 44 78 20 53 41 69 11 47 36 2 48 74 94 21 +Card 62: 55 87 6 12 83 97 11 94 56 19 | 4 71 56 25 88 50 55 42 10 28 81 60 59 22 44 49 86 66 94 31 62 84 57 90 51 +Card 63: 89 13 38 94 61 8 79 1 11 80 | 5 55 56 13 84 39 54 32 79 74 58 96 82 53 21 91 64 42 41 94 44 97 95 28 14 +Card 64: 39 73 72 12 74 58 57 50 25 24 | 1 49 3 46 89 26 78 24 28 21 54 64 86 88 30 91 43 15 98 23 99 12 22 79 33 +Card 65: 58 65 74 21 7 3 95 71 50 41 | 3 53 28 78 18 65 52 89 33 30 87 13 62 72 88 37 71 26 27 19 46 98 84 76 4 +Card 66: 27 73 68 71 55 33 88 30 56 87 | 50 74 97 18 34 5 65 66 93 31 57 32 69 38 28 60 81 43 87 98 53 86 59 49 14 +Card 67: 9 50 66 57 33 76 65 84 44 88 | 34 85 27 32 12 77 63 3 95 93 4 10 70 38 49 19 41 83 14 72 16 5 40 57 24 +Card 68: 71 27 65 58 38 62 73 23 77 57 | 51 56 61 78 41 68 22 2 20 64 6 24 45 5 72 79 13 67 85 7 50 48 93 80 26 +Card 69: 36 60 4 27 41 67 61 88 50 83 | 67 45 29 66 36 59 95 60 41 28 43 37 61 4 84 88 23 49 92 65 89 27 50 83 58 +Card 70: 34 37 95 65 11 29 98 15 55 68 | 13 58 34 52 29 46 72 25 68 5 7 87 42 51 61 98 75 15 65 33 95 11 83 55 60 +Card 71: 13 67 2 41 43 52 47 6 54 51 | 2 81 22 30 13 52 5 10 67 50 86 54 3 51 92 15 37 79 43 11 41 6 69 47 25 +Card 72: 51 72 65 50 55 80 48 87 13 10 | 28 5 41 51 42 45 87 98 35 64 93 72 65 55 50 88 13 74 48 63 80 10 34 86 40 +Card 73: 98 36 68 48 17 75 64 11 70 61 | 17 50 8 89 93 3 65 14 85 33 23 55 42 40 63 84 1 62 20 86 36 51 80 16 77 +Card 74: 75 10 74 42 71 63 14 2 12 96 | 33 7 65 96 38 6 17 34 18 40 71 61 95 14 27 46 2 91 66 58 8 19 31 16 25 +Card 75: 88 90 82 53 34 4 28 57 2 51 | 2 16 46 87 34 51 88 90 3 79 28 57 20 80 44 22 42 12 82 1 53 4 56 83 99 +Card 76: 75 48 5 98 51 7 34 67 66 32 | 93 92 75 43 1 98 71 19 13 40 29 85 67 66 12 25 83 39 48 8 7 5 31 65 33 +Card 77: 87 73 2 20 57 7 99 23 4 81 | 3 10 65 56 26 84 34 78 17 66 44 72 69 76 30 95 5 38 28 8 70 22 99 82 54 +Card 78: 2 48 95 8 80 41 26 96 47 50 | 1 5 21 24 91 29 22 47 98 57 82 42 72 94 62 90 2 95 49 36 6 71 27 70 33 +Card 79: 32 35 6 27 72 8 81 44 28 43 | 59 79 54 18 51 82 25 61 83 37 12 94 41 74 69 16 73 65 1 26 9 33 29 34 66 +Card 80: 46 43 77 74 73 26 84 50 86 24 | 6 29 89 70 16 3 98 92 17 27 79 86 31 93 85 41 96 91 77 48 14 66 18 54 99 +Card 81: 69 60 90 30 65 28 96 97 41 38 | 40 3 44 62 94 97 57 60 9 85 17 88 28 96 22 77 72 36 30 52 83 95 73 48 80 +Card 82: 27 47 86 26 46 44 59 63 31 58 | 51 13 11 50 35 89 8 78 54 82 67 64 15 83 73 74 57 4 76 29 43 90 91 37 22 +Card 83: 84 6 1 64 33 37 68 83 72 90 | 41 69 59 91 46 40 22 5 51 27 76 45 32 43 37 3 10 85 26 81 87 56 25 67 55 +Card 84: 61 83 50 49 91 12 98 38 6 78 | 93 73 96 62 70 39 59 5 48 18 40 63 90 22 61 46 50 66 91 95 88 71 76 87 29 +Card 85: 3 60 82 33 22 43 9 98 50 89 | 48 56 15 77 25 92 6 41 84 2 49 29 61 57 51 64 96 36 7 22 31 32 28 30 59 +Card 86: 48 22 41 64 65 16 25 36 29 76 | 86 5 19 89 36 60 27 1 11 67 98 73 35 75 61 21 92 91 93 66 47 39 87 68 52 +Card 87: 68 42 18 51 79 37 9 34 8 85 | 12 7 19 30 91 84 29 53 73 65 48 94 17 22 4 32 33 15 93 75 38 31 41 86 67 +Card 88: 50 35 98 64 91 37 80 75 39 8 | 37 13 35 24 64 91 75 4 63 45 98 56 85 8 1 29 43 97 65 50 80 74 25 32 39 +Card 89: 55 87 4 74 33 2 61 37 94 57 | 37 25 55 48 2 40 5 38 94 85 87 4 7 51 57 75 43 61 34 67 17 74 24 10 33 +Card 90: 76 98 38 16 60 19 93 26 48 43 | 72 8 26 45 98 61 67 16 42 43 29 76 93 50 79 38 27 15 19 54 99 60 3 88 48 +Card 91: 64 67 7 18 71 96 45 89 39 2 | 71 21 98 87 39 19 57 45 86 7 49 2 67 20 96 74 90 64 18 17 89 99 23 59 16 +Card 92: 68 66 33 78 22 62 39 31 37 5 | 95 40 33 37 5 22 66 78 10 68 63 43 90 31 46 8 62 32 98 73 39 21 45 13 20 +Card 93: 21 25 2 91 58 37 51 60 12 74 | 47 40 51 66 77 63 84 68 2 4 60 75 91 21 22 35 32 80 74 37 58 20 12 14 27 +Card 94: 81 48 43 59 86 85 2 92 27 35 | 34 84 11 6 25 1 96 24 30 8 21 33 74 57 70 91 66 20 7 75 36 73 53 87 62 +Card 95: 15 2 41 54 12 45 3 56 77 9 | 12 60 7 97 49 96 99 32 24 63 16 62 68 88 26 43 54 20 27 33 47 19 58 15 75 +Card 96: 90 47 53 86 39 54 7 82 65 22 | 84 62 70 82 78 65 53 86 30 73 57 47 72 54 39 11 35 83 22 40 28 7 21 90 63 +Card 97: 17 25 87 43 20 84 75 78 6 53 | 75 6 64 90 87 61 11 31 36 60 38 78 46 27 82 72 16 95 57 17 30 53 94 77 3 +Card 98: 45 18 60 22 16 91 39 27 38 88 | 18 88 92 49 79 10 38 98 35 99 89 91 23 32 9 39 1 64 48 11 22 15 66 82 21 +Card 99: 6 42 69 91 94 38 87 11 97 26 | 6 71 11 69 16 97 49 73 45 48 38 87 42 2 67 26 89 95 81 30 1 91 20 10 66 +Card 100: 57 7 39 52 99 68 48 24 2 16 | 1 43 77 38 25 18 41 73 26 12 90 3 95 54 22 72 65 83 11 32 37 85 14 71 29 +Card 101: 48 71 81 27 52 26 75 95 19 54 | 19 59 90 24 17 56 34 39 49 88 80 75 10 58 86 55 26 67 89 85 65 40 30 81 6 +Card 102: 35 62 57 40 79 63 37 33 60 17 | 37 35 33 97 79 75 7 19 59 67 23 63 41 17 85 58 42 38 53 36 83 60 62 76 95 +Card 103: 91 18 51 5 41 61 26 94 47 85 | 26 58 65 41 96 83 30 63 78 87 90 4 53 95 6 8 98 36 82 76 92 34 28 94 56 +Card 104: 45 38 79 42 74 18 16 61 65 89 | 58 5 84 72 51 22 52 56 64 11 23 38 16 93 24 25 29 66 41 35 77 20 95 17 1 +Card 105: 9 97 56 51 55 62 19 75 83 47 | 58 15 96 43 24 9 47 80 95 71 62 29 72 39 40 19 61 52 8 32 88 69 27 70 86 +Card 106: 82 26 96 33 35 50 19 78 64 91 | 9 17 70 96 89 91 4 52 75 56 64 14 63 32 50 73 7 81 46 10 53 42 99 95 26 +Card 107: 66 58 63 7 95 46 42 97 67 59 | 96 23 86 7 58 61 14 17 93 45 39 60 28 32 15 46 55 35 2 44 22 27 78 94 68 +Card 108: 48 3 54 58 30 47 71 74 28 37 | 44 62 60 16 97 71 23 35 49 24 93 7 65 87 19 99 89 28 34 45 90 70 64 20 66 +Card 109: 3 90 39 83 16 47 44 1 28 65 | 38 48 24 37 96 81 60 54 6 58 68 23 21 35 26 45 98 85 40 63 64 80 29 97 34 +Card 110: 3 12 59 28 93 26 92 52 38 64 | 65 36 5 49 72 86 6 33 84 73 98 89 47 61 57 14 32 44 10 97 69 40 99 7 51 +Card 111: 3 2 30 72 16 80 46 52 51 64 | 76 86 57 44 89 26 96 10 1 23 59 32 60 41 77 73 68 29 78 75 62 28 6 99 71 +Card 112: 84 34 17 40 47 44 33 99 65 79 | 65 74 97 55 33 13 52 34 47 40 17 56 6 96 76 8 59 51 99 84 18 48 79 44 24 +Card 113: 13 92 5 86 85 36 74 28 82 18 | 48 36 5 37 46 95 90 82 19 68 10 8 11 18 80 69 63 86 85 28 92 64 71 32 94 +Card 114: 96 50 90 97 11 42 79 78 56 26 | 78 50 27 47 96 97 62 42 26 86 84 72 79 20 11 43 8 64 87 95 56 68 90 67 52 +Card 115: 29 36 84 82 38 61 86 73 25 45 | 37 58 28 45 6 36 29 43 95 92 56 73 44 83 25 97 61 82 84 71 69 38 77 86 42 +Card 116: 97 19 96 10 44 26 81 79 7 89 | 39 55 63 4 94 24 29 12 65 84 68 31 75 23 15 71 54 82 56 42 5 53 96 40 51 +Card 117: 74 94 58 42 30 40 97 33 73 93 | 62 59 9 41 71 98 97 19 32 24 40 1 56 14 74 87 52 92 61 90 37 45 20 80 31 +Card 118: 96 45 27 88 2 82 87 99 39 17 | 53 36 44 55 21 88 33 74 26 22 61 46 18 43 20 68 54 49 87 67 35 73 3 63 1 +Card 119: 80 19 2 6 68 32 23 22 99 28 | 20 40 66 38 87 59 41 55 54 57 21 12 11 45 65 16 24 3 63 68 73 98 99 14 17 +Card 120: 84 92 65 58 80 55 2 72 78 75 | 66 64 44 88 1 41 59 13 29 52 30 71 90 21 76 87 73 70 25 61 26 69 32 81 95 +Card 121: 52 32 92 91 42 8 15 19 1 30 | 89 92 96 46 25 24 48 90 59 83 15 75 28 57 61 39 43 42 84 95 45 73 41 98 67 +Card 122: 70 89 60 43 1 58 49 46 28 45 | 74 62 66 13 67 95 55 10 9 70 54 84 29 31 8 96 59 81 27 3 63 12 1 82 87 +Card 123: 41 51 96 76 48 54 4 71 45 84 | 68 66 2 4 78 15 1 62 75 94 59 7 12 28 60 39 16 42 61 8 84 89 46 95 35 +Card 124: 48 61 35 81 94 73 98 46 53 85 | 55 2 40 3 84 4 11 88 77 62 79 39 85 27 36 82 33 93 29 47 67 50 12 91 19 +Card 125: 63 44 28 58 5 26 85 93 50 76 | 39 10 25 30 2 3 42 60 94 83 57 9 75 13 67 90 36 81 18 72 23 37 48 19 69 +Card 126: 41 28 15 87 88 50 57 27 78 30 | 3 24 89 91 47 40 11 83 76 33 53 74 9 42 43 66 70 17 99 29 75 19 98 90 64 +Card 127: 77 24 27 2 59 54 6 61 65 12 | 34 42 68 15 70 75 2 27 61 40 6 13 24 54 12 59 44 65 22 88 86 77 3 79 64 +Card 128: 3 15 55 7 80 69 64 13 77 33 | 34 50 3 17 88 66 79 59 38 1 41 11 55 8 7 80 68 25 16 46 61 19 13 74 33 +Card 129: 26 19 39 29 4 6 55 49 67 12 | 72 53 12 63 64 49 19 98 3 45 4 35 28 43 51 26 38 23 96 44 22 7 79 80 67 +Card 130: 80 61 1 62 46 5 84 17 14 49 | 75 84 61 85 29 62 46 1 17 63 3 31 57 79 19 58 96 14 76 42 32 49 5 80 56 +Card 131: 63 30 2 29 71 37 12 36 16 47 | 14 82 99 98 52 39 19 60 4 90 74 33 65 27 62 7 32 64 10 37 35 15 11 69 59 +Card 132: 68 81 89 42 36 34 18 53 74 41 | 24 37 14 73 97 54 59 90 9 29 49 10 47 32 85 87 99 98 78 39 27 22 57 81 33 +Card 133: 89 9 10 61 30 81 36 84 70 12 | 69 10 4 90 65 50 93 34 54 13 80 16 98 49 42 35 77 61 85 55 86 6 11 23 39 +Card 134: 27 19 90 30 85 41 58 79 53 11 | 15 58 36 52 11 93 54 24 26 39 51 79 56 35 30 85 53 6 17 32 5 16 87 27 33 +Card 135: 26 44 30 42 99 89 76 27 64 48 | 38 70 95 25 60 2 49 35 71 5 17 63 62 88 20 41 79 19 67 72 40 46 81 10 74 +Card 136: 70 64 49 85 48 16 41 52 91 24 | 48 2 62 28 54 78 50 52 83 7 43 90 96 60 10 26 12 6 95 51 91 25 47 67 87 +Card 137: 10 6 53 80 8 93 62 98 60 82 | 28 19 36 1 14 73 85 16 8 32 21 13 97 90 2 29 34 69 55 80 6 27 62 37 10 +Card 138: 28 25 60 17 99 39 35 48 34 26 | 46 32 33 43 98 10 62 70 41 17 40 27 34 67 4 26 85 63 58 60 16 97 14 57 20 +Card 139: 42 49 16 73 10 23 35 41 93 8 | 76 28 17 32 91 96 92 19 61 97 88 27 83 80 72 57 87 33 14 67 42 10 64 94 65 +Card 140: 81 17 80 94 54 21 57 12 60 48 | 88 27 7 11 6 28 98 33 94 77 14 53 1 92 50 22 93 49 18 86 84 63 42 64 90 +Card 141: 98 31 93 30 72 39 33 35 57 54 | 45 95 69 89 51 55 21 67 50 68 46 5 86 65 17 82 29 48 8 91 71 63 25 52 1 +Card 142: 81 61 78 99 24 42 13 10 3 9 | 8 41 38 63 5 82 54 46 67 83 45 20 44 19 91 92 1 4 77 32 17 59 21 50 94 +Card 143: 78 65 47 51 54 16 23 59 39 34 | 34 53 78 4 29 59 3 87 23 73 16 65 24 38 58 21 89 92 54 39 47 30 66 37 88 +Card 144: 61 73 60 75 2 23 24 44 1 40 | 45 72 5 22 77 88 78 21 76 16 39 85 46 51 97 80 4 27 41 37 9 71 38 28 65 +Card 145: 28 24 22 79 56 23 51 50 54 63 | 22 25 11 44 59 28 50 2 29 85 79 24 54 8 6 23 92 20 71 56 81 95 51 26 63 +Card 146: 28 74 36 10 32 15 72 30 83 73 | 76 7 10 49 11 74 20 62 24 26 21 40 79 41 34 55 98 95 82 43 89 37 9 45 52 +Card 147: 80 20 78 59 53 42 31 95 63 11 | 80 59 61 57 86 42 78 53 21 95 92 75 15 31 97 72 5 11 41 90 63 56 44 25 20 +Card 148: 58 73 92 17 9 24 30 49 5 20 | 95 77 78 72 20 24 1 27 82 92 58 49 74 59 5 65 73 9 84 4 14 76 43 17 30 +Card 149: 87 18 12 98 41 27 13 48 82 37 | 87 78 2 88 61 36 95 25 81 18 41 33 1 69 34 57 27 73 55 12 82 31 59 48 6 +Card 150: 35 47 42 66 43 72 76 68 21 20 | 83 85 8 71 21 6 60 74 96 55 2 19 9 11 98 62 20 39 41 10 30 81 33 51 31 +Card 151: 83 24 73 61 49 67 89 95 60 43 | 59 84 28 21 26 72 37 43 38 3 13 6 9 27 7 42 77 19 65 16 71 52 29 80 33 +Card 152: 99 54 98 50 69 82 51 95 73 62 | 86 38 88 79 9 63 45 34 23 80 47 30 83 14 93 4 96 49 15 52 16 20 33 76 75 +Card 153: 76 36 9 23 70 53 41 74 27 64 | 40 71 39 29 88 19 76 97 46 23 4 68 67 33 52 95 62 91 60 11 75 13 81 99 37 +Card 154: 27 71 72 6 69 76 59 44 51 80 | 5 2 17 82 58 83 7 9 61 70 43 96 87 78 69 42 88 74 85 31 99 13 16 81 15 +Card 155: 82 71 39 56 8 42 1 63 92 11 | 16 52 94 85 67 11 98 65 50 71 2 78 43 1 41 66 86 72 77 36 30 6 46 70 38 +Card 156: 90 44 46 70 71 60 5 68 57 77 | 1 28 62 56 87 32 23 37 40 68 18 94 20 97 72 21 4 33 50 73 16 80 22 14 45 +Card 157: 60 51 2 24 69 85 55 47 62 48 | 6 86 49 55 78 42 61 98 30 77 65 4 21 20 38 93 54 18 72 44 32 8 14 58 37 +Card 158: 50 45 37 6 18 12 2 69 23 76 | 10 70 54 79 95 4 36 87 73 22 94 42 26 21 57 15 7 14 74 90 67 3 33 49 63 +Card 159: 26 12 57 16 96 61 42 99 71 25 | 25 51 26 9 47 57 4 53 61 12 97 36 76 39 99 65 92 16 78 41 71 62 48 96 42 +Card 160: 48 43 26 9 31 62 10 60 38 59 | 59 26 38 4 10 85 55 6 62 18 35 33 29 95 9 60 79 11 24 34 43 22 88 16 12 +Card 161: 15 82 90 63 18 26 57 9 47 35 | 63 23 43 56 82 92 9 42 94 4 90 89 10 26 62 32 20 30 52 85 18 19 47 66 57 +Card 162: 4 37 67 35 71 22 17 14 49 16 | 10 82 7 16 87 99 84 45 20 21 97 79 43 29 86 54 19 9 81 85 62 78 1 61 24 +Card 163: 41 6 57 96 5 21 9 89 65 27 | 26 12 23 9 17 89 33 2 28 65 92 10 97 27 96 56 80 64 90 50 52 46 42 6 5 +Card 164: 53 51 16 32 60 84 55 14 18 25 | 18 52 56 28 6 89 80 19 23 29 57 34 8 70 79 41 91 90 96 88 66 35 97 44 82 +Card 165: 17 66 59 23 35 45 32 49 56 26 | 2 74 97 9 80 76 12 50 31 15 53 41 56 33 30 98 20 44 25 81 91 45 55 99 24 +Card 166: 92 25 70 80 85 88 62 81 61 43 | 40 62 21 83 44 18 87 5 81 43 13 10 85 30 1 53 99 79 68 16 49 20 56 7 15 +Card 167: 36 63 98 92 11 59 6 47 2 83 | 41 90 83 68 54 64 25 80 56 7 99 16 5 30 27 88 63 11 22 67 81 17 9 39 95 +Card 168: 64 20 56 74 5 21 70 52 33 58 | 4 64 28 7 44 80 12 38 8 89 83 57 37 54 87 69 48 63 2 72 78 85 62 60 15 +Card 169: 13 92 14 8 98 84 54 85 97 38 | 51 90 69 98 38 13 4 8 67 5 91 14 54 68 10 18 83 56 41 25 81 73 58 17 62 +Card 170: 54 39 20 12 50 6 83 85 33 45 | 3 97 19 5 61 66 81 46 24 56 29 92 52 85 73 43 71 13 60 12 36 62 64 35 32 +Card 171: 33 36 27 29 93 73 83 62 60 82 | 4 71 14 72 45 58 10 38 12 69 27 3 95 31 84 34 66 83 21 87 22 5 75 53 35 +Card 172: 92 9 73 82 15 6 44 28 88 34 | 99 78 11 46 9 36 89 65 17 8 16 94 68 63 12 54 25 33 69 47 13 38 93 50 59 +Card 173: 41 10 43 83 81 39 66 17 28 63 | 48 79 29 20 64 59 55 46 47 45 70 62 37 16 84 68 82 88 67 2 65 97 18 56 14 +Card 174: 53 73 55 83 9 57 87 35 1 42 | 66 52 56 76 19 92 78 91 82 87 20 39 31 72 43 71 11 33 15 18 75 84 46 47 22 +Card 175: 93 51 74 60 92 84 87 58 81 34 | 67 7 99 68 30 66 27 43 65 71 28 50 2 13 32 26 72 76 17 31 49 3 54 95 82 +Card 176: 3 92 48 97 73 37 84 44 53 91 | 21 35 42 99 87 36 31 43 79 52 89 6 59 14 57 26 76 33 38 19 82 63 74 25 39 +Card 177: 46 93 6 62 56 3 76 64 59 7 | 88 46 7 98 93 76 60 59 6 3 72 64 21 40 77 78 62 47 61 42 45 99 56 28 41 +Card 178: 43 69 96 12 88 93 97 33 80 20 | 58 94 56 93 12 2 20 24 14 40 27 73 97 80 99 43 74 16 91 88 33 96 71 25 69 +Card 179: 59 1 88 53 87 90 39 32 97 89 | 70 57 90 20 73 35 32 88 58 71 36 59 33 1 55 97 87 98 45 39 9 96 53 60 89 +Card 180: 33 19 87 82 90 1 14 78 84 35 | 89 19 20 3 66 23 87 54 78 39 65 84 35 83 33 69 14 90 44 49 72 38 75 82 1 +Card 181: 60 32 78 83 82 29 90 14 46 87 | 63 72 92 39 75 10 43 40 7 89 11 32 86 54 4 90 68 45 95 91 13 1 56 6 29 +Card 182: 11 18 63 73 64 39 9 92 82 62 | 8 27 69 64 3 53 73 11 21 39 10 18 35 44 56 62 75 72 4 51 6 42 82 37 76 +Card 183: 88 56 32 39 23 49 92 50 59 28 | 92 2 48 32 63 49 59 83 56 1 91 41 50 88 28 17 39 57 20 36 34 6 60 23 42 +Card 184: 34 97 99 76 32 75 69 83 60 79 | 44 86 52 99 85 32 34 4 28 79 76 46 22 83 54 56 60 31 75 51 80 89 45 69 97 +Card 185: 74 35 67 1 55 18 60 37 17 50 | 85 50 44 20 87 14 22 32 55 18 17 59 28 93 1 96 68 37 74 60 98 97 67 35 4 +Card 186: 44 36 3 80 6 24 90 81 34 61 | 76 69 14 77 53 21 4 16 18 46 9 59 34 38 98 13 30 11 7 17 88 41 42 99 23 +Card 187: 54 53 39 24 80 78 13 46 17 67 | 62 91 86 52 80 59 26 78 73 46 16 77 18 37 9 55 13 17 72 69 32 68 67 34 81 +Card 188: 50 19 11 73 61 75 67 54 12 84 | 73 84 97 56 74 59 35 75 61 14 15 19 24 12 51 6 58 11 89 67 53 25 21 54 50 +Card 189: 76 48 38 17 97 67 42 23 82 6 | 73 10 17 70 85 95 54 43 93 91 3 82 26 16 23 76 33 38 67 48 5 53 97 6 42 +Card 190: 61 19 93 50 11 56 32 5 84 37 | 32 62 82 84 50 61 91 15 69 19 68 20 74 92 10 55 11 93 39 37 18 5 47 22 46 +Card 191: 2 58 93 26 23 31 60 74 35 47 | 74 64 26 68 8 60 11 73 93 42 87 2 31 97 61 47 65 24 58 66 53 38 94 46 88 +Card 192: 64 37 49 88 95 79 29 59 2 99 | 39 63 31 68 36 24 60 9 94 89 93 13 45 77 38 55 14 23 92 83 29 33 44 34 71 +Card 193: 19 23 99 89 26 80 63 60 59 66 | 78 80 99 60 66 47 84 59 24 61 5 63 67 26 87 42 96 10 54 98 19 81 4 43 8 +Card 194: 6 36 31 40 89 19 63 16 60 68 | 75 84 91 77 40 5 81 10 52 86 19 96 16 58 30 6 78 61 82 74 97 89 90 62 37 +Card 195: 45 54 92 67 47 65 91 98 87 29 | 5 72 15 25 88 36 73 20 91 90 83 46 87 47 10 22 69 2 62 57 28 93 3 59 1 +Card 196: 88 34 96 16 54 9 17 89 20 52 | 20 54 47 61 12 57 38 11 8 85 74 52 90 77 41 46 4 89 19 39 34 83 55 7 97 +Card 197: 38 3 57 72 97 45 66 73 56 8 | 83 68 28 64 58 66 85 15 53 65 23 3 37 87 20 17 47 63 55 69 88 70 62 92 76 +Card 198: 98 66 29 17 83 9 6 84 36 70 | 21 10 31 84 93 14 67 29 24 91 12 41 99 19 5 56 83 74 2 8 79 95 64 49 53 +Card 199: 41 93 33 26 45 65 97 39 20 95 | 82 8 30 6 34 58 49 16 29 91 64 80 50 9 74 59 19 60 69 53 61 3 83 67 35 +Card 200: 86 85 91 2 27 65 45 73 60 69 | 66 26 28 7 98 80 14 52 6 35 57 46 39 4 30 55 94 75 82 83 96 13 74 9 58 +Card 201: 30 53 41 42 10 51 37 63 46 67 | 84 74 33 5 86 32 45 83 52 1 13 43 65 49 98 91 9 11 96 66 15 62 27 44 24 \ No newline at end of file diff --git a/day4/sample.txt b/day4/sample.txt new file mode 100644 index 0000000..71f208a --- /dev/null +++ b/day4/sample.txt @@ -0,0 +1,6 @@ +Card 1: 41 48 83 86 17 | 83 86 6 31 17 9 48 53 +Card 2: 13 32 20 16 61 | 61 30 68 82 17 32 24 19 +Card 3: 1 21 53 59 44 | 69 82 63 72 16 21 14 1 +Card 4: 41 92 73 84 69 | 59 84 76 51 58 5 54 83 +Card 5: 87 83 26 28 32 | 88 30 70 12 93 22 82 36 +Card 6: 31 18 13 56 72 | 74 77 10 23 35 67 36 11 \ No newline at end of file From fbf4c116dd2915518a1cd128a568d59fdb2f0e03 Mon Sep 17 00:00:00 2001 From: Rene Pot Date: Mon, 4 Dec 2023 21:04:33 +0100 Subject: [PATCH 54/59] improved speed with regex --- day4/index.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/day4/index.js b/day4/index.js index b769598..66f2869 100644 --- a/day4/index.js +++ b/day4/index.js @@ -30,9 +30,8 @@ export const part2 = ({ input }) => { }; const getNumbers = ({ row }) => { - const split = row.split(": "); - const numbers = split[1].split(" | "); - const winning = numbers[0].split(" ").filter((n) => isNumeric(n)); - const have = numbers[1].split(" ").filter((n) => isNumeric(n)); + const matches = row.match(/: (.+?) \| (.+)/); + const winning = matches[1].match(/\d+/g); + const have = matches[2].match(/\d+/g); return { winning, have }; }; From c389f54c9d2a428eb7cd9e65a804ab13ef0dbde9 Mon Sep 17 00:00:00 2001 From: Rene Pot Date: Wed, 6 Dec 2023 22:43:10 +0100 Subject: [PATCH 55/59] day 5 part 1 --- day5/index.js | 74 +++++++++++++++ day5/input.txt | 235 ++++++++++++++++++++++++++++++++++++++++++++++++ day5/sample.txt | 33 +++++++ 3 files changed, 342 insertions(+) create mode 100644 day5/index.js create mode 100644 day5/input.txt create mode 100644 day5/sample.txt diff --git a/day5/index.js b/day5/index.js new file mode 100644 index 0000000..c51a6da --- /dev/null +++ b/day5/index.js @@ -0,0 +1,74 @@ +export const part1 = ({ input }) => { + let result = 0; + const almanac = extractAlmanac({ input }); + let current = "seed"; + let list = almanac.seeds; + let newList = []; + while (current !== "location") { + const conversion = almanac.conversions.find((c) => c.from === current); + conversion.ranges.forEach((range) => { + let difference = range.destinationRange - range.sourceRange; + let from = range.sourceRange; + let to = range.sourceRange + range.length - 1; + + for (let i = list.length - 1; i >= 0; i--) { + const item = list[i]; + if (item >= from && item <= to) { + newList.push(item + difference); + list.splice(i, 1); + } + } + }); + list = [...list, ...newList]; + newList = []; + current = conversion.to; + } + result = Math.min(...list); + return result; +}; + +export const part2 = ({ input }) => { + let result = 0; + return result; +}; + +const extractAlmanac = ({ input }) => { + let almanac = { conversions: [] }; + + let conversion = {}; + input.forEach((line, i) => { + if (i === 0) { + almanac.seeds = line.split(": ")[1].split(" ").map(Number); + return; + } + if (line === "") { + if (conversion.from) { + almanac.conversions.push(conversion); + conversion = {}; + } + return; + } + if (line.indexOf("-to-") > -1) { + let [from, to] = line.split("-to-"); + to = to.split(" map")[0]; + conversion = { + from: from, + to: to, + ranges: [], + }; + return; + } + let [destinationRange, sourceRange, length] = line.split(" "); + conversion.ranges.push({ + destinationRange: parseInt(destinationRange), + sourceRange: parseInt(sourceRange), + length: parseInt(length), + }); + }); + if (conversion.from) { + almanac.conversions.push(conversion); + } + return almanac; +}; + +const extractRanges = ({ input }) => {}; diff --git a/day5/input.txt b/day5/input.txt new file mode 100644 index 0000000..0b06187 --- /dev/null +++ b/day5/input.txt @@ -0,0 +1,235 @@ +seeds: 1778931867 1436999653 3684516104 2759374 1192793053 358764985 1698790056 76369598 3733854793 214008036 4054174000 171202266 3630057255 25954395 798587440 316327323 290129780 7039123 3334326492 246125391 + +seed-to-soil map: +1965922922 2387203602 59808406 +2540447436 434094583 220346698 +2217992666 1677013102 149631368 +0 700424909 25332775 +2488189883 199146916 52257553 +1096820417 2512808179 247985955 +25332775 725757684 113904366 +4167057552 3534307691 127909744 +1787863383 0 33562512 +2947958449 3662217435 64182733 +2907785302 3360301224 40173147 +3774943096 4218385602 76581694 +693455216 1273647901 403365201 +380961654 1909017232 171283127 +139237141 1031923388 241724513 +2367624034 251404469 38193087 +3038180364 3429533867 104773824 +2484064707 1826644470 4125176 +1344806372 128789319 70357597 +3012141182 3109705711 26039182 +1821425895 289597556 144497027 +598228409 33562512 95226807 +2405817121 1830769646 78247586 +552244781 654441281 45983628 +3641222276 3255639900 104661324 +3851524790 3726400168 315532762 +2025731328 839662050 192261338 +3464769604 4041932930 176452672 +1480960140 2080300359 306903243 +1415163969 2447012008 65796171 +3142954188 2787890295 321815416 +3745883600 3400474371 29059496 +2787890295 3135744893 119895007 + +soil-to-fertilizer map: +974611207 822914672 41736646 +1617020803 484683369 227984726 +2936246728 1897199618 22236339 +1599589242 1541299272 17431561 +897092117 484593057 90312 +2958483067 3614284126 70951194 +3636585470 2567424345 5451325 +0 2712467888 73845937 +2654331234 1997195625 281915494 +3241974258 3685235320 31499686 +3642036795 3512208003 74698211 +1092039278 1347003830 194295442 +790747225 1558730833 106344892 +897182429 42121154 77428778 +1845005529 380881656 29170315 +313046856 3156899567 355308436 +1952497963 410051971 74541086 +3043555623 2369005710 198418635 +2040295599 119549932 261331724 +3630375808 2279111119 6209662 +3383720521 1665075725 217219287 +2301627323 2670771541 41696347 +1515904313 2285320781 83684929 +73845937 1076160024 239200919 +2343323670 864651318 182031257 +2027039049 3601027576 13256550 +2622688347 1315360943 31642887 +2525354927 2572875670 19573752 +1286334720 1076118575 41449 +4007771416 3743620838 287195880 +668355292 0 42121154 +1286376169 1882295012 14904606 +3600939808 1046682575 29436000 +2544928679 1919435957 77759668 +3273473944 712668095 110246577 +3029434261 3586906214 14121362 +3743620838 4030816718 264150578 +710476446 2786313825 80270779 +1016347853 3081208142 75691425 +1874175844 2592449422 78322119 +1301280775 2866584604 214623538 + +fertilizer-to-water map: +2256462238 272868806 222756596 +2883874475 1945255196 178320531 +1025753868 1262393928 220069640 +2780673998 2532762404 101990486 +222030751 1026223684 236170244 +828766276 1895857025 35481787 +3755107810 3521770115 3468846 +2048518620 2246637941 74827173 +550785854 2716185082 5650779 +1819399513 252684903 20183903 +4134370427 3177062502 147573242 +1893363918 2365324803 45336497 +458200995 495625402 92584859 +3472537931 3557968177 35060837 +122101104 2962265359 99929647 +2192091098 2172374449 64371140 +3538267850 3324635744 184110744 +3758576656 3169743127 7319375 +0 2410661300 122101104 +4281943669 3508746488 13023627 +1849504229 2321465114 43859689 +3722378594 3525238961 32729216 +1245823508 588210261 161392539 +878164447 2814675938 147589421 +864248063 1931338812 13916384 +1938700415 749602800 109818205 +2123345793 2745930633 68745305 +3765896031 3826310364 218680395 +747334084 2634752890 78853599 +3984576426 4075659841 149794001 +2882664484 1482463568 1209991 +723239312 2721835861 24094772 +3169743127 3593029014 233281350 +1839583416 252656442 28461 +2479218834 0 252656442 +3507598768 4044990759 30669082 +826187683 2713606489 2578593 +1839611877 2236745589 9892352 +556436633 859421005 166802679 +3403024477 4225453842 69513454 +2731875276 2123575727 48798722 +1407216047 1483673559 412183466 + +water-to-light map: +2717406339 2056643664 131336656 +2149066749 0 164219220 +3368552624 3554596203 347071357 +648177882 2187980320 58382041 +2313285969 387274540 87651626 +1956244903 880459831 74655597 +630498803 2299352502 17679079 +2030900500 1938477415 118166249 +2958998106 3901667560 109063910 +0 2317031581 376289577 +1862852214 809822482 58007210 +3962172007 3368255348 186340855 +1920859424 164219220 35385479 +829057433 474926166 334896316 +2848742995 867829692 12630139 +3068062016 3067764740 300490608 +2628314327 1849385403 89092012 +1363807094 955115428 499045120 +441461908 1660348508 189036895 +1195755118 2693321158 168051976 +706559923 199604699 122497510 +3824390615 4010731470 137781392 +2400937595 2246362361 21188772 +3715623981 2958998106 108766634 +1163953749 2267551133 31801369 +2422126367 1454160548 206187960 +376289577 322102209 65172331 + +light-to-temperature map: +356025838 1142133666 189347695 +155231063 1824123064 78066821 +3486401291 3916497965 63138309 +3054537751 3004205340 53510430 +545373533 1910851890 39759630 +43898462 1414278470 16090003 +233297884 608643392 7876607 +0 1051586050 43898462 +3108048181 3669777676 160948090 +3567273965 3979636274 194976344 +146569058 1902189885 8662005 +1423483364 1430368473 110560056 +2195994218 3468690397 201087279 +2497560353 2680093671 17356840 +2667148760 3057715770 80634162 +2747782922 2697450511 306754829 +585133163 1540928529 283194535 +1534043420 440260576 168382816 +3762250309 2063919656 446944788 +3318335889 3300624995 168065402 +1308588274 1331481361 82797109 +74539638 616519999 1422739 +2546794082 4174612618 120354678 +3268996271 3201674123 49339618 +2127243847 2611343300 68750371 +59988465 1095484512 14551173 +2397081497 2510864444 100478856 +1391385383 1110035685 32097981 +1702426236 1016254966 35331084 +3549539600 3282890630 17734365 +2063919656 3138349932 63324191 +1737757320 803400766 212854200 +2514917193 3251013741 31876889 +4209195097 3830725766 85772199 +1003769840 135442142 304818434 +241174491 617942738 114851347 +868327698 0 135442142 +75962377 732794085 70606681 + +temperature-to-humidity map: +3056037605 2829211160 523334807 +321779731 0 47068359 +3924298564 3372771457 370668732 +1103457901 562085848 156691500 +0 240306117 321779731 +368848090 1020196358 239953043 +2829211160 3743440189 226826445 +608801133 718777348 301419010 +3579372412 3970266634 324700662 +3915140668 3363613561 9157896 +910220143 232146746 8159371 +3904073074 3352545967 11067594 +918379514 47068359 185078387 + +humidity-to-location map: +1384411009 3878276792 140553103 +3206048776 3137400006 12882465 +2370337851 2414914902 179202838 +23738616 0 161914533 +0 262282387 23738616 +840681798 3768356904 109919888 +2340008493 3054171079 26130417 +1524964112 840681798 815044381 +3130048499 2668879895 76000277 +185653149 548908967 81490523 +3465042209 3687267183 62255927 +367511526 286021003 262887964 +3005762489 2744880172 124286010 +1025363841 2357768227 57146675 +2549540689 1901546427 456221800 +3218931241 4018829895 240309425 +1101344310 2869166182 185004897 +1286349207 1655726179 98061802 +2366138910 1753787981 4198941 +3459240666 4259139320 5801543 +950601686 2594117740 74762155 +3584396646 1757986922 143559505 +267143672 161914533 100367854 +3527298136 3080301496 57098510 +1082510516 3749523110 18833794 +3727956151 3150282471 536984712 \ No newline at end of file diff --git a/day5/sample.txt b/day5/sample.txt new file mode 100644 index 0000000..bd902a4 --- /dev/null +++ b/day5/sample.txt @@ -0,0 +1,33 @@ +seeds: 79 14 55 13 + +seed-to-soil map: +50 98 2 +52 50 48 + +soil-to-fertilizer map: +0 15 37 +37 52 2 +39 0 15 + +fertilizer-to-water map: +49 53 8 +0 11 42 +42 0 7 +57 7 4 + +water-to-light map: +88 18 7 +18 25 70 + +light-to-temperature map: +45 77 23 +81 45 19 +68 64 13 + +temperature-to-humidity map: +0 69 1 +1 0 69 + +humidity-to-location map: +60 56 37 +56 93 4 \ No newline at end of file From 70be231a7f1ec72c86769e267e4e660c7eda5216 Mon Sep 17 00:00:00 2001 From: Rene Pot Date: Wed, 6 Dec 2023 23:29:31 +0100 Subject: [PATCH 56/59] day 6 part 1 --- day5/index.js | 25 ++++++++++++++++++------- day6/index.js | 28 ++++++++++++++++++++++++++++ day6/input.txt | 2 ++ day6/sample.txt | 2 ++ 4 files changed, 50 insertions(+), 7 deletions(-) create mode 100644 day6/index.js create mode 100644 day6/input.txt create mode 100644 day6/sample.txt diff --git a/day5/index.js b/day5/index.js index c51a6da..08178cb 100644 --- a/day5/index.js +++ b/day5/index.js @@ -1,8 +1,24 @@ export const part1 = ({ input }) => { - let result = 0; const almanac = extractAlmanac({ input }); - let current = "seed"; let list = almanac.seeds; + let result = processSeeds({ list, almanac }); + return result; +}; + +export const part2 = ({ input }) => { + const almanac = extractAlmanac({ input }); + let listRanges = almanac.seeds; + let list = []; + for (let i = 0; i < listRanges.length; i += 2) { + list.push(...Array.from({ length: listRanges[i + 1] }, (_, i) => i + listRanges[i])); + } + let result = processSeeds({ list, almanac }); + return result; +}; + +const processSeeds = ({ list, almanac }) => { + let result = 0; + let current = "seed"; let newList = []; while (current !== "location") { const conversion = almanac.conversions.find((c) => c.from === current); @@ -27,11 +43,6 @@ export const part1 = ({ input }) => { return result; }; -export const part2 = ({ input }) => { - let result = 0; - return result; -}; - const extractAlmanac = ({ input }) => { let almanac = { conversions: [] }; diff --git a/day6/index.js b/day6/index.js new file mode 100644 index 0000000..d388387 --- /dev/null +++ b/day6/index.js @@ -0,0 +1,28 @@ +export const part1 = ({ input }) => { + let result = 0; + const times = input[0].match(/\d+/g).map((num) => parseInt(num)); + const records = input[1].match(/\d+/g).map((num) => parseInt(num)); + const waysToBeat = []; + times.forEach((time, index) => { + const distances = calculateDistances(time); + waysToBeat.push(distances.filter((distance) => distance.distance > records[index])); + }); + + result = waysToBeat.reduce((result, array) => result * array.length, 1); + return result; +}; + +const calculateDistances = (maxTime) => { + const distances = []; + let speed = 0; + for (let i = 0; i < maxTime; i++) { + speed = i; + distances.push({ distance: speed * (maxTime - i), pushTime: i }); + } + return distances; +}; + +export const part2 = ({ input }) => { + let result = 0; + return result; +}; diff --git a/day6/input.txt b/day6/input.txt new file mode 100644 index 0000000..1c330b9 --- /dev/null +++ b/day6/input.txt @@ -0,0 +1,2 @@ +Time: 50 74 86 85 +Distance: 242 1017 1691 1252 \ No newline at end of file diff --git a/day6/sample.txt b/day6/sample.txt new file mode 100644 index 0000000..b39f49d --- /dev/null +++ b/day6/sample.txt @@ -0,0 +1,2 @@ +Time: 7 15 30 +Distance: 9 40 200 \ No newline at end of file From 0ba8211064b38cc691a9232def82d45cc2c581b5 Mon Sep 17 00:00:00 2001 From: Rene Pot Date: Wed, 6 Dec 2023 23:34:10 +0100 Subject: [PATCH 57/59] day 6 part 2 --- day6/index.js | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/day6/index.js b/day6/index.js index d388387..238a279 100644 --- a/day6/index.js +++ b/day6/index.js @@ -12,6 +12,17 @@ export const part1 = ({ input }) => { return result; }; +export const part2 = ({ input }) => { + let result = 0; + const time = input[0].replace(/\D/g, ""); + const record = input[1].replace(/\D/g, ""); + + const distances = calculateDistances(time); + result = distances.filter((distance) => distance.distance > record).length; + + return result; +}; + const calculateDistances = (maxTime) => { const distances = []; let speed = 0; @@ -21,8 +32,3 @@ const calculateDistances = (maxTime) => { } return distances; }; - -export const part2 = ({ input }) => { - let result = 0; - return result; -}; From 1aaabb3cf456197bfff57c79a8cffc2d18e1b566 Mon Sep 17 00:00:00 2001 From: Rene Pot Date: Wed, 6 Dec 2023 23:53:24 +0100 Subject: [PATCH 58/59] simplify part 2, should've done this in the first place --- day6/index.js | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/day6/index.js b/day6/index.js index 238a279..5f64e6f 100644 --- a/day6/index.js +++ b/day6/index.js @@ -13,12 +13,17 @@ export const part1 = ({ input }) => { }; export const part2 = ({ input }) => { + const time = parseInt(input[0].replace(/\D/g, "")); + const record = parseInt(input[1].replace(/\D/g, "")); + let result = 0; - const time = input[0].replace(/\D/g, ""); - const record = input[1].replace(/\D/g, ""); - const distances = calculateDistances(time); - result = distances.filter((distance) => distance.distance > record).length; + for (let i = 0; i < time; i++) { + const distance = i * (time - i); + if (distance > record) { + result++; + } + } return result; }; From d5ad4edbe926123501ed348addda92335c0c2b41 Mon Sep 17 00:00:00 2001 From: Rene Pot Date: Fri, 8 Dec 2023 14:15:24 +0100 Subject: [PATCH 59/59] day 7 part 1, does not work yet with full input --- day7/index.js | 108 +++++ day7/input.txt | 1000 +++++++++++++++++++++++++++++++++++++++++++++++ day7/sample.txt | 24 ++ hands.txt | 1000 +++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 2132 insertions(+) create mode 100644 day7/index.js create mode 100644 day7/input.txt create mode 100644 day7/sample.txt create mode 100644 hands.txt diff --git a/day7/index.js b/day7/index.js new file mode 100644 index 0000000..a3f215d --- /dev/null +++ b/day7/index.js @@ -0,0 +1,108 @@ +import fs from "fs"; +const cardOrder = "23456789TJQKA"; +const handType = { + HIGH_CARD: 0, + ONE_PAIR: 1, + TWO_PAIR: 2, + THREE_OF_A_KIND: 3, + FULL_HOUSE: 4, + FOUR_OF_A_KIND: 5, + FIVE_OF_A_KIND: 6, +}; + +export const part1 = ({ input }) => { + let result = 0; + const hands = splitHands({ input }); + hands.map(getHandType); + hands.sort(sortHands); + + writeArrayToFile(hands, "hands.txt"); + hands.forEach((hand, i) => { + result += hand.bid * (i + 1); + }); + return result; +}; + +export const part2 = ({ input }) => { + let result = 0; + return result; +}; + +const splitHands = ({ input }) => { + const hands = []; + input.forEach((hand) => { + const split = hand.split(" "); + const details = { + cards: split[0].split(""), + bid: parseInt(split[1]), + type: handType.HIGH_CARD, + }; + hands.push(details); + }); + return hands; +}; + +function getHandType(hand) { + const mergedString = hand.cards.join(""); + const regexPair = /([A-Z0-9])(.*\1)/; + const regexThreeOfAKind = /([A-Z0-9]).*\1.*\1/; + const regexFourOfAKind = /([A-Z0-9]).*\1.*\1.*\1/; + const regexFiveOfAKind = /([A-Z0-9]).*\1.*\1.*\1.*\1/; + const regexTwoPair = /([A-Z0-9]).*\1.*([A-Z0-9]).*\2/; + const regexFullHouse = /([A-Z0-9]).*\1.*\1.*([A-Z0-9]).*\2/; + + if (regexFiveOfAKind.test(mergedString)) { + hand.type = handType.FIVE_OF_A_KIND; + } else if (regexFourOfAKind.test(mergedString)) { + hand.type = handType.FOUR_OF_A_KIND; + } else if (regexFullHouse.test(mergedString)) { + hand.type = handType.FULL_HOUSE; + } else if (regexThreeOfAKind.test(mergedString)) { + hand.type = handType.THREE_OF_A_KIND; + } else if (regexTwoPair.test(mergedString)) { + hand.type = handType.TWO_PAIR; + } else if (regexPair.test(mergedString)) { + hand.type = handType.ONE_PAIR; + } + + return hand; +} + +const sortHands = (handA, handB) => { + if (handA.type > handB.type) { + return 1; + } else if (handA.type < handB.type) { + return -1; + } + + let i; + for (i = 0; i < 5; i++) { + if (handA.cards[i] === handB.cards[i]) { + continue; + } + + if (cardOrder.indexOf(handA.cards[i]) > cardOrder.indexOf(handB.cards[i])) { + return 1; + } + + if (cardOrder.indexOf(handA.cards[i]) < cardOrder.indexOf(handB.cards[i])) { + return -1; + } + + if (i > 4) { + return 0; + } + } +}; + +function writeArrayToFile(array, filename) { + const content = array.map(JSON.stringify).join("\n"); + + fs.writeFile(filename, content, (err) => { + if (err) { + console.error(err); + return; + } + console.log("Data written to file successfully."); + }); +} diff --git a/day7/input.txt b/day7/input.txt new file mode 100644 index 0000000..c762a16 --- /dev/null +++ b/day7/input.txt @@ -0,0 +1,1000 @@ +T6782 898 +26T7A 345 +56856 92 +88J88 379 +8QQJ8 792 +QQQT8 607 +98998 912 +888T7 491 +7A6Q9 220 +6QJ23 746 +T5297 133 +44874 357 +84854 864 +8JQQ2 383 +J2KT2 649 +84488 234 +JQ4QT 534 +JJAAA 855 +8J49Q 458 +5QK4A 474 +5535T 504 +T3785 237 +28J88 315 +4544A 680 +7T773 731 +KJKKK 190 +5Q5QK 249 +6664T 747 +QTQQT 164 +ATTAA 290 +95752 486 +J3JAA 324 +K9K9J 204 +99959 867 +K4KKK 980 +A937J 37 +654A9 700 +7553K 352 +8333K 361 +ATJT8 771 +26226 940 +TTJ7Q 834 +QQ33J 117 +62J57 890 +J3A4A 124 +T4JT4 677 +93528 31 +TJA2J 509 +Q222A 126 +52T67 177 +3J9TT 629 +33QQ3 471 +22232 9 +82279 283 +3A3AJ 583 +7343T 829 +93338 836 +T588Q 70 +88K85 593 +55353 926 +Q3749 295 +T6JAK 586 +9AA3J 183 +55565 342 +8K4Q8 910 +AA4A4 907 +78T2A 112 +4J66K 263 +TKJTT 386 +66Q6Q 131 +26266 187 +23AQ3 600 +95K3Q 279 +32522 684 +8Q8Q7 62 +KKAKK 579 +QJ885 899 +66J2K 396 +555J5 592 +88TJ6 767 +352K2 94 +J6488 634 +5A32J 943 +AAAKA 673 +J8AAA 667 +2K5JK 768 +Q4578 294 +4447K 227 +QQQQ7 808 +JJ333 176 +49586 515 +622T7 622 +94359 140 +8QJ2A 239 +Q69JT 939 +A75T9 425 +JKA93 887 +AA7AA 157 +TTTJ5 122 +J2J3J 118 +3J333 681 +3769A 429 +A2K92 123 +53Q8K 257 +A83K4 905 +2935K 543 +66466 421 +34394 963 +QQ433 520 +KTKKK 83 +66677 346 +Q83JQ 334 +6AT54 79 +K4949 442 +37374 627 +73777 571 +JQKKJ 648 +42242 226 +KK888 319 +5K6Q2 971 +AA3JA 51 +4AK87 78 +3J343 840 +K3333 25 +33484 401 +9J866 565 +Q399Q 116 +2K597 742 +66A53 793 +AQQAQ 779 +Q3QJJ 470 +75496 4 +8JJT3 775 +99JKJ 437 +22J9J 60 +39AAT 424 +3J43J 507 +33TJ9 414 +99395 209 +A984Q 821 +A88J8 757 +T3A68 432 +36666 646 +KKKAA 175 +K9TTK 392 +33KK5 308 +KK4K4 675 +64443 370 +TQJ9Q 645 +QT999 669 +J5T88 789 +89TJ4 245 +T436T 605 +6T464 36 +JQQ3Q 11 +68666 423 +KKJKT 785 +T4K3A 847 +6T6JT 915 +8Q756 163 +9AAA2 343 +9AJK8 556 +3JJ69 154 +7K7K3 316 +6737Q 641 +88J7J 975 +5J445 270 +KATJT 659 +6J866 717 +989T9 529 +2897K 321 +4A2T5 984 +7AA99 485 +JK222 397 +75468 282 +QT3J3 91 +3K777 532 +6Q566 460 +2KK75 339 +55258 766 +88558 46 +34J34 419 +T42A8 624 +6JA9K 950 +A8646 135 +66696 66 +37Q7Q 612 +KJAK6 753 +94999 306 +2JJJJ 765 +6JQ3A 459 +K8693 871 +477K7 26 +4T6T8 544 +44JK4 720 +5K5K9 372 +KQ66Q 590 +8A294 57 +JJJJJ 440 +88878 18 +J9649 389 +77677 698 +9K69J 145 +2QT2K 75 +77577 22 +AQ4KA 422 +97477 332 +33933 882 +63646 293 +53A3A 763 +4K93K 928 +KKK37 994 +TA259 173 +K896A 93 +6Q666 438 +J8477 674 +AJAQQ 531 +2JJ2J 726 +5KJT5 672 +A58A2 481 +JJAJT 754 +96444 179 +687A5 528 +TA48J 618 +7Q7Q7 537 +T4A44 23 +473Q6 988 +KQ467 64 +5T555 938 +67T33 444 +KAK99 591 +A6K78 160 +23Q7A 878 +TA5AT 292 +2T6Q5 559 +77979 222 +9AAJA 284 +TK47T 166 +694T2 679 +AAA23 838 +88KJK 170 +QJQ2Q 777 +84486 178 +535JQ 411 +J547T 595 +37773 602 +777JQ 188 +48989 825 +4944K 492 +J8959 375 +72Q5A 908 +Q2AAT 280 +Q3666 119 +48J24 238 +999JA 865 +KK9KK 831 +6Q3JT 909 +3A773 50 +38466 461 +37A25 300 +95555 307 +7Q228 557 +KQ66K 525 +8744K 727 +J9JQ9 475 +A5AKA 148 +A7KJT 309 +TT794 539 +53339 762 +Q9999 6 +A4AT4 993 +888AA 790 +6666A 480 +88Q63 274 +99J92 869 +J8988 884 +8K68J 839 +7QA72 498 +84697 581 +3QK3J 289 +59J8A 692 +Q5J5Q 761 +J777K 930 +T552K 251 +TAT26 715 +6J32T 380 +74K28 523 +22279 104 +8TKT2 393 +68J67 391 +55458 340 +5TK47 395 +822J8 893 +T9388 902 +8TQ3Q 252 +3T549 811 +88883 702 +55J2K 81 +4QTT4 138 +69669 272 +KTKTK 576 +T6668 822 +7J777 736 +9ATJT 892 +Q5QQQ 125 +66T9T 519 +4T244 589 +77747 174 +3J698 837 +39K28 665 +QA459 456 +22342 545 +J8478 489 +Q2962 468 +QAAAA 958 +K8T87 260 +J4KK7 706 +J5J95 695 +47445 724 +K268T 967 +33299 652 +KKKK2 664 +K9JKA 711 +85926 435 +J7K6J 511 +3667J 791 +229QA 633 +998K7 642 +8QQ77 774 +6347A 497 +46526 327 +QK327 750 +KAQ25 927 +27T34 134 +T633T 208 +KKQK7 810 +223J2 900 +5KKJ5 842 +99533 521 +A5Q85 553 +54455 570 +JA946 582 +69Q66 690 +99977 701 +282Q8 428 +4AA42 10 +75977 328 +99T99 948 +J5353 546 +QT95K 285 +KKK3K 896 +9696J 264 +T8275 436 +45J55 80 +69AAA 430 +27J4J 202 +6A888 404 +TQ5K8 819 +55858 113 +T828T 933 +T8888 12 +3KKKT 703 +657J6 291 +8699J 172 +9J99T 705 +A22A2 229 +32263 314 +8QQQQ 101 +2J222 354 +73373 107 +99398 946 +2AA2J 885 +T66J6 184 +3K8K8 903 +KJJKK 611 +22226 781 +9A2J9 191 +AK26J 964 +8KK2Q 317 +82898 883 +T9TTT 195 +584JT 743 +4AA45 61 +93J79 100 +3QJAK 241 +T74AQ 304 +4Q2QQ 548 +KKJ27 330 +A9TKK 39 +6J447 303 +592A6 449 +K9928 65 +9A94K 193 +8T646 431 +Q46K3 20 +K5777 833 +Q9756 30 +33838 638 +65686 298 +A9JAJ 599 +85555 784 +6TAA4 286 +3QQ89 446 +3JT37 463 +8AK5Q 230 +7JAAQ 580 +754TQ 74 +9AQQ4 729 +2933J 678 +62757 575 +29929 619 +A3AAA 216 +Q557Q 691 +A7Q8T 983 +3TJQT 668 +A3KJA 503 +7AA77 881 +88288 995 +7QJ3J 770 +5KKJK 265 +444J4 998 +82J87 89 +T3T3J 63 +2QQ76 510 +5QQ25 132 +KKKT5 441 +Q822Q 954 +84858 788 +37627 873 +22959 426 +K6KKJ 454 +4J844 359 +67JQ7 266 +TQ7T2 206 +5QT2J 854 +KK985 42 +3562T 877 +44343 999 +5J595 859 +37888 657 +J65AK 801 +77276 382 +22A22 207 +QQ4K3 253 +9K2K4 161 +888Q8 863 +75J77 518 +K2K2K 150 +2JT62 398 +J3993 719 +AA88A 813 +9499T 211 +A568Q 98 +6KQ6J 962 +QAKA8 367 +998A9 561 +J2357 196 +A797T 663 +6J9J6 505 +2T5T2 759 +K6464 381 +76677 373 +4K92J 33 +5A8JK 447 +8QQ88 660 +3298A 325 +37333 802 +JTQQT 7 +QQQ3A 820 +J5935 506 +K4334 2 +KA749 40 +94QQ9 415 +537KK 225 +25255 913 +835J9 601 +55TTT 647 +92J92 710 +66A6A 312 +A8TT8 914 +4KJKK 271 +T3242 835 +3K636 623 +93T5A 365 +J4739 816 +244A5 465 +A9TT5 560 +2JAA9 224 +TTT7T 356 +AQQAA 656 +QT5Q5 879 +7AA7J 632 +36344 127 +K5T89 243 +797A9 562 +66363 52 +68585 598 +KQ8A9 608 +999K2 21 +52253 151 +A5595 262 +KTTTT 366 +2922T 1000 +25328 815 +3T7T7 806 +Q2Q39 895 +3J432 786 +JA228 782 +AJJ99 621 +8AAQQ 809 +97QAT 143 +456J8 15 +AAJ2A 165 +J55J5 281 +K6945 322 +22A2J 799 +77AAA 666 +Q6J66 168 +7QTJ5 363 +Q38T2 709 +AKT86 936 +QQQQK 585 +JA4J4 130 +AJA73 796 +88QQQ 828 +QQ2Q2 390 +KK77K 301 +A5TQ9 805 +96677 477 +J7495 628 +24222 807 +8QQ83 992 +222K6 861 +949J5 473 +59873 555 +9K584 564 +AAQ7Q 989 +62J2K 445 +4732A 420 +2JT9K 136 +TT989 277 +JJ999 549 +Q9T6K 513 +36J6A 97 +A3J32 986 +8A7TJ 682 +T2784 59 +KJAAK 110 +8KJ88 919 +AKK77 256 +2J876 713 +K3TQ7 115 +8Q6AT 973 +45666 19 +33335 400 +J43K4 851 +A22A9 974 +8Q867 574 +993KA 185 +9K8Q4 464 +5AAAA 949 +27JJ5 686 +3TTT3 606 +T4444 533 +K8838 830 +75682 960 +J89JT 129 +45A5A 886 +KKK6T 416 +AJA6A 626 +AAJKA 182 +AA2A8 73 +7JK88 640 +JJ222 462 +4A455 49 +7JAKQ 812 +AAAA9 387 +777T7 769 +37K2A 348 +QTJ77 355 +KQQKA 500 +QQQ9Q 350 +65666 111 +T7TT7 407 +333TJ 214 +78876 8 +8Q478 409 +8K3AT 934 +6A583 814 +JTJAA 826 +3A373 278 +J4J44 171 +9AAA3 374 +32J32 199 +76TTA 858 +27222 305 +862K6 369 +QJKAA 568 +JK94J 524 +Q6QQ6 852 +2TQ22 987 +J6AJ7 385 +73A6T 106 +QAKQT 925 +2424T 737 +T7ATA 620 +T8A47 613 +J2858 636 +K7373 484 +7QK65 716 +K8QKK 981 +52454 443 +AAAAJ 738 +99J99 69 +6AQJ8 439 +774J9 798 +66JJ6 210 +TTQTQ 35 +7QJ97 694 +QJQQJ 918 +9K999 573 +Q7TT7 68 +46887 704 +T6379 661 +34888 326 +9A999 916 +6466J 849 +666J6 479 +QKKKK 247 +46K48 336 +J6729 467 +A22A6 269 +6KQKK 584 +68J86 961 +8KK87 670 +52656 542 +Q4AJ3 394 +79KJK 77 +Q8965 139 +44474 240 +QJQQQ 434 +AQ449 921 +57A9J 996 +J5835 817 +QQKK3 818 +3943J 13 +4T7A5 956 +44464 517 +5A55J 48 +2J254 722 +9JAT5 487 +Q4757 856 +5Q55A 749 +ATKJ5 82 +J8588 142 +646TQ 783 +38J39 922 +26J77 823 +2TT4T 162 +6666K 137 +QQQ83 758 +32KJT 733 +4J9K8 353 +KQJT7 501 +6T6TK 982 +Q42K9 147 +8734Q 538 +KKA67 794 +JQKKA 804 +QQ555 596 +4JJ45 32 +28383 904 +T5Q45 38 +5T5TJ 221 +Q3K9A 29 +99649 1 +94247 146 +4Q444 362 +5637T 734 +577TT 735 +TT244 364 +56QQQ 149 +K2AQ3 144 +9J959 493 +66Q44 405 +888K8 654 +6J624 635 +9QJKA 569 +K8K5K 120 +24443 344 +6666T 197 +6T747 740 +54523 935 +A96Q2 302 +AJJJA 697 +2T476 90 +55444 403 +QJ22Q 85 +KK9KJ 254 +4938T 156 +5JT8J 741 +Q55K3 527 +627JK 894 +T6245 917 +44864 410 +77QJ3 587 +823A4 457 +32323 259 +9T94T 609 +33J8K 158 +7AK4K 201 +44774 957 +4Q45T 180 +JA82K 978 +333J5 872 +J8948 267 +99933 433 +4T7JJ 563 +85534 862 +K7K8K 24 +JTTKK 824 +TQ8TT 803 +62677 797 +QQATT 965 +QQ668 870 +88724 551 +T3T43 17 +99749 275 +7T6J2 977 +67J77 203 +6T789 167 +22J28 639 +26744 850 +QQQ6Q 47 +QA72T 554 +3AT9T 897 +QJTQ2 261 +696JQ 631 +9KKQJ 490 +469T8 72 +QAT42 951 +AJ2AK 413 +8AQ2T 297 +AJ482 255 +QQQKK 931 +AJA7A 874 +34532 368 +74A44 945 +88989 418 +A2AAA 219 +39999 857 +J7774 687 +Q9925 630 +9JQ9Q 578 +8AA38 689 +8QA2A 427 +Q6Q99 800 +TTTTJ 399 +AA822 614 +ATT47 676 +K2AAA 514 +7J696 338 +J3J87 88 +55547 728 +5A338 86 +838T6 250 +87QAK 970 +795K7 723 +7QTJ6 152 +5A9KQ 494 +KA4TK 650 +Q2222 604 +K5953 452 +K2282 552 +4K586 760 +K4444 868 +724AA 516 +52224 55 +35Q33 58 +46644 331 +T8325 888 +9K229 388 +779TT 920 +97279 95 +JJ374 450 +8JJJJ 610 +84497 217 +8QK4J 233 +KQ6T6 360 +6637Q 53 +KK7QJ 683 +4828A 215 +5TT55 990 +J3768 536 +ATKTK 846 +5T9K4 780 +2T8AT 502 +7T776 712 +KQ93Q 114 +2474J 483 +QQQ46 408 +J5T82 718 +834A9 688 +JT977 615 +69663 296 +4A638 880 +QQQA7 27 +2K22K 377 +29379 972 +244J4 242 +K8KKK 56 +KTQKJ 891 +87K5J 730 +887AA 699 +9QJQA 725 +6J655 929 +8692A 844 +2QQQQ 194 +TJ79Q 969 +JATA9 128 +8448J 103 +9399J 953 +98J77 371 +TT3J5 192 +J3655 924 +6993K 616 +J8788 979 +K9KK3 756 +57AQ4 671 +88KQ7 955 +6AAA6 843 +9494J 105 +6A2QQ 942 +T222T 87 +J9JA5 244 +AKA4A 198 +Q4635 558 +2332T 889 +AKQQ5 827 +97QQQ 337 +JT575 603 +36336 478 +4A43T 653 +5QQ38 349 +97777 776 +TQ6TT 541 +57775 258 +68KKK 469 +92224 121 +4853Q 476 +2Q695 273 +2J626 732 +6A328 246 +5QT27 959 +KJJ77 658 +4K6KK 310 +JAK66 28 +QQK4K 16 +K4923 752 +57555 482 +46T5T 550 +333Q3 496 +2Q93J 755 +778J3 751 +K77KJ 276 +76A96 947 +QTT7T 335 +4T9K6 997 +26926 512 +66464 522 +59997 787 +K462A 508 +K4K7K 333 +Q3Q3Q 707 +A3TKK 772 +7T7J7 44 +TAK54 455 +44JKQ 287 +TQK49 748 +37335 577 +Q743J 200 +Q4A45 236 +KJ62K 288 +544K5 76 +TTTJJ 693 +89999 96 +K8JKK 351 +5JAT8 778 +TAAJT 67 +39339 911 +997K6 329 +5JK88 876 +338QQ 530 +88889 937 +884T8 526 +382QA 320 +86Q35 764 +KQ38A 412 +AA7A8 358 +22Q2K 637 +A22JK 248 +59855 906 +33AJ3 347 +42T2Q 108 +AQ2T6 99 +8KATJ 651 +9JQTT 832 +84847 451 +52K8K 453 +K6553 54 +87778 499 +TAAJA 223 +38298 643 +5557Q 841 +9K6K9 448 +77J73 617 +555K5 976 +A38T4 968 +3333A 472 +5KJ74 866 +7JJ8K 708 +J55Q5 714 +58KA4 795 +AAAA4 488 +Q8QQ7 45 +58A55 311 +27T7T 3 +2J4KA 43 +TT3T9 159 +475K6 109 +48844 323 +4T2T2 186 +Q7A7J 218 +JTJA6 744 +J96J4 721 +8TT88 41 +Q5T96 417 +QTA6T 213 +68A33 169 +J3TT8 34 +44JK8 14 +29983 540 +3666J 845 +436J2 685 +88A88 597 +889J9 313 +77754 848 +2TA99 406 +5KK5K 535 +3KJ75 547 +67666 662 +9T634 231 +QTQQQ 299 +J993T 745 +87Q98 155 +AAAKQ 376 +36Q43 696 +67K67 952 +25Q47 739 +44424 228 +K22JQ 941 +5434Q 232 +8AA6Q 5 +58J55 625 +37535 153 +66868 572 +87788 384 +J5993 860 +K42K4 402 +59Q7T 944 +J2475 495 +KKKK7 773 +9K5Q2 341 +9AQAQ 594 +T5974 181 +42442 901 +T6TTT 932 +25895 268 +44484 212 +88J63 588 +22777 102 +Q7K77 991 +QK9K9 235 +J4544 205 +7K523 985 +T4246 566 +9TQ3A 466 +884JT 644 +59995 84 +7772J 853 +JJ882 318 +25522 923 +TTT9J 189 +23333 378 +58J85 141 +7K45K 567 +JJ777 71 +74A47 875 +2J848 655 +93K65 966 \ No newline at end of file diff --git a/day7/sample.txt b/day7/sample.txt new file mode 100644 index 0000000..5b91aae --- /dev/null +++ b/day7/sample.txt @@ -0,0 +1,24 @@ +23456 22 +56789 19 +KJJKK 2 +AAAAJ 3 +JJ243 7 +QJ256 6 +QQ562 5 +Q8Q24 4 +AAAAT 3 +TJJJJ 2 +6789T 18 +789TJ 17 +22345 13 +34567 21 +45678 20 +32245 12 +33245 11 +89TJQ 16 +9TJQK 15 +TJQKA 14 +3J245 10 +J3425 9 +J5432 8 +JJJJJ 1 \ No newline at end of file diff --git a/hands.txt b/hands.txt new file mode 100644 index 0000000..672b558 --- /dev/null +++ b/hands.txt @@ -0,0 +1,1000 @@ +{"cards":["2","3","Q","7","A"],"bid":878,"type":0} +{"cards":["2","5","Q","4","7"],"bid":739,"type":0} +{"cards":["2","6","T","7","A"],"bid":345,"type":0} +{"cards":["2","7","T","3","4"],"bid":134,"type":0} +{"cards":["2","8","9","7","K"],"bid":321,"type":0} +{"cards":["2","9","3","5","K"],"bid":543,"type":0} +{"cards":["2","T","4","7","6"],"bid":90,"type":0} +{"cards":["2","T","6","Q","5"],"bid":559,"type":0} +{"cards":["2","J","4","K","A"],"bid":43,"type":0} +{"cards":["2","J","8","7","6"],"bid":713,"type":0} +{"cards":["2","J","T","9","K"],"bid":136,"type":0} +{"cards":["2","Q","6","9","5"],"bid":273,"type":0} +{"cards":["2","Q","9","3","J"],"bid":755,"type":0} +{"cards":["2","K","5","9","7"],"bid":742,"type":0} +{"cards":["3","2","9","8","A"],"bid":325,"type":0} +{"cards":["3","2","K","J","T"],"bid":733,"type":0} +{"cards":["3","5","6","2","T"],"bid":877,"type":0} +{"cards":["3","7","6","9","A"],"bid":429,"type":0} +{"cards":["3","7","K","2","A"],"bid":348,"type":0} +{"cards":["3","7","A","2","5"],"bid":300,"type":0} +{"cards":["3","8","2","Q","A"],"bid":320,"type":0} +{"cards":["3","9","K","2","8"],"bid":665,"type":0} +{"cards":["3","T","5","4","9"],"bid":811,"type":0} +{"cards":["3","J","6","9","8"],"bid":837,"type":0} +{"cards":["3","Q","J","A","K"],"bid":241,"type":0} +{"cards":["3","K","J","7","5"],"bid":547,"type":0} +{"cards":["4","3","6","J","2"],"bid":685,"type":0} +{"cards":["4","5","6","J","8"],"bid":15,"type":0} +{"cards":["4","6","9","T","8"],"bid":72,"type":0} +{"cards":["4","7","3","2","A"],"bid":420,"type":0} +{"cards":["4","7","3","Q","6"],"bid":988,"type":0} +{"cards":["4","7","5","K","6"],"bid":109,"type":0} +{"cards":["4","8","5","3","Q"],"bid":476,"type":0} +{"cards":["4","9","3","8","T"],"bid":156,"type":0} +{"cards":["4","9","5","8","6"],"bid":515,"type":0} +{"cards":["4","T","7","A","5"],"bid":956,"type":0} +{"cards":["4","T","9","K","6"],"bid":997,"type":0} +{"cards":["4","J","9","K","8"],"bid":353,"type":0} +{"cards":["4","K","5","8","6"],"bid":760,"type":0} +{"cards":["4","K","9","2","J"],"bid":33,"type":0} +{"cards":["4","A","2","T","5"],"bid":984,"type":0} +{"cards":["4","A","6","3","8"],"bid":880,"type":0} +{"cards":["4","A","K","8","7"],"bid":78,"type":0} +{"cards":["5","2","T","6","7"],"bid":177,"type":0} +{"cards":["5","3","Q","8","K"],"bid":257,"type":0} +{"cards":["5","6","3","7","T"],"bid":734,"type":0} +{"cards":["5","7","A","9","J"],"bid":996,"type":0} +{"cards":["5","7","A","Q","4"],"bid":671,"type":0} +{"cards":["5","8","4","J","T"],"bid":743,"type":0} +{"cards":["5","8","K","A","4"],"bid":795,"type":0} +{"cards":["5","9","2","A","6"],"bid":449,"type":0} +{"cards":["5","9","8","7","3"],"bid":555,"type":0} +{"cards":["5","9","J","8","A"],"bid":692,"type":0} +{"cards":["5","9","Q","7","T"],"bid":944,"type":0} +{"cards":["5","T","9","K","4"],"bid":780,"type":0} +{"cards":["5","T","K","4","7"],"bid":395,"type":0} +{"cards":["5","J","A","T","8"],"bid":778,"type":0} +{"cards":["5","Q","T","2","7"],"bid":959,"type":0} +{"cards":["5","Q","T","2","J"],"bid":854,"type":0} +{"cards":["5","Q","K","4","A"],"bid":474,"type":0} +{"cards":["5","K","6","Q","2"],"bid":971,"type":0} +{"cards":["5","K","J","7","4"],"bid":866,"type":0} +{"cards":["5","A","3","2","J"],"bid":943,"type":0} +{"cards":["5","A","8","J","K"],"bid":447,"type":0} +{"cards":["5","A","9","K","Q"],"bid":494,"type":0} +{"cards":["6","2","7","J","K"],"bid":894,"type":0} +{"cards":["6","2","J","5","7"],"bid":890,"type":0} +{"cards":["6","3","4","7","A"],"bid":497,"type":0} +{"cards":["6","5","4","A","9"],"bid":700,"type":0} +{"cards":["6","8","7","A","5"],"bid":528,"type":0} +{"cards":["6","9","4","T","2"],"bid":679,"type":0} +{"cards":["6","T","7","8","9"],"bid":167,"type":0} +{"cards":["6","J","3","2","T"],"bid":380,"type":0} +{"cards":["6","J","Q","3","A"],"bid":459,"type":0} +{"cards":["6","J","A","9","K"],"bid":950,"type":0} +{"cards":["6","Q","3","J","T"],"bid":909,"type":0} +{"cards":["6","Q","J","2","3"],"bid":746,"type":0} +{"cards":["6","A","3","2","8"],"bid":246,"type":0} +{"cards":["6","A","5","8","3"],"bid":814,"type":0} +{"cards":["6","A","T","5","4"],"bid":79,"type":0} +{"cards":["6","A","Q","J","8"],"bid":439,"type":0} +{"cards":["7","2","Q","5","A"],"bid":908,"type":0} +{"cards":["7","3","A","6","T"],"bid":106,"type":0} +{"cards":["7","4","K","2","8"],"bid":523,"type":0} +{"cards":["7","5","4","6","8"],"bid":282,"type":0} +{"cards":["7","5","4","9","6"],"bid":4,"type":0} +{"cards":["7","5","4","T","Q"],"bid":74,"type":0} +{"cards":["7","5","6","8","2"],"bid":960,"type":0} +{"cards":["7","8","T","2","A"],"bid":112,"type":0} +{"cards":["7","T","6","J","2"],"bid":977,"type":0} +{"cards":["7","J","A","K","Q"],"bid":812,"type":0} +{"cards":["7","Q","T","J","5"],"bid":363,"type":0} +{"cards":["7","Q","T","J","6"],"bid":152,"type":0} +{"cards":["7","Q","K","6","5"],"bid":716,"type":0} +{"cards":["7","K","5","2","3"],"bid":985,"type":0} +{"cards":["7","A","6","Q","9"],"bid":220,"type":0} +{"cards":["8","2","3","A","4"],"bid":457,"type":0} +{"cards":["8","3","4","A","9"],"bid":688,"type":0} +{"cards":["8","3","5","J","9"],"bid":601,"type":0} +{"cards":["8","4","6","9","7"],"bid":581,"type":0} +{"cards":["8","5","9","2","6"],"bid":435,"type":0} +{"cards":["8","6","9","2","A"],"bid":844,"type":0} +{"cards":["8","6","Q","3","5"],"bid":764,"type":0} +{"cards":["8","7","3","4","Q"],"bid":538,"type":0} +{"cards":["8","7","Q","A","K"],"bid":970,"type":0} +{"cards":["8","7","K","5","J"],"bid":730,"type":0} +{"cards":["8","9","T","J","4"],"bid":245,"type":0} +{"cards":["8","J","4","9","Q"],"bid":458,"type":0} +{"cards":["8","Q","6","A","T"],"bid":973,"type":0} +{"cards":["8","Q","7","5","6"],"bid":163,"type":0} +{"cards":["8","Q","J","2","A"],"bid":239,"type":0} +{"cards":["8","Q","K","4","J"],"bid":233,"type":0} +{"cards":["8","K","3","A","T"],"bid":934,"type":0} +{"cards":["8","K","A","T","J"],"bid":651,"type":0} +{"cards":["8","A","2","9","4"],"bid":57,"type":0} +{"cards":["8","A","7","T","J"],"bid":682,"type":0} +{"cards":["8","A","Q","2","T"],"bid":297,"type":0} +{"cards":["8","A","K","5","Q"],"bid":230,"type":0} +{"cards":["9","3","5","2","8"],"bid":31,"type":0} +{"cards":["9","3","T","5","A"],"bid":365,"type":0} +{"cards":["9","3","K","6","5"],"bid":966,"type":0} +{"cards":["9","5","K","3","Q"],"bid":279,"type":0} +{"cards":["9","7","Q","A","T"],"bid":143,"type":0} +{"cards":["9","T","6","3","4"],"bid":231,"type":0} +{"cards":["9","T","Q","3","A"],"bid":466,"type":0} +{"cards":["9","J","A","T","5"],"bid":487,"type":0} +{"cards":["9","Q","J","K","A"],"bid":569,"type":0} +{"cards":["9","K","5","8","4"],"bid":564,"type":0} +{"cards":["9","K","5","Q","2"],"bid":341,"type":0} +{"cards":["9","K","8","Q","4"],"bid":464,"type":0} +{"cards":["9","A","J","K","8"],"bid":556,"type":0} +{"cards":["T","2","7","8","4"],"bid":59,"type":0} +{"cards":["T","3","7","8","5"],"bid":237,"type":0} +{"cards":["T","3","A","6","8"],"bid":432,"type":0} +{"cards":["T","4","2","A","8"],"bid":624,"type":0} +{"cards":["T","4","K","3","A"],"bid":847,"type":0} +{"cards":["T","5","2","9","7"],"bid":133,"type":0} +{"cards":["T","5","9","7","4"],"bid":181,"type":0} +{"cards":["T","6","2","4","5"],"bid":917,"type":0} +{"cards":["T","6","3","7","9"],"bid":661,"type":0} +{"cards":["T","6","7","8","2"],"bid":898,"type":0} +{"cards":["T","6","J","A","K"],"bid":586,"type":0} +{"cards":["T","7","4","A","Q"],"bid":304,"type":0} +{"cards":["T","8","2","7","5"],"bid":436,"type":0} +{"cards":["T","8","3","2","5"],"bid":888,"type":0} +{"cards":["T","8","A","4","7"],"bid":613,"type":0} +{"cards":["T","J","7","9","Q"],"bid":969,"type":0} +{"cards":["T","Q","5","K","8"],"bid":819,"type":0} +{"cards":["T","Q","K","4","9"],"bid":748,"type":0} +{"cards":["T","A","2","5","9"],"bid":173,"type":0} +{"cards":["T","A","4","8","J"],"bid":618,"type":0} +{"cards":["T","A","K","5","4"],"bid":455,"type":0} +{"cards":["J","2","3","5","7"],"bid":196,"type":0} +{"cards":["J","2","4","7","5"],"bid":495,"type":0} +{"cards":["J","3","7","6","8"],"bid":536,"type":0} +{"cards":["J","4","7","3","9"],"bid":816,"type":0} +{"cards":["J","5","4","7","T"],"bid":595,"type":0} +{"cards":["J","5","T","8","2"],"bid":718,"type":0} +{"cards":["J","6","5","A","K"],"bid":801,"type":0} +{"cards":["J","6","7","2","9"],"bid":467,"type":0} +{"cards":["J","7","4","9","5"],"bid":628,"type":0} +{"cards":["J","K","A","9","3"],"bid":887,"type":0} +{"cards":["J","A","8","2","K"],"bid":978,"type":0} +{"cards":["J","A","9","4","6"],"bid":582,"type":0} +{"cards":["Q","3","7","4","9"],"bid":295,"type":0} +{"cards":["Q","3","8","T","2"],"bid":709,"type":0} +{"cards":["Q","3","K","9","A"],"bid":29,"type":0} +{"cards":["Q","4","2","K","9"],"bid":147,"type":0} +{"cards":["Q","4","5","7","8"],"bid":294,"type":0} +{"cards":["Q","4","6","3","5"],"bid":558,"type":0} +{"cards":["Q","4","6","K","3"],"bid":20,"type":0} +{"cards":["Q","4","A","J","3"],"bid":394,"type":0} +{"cards":["Q","5","T","9","6"],"bid":417,"type":0} +{"cards":["Q","6","9","J","T"],"bid":939,"type":0} +{"cards":["Q","7","4","3","J"],"bid":200,"type":0} +{"cards":["Q","8","9","6","5"],"bid":139,"type":0} +{"cards":["Q","9","7","5","6"],"bid":30,"type":0} +{"cards":["Q","9","T","6","K"],"bid":513,"type":0} +{"cards":["Q","T","9","5","K"],"bid":285,"type":0} +{"cards":["Q","K","3","2","7"],"bid":750,"type":0} +{"cards":["Q","A","4","5","9"],"bid":456,"type":0} +{"cards":["Q","A","7","2","T"],"bid":554,"type":0} +{"cards":["Q","A","T","4","2"],"bid":951,"type":0} +{"cards":["K","2","6","8","T"],"bid":967,"type":0} +{"cards":["K","2","A","Q","3"],"bid":144,"type":0} +{"cards":["K","3","T","Q","7"],"bid":115,"type":0} +{"cards":["K","4","6","2","A"],"bid":508,"type":0} +{"cards":["K","4","9","2","3"],"bid":752,"type":0} +{"cards":["K","5","T","8","9"],"bid":243,"type":0} +{"cards":["K","6","9","4","5"],"bid":322,"type":0} +{"cards":["K","8","6","9","3"],"bid":871,"type":0} +{"cards":["K","8","9","6","A"],"bid":93,"type":0} +{"cards":["K","Q","3","8","A"],"bid":412,"type":0} +{"cards":["K","Q","4","6","7"],"bid":64,"type":0} +{"cards":["K","Q","8","A","9"],"bid":608,"type":0} +{"cards":["K","Q","J","T","7"],"bid":501,"type":0} +{"cards":["K","A","7","4","9"],"bid":40,"type":0} +{"cards":["K","A","Q","2","5"],"bid":927,"type":0} +{"cards":["A","3","8","T","4"],"bid":968,"type":0} +{"cards":["A","5","6","8","Q"],"bid":98,"type":0} +{"cards":["A","5","T","Q","9"],"bid":805,"type":0} +{"cards":["A","6","K","7","8"],"bid":160,"type":0} +{"cards":["A","7","5","T","9"],"bid":425,"type":0} +{"cards":["A","7","Q","8","T"],"bid":983,"type":0} +{"cards":["A","7","K","J","T"],"bid":309,"type":0} +{"cards":["A","8","3","K","4"],"bid":905,"type":0} +{"cards":["A","9","3","7","J"],"bid":37,"type":0} +{"cards":["A","9","6","Q","2"],"bid":302,"type":0} +{"cards":["A","9","8","4","Q"],"bid":821,"type":0} +{"cards":["A","T","K","J","5"],"bid":82,"type":0} +{"cards":["A","J","4","8","2"],"bid":255,"type":0} +{"cards":["A","Q","2","T","6"],"bid":99,"type":0} +{"cards":["A","K","2","6","J"],"bid":964,"type":0} +{"cards":["A","K","T","8","6"],"bid":936,"type":0} +{"cards":["2","2","9","Q","A"],"bid":633,"type":1} +{"cards":["2","3","3","2","T"],"bid":889,"type":1} +{"cards":["2","3","A","Q","3"],"bid":600,"type":1} +{"cards":["2","4","2","4","T"],"bid":737,"type":1} +{"cards":["2","4","4","A","5"],"bid":465,"type":1} +{"cards":["2","4","7","4","J"],"bid":483,"type":1} +{"cards":["2","5","3","2","8"],"bid":815,"type":1} +{"cards":["2","5","8","9","5"],"bid":268,"type":1} +{"cards":["2","6","7","4","4"],"bid":850,"type":1} +{"cards":["2","6","9","2","6"],"bid":512,"type":1} +{"cards":["2","6","J","7","7"],"bid":823,"type":1} +{"cards":["2","7","T","7","T"],"bid":3,"type":1} +{"cards":["2","7","J","4","J"],"bid":202,"type":1} +{"cards":["2","7","J","J","5"],"bid":686,"type":1} +{"cards":["2","8","2","Q","8"],"bid":428,"type":1} +{"cards":["2","8","3","8","3"],"bid":904,"type":1} +{"cards":["2","9","3","3","J"],"bid":678,"type":1} +{"cards":["2","9","3","7","9"],"bid":972,"type":1} +{"cards":["2","9","9","8","3"],"bid":540,"type":1} +{"cards":["2","T","5","T","2"],"bid":759,"type":1} +{"cards":["2","T","8","A","T"],"bid":502,"type":1} +{"cards":["2","T","A","9","9"],"bid":406,"type":1} +{"cards":["2","J","2","5","4"],"bid":722,"type":1} +{"cards":["2","J","6","2","6"],"bid":732,"type":1} +{"cards":["2","J","8","4","8"],"bid":655,"type":1} +{"cards":["2","J","T","6","2"],"bid":398,"type":1} +{"cards":["2","J","A","A","9"],"bid":224,"type":1} +{"cards":["2","Q","T","2","K"],"bid":75,"type":1} +{"cards":["2","Q","Q","7","6"],"bid":510,"type":1} +{"cards":["2","K","5","J","K"],"bid":768,"type":1} +{"cards":["2","K","K","7","5"],"bid":339,"type":1} +{"cards":["2","A","A","2","J"],"bid":885,"type":1} +{"cards":["3","2","2","6","3"],"bid":314,"type":1} +{"cards":["3","2","J","3","2"],"bid":199,"type":1} +{"cards":["3","3","T","J","9"],"bid":414,"type":1} +{"cards":["3","3","J","8","K"],"bid":158,"type":1} +{"cards":["3","4","3","9","4"],"bid":963,"type":1} +{"cards":["3","4","5","3","2"],"bid":368,"type":1} +{"cards":["3","4","J","3","4"],"bid":419,"type":1} +{"cards":["3","5","2","K","2"],"bid":94,"type":1} +{"cards":["3","6","6","7","J"],"bid":791,"type":1} +{"cards":["3","6","J","6","A"],"bid":97,"type":1} +{"cards":["3","6","Q","4","3"],"bid":696,"type":1} +{"cards":["3","7","3","7","4"],"bid":627,"type":1} +{"cards":["3","7","5","3","5"],"bid":153,"type":1} +{"cards":["3","7","6","2","7"],"bid":873,"type":1} +{"cards":["3","7","Q","7","Q"],"bid":612,"type":1} +{"cards":["3","8","2","9","8"],"bid":643,"type":1} +{"cards":["3","8","4","6","6"],"bid":461,"type":1} +{"cards":["3","8","J","3","9"],"bid":922,"type":1} +{"cards":["3","9","4","3","J"],"bid":13,"type":1} +{"cards":["3","9","A","A","T"],"bid":424,"type":1} +{"cards":["3","T","7","T","7"],"bid":806,"type":1} +{"cards":["3","T","J","Q","T"],"bid":668,"type":1} +{"cards":["3","J","4","3","2"],"bid":786,"type":1} +{"cards":["3","J","4","3","J"],"bid":507,"type":1} +{"cards":["3","J","9","T","T"],"bid":629,"type":1} +{"cards":["3","J","T","3","7"],"bid":463,"type":1} +{"cards":["3","J","J","6","9"],"bid":154,"type":1} +{"cards":["3","Q","Q","8","9"],"bid":446,"type":1} +{"cards":["3","Q","K","3","J"],"bid":289,"type":1} +{"cards":["3","K","6","3","6"],"bid":623,"type":1} +{"cards":["3","K","8","K","8"],"bid":903,"type":1} +{"cards":["3","A","3","A","J"],"bid":583,"type":1} +{"cards":["3","A","7","7","3"],"bid":50,"type":1} +{"cards":["3","A","T","9","T"],"bid":897,"type":1} +{"cards":["4","2","T","2","Q"],"bid":108,"type":1} +{"cards":["4","4","J","K","8"],"bid":14,"type":1} +{"cards":["4","4","J","K","Q"],"bid":287,"type":1} +{"cards":["4","5","A","5","A"],"bid":886,"type":1} +{"cards":["4","6","5","2","6"],"bid":327,"type":1} +{"cards":["4","6","8","8","7"],"bid":704,"type":1} +{"cards":["4","6","T","5","T"],"bid":550,"type":1} +{"cards":["4","6","K","4","8"],"bid":336,"type":1} +{"cards":["4","8","2","8","A"],"bid":215,"type":1} +{"cards":["4","8","9","8","9"],"bid":825,"type":1} +{"cards":["4","8","J","2","4"],"bid":238,"type":1} +{"cards":["4","T","2","T","2"],"bid":186,"type":1} +{"cards":["4","T","6","T","8"],"bid":544,"type":1} +{"cards":["4","T","7","J","J"],"bid":563,"type":1} +{"cards":["4","J","6","6","K"],"bid":263,"type":1} +{"cards":["4","J","J","4","5"],"bid":32,"type":1} +{"cards":["4","Q","4","5","T"],"bid":180,"type":1} +{"cards":["4","Q","T","T","4"],"bid":138,"type":1} +{"cards":["4","K","9","3","K"],"bid":928,"type":1} +{"cards":["4","A","4","3","T"],"bid":653,"type":1} +{"cards":["4","A","A","4","2"],"bid":10,"type":1} +{"cards":["4","A","A","4","5"],"bid":61,"type":1} +{"cards":["5","2","2","5","3"],"bid":151,"type":1} +{"cards":["5","2","4","5","4"],"bid":443,"type":1} +{"cards":["5","2","6","5","6"],"bid":542,"type":1} +{"cards":["5","2","K","8","K"],"bid":453,"type":1} +{"cards":["5","3","5","J","Q"],"bid":411,"type":1} +{"cards":["5","3","7","K","K"],"bid":225,"type":1} +{"cards":["5","3","A","3","A"],"bid":763,"type":1} +{"cards":["5","4","3","4","Q"],"bid":232,"type":1} +{"cards":["5","4","4","K","5"],"bid":76,"type":1} +{"cards":["5","4","5","2","3"],"bid":935,"type":1} +{"cards":["5","5","J","2","K"],"bid":81,"type":1} +{"cards":["5","6","8","5","6"],"bid":92,"type":1} +{"cards":["5","8","J","8","5"],"bid":141,"type":1} +{"cards":["5","T","5","T","J"],"bid":221,"type":1} +{"cards":["5","J","4","4","5"],"bid":270,"type":1} +{"cards":["5","J","T","8","J"],"bid":741,"type":1} +{"cards":["5","J","K","8","8"],"bid":876,"type":1} +{"cards":["5","Q","5","Q","K"],"bid":249,"type":1} +{"cards":["5","Q","Q","2","5"],"bid":132,"type":1} +{"cards":["5","Q","Q","3","8"],"bid":349,"type":1} +{"cards":["5","K","5","K","9"],"bid":372,"type":1} +{"cards":["5","K","J","T","5"],"bid":672,"type":1} +{"cards":["5","K","K","J","5"],"bid":842,"type":1} +{"cards":["5","A","3","3","8"],"bid":86,"type":1} +{"cards":["6","2","2","T","7"],"bid":622,"type":1} +{"cards":["6","2","7","5","7"],"bid":575,"type":1} +{"cards":["6","2","J","2","K"],"bid":445,"type":1} +{"cards":["6","4","6","T","Q"],"bid":783,"type":1} +{"cards":["6","5","7","J","6"],"bid":291,"type":1} +{"cards":["6","6","3","7","Q"],"bid":53,"type":1} +{"cards":["6","6","J","2","K"],"bid":396,"type":1} +{"cards":["6","6","A","5","3"],"bid":793,"type":1} +{"cards":["6","7","3","7","Q"],"bid":641,"type":1} +{"cards":["6","7","T","3","3"],"bid":444,"type":1} +{"cards":["6","7","J","Q","7"],"bid":266,"type":1} +{"cards":["6","7","K","6","7"],"bid":952,"type":1} +{"cards":["6","8","5","8","5"],"bid":598,"type":1} +{"cards":["6","8","J","6","7"],"bid":391,"type":1} +{"cards":["6","8","J","8","6"],"bid":961,"type":1} +{"cards":["6","8","A","3","3"],"bid":169,"type":1} +{"cards":["6","9","6","J","Q"],"bid":631,"type":1} +{"cards":["6","9","9","3","K"],"bid":616,"type":1} +{"cards":["6","T","4","6","4"],"bid":36,"type":1} +{"cards":["6","T","6","T","K"],"bid":982,"type":1} +{"cards":["6","T","6","J","T"],"bid":915,"type":1} +{"cards":["6","T","7","4","7"],"bid":740,"type":1} +{"cards":["6","T","A","A","4"],"bid":286,"type":1} +{"cards":["6","J","4","4","7"],"bid":303,"type":1} +{"cards":["6","J","6","2","4"],"bid":635,"type":1} +{"cards":["6","J","9","J","6"],"bid":505,"type":1} +{"cards":["6","K","Q","6","J"],"bid":962,"type":1} +{"cards":["6","A","2","Q","Q"],"bid":942,"type":1} +{"cards":["7","2","4","A","A"],"bid":516,"type":1} +{"cards":["7","3","4","3","T"],"bid":829,"type":1} +{"cards":["7","4","A","4","7"],"bid":875,"type":1} +{"cards":["7","5","5","3","K"],"bid":352,"type":1} +{"cards":["7","6","T","T","A"],"bid":858,"type":1} +{"cards":["7","6","A","9","6"],"bid":947,"type":1} +{"cards":["7","7","4","J","9"],"bid":798,"type":1} +{"cards":["7","7","8","J","3"],"bid":751,"type":1} +{"cards":["7","7","Q","J","3"],"bid":587,"type":1} +{"cards":["7","8","8","7","6"],"bid":8,"type":1} +{"cards":["7","9","5","K","7"],"bid":723,"type":1} +{"cards":["7","9","7","A","9"],"bid":562,"type":1} +{"cards":["7","9","K","J","K"],"bid":77,"type":1} +{"cards":["7","J","6","9","6"],"bid":338,"type":1} +{"cards":["7","J","J","8","K"],"bid":708,"type":1} +{"cards":["7","J","K","8","8"],"bid":640,"type":1} +{"cards":["7","J","A","A","Q"],"bid":580,"type":1} +{"cards":["7","Q","2","2","8"],"bid":557,"type":1} +{"cards":["7","Q","J","3","J"],"bid":770,"type":1} +{"cards":["7","Q","J","9","7"],"bid":694,"type":1} +{"cards":["7","Q","A","7","2"],"bid":498,"type":1} +{"cards":["7","K","4","5","K"],"bid":567,"type":1} +{"cards":["7","K","7","K","3"],"bid":316,"type":1} +{"cards":["7","A","K","4","K"],"bid":201,"type":1} +{"cards":["7","A","A","7","J"],"bid":632,"type":1} +{"cards":["8","2","2","7","9"],"bid":283,"type":1} +{"cards":["8","2","2","J","8"],"bid":893,"type":1} +{"cards":["8","2","J","8","7"],"bid":89,"type":1} +{"cards":["8","3","8","T","6"],"bid":250,"type":1} +{"cards":["8","4","4","8","6"],"bid":178,"type":1} +{"cards":["8","4","4","8","J"],"bid":103,"type":1} +{"cards":["8","4","4","9","7"],"bid":217,"type":1} +{"cards":["8","4","8","4","7"],"bid":451,"type":1} +{"cards":["8","4","8","5","4"],"bid":864,"type":1} +{"cards":["8","5","5","3","4"],"bid":862,"type":1} +{"cards":["8","6","2","K","6"],"bid":369,"type":1} +{"cards":["8","6","9","9","J"],"bid":172,"type":1} +{"cards":["8","7","4","4","K"],"bid":727,"type":1} +{"cards":["8","7","Q","9","8"],"bid":155,"type":1} +{"cards":["8","8","4","J","T"],"bid":644,"type":1} +{"cards":["8","8","7","2","4"],"bid":551,"type":1} +{"cards":["8","8","T","J","6"],"bid":767,"type":1} +{"cards":["8","8","J","6","3"],"bid":588,"type":1} +{"cards":["8","8","Q","6","3"],"bid":274,"type":1} +{"cards":["8","8","K","Q","7"],"bid":955,"type":1} +{"cards":["8","T","6","4","6"],"bid":431,"type":1} +{"cards":["8","T","Q","3","Q"],"bid":252,"type":1} +{"cards":["8","T","K","T","2"],"bid":393,"type":1} +{"cards":["8","J","J","T","3"],"bid":775,"type":1} +{"cards":["8","J","Q","Q","2"],"bid":383,"type":1} +{"cards":["8","Q","4","7","8"],"bid":409,"type":1} +{"cards":["8","Q","8","6","7"],"bid":574,"type":1} +{"cards":["8","Q","8","Q","7"],"bid":62,"type":1} +{"cards":["8","Q","Q","8","3"],"bid":992,"type":1} +{"cards":["8","Q","Q","J","8"],"bid":792,"type":1} +{"cards":["8","Q","A","2","A"],"bid":427,"type":1} +{"cards":["8","K","4","Q","8"],"bid":910,"type":1} +{"cards":["8","K","6","8","J"],"bid":839,"type":1} +{"cards":["8","K","K","2","Q"],"bid":317,"type":1} +{"cards":["8","K","K","8","7"],"bid":670,"type":1} +{"cards":["8","A","A","3","8"],"bid":689,"type":1} +{"cards":["8","A","A","6","Q"],"bid":5,"type":1} +{"cards":["9","2","J","9","2"],"bid":710,"type":1} +{"cards":["9","3","J","7","9"],"bid":100,"type":1} +{"cards":["9","4","2","4","7"],"bid":146,"type":1} +{"cards":["9","4","3","5","9"],"bid":140,"type":1} +{"cards":["9","4","9","4","J"],"bid":105,"type":1} +{"cards":["9","4","9","J","5"],"bid":473,"type":1} +{"cards":["9","4","Q","Q","9"],"bid":415,"type":1} +{"cards":["9","5","7","5","2"],"bid":486,"type":1} +{"cards":["9","6","9","6","J"],"bid":264,"type":1} +{"cards":["9","7","2","7","9"],"bid":95,"type":1} +{"cards":["9","8","J","7","7"],"bid":371,"type":1} +{"cards":["9","9","3","K","A"],"bid":185,"type":1} +{"cards":["9","9","7","K","6"],"bid":329,"type":1} +{"cards":["9","9","8","K","7"],"bid":642,"type":1} +{"cards":["9","T","9","4","T"],"bid":609,"type":1} +{"cards":["9","J","8","6","6"],"bid":565,"type":1} +{"cards":["9","J","Q","9","Q"],"bid":578,"type":1} +{"cards":["9","J","Q","T","T"],"bid":832,"type":1} +{"cards":["9","Q","J","Q","A"],"bid":725,"type":1} +{"cards":["9","K","2","2","9"],"bid":388,"type":1} +{"cards":["9","K","2","K","4"],"bid":161,"type":1} +{"cards":["9","K","6","9","J"],"bid":145,"type":1} +{"cards":["9","K","6","K","9"],"bid":448,"type":1} +{"cards":["9","K","K","Q","J"],"bid":490,"type":1} +{"cards":["9","A","2","J","9"],"bid":191,"type":1} +{"cards":["9","A","9","4","K"],"bid":193,"type":1} +{"cards":["9","A","T","J","T"],"bid":892,"type":1} +{"cards":["9","A","Q","Q","4"],"bid":729,"type":1} +{"cards":["9","A","Q","A","Q"],"bid":594,"type":1} +{"cards":["9","A","A","3","J"],"bid":183,"type":1} +{"cards":["T","3","2","4","2"],"bid":835,"type":1} +{"cards":["T","3","T","3","J"],"bid":63,"type":1} +{"cards":["T","3","T","4","3"],"bid":17,"type":1} +{"cards":["T","4","2","4","6"],"bid":566,"type":1} +{"cards":["T","4","3","6","T"],"bid":605,"type":1} +{"cards":["T","4","J","T","4"],"bid":677,"type":1} +{"cards":["T","5","5","2","K"],"bid":251,"type":1} +{"cards":["T","5","8","8","Q"],"bid":70,"type":1} +{"cards":["T","5","Q","4","5"],"bid":38,"type":1} +{"cards":["T","6","3","3","T"],"bid":208,"type":1} +{"cards":["T","7","A","T","A"],"bid":620,"type":1} +{"cards":["T","8","2","8","T"],"bid":933,"type":1} +{"cards":["T","9","3","8","8"],"bid":902,"type":1} +{"cards":["T","T","3","J","5"],"bid":192,"type":1} +{"cards":["T","T","7","9","4"],"bid":539,"type":1} +{"cards":["T","T","J","7","Q"],"bid":834,"type":1} +{"cards":["T","J","A","2","J"],"bid":509,"type":1} +{"cards":["T","Q","7","T","2"],"bid":206,"type":1} +{"cards":["T","Q","J","9","Q"],"bid":645,"type":1} +{"cards":["T","K","4","7","T"],"bid":166,"type":1} +{"cards":["T","A","5","A","T"],"bid":292,"type":1} +{"cards":["T","A","T","2","6"],"bid":715,"type":1} +{"cards":["T","A","A","J","T"],"bid":67,"type":1} +{"cards":["J","2","8","5","8"],"bid":636,"type":1} +{"cards":["J","2","K","T","2"],"bid":649,"type":1} +{"cards":["J","3","6","5","5"],"bid":924,"type":1} +{"cards":["J","3","9","9","3"],"bid":719,"type":1} +{"cards":["J","3","T","T","8"],"bid":34,"type":1} +{"cards":["J","3","J","8","7"],"bid":88,"type":1} +{"cards":["J","3","A","4","A"],"bid":124,"type":1} +{"cards":["J","4","3","K","4"],"bid":851,"type":1} +{"cards":["J","4","K","K","7"],"bid":706,"type":1} +{"cards":["J","5","3","5","3"],"bid":546,"type":1} +{"cards":["J","5","8","3","5"],"bid":817,"type":1} +{"cards":["J","5","9","3","5"],"bid":506,"type":1} +{"cards":["J","5","9","9","3"],"bid":860,"type":1} +{"cards":["J","5","T","8","8"],"bid":789,"type":1} +{"cards":["J","5","J","9","5"],"bid":695,"type":1} +{"cards":["J","6","4","8","8"],"bid":634,"type":1} +{"cards":["J","6","A","J","7"],"bid":385,"type":1} +{"cards":["J","7","K","6","J"],"bid":511,"type":1} +{"cards":["J","8","4","7","7"],"bid":674,"type":1} +{"cards":["J","8","4","7","8"],"bid":489,"type":1} +{"cards":["J","8","9","4","8"],"bid":267,"type":1} +{"cards":["J","8","9","5","9"],"bid":375,"type":1} +{"cards":["J","8","9","J","T"],"bid":129,"type":1} +{"cards":["J","9","6","4","9"],"bid":389,"type":1} +{"cards":["J","9","6","J","4"],"bid":721,"type":1} +{"cards":["J","9","9","3","T"],"bid":745,"type":1} +{"cards":["J","9","J","Q","9"],"bid":475,"type":1} +{"cards":["J","9","J","A","5"],"bid":244,"type":1} +{"cards":["J","T","5","7","5"],"bid":603,"type":1} +{"cards":["J","T","9","7","7"],"bid":615,"type":1} +{"cards":["J","T","J","A","6"],"bid":744,"type":1} +{"cards":["J","T","Q","Q","T"],"bid":7,"type":1} +{"cards":["J","J","3","7","4"],"bid":450,"type":1} +{"cards":["J","Q","4","Q","T"],"bid":534,"type":1} +{"cards":["J","Q","K","K","J"],"bid":648,"type":1} +{"cards":["J","Q","K","K","A"],"bid":804,"type":1} +{"cards":["J","K","9","4","J"],"bid":524,"type":1} +{"cards":["J","A","2","2","8"],"bid":782,"type":1} +{"cards":["J","A","4","J","4"],"bid":130,"type":1} +{"cards":["J","A","T","A","9"],"bid":128,"type":1} +{"cards":["J","A","K","6","6"],"bid":28,"type":1} +{"cards":["Q","2","9","6","2"],"bid":468,"type":1} +{"cards":["Q","2","Q","3","9"],"bid":895,"type":1} +{"cards":["Q","2","A","A","T"],"bid":280,"type":1} +{"cards":["Q","3","9","9","Q"],"bid":116,"type":1} +{"cards":["Q","4","7","5","7"],"bid":856,"type":1} +{"cards":["Q","4","A","4","5"],"bid":236,"type":1} +{"cards":["Q","5","5","7","Q"],"bid":691,"type":1} +{"cards":["Q","5","5","K","3"],"bid":527,"type":1} +{"cards":["Q","5","J","5","Q"],"bid":761,"type":1} +{"cards":["Q","7","T","T","7"],"bid":68,"type":1} +{"cards":["Q","7","A","7","J"],"bid":218,"type":1} +{"cards":["Q","8","2","2","Q"],"bid":954,"type":1} +{"cards":["Q","8","3","J","Q"],"bid":334,"type":1} +{"cards":["Q","9","9","2","5"],"bid":630,"type":1} +{"cards":["Q","T","3","J","3"],"bid":91,"type":1} +{"cards":["Q","T","5","Q","5"],"bid":879,"type":1} +{"cards":["Q","T","J","7","7"],"bid":355,"type":1} +{"cards":["Q","T","A","6","T"],"bid":213,"type":1} +{"cards":["Q","J","2","2","Q"],"bid":85,"type":1} +{"cards":["Q","J","8","8","5"],"bid":899,"type":1} +{"cards":["Q","J","T","Q","2"],"bid":261,"type":1} +{"cards":["Q","J","K","A","A"],"bid":568,"type":1} +{"cards":["Q","Q","4","K","3"],"bid":253,"type":1} +{"cards":["Q","K","9","K","9"],"bid":235,"type":1} +{"cards":["Q","A","K","Q","T"],"bid":925,"type":1} +{"cards":["Q","A","K","A","8"],"bid":367,"type":1} +{"cards":["K","2","2","J","Q"],"bid":941,"type":1} +{"cards":["K","4","2","K","4"],"bid":402,"type":1} +{"cards":["K","4","3","3","4"],"bid":2,"type":1} +{"cards":["K","4","9","4","9"],"bid":442,"type":1} +{"cards":["K","5","9","5","3"],"bid":452,"type":1} +{"cards":["K","6","4","6","4"],"bid":381,"type":1} +{"cards":["K","6","5","5","3"],"bid":54,"type":1} +{"cards":["K","7","3","7","3"],"bid":484,"type":1} +{"cards":["K","7","7","K","J"],"bid":276,"type":1} +{"cards":["K","8","T","8","7"],"bid":260,"type":1} +{"cards":["K","9","9","2","8"],"bid":65,"type":1} +{"cards":["K","9","T","T","K"],"bid":392,"type":1} +{"cards":["K","9","J","K","A"],"bid":711,"type":1} +{"cards":["K","9","K","9","J"],"bid":204,"type":1} +{"cards":["K","T","Q","K","J"],"bid":891,"type":1} +{"cards":["K","J","6","2","K"],"bid":288,"type":1} +{"cards":["K","J","A","K","6"],"bid":753,"type":1} +{"cards":["K","J","A","A","K"],"bid":110,"type":1} +{"cards":["K","Q","6","6","Q"],"bid":590,"type":1} +{"cards":["K","Q","6","6","K"],"bid":525,"type":1} +{"cards":["K","Q","6","T","6"],"bid":360,"type":1} +{"cards":["K","Q","9","3","Q"],"bid":114,"type":1} +{"cards":["K","Q","Q","K","A"],"bid":500,"type":1} +{"cards":["K","K","7","Q","J"],"bid":683,"type":1} +{"cards":["K","K","9","8","5"],"bid":42,"type":1} +{"cards":["K","K","J","2","7"],"bid":330,"type":1} +{"cards":["K","K","A","6","7"],"bid":794,"type":1} +{"cards":["K","A","4","T","K"],"bid":650,"type":1} +{"cards":["K","A","T","J","T"],"bid":659,"type":1} +{"cards":["A","2","2","J","K"],"bid":248,"type":1} +{"cards":["A","2","2","A","6"],"bid":269,"type":1} +{"cards":["A","2","2","A","9"],"bid":974,"type":1} +{"cards":["A","2","K","9","2"],"bid":123,"type":1} +{"cards":["A","3","T","K","K"],"bid":772,"type":1} +{"cards":["A","3","J","3","2"],"bid":986,"type":1} +{"cards":["A","3","K","J","A"],"bid":503,"type":1} +{"cards":["A","4","A","T","4"],"bid":993,"type":1} +{"cards":["A","5","8","A","2"],"bid":481,"type":1} +{"cards":["A","5","Q","8","5"],"bid":553,"type":1} +{"cards":["A","7","9","7","T"],"bid":663,"type":1} +{"cards":["A","8","6","4","6"],"bid":135,"type":1} +{"cards":["A","8","T","T","8"],"bid":914,"type":1} +{"cards":["A","9","T","T","5"],"bid":560,"type":1} +{"cards":["A","9","T","K","K"],"bid":39,"type":1} +{"cards":["A","9","J","A","J"],"bid":599,"type":1} +{"cards":["A","T","T","4","7"],"bid":676,"type":1} +{"cards":["A","T","J","T","8"],"bid":771,"type":1} +{"cards":["A","T","K","T","K"],"bid":846,"type":1} +{"cards":["A","J","2","A","K"],"bid":413,"type":1} +{"cards":["A","J","A","7","3"],"bid":796,"type":1} +{"cards":["A","Q","4","4","9"],"bid":921,"type":1} +{"cards":["A","Q","4","K","A"],"bid":422,"type":1} +{"cards":["A","K","Q","Q","5"],"bid":827,"type":1} +{"cards":["2","2","9","5","9"],"bid":426,"type":2} +{"cards":["2","2","J","9","J"],"bid":60,"type":2} +{"cards":["3","3","2","9","9"],"bid":652,"type":2} +{"cards":["3","3","4","8","4"],"bid":401,"type":2} +{"cards":["3","3","8","Q","Q"],"bid":530,"type":2} +{"cards":["3","3","K","K","5"],"bid":308,"type":2} +{"cards":["3","6","3","4","4"],"bid":127,"type":2} +{"cards":["4","A","4","5","5"],"bid":49,"type":2} +{"cards":["5","7","7","T","T"],"bid":735,"type":2} +{"cards":["6","2","6","7","7"],"bid":797,"type":2} +{"cards":["6","6","T","9","T"],"bid":519,"type":2} +{"cards":["6","6","Q","4","4"],"bid":405,"type":2} +{"cards":["6","J","6","5","5"],"bid":929,"type":2} +{"cards":["7","7","9","T","T"],"bid":920,"type":2} +{"cards":["7","A","A","9","9"],"bid":485,"type":2} +{"cards":["8","8","7","A","A"],"bid":699,"type":2} +{"cards":["8","8","9","J","9"],"bid":313,"type":2} +{"cards":["8","8","J","7","J"],"bid":975,"type":2} +{"cards":["8","8","K","J","K"],"bid":170,"type":2} +{"cards":["8","Q","Q","7","7"],"bid":774,"type":2} +{"cards":["8","A","A","Q","Q"],"bid":809,"type":2} +{"cards":["9","6","6","7","7"],"bid":477,"type":2} +{"cards":["9","9","5","3","3"],"bid":521,"type":2} +{"cards":["9","9","J","K","J"],"bid":437,"type":2} +{"cards":["T","T","2","4","4"],"bid":364,"type":2} +{"cards":["T","T","9","8","9"],"bid":277,"type":2} +{"cards":["J","3","J","A","A"],"bid":324,"type":2} +{"cards":["J","T","T","K","K"],"bid":824,"type":2} +{"cards":["J","T","J","A","A"],"bid":826,"type":2} +{"cards":["J","J","8","8","2"],"bid":318,"type":2} +{"cards":["Q","3","Q","J","J"],"bid":470,"type":2} +{"cards":["Q","6","Q","9","9"],"bid":800,"type":2} +{"cards":["Q","Q","3","3","J"],"bid":117,"type":2} +{"cards":["Q","Q","4","3","3"],"bid":520,"type":2} +{"cards":["Q","Q","6","6","8"],"bid":870,"type":2} +{"cards":["Q","Q","K","4","K"],"bid":16,"type":2} +{"cards":["Q","Q","K","K","3"],"bid":818,"type":2} +{"cards":["Q","Q","A","T","T"],"bid":965,"type":2} +{"cards":["K","J","J","7","7"],"bid":658,"type":2} +{"cards":["K","A","K","9","9"],"bid":591,"type":2} +{"cards":["A","J","J","9","9"],"bid":621,"type":2} +{"cards":["A","J","A","Q","Q"],"bid":531,"type":2} +{"cards":["A","K","K","7","7"],"bid":256,"type":2} +{"cards":["A","A","8","2","2"],"bid":614,"type":2} +{"cards":["A","A","Q","7","Q"],"bid":989,"type":2} +{"cards":["2","2","2","7","9"],"bid":104,"type":3} +{"cards":["2","2","2","K","6"],"bid":861,"type":3} +{"cards":["2","2","3","4","2"],"bid":545,"type":3} +{"cards":["2","2","3","J","2"],"bid":900,"type":3} +{"cards":["2","2","7","7","7"],"bid":102,"type":3} +{"cards":["2","2","J","2","8"],"bid":639,"type":3} +{"cards":["2","2","Q","2","K"],"bid":637,"type":3} +{"cards":["2","2","A","2","J"],"bid":799,"type":3} +{"cards":["2","4","4","4","3"],"bid":344,"type":3} +{"cards":["2","4","4","J","4"],"bid":242,"type":3} +{"cards":["2","5","2","5","5"],"bid":913,"type":3} +{"cards":["2","5","5","2","2"],"bid":923,"type":3} +{"cards":["2","6","2","2","6"],"bid":940,"type":3} +{"cards":["2","6","2","6","6"],"bid":187,"type":3} +{"cards":["2","8","J","8","8"],"bid":315,"type":3} +{"cards":["2","9","2","2","T"],"bid":1000,"type":3} +{"cards":["2","9","9","2","9"],"bid":619,"type":3} +{"cards":["2","T","T","4","T"],"bid":162,"type":3} +{"cards":["2","T","Q","2","2"],"bid":987,"type":3} +{"cards":["2","J","J","2","J"],"bid":726,"type":3} +{"cards":["2","K","2","2","K"],"bid":377,"type":3} +{"cards":["3","2","3","2","3"],"bid":259,"type":3} +{"cards":["3","2","5","2","2"],"bid":684,"type":3} +{"cards":["3","3","3","T","J"],"bid":214,"type":3} +{"cards":["3","3","3","J","5"],"bid":872,"type":3} +{"cards":["3","3","8","3","8"],"bid":638,"type":3} +{"cards":["3","3","Q","Q","3"],"bid":471,"type":3} +{"cards":["3","3","A","J","3"],"bid":347,"type":3} +{"cards":["3","4","8","8","8"],"bid":326,"type":3} +{"cards":["3","5","Q","3","3"],"bid":58,"type":3} +{"cards":["3","6","3","3","6"],"bid":478,"type":3} +{"cards":["3","6","6","6","J"],"bid":845,"type":3} +{"cards":["3","7","3","3","5"],"bid":577,"type":3} +{"cards":["3","7","7","7","3"],"bid":602,"type":3} +{"cards":["3","7","8","8","8"],"bid":657,"type":3} +{"cards":["3","9","3","3","9"],"bid":911,"type":3} +{"cards":["3","T","T","T","3"],"bid":606,"type":3} +{"cards":["3","J","3","4","3"],"bid":840,"type":3} +{"cards":["3","K","7","7","7"],"bid":532,"type":3} +{"cards":["3","K","K","K","T"],"bid":703,"type":3} +{"cards":["3","A","3","7","3"],"bid":278,"type":3} +{"cards":["4","2","2","4","2"],"bid":226,"type":3} +{"cards":["4","2","4","4","2"],"bid":901,"type":3} +{"cards":["4","4","3","4","3"],"bid":999,"type":3} +{"cards":["4","4","4","7","K"],"bid":227,"type":3} +{"cards":["4","4","7","7","4"],"bid":957,"type":3} +{"cards":["4","4","8","6","4"],"bid":410,"type":3} +{"cards":["4","4","8","7","4"],"bid":357,"type":3} +{"cards":["4","4","J","K","4"],"bid":720,"type":3} +{"cards":["4","5","4","4","A"],"bid":680,"type":3} +{"cards":["4","5","6","6","6"],"bid":19,"type":3} +{"cards":["4","5","J","5","5"],"bid":80,"type":3} +{"cards":["4","6","6","4","4"],"bid":331,"type":3} +{"cards":["4","7","4","4","5"],"bid":724,"type":3} +{"cards":["4","7","7","K","7"],"bid":26,"type":3} +{"cards":["4","8","8","4","4"],"bid":323,"type":3} +{"cards":["4","9","4","4","K"],"bid":492,"type":3} +{"cards":["4","T","2","4","4"],"bid":589,"type":3} +{"cards":["4","J","8","4","4"],"bid":359,"type":3} +{"cards":["4","Q","2","Q","Q"],"bid":548,"type":3} +{"cards":["4","K","6","K","K"],"bid":310,"type":3} +{"cards":["4","K","J","K","K"],"bid":271,"type":3} +{"cards":["5","2","2","2","4"],"bid":55,"type":3} +{"cards":["5","3","3","3","9"],"bid":762,"type":3} +{"cards":["5","4","4","5","5"],"bid":570,"type":3} +{"cards":["5","5","2","5","8"],"bid":766,"type":3} +{"cards":["5","5","3","5","3"],"bid":926,"type":3} +{"cards":["5","5","3","5","T"],"bid":504,"type":3} +{"cards":["5","5","4","4","4"],"bid":403,"type":3} +{"cards":["5","5","4","5","8"],"bid":340,"type":3} +{"cards":["5","5","5","4","7"],"bid":728,"type":3} +{"cards":["5","5","5","7","Q"],"bid":841,"type":3} +{"cards":["5","5","8","5","8"],"bid":113,"type":3} +{"cards":["5","5","T","T","T"],"bid":647,"type":3} +{"cards":["5","6","Q","Q","Q"],"bid":149,"type":3} +{"cards":["5","7","7","7","5"],"bid":258,"type":3} +{"cards":["5","8","J","5","5"],"bid":625,"type":3} +{"cards":["5","8","A","5","5"],"bid":311,"type":3} +{"cards":["5","9","8","5","5"],"bid":906,"type":3} +{"cards":["5","9","9","9","5"],"bid":84,"type":3} +{"cards":["5","9","9","9","7"],"bid":787,"type":3} +{"cards":["5","T","T","5","5"],"bid":990,"type":3} +{"cards":["5","J","5","9","5"],"bid":859,"type":3} +{"cards":["5","Q","5","5","A"],"bid":749,"type":3} +{"cards":["5","K","K","5","K"],"bid":535,"type":3} +{"cards":["5","K","K","J","K"],"bid":265,"type":3} +{"cards":["5","A","5","5","J"],"bid":48,"type":3} +{"cards":["6","3","6","4","6"],"bid":293,"type":3} +{"cards":["6","4","4","4","3"],"bid":370,"type":3} +{"cards":["6","4","6","6","J"],"bid":849,"type":3} +{"cards":["6","5","6","8","6"],"bid":298,"type":3} +{"cards":["6","6","3","6","3"],"bid":52,"type":3} +{"cards":["6","6","4","6","4"],"bid":522,"type":3} +{"cards":["6","6","6","4","T"],"bid":747,"type":3} +{"cards":["6","6","8","6","8"],"bid":572,"type":3} +{"cards":["6","6","J","J","6"],"bid":210,"type":3} +{"cards":["6","6","Q","6","Q"],"bid":131,"type":3} +{"cards":["6","6","A","6","A"],"bid":312,"type":3} +{"cards":["6","7","J","7","7"],"bid":203,"type":3} +{"cards":["6","8","K","K","K"],"bid":469,"type":3} +{"cards":["6","9","6","6","3"],"bid":296,"type":3} +{"cards":["6","9","6","6","9"],"bid":272,"type":3} +{"cards":["6","9","Q","6","6"],"bid":690,"type":3} +{"cards":["6","9","A","A","A"],"bid":430,"type":3} +{"cards":["6","J","8","6","6"],"bid":717,"type":3} +{"cards":["6","Q","5","6","6"],"bid":460,"type":3} +{"cards":["6","K","Q","K","K"],"bid":584,"type":3} +{"cards":["6","A","8","8","8"],"bid":404,"type":3} +{"cards":["6","A","A","A","6"],"bid":843,"type":3} +{"cards":["7","3","3","7","3"],"bid":107,"type":3} +{"cards":["7","4","A","4","4"],"bid":945,"type":3} +{"cards":["7","5","9","7","7"],"bid":328,"type":3} +{"cards":["7","5","J","7","7"],"bid":518,"type":3} +{"cards":["7","6","6","7","7"],"bid":373,"type":3} +{"cards":["7","7","2","7","6"],"bid":382,"type":3} +{"cards":["7","7","7","2","J"],"bid":853,"type":3} +{"cards":["7","7","7","5","4"],"bid":848,"type":3} +{"cards":["7","7","7","J","Q"],"bid":188,"type":3} +{"cards":["7","7","9","7","9"],"bid":222,"type":3} +{"cards":["7","7","J","7","3"],"bid":617,"type":3} +{"cards":["7","7","A","A","A"],"bid":666,"type":3} +{"cards":["7","T","7","7","3"],"bid":731,"type":3} +{"cards":["7","T","7","7","6"],"bid":712,"type":3} +{"cards":["7","T","7","J","7"],"bid":44,"type":3} +{"cards":["7","Q","7","Q","7"],"bid":537,"type":3} +{"cards":["7","A","A","7","7"],"bid":881,"type":3} +{"cards":["8","2","8","9","8"],"bid":883,"type":3} +{"cards":["8","3","3","3","K"],"bid":361,"type":3} +{"cards":["8","4","4","8","8"],"bid":234,"type":3} +{"cards":["8","4","8","5","8"],"bid":788,"type":3} +{"cards":["8","7","7","7","8"],"bid":499,"type":3} +{"cards":["8","7","7","8","8"],"bid":384,"type":3} +{"cards":["8","8","4","T","8"],"bid":526,"type":3} +{"cards":["8","8","5","5","8"],"bid":46,"type":3} +{"cards":["8","8","8","T","7"],"bid":491,"type":3} +{"cards":["8","8","9","8","9"],"bid":418,"type":3} +{"cards":["8","8","Q","Q","Q"],"bid":828,"type":3} +{"cards":["8","8","K","8","5"],"bid":593,"type":3} +{"cards":["8","T","T","8","8"],"bid":41,"type":3} +{"cards":["8","Q","Q","8","8"],"bid":660,"type":3} +{"cards":["8","K","J","8","8"],"bid":919,"type":3} +{"cards":["9","2","2","2","4"],"bid":121,"type":3} +{"cards":["9","3","3","3","8"],"bid":836,"type":3} +{"cards":["9","3","9","9","J"],"bid":953,"type":3} +{"cards":["9","4","9","9","T"],"bid":211,"type":3} +{"cards":["9","6","4","4","4"],"bid":179,"type":3} +{"cards":["9","7","4","7","7"],"bid":332,"type":3} +{"cards":["9","7","Q","Q","Q"],"bid":337,"type":3} +{"cards":["9","8","9","9","8"],"bid":912,"type":3} +{"cards":["9","8","9","T","9"],"bid":529,"type":3} +{"cards":["9","9","3","9","5"],"bid":209,"type":3} +{"cards":["9","9","3","9","8"],"bid":946,"type":3} +{"cards":["9","9","6","4","9"],"bid":1,"type":3} +{"cards":["9","9","7","4","9"],"bid":275,"type":3} +{"cards":["9","9","8","A","9"],"bid":561,"type":3} +{"cards":["9","9","9","J","A"],"bid":865,"type":3} +{"cards":["9","9","9","K","2"],"bid":21,"type":3} +{"cards":["9","9","J","9","2"],"bid":869,"type":3} +{"cards":["9","J","9","5","9"],"bid":493,"type":3} +{"cards":["9","J","9","9","T"],"bid":705,"type":3} +{"cards":["9","A","A","J","A"],"bid":284,"type":3} +{"cards":["9","A","A","A","2"],"bid":343,"type":3} +{"cards":["9","A","A","A","3"],"bid":374,"type":3} +{"cards":["T","2","2","2","T"],"bid":87,"type":3} +{"cards":["T","4","A","4","4"],"bid":23,"type":3} +{"cards":["T","6","6","6","8"],"bid":822,"type":3} +{"cards":["T","6","6","J","6"],"bid":184,"type":3} +{"cards":["T","7","T","T","7"],"bid":407,"type":3} +{"cards":["T","T","3","T","9"],"bid":159,"type":3} +{"cards":["T","T","T","9","J"],"bid":189,"type":3} +{"cards":["T","T","T","J","5"],"bid":122,"type":3} +{"cards":["T","T","Q","T","Q"],"bid":35,"type":3} +{"cards":["T","Q","6","T","T"],"bid":541,"type":3} +{"cards":["T","Q","8","T","T"],"bid":803,"type":3} +{"cards":["T","K","J","T","T"],"bid":386,"type":3} +{"cards":["T","A","A","J","A"],"bid":223,"type":3} +{"cards":["J","2","J","3","J"],"bid":118,"type":3} +{"cards":["J","4","5","4","4"],"bid":205,"type":3} +{"cards":["J","4","J","4","4"],"bid":171,"type":3} +{"cards":["J","5","5","J","5"],"bid":281,"type":3} +{"cards":["J","5","5","Q","5"],"bid":714,"type":3} +{"cards":["J","7","7","7","4"],"bid":687,"type":3} +{"cards":["J","7","7","7","K"],"bid":930,"type":3} +{"cards":["J","8","5","8","8"],"bid":142,"type":3} +{"cards":["J","8","7","8","8"],"bid":979,"type":3} +{"cards":["J","8","9","8","8"],"bid":884,"type":3} +{"cards":["J","8","A","A","A"],"bid":667,"type":3} +{"cards":["J","J","2","2","2"],"bid":462,"type":3} +{"cards":["J","J","3","3","3"],"bid":176,"type":3} +{"cards":["J","J","7","7","7"],"bid":71,"type":3} +{"cards":["J","J","9","9","9"],"bid":549,"type":3} +{"cards":["J","J","A","J","T"],"bid":754,"type":3} +{"cards":["J","J","A","A","A"],"bid":855,"type":3} +{"cards":["J","Q","Q","3","Q"],"bid":11,"type":3} +{"cards":["J","K","2","2","2"],"bid":397,"type":3} +{"cards":["Q","2","2","2","A"],"bid":126,"type":3} +{"cards":["Q","3","6","6","6"],"bid":119,"type":3} +{"cards":["Q","3","Q","3","Q"],"bid":707,"type":3} +{"cards":["Q","6","J","6","6"],"bid":168,"type":3} +{"cards":["Q","6","Q","Q","6"],"bid":852,"type":3} +{"cards":["Q","7","K","7","7"],"bid":991,"type":3} +{"cards":["Q","8","Q","Q","7"],"bid":45,"type":3} +{"cards":["Q","T","9","9","9"],"bid":669,"type":3} +{"cards":["Q","T","T","7","T"],"bid":335,"type":3} +{"cards":["Q","T","Q","Q","T"],"bid":164,"type":3} +{"cards":["Q","J","Q","2","Q"],"bid":777,"type":3} +{"cards":["Q","J","Q","Q","J"],"bid":918,"type":3} +{"cards":["Q","Q","2","Q","2"],"bid":390,"type":3} +{"cards":["Q","Q","5","5","5"],"bid":596,"type":3} +{"cards":["Q","Q","Q","3","A"],"bid":820,"type":3} +{"cards":["Q","Q","Q","4","6"],"bid":408,"type":3} +{"cards":["Q","Q","Q","8","3"],"bid":758,"type":3} +{"cards":["Q","Q","Q","T","8"],"bid":607,"type":3} +{"cards":["Q","Q","Q","A","7"],"bid":27,"type":3} +{"cards":["K","2","2","8","2"],"bid":552,"type":3} +{"cards":["K","2","K","2","K"],"bid":150,"type":3} +{"cards":["K","2","A","A","A"],"bid":514,"type":3} +{"cards":["K","4","K","7","K"],"bid":333,"type":3} +{"cards":["K","5","7","7","7"],"bid":833,"type":3} +{"cards":["K","6","K","K","J"],"bid":454,"type":3} +{"cards":["K","7","K","8","K"],"bid":24,"type":3} +{"cards":["K","8","8","3","8"],"bid":830,"type":3} +{"cards":["K","8","J","K","K"],"bid":351,"type":3} +{"cards":["K","8","Q","K","K"],"bid":981,"type":3} +{"cards":["K","8","K","5","K"],"bid":120,"type":3} +{"cards":["K","9","K","K","3"],"bid":756,"type":3} +{"cards":["K","T","K","T","K"],"bid":576,"type":3} +{"cards":["K","J","J","K","K"],"bid":611,"type":3} +{"cards":["K","K","4","K","4"],"bid":675,"type":3} +{"cards":["K","K","7","7","K"],"bid":301,"type":3} +{"cards":["K","K","8","8","8"],"bid":319,"type":3} +{"cards":["K","K","9","K","J"],"bid":254,"type":3} +{"cards":["K","K","J","K","T"],"bid":785,"type":3} +{"cards":["K","K","Q","K","7"],"bid":810,"type":3} +{"cards":["K","K","K","3","7"],"bid":994,"type":3} +{"cards":["K","K","K","6","T"],"bid":416,"type":3} +{"cards":["K","K","K","T","5"],"bid":441,"type":3} +{"cards":["A","2","2","A","2"],"bid":229,"type":3} +{"cards":["A","5","5","9","5"],"bid":262,"type":3} +{"cards":["A","5","A","K","A"],"bid":148,"type":3} +{"cards":["A","8","8","J","8"],"bid":757,"type":3} +{"cards":["A","T","T","A","A"],"bid":290,"type":3} +{"cards":["A","J","J","J","A"],"bid":697,"type":3} +{"cards":["A","J","A","6","A"],"bid":626,"type":3} +{"cards":["A","J","A","7","A"],"bid":874,"type":3} +{"cards":["A","Q","Q","A","Q"],"bid":779,"type":3} +{"cards":["A","Q","Q","A","A"],"bid":656,"type":3} +{"cards":["A","K","A","4","A"],"bid":198,"type":3} +{"cards":["A","A","2","A","8"],"bid":73,"type":3} +{"cards":["A","A","3","J","A"],"bid":51,"type":3} +{"cards":["A","A","4","A","4"],"bid":907,"type":3} +{"cards":["A","A","7","A","8"],"bid":358,"type":3} +{"cards":["A","A","8","8","A"],"bid":813,"type":3} +{"cards":["A","A","J","2","A"],"bid":165,"type":3} +{"cards":["A","A","J","K","A"],"bid":182,"type":3} +{"cards":["A","A","A","2","3"],"bid":838,"type":3} +{"cards":["A","A","A","K","Q"],"bid":376,"type":3} +{"cards":["6","6","6","7","7"],"bid":346,"type":4} +{"cards":["8","8","8","A","A"],"bid":790,"type":4} +{"cards":["9","9","9","3","3"],"bid":433,"type":4} +{"cards":["9","9","9","7","7"],"bid":701,"type":4} +{"cards":["T","T","T","J","J"],"bid":693,"type":4} +{"cards":["Q","Q","Q","K","K"],"bid":931,"type":4} +{"cards":["K","K","K","A","A"],"bid":175,"type":4} +{"cards":["2","2","2","2","6"],"bid":781,"type":5} +{"cards":["2","2","2","3","2"],"bid":9,"type":5} +{"cards":["2","2","A","2","2"],"bid":207,"type":5} +{"cards":["2","3","3","3","3"],"bid":378,"type":5} +{"cards":["2","4","2","2","2"],"bid":807,"type":5} +{"cards":["2","7","2","2","2"],"bid":305,"type":5} +{"cards":["2","J","2","2","2"],"bid":354,"type":5} +{"cards":["2","J","J","J","J"],"bid":765,"type":5} +{"cards":["2","Q","Q","Q","Q"],"bid":194,"type":5} +{"cards":["3","3","3","3","5"],"bid":400,"type":5} +{"cards":["3","3","3","3","A"],"bid":472,"type":5} +{"cards":["3","3","3","Q","3"],"bid":496,"type":5} +{"cards":["3","3","9","3","3"],"bid":882,"type":5} +{"cards":["3","6","6","6","6"],"bid":646,"type":5} +{"cards":["3","7","3","3","3"],"bid":802,"type":5} +{"cards":["3","9","9","9","9"],"bid":857,"type":5} +{"cards":["3","J","3","3","3"],"bid":681,"type":5} +{"cards":["4","4","4","2","4"],"bid":228,"type":5} +{"cards":["4","4","4","6","4"],"bid":517,"type":5} +{"cards":["4","4","4","7","4"],"bid":240,"type":5} +{"cards":["4","4","4","8","4"],"bid":212,"type":5} +{"cards":["4","4","4","J","4"],"bid":998,"type":5} +{"cards":["4","Q","4","4","4"],"bid":362,"type":5} +{"cards":["5","5","5","6","5"],"bid":342,"type":5} +{"cards":["5","5","5","J","5"],"bid":592,"type":5} +{"cards":["5","5","5","K","5"],"bid":976,"type":5} +{"cards":["5","7","5","5","5"],"bid":482,"type":5} +{"cards":["5","T","5","5","5"],"bid":938,"type":5} +{"cards":["5","A","A","A","A"],"bid":949,"type":5} +{"cards":["6","5","6","6","6"],"bid":111,"type":5} +{"cards":["6","6","4","6","6"],"bid":421,"type":5} +{"cards":["6","6","6","6","T"],"bid":197,"type":5} +{"cards":["6","6","6","6","K"],"bid":137,"type":5} +{"cards":["6","6","6","6","A"],"bid":480,"type":5} +{"cards":["6","6","6","9","6"],"bid":66,"type":5} +{"cards":["6","6","6","J","6"],"bid":479,"type":5} +{"cards":["6","7","6","6","6"],"bid":662,"type":5} +{"cards":["6","8","6","6","6"],"bid":423,"type":5} +{"cards":["6","Q","6","6","6"],"bid":438,"type":5} +{"cards":["7","3","7","7","7"],"bid":571,"type":5} +{"cards":["7","7","5","7","7"],"bid":22,"type":5} +{"cards":["7","7","6","7","7"],"bid":698,"type":5} +{"cards":["7","7","7","4","7"],"bid":174,"type":5} +{"cards":["7","7","7","T","7"],"bid":769,"type":5} +{"cards":["7","J","7","7","7"],"bid":736,"type":5} +{"cards":["8","5","5","5","5"],"bid":784,"type":5} +{"cards":["8","8","2","8","8"],"bid":995,"type":5} +{"cards":["8","8","8","7","8"],"bid":18,"type":5} +{"cards":["8","8","8","8","3"],"bid":702,"type":5} +{"cards":["8","8","8","8","9"],"bid":937,"type":5} +{"cards":["8","8","8","Q","8"],"bid":863,"type":5} +{"cards":["8","8","8","K","8"],"bid":654,"type":5} +{"cards":["8","8","J","8","8"],"bid":379,"type":5} +{"cards":["8","8","A","8","8"],"bid":597,"type":5} +{"cards":["8","9","9","9","9"],"bid":96,"type":5} +{"cards":["8","J","J","J","J"],"bid":610,"type":5} +{"cards":["8","Q","Q","Q","Q"],"bid":101,"type":5} +{"cards":["9","4","9","9","9"],"bid":306,"type":5} +{"cards":["9","5","5","5","5"],"bid":307,"type":5} +{"cards":["9","7","7","7","7"],"bid":776,"type":5} +{"cards":["9","9","9","5","9"],"bid":867,"type":5} +{"cards":["9","9","T","9","9"],"bid":948,"type":5} +{"cards":["9","9","J","9","9"],"bid":69,"type":5} +{"cards":["9","K","9","9","9"],"bid":573,"type":5} +{"cards":["9","A","9","9","9"],"bid":916,"type":5} +{"cards":["T","4","4","4","4"],"bid":533,"type":5} +{"cards":["T","6","T","T","T"],"bid":932,"type":5} +{"cards":["T","8","8","8","8"],"bid":12,"type":5} +{"cards":["T","9","T","T","T"],"bid":195,"type":5} +{"cards":["T","T","T","7","T"],"bid":356,"type":5} +{"cards":["T","T","T","T","J"],"bid":399,"type":5} +{"cards":["Q","2","2","2","2"],"bid":604,"type":5} +{"cards":["Q","5","Q","Q","Q"],"bid":125,"type":5} +{"cards":["Q","9","9","9","9"],"bid":6,"type":5} +{"cards":["Q","T","Q","Q","Q"],"bid":299,"type":5} +{"cards":["Q","J","Q","Q","Q"],"bid":434,"type":5} +{"cards":["Q","Q","Q","6","Q"],"bid":47,"type":5} +{"cards":["Q","Q","Q","9","Q"],"bid":350,"type":5} +{"cards":["Q","Q","Q","Q","7"],"bid":808,"type":5} +{"cards":["Q","Q","Q","Q","K"],"bid":585,"type":5} +{"cards":["Q","K","K","K","K"],"bid":247,"type":5} +{"cards":["Q","A","A","A","A"],"bid":958,"type":5} +{"cards":["K","3","3","3","3"],"bid":25,"type":5} +{"cards":["K","4","4","4","4"],"bid":868,"type":5} +{"cards":["K","4","K","K","K"],"bid":980,"type":5} +{"cards":["K","8","K","K","K"],"bid":56,"type":5} +{"cards":["K","T","T","T","T"],"bid":366,"type":5} +{"cards":["K","T","K","K","K"],"bid":83,"type":5} +{"cards":["K","J","K","K","K"],"bid":190,"type":5} +{"cards":["K","K","9","K","K"],"bid":831,"type":5} +{"cards":["K","K","K","3","K"],"bid":896,"type":5} +{"cards":["K","K","K","K","2"],"bid":664,"type":5} +{"cards":["K","K","K","K","7"],"bid":773,"type":5} +{"cards":["K","K","A","K","K"],"bid":579,"type":5} +{"cards":["A","2","A","A","A"],"bid":219,"type":5} +{"cards":["A","3","A","A","A"],"bid":216,"type":5} +{"cards":["A","A","7","A","A"],"bid":157,"type":5} +{"cards":["A","A","A","K","A"],"bid":673,"type":5} +{"cards":["A","A","A","A","4"],"bid":488,"type":5} +{"cards":["A","A","A","A","9"],"bid":387,"type":5} +{"cards":["A","A","A","A","J"],"bid":738,"type":5} +{"cards":["J","J","J","J","J"],"bid":440,"type":6} \ No newline at end of file