diff --git a/.aocrunner.json b/.aocrunner.json index 7fde751..72d5821 100644 --- a/.aocrunner.json +++ b/.aocrunner.json @@ -75,16 +75,16 @@ }, { "part1": { - "solved": false, - "result": null, + "solved": true, + "result": "1361", "attempts": [], - "time": null + "time": 0.342917 }, "part2": { - "solved": false, - "result": null, + "solved": true, + "result": "3263", "attempts": [], - "time": null + "time": 4.223439 } }, { diff --git a/README.md b/README.md index 11ce761..0d4d44a 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ [![Day](https://badgen.net/badge/03/%E2%98%85%E2%98%85/green)](src/day03) [![Day](https://badgen.net/badge/04/%E2%98%85%E2%98%85/green)](src/day04) [![Day](https://badgen.net/badge/05/%E2%98%85%E2%98%85/green)](src/day05) -![Day](https://badgen.net/badge/06/%E2%98%86%E2%98%86/gray) +[![Day](https://badgen.net/badge/06/%E2%98%85%E2%98%85/green)](src/day06) ![Day](https://badgen.net/badge/07/%E2%98%86%E2%98%86/gray) ![Day](https://badgen.net/badge/08/%E2%98%86%E2%98%86/gray) ![Day](https://badgen.net/badge/09/%E2%98%86%E2%98%86/gray) @@ -104,9 +104,9 @@ Both parts: 3.275507ms ``` Day 06 -Time part 1: - -Time part 2: - -Both parts: - +Time part 1: 0.343ms +Time part 2: 4.223ms +Both parts: 4.566356ms ``` ``` @@ -243,8 +243,8 @@ Both parts: - ``` ``` -Total stars: 10/50 -Total time: 16.37ms +Total stars: 12/50 +Total time: 20.937ms ``` diff --git a/src/day06/README.md b/src/day06/README.md new file mode 100644 index 0000000..07f89b2 --- /dev/null +++ b/src/day06/README.md @@ -0,0 +1,9 @@ +# 🎄 Advent of Code 2022 - day 6 🎄 + +## Info + +Task description: [link](https://adventofcode.com/2022/day/6) + +## Notes + +... \ No newline at end of file diff --git a/src/day06/index.ts b/src/day06/index.ts new file mode 100644 index 0000000..0df6507 --- /dev/null +++ b/src/day06/index.ts @@ -0,0 +1,46 @@ +import run from "aocrunner" + +const parseInput = (rawInput: string) => rawInput.trim() + +const part1 = (rawInput: string) => { + const input = parseInput(rawInput) + for (let i = 4; i < input.length; i++) { + const window = new Set([...input.slice(i - 4, i)]) + if (window.size === 4) return i + } + return -1 +} + +const part2 = (rawInput: string) => { + const input = parseInput(rawInput) + for (let i = 14; i < input.length; i++) { + const window = new Set([...input.slice(i - 14, i)]) + if (window.size === 14) return i + } + return -1 +} + +run({ + part1: { + tests: [ + { input: `mjqjpqmgbljsphdztnvjfqwrcgsmlb`, expected: 7 }, + { input: `bvwbjplbgvbhsrlpgdmjqwftvncz`, expected: 5 }, + { input: `nppdvjthqldpwncqszvftbrmjlhg`, expected: 6 }, + { input: `nznrnfrfntjfmvfwmzdfjlvtqnbhcprsg`, expected: 10 }, + { input: `zcfzfwzzqfrljwzlrfnpqdbhtmscgvjw`, expected: 11 }, + ], + solution: part1, + }, + part2: { + tests: [ + { input: `mjqjpqmgbljsphdztnvjfqwrcgsmlb`, expected: 19 }, + { input: `bvwbjplbgvbhsrlpgdmjqwftvncz`, expected: 23 }, + { input: `nppdvjthqldpwncqszvftbrmjlhg`, expected: 23 }, + { input: `nznrnfrfntjfmvfwmzdfjlvtqnbhcprsg`, expected: 29 }, + { input: `zcfzfwzzqfrljwzlrfnpqdbhtmscgvjw`, expected: 26 }, + ], + solution: part2, + }, + trimTestInputs: true, + onlyTests: false, +})