From 11f373eae1411430839f4284ca91233394e0279b Mon Sep 17 00:00:00 2001 From: Alex Prosser Date: Sat, 30 Nov 2024 23:23:41 -0600 Subject: [PATCH] first day of 2024! --- README.md | 14 +- aoc/aoc_data.db | Bin 57344 -> 57344 bytes aoc/fix.ts | 90 ------- aoc/index.ts | 2 +- index.html | 420 ++++++++++++++++----------------- puzzles/2018/day01/README.md | 10 + puzzles/2018/day01/solution.ts | 35 +++ puzzles/2018/day02/README.md | 10 + puzzles/2018/day02/solution.ts | 46 ++++ puzzles/2018/day03/README.md | 10 + puzzles/2018/day03/solution.ts | 71 ++++++ puzzles/2024/day01/README.md | 16 ++ puzzles/2024/day01/solution.ts | 54 +++++ writeups/2015/day01/index.html | 400 +++++++++++++++---------------- writeups/2023/day01/index.html | 400 +++++++++++++++---------------- writeups/2023/day02/index.html | 400 +++++++++++++++---------------- writeups/2023/day03/index.html | 400 +++++++++++++++---------------- writeups/2023/day04/index.html | 400 +++++++++++++++---------------- writeups/2023/day05/index.html | 400 +++++++++++++++---------------- writeups/2023/day06/index.html | 400 +++++++++++++++---------------- writeups/2023/day07/index.html | 400 +++++++++++++++---------------- writeups/2023/day08/index.html | 400 +++++++++++++++---------------- writeups/2023/day09/index.html | 400 +++++++++++++++---------------- writeups/2023/day10/index.html | 400 +++++++++++++++---------------- writeups/2023/day11/index.html | 400 +++++++++++++++---------------- writeups/2023/day12/index.html | 400 +++++++++++++++---------------- writeups/2023/day13/index.html | 400 +++++++++++++++---------------- writeups/2023/day16/index.html | 400 +++++++++++++++---------------- writeups/2023/day18/index.html | 400 +++++++++++++++---------------- writeups/2023/day19/index.html | 400 +++++++++++++++---------------- 30 files changed, 3870 insertions(+), 3708 deletions(-) delete mode 100644 aoc/fix.ts create mode 100644 puzzles/2018/day01/README.md create mode 100644 puzzles/2018/day01/solution.ts create mode 100644 puzzles/2018/day02/README.md create mode 100644 puzzles/2018/day02/solution.ts create mode 100644 puzzles/2018/day03/README.md create mode 100644 puzzles/2018/day03/solution.ts create mode 100644 puzzles/2024/day01/README.md create mode 100644 puzzles/2024/day01/solution.ts diff --git a/README.md b/README.md index 428746f..e15f163 100644 --- a/README.md +++ b/README.md @@ -6,13 +6,13 @@ These are all my solutions for the years of [Advent of Code](https://adventofcod ### How to Use Locally -Clone this repository on your computer and run... +Clone this repository on your computer, change directory to `/aoc` and run... -``` -> npm i +```bash +> deno task aoc ``` -To use the repository, you need a `.env` that has your token... +To use the repository, you need a `.env` in `/aoc` that has your token... ``` SESSION=YOUR_TOKEN_HERE @@ -20,11 +20,11 @@ SESSION=YOUR_TOKEN_HERE ### How to Run -To see how it works, run `node aoc` to see all commands and arguments. +To see how it works, run `deno task aoc` to see all commands and arguments. -Also, to lint: `npx prettier . --write` +To generate the frontend, run `deno task generate ` and `deno fmt` ### Note for AOC moderators -The automated requests are served from `aoc.js`, where they have the a User-Agent header that points to this page. Nothing is done automatically, all done by a +The automated requests are served from `aoc.ts`, where they have the a User-Agent header that points to this page. Nothing is done automatically, all done by a function call by the built in command line tool or a call from another script. Also, there are no inputs stored on the GitHub repository diff --git a/aoc/aoc_data.db b/aoc/aoc_data.db index d471d77134eec8dc8b6b7c4ec4cde380f7d041dd..e4979a53c3b2492a94aa97bd10d7815f7233c795 100644 GIT binary patch delta 615 zcmZoTz}#?vd4e>f%S0JxRu=}ns)CIv3*;ppu|_cPf8)E%yMd>dJB!PmlZX8R+Z5J_ z%~A?BtUTN-{Gv>TMg~SE439RasP;- zgFlpCg6|RE8ooL{H$GwBN4y(&i+LS+IX4R$Jms-4ZA@Zg;1@Nt1)JxQSzMA|l$n^P z;89szk_u#jY|%9|(lsy)F)+0XAUxiF`#v5|qHg^`7&36jzE21Zr}W>zLfddB7!K(nJ^W`h+Q z8X6iHTACuMM^bJOW#1G9R&LK}YXmksu{gavD>=8SC^aQBqcFd;B)KxDtSU3F0%C%p zu8}1;fGn&GjP(o*45PH_nyPdU3I2pdS|D1!MpZ_72kxundh0Y6?dQ3jT#SD3;_ch0&sPDdTeEL0O7Jg1VA1Q4M6}8#}9}PRSy^r;ts41 rehx+s6Aj`Gunlt!L9-Ds9}TlXjl)6%E(dax2hd%yfer_=a@URs7d0ut diff --git a/aoc/fix.ts b/aoc/fix.ts deleted file mode 100644 index cbee525..0000000 --- a/aoc/fix.ts +++ /dev/null @@ -1,90 +0,0 @@ -import { join, resolve } from '@std/path'; -import { getTitle, profilePuzzle, runPuzzle, submitAnswer, updatePuzzle } from './aoc.ts'; -import { STEVE } from '@codingap/steve'; - -const year = '2021'; - -const baseDirectory = resolve('../puzzles'); - -const getComment = async (day: string, year: string) => { - const title = await getTitle(day, year); - - return `// @ts-nocheck previous years was written in javascript, so disable it here - -/** - * puzzles/${year}/day${day}/solution.ts - * - * ~~ ${title} ~~ - * this is my solution for this advent of code puzzle - * - * by alex prosser - * 11/24/2024 - */ -`; -}; - -const part1Comment = `/** - * code for part 1 of the advent of code puzzle - * - * @param {string} input - * @returns {string | number} the result of part 1 - */ -const part1 = input => {`; - -const part2Comment = `/** - * code for part 2 of the advent of code puzzle - * - * @param {string} input - * @returns {string | number} the result of part 2 - */ -const part2 = input => {`; - -for (let i = 20; i <= 21; i++) { - const solutionDirectory = join(baseDirectory, year, `day${i.toString().padStart(2, '0')}`); - console.log('day', i, year); - - // await Deno.remove(join(solutionDirectory, 'README.md')); - // await Deno.remove(join(solutionDirectory, 'input.txt')); - await Deno.remove(join(solutionDirectory, 'part1.js')); - await Deno.remove(join(solutionDirectory, 'part2.js')); - - // await updatePuzzle(i.toString(), year); - // const response = await runPuzzle(i.toString(), year, 'both'); - // console.log(response.part1); - // console.log(response.part2); - - await profilePuzzle(i.toString(), year, '10'); - await submitAnswer(i.toString(), year, 'both', 'true'); - - // let part1 = (await Deno.readTextFile(join(solutionDirectory, 'part1.js'))).replace(/\r/g, '').split('\n'); - // let script1 = ''; - // let inScript1 = false; - // for (let i = 0; i < part1.length; i++) { - // if (part1[i] === '}') inScript1 = false; - // if (inScript1) script1 += part1[i] + '\n'; - // if (part1[i].includes('module.exports = input => {')) inScript1 = true; - // } - - // let part2 = (await Deno.readTextFile(join(solutionDirectory, 'part2.js'))).replace(/\r/g, '').split('\n'); - // let script2 = ''; - // let inScript2 = false; - // for (let i = 0; i < part2.length; i++) { - // if (part2[i] === '}') inScript2 = false; - // if (inScript2) script2 += part2[i] + '\n'; - // if (part2[i].includes('module.exports = input => {')) inScript2 = true; - // } - - // const script = STEVE.renderFile('templates/solution_temp.ts', { day: i.toString(), year, part1: script1.trimEnd(), part2: script2.trimEnd(), title: await getTitle(i.toString(), year) }); - - // let script = await Deno.readTextFile(join(solutionDirectory, 'solution.js')); - // script = script.replace(/async /g, ''); - // script = script.replace(/const part1 = input => {/g, part1Comment); - // script = script.replace(/const part2 = input => {/g, part2Comment); - // const lines = script.replace(/\r/g, '').split('\n'); - // const commentLines = await getComment(i.toString(), year); - - // commentLines.split('\n').reverse().forEach(line => lines.unshift(line)); - - // await Deno.writeTextFile(join(baseDirectory, year, `day${i.toString().padStart(2, '0')}`, 'solution.ts'), script); - // await Deno.remove(join(baseDirectory, year, `day${i.toString().padStart(2, '0')}`, 'solution.js')) -} diff --git a/aoc/index.ts b/aoc/index.ts index eeeb8a0..2aacbe1 100644 --- a/aoc/index.ts +++ b/aoc/index.ts @@ -105,7 +105,7 @@ const commandLineInfo: { submit: { aliases: ['s'], description: 'submits the answer of the puzzle specified.', - arguments: ['day', 'year', 'part'], + arguments: ['day', 'year', 'part', 'fake'], command: (args: CommandArguments) => { console.log( `${RED_COLOR}manager: ${GREEN_COLOR}submitting answers for day ${YELLOW_COLOR}${args.day}${GREEN_COLOR}, year ${YELLOW_COLOR}${args.year}${GREEN_COLOR}!${DEFAULT_COLOR}`, diff --git a/index.html b/index.html index 7ba0210..66cbdcd 100644 --- a/index.html +++ b/index.html @@ -69,206 +69,206 @@

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -2987,12 +2987,12 @@ Day 1 - Chronal Calibration
- - ** + ** +
[Source Code] @@ -3023,12 +3023,12 @@ Day 2 - Inventory Management System
- - ** + ** + [Source Code] @@ -3059,12 +3059,12 @@ Day 3 - No Matter How You Slice It
- - ** + ** + [Source Code] @@ -8393,7 +8393,7 @@

Stars: 50/50

Stars: 50/50

Stars: 50/50

-

Stars: 0/50

+

Stars: 6/50

Stars: 0/50

Stars: 50/50

Stars: 41/50

diff --git a/puzzles/2018/day01/README.md b/puzzles/2018/day01/README.md new file mode 100644 index 0000000..a7b095a --- /dev/null +++ b/puzzles/2018/day01/README.md @@ -0,0 +1,10 @@ +# Advent of Code 2018 - Day 1: [Chronal Calibration](https://adventofcode.com/2018/day/1) + +## [Write Up](https://codingap.github.io/advent-of-code/writeups/2018/day01) + +## Results + +| | **Part 1** | **Part 2** | +| :--------------: | :--------: | :--------: | +| **Results** | 500 | 709 | +| **Time (in ms)** | 0.28 | 2483.72 | diff --git a/puzzles/2018/day01/solution.ts b/puzzles/2018/day01/solution.ts new file mode 100644 index 0000000..da832e1 --- /dev/null +++ b/puzzles/2018/day01/solution.ts @@ -0,0 +1,35 @@ +/** + * puzzles/2018/day01/solution.ts + * + * ~~ Chronal Calibration ~~ + * this is my solution for this advent of code puzzle + * + * by alex prosser + * 11/28/2024 + */ + +/** + * the code of part 1 of the puzzle + */ +const part1 = (input: string) => { + const numbers = input.trim().split('\n').map(num => parseInt(num)); + return numbers.reduce((sum, num) => sum + num, 0); +}; + +/** + * the code of part 2 of the puzzle + */ +const part2 = (input: string) => { + const numbers = input.trim().split('\n').map(num => parseInt(num)); + + const seen: number[] = []; + let sum = 0, position = 0; + while (true) { + sum += numbers[position]; + if (seen.includes(sum)) return sum; + seen.push(sum); + position = (position + 1) % numbers.length; + } +}; + +export { part1, part2 }; diff --git a/puzzles/2018/day02/README.md b/puzzles/2018/day02/README.md new file mode 100644 index 0000000..d89e2dc --- /dev/null +++ b/puzzles/2018/day02/README.md @@ -0,0 +1,10 @@ +# Advent of Code 2018 - Day 2: [Inventory Management System](https://adventofcode.com/2018/day/2) + +## [Write Up](https://codingap.github.io/advent-of-code/writeups/2018/day02) + +## Results + +| | **Part 1** | **Part 2** | +| :--------------: | :--------: | :--------: | +| **Results** | 6175 | asgwjcmzredihqoutcylvzinx | +| **Time (in ms)** | 3.16 | 3.01 | diff --git a/puzzles/2018/day02/solution.ts b/puzzles/2018/day02/solution.ts new file mode 100644 index 0000000..65c5d0c --- /dev/null +++ b/puzzles/2018/day02/solution.ts @@ -0,0 +1,46 @@ +/** + * puzzles/2018/day02/solution.ts + * + * ~~ Inventory Management System ~~ + * this is my solution for this advent of code puzzle + * + * by alex prosser + * 11/28/2024 + */ + +/** + * the code of part 1 of the puzzle + */ +const part1 = (input: string) => { + let twos = 0, threes = 0; + input.trim().split('\n').forEach(line => { + const characters = line.split('').reduce<{ [key: string]: number }>((obj, letter) => { + obj[letter] = (obj[letter] || 0) + 1; + return obj; + }, {}); + + if (Object.values(characters).includes(2)) twos++; + if (Object.values(characters).includes(3)) threes++; + }); + return twos * threes; +}; + +/** + * the code of part 2 of the puzzle + */ +const part2 = (input: string) => { + const words = input.trim().split('\n'); + for (let i = 0; i < words.length; i++) { + for (let j = 0; j < words.length; j++) { + if (i === j) continue; + + let same = ''; + for (let k = 0; k < words[i].length; k++) { + if (words[i][k] === words[j][k]) same += words[i][k]; + } + if (same.length === words[i].length - 1) return same; + } + } +}; + +export { part1, part2 }; diff --git a/puzzles/2018/day03/README.md b/puzzles/2018/day03/README.md new file mode 100644 index 0000000..e2023b9 --- /dev/null +++ b/puzzles/2018/day03/README.md @@ -0,0 +1,10 @@ +# Advent of Code 2018 - Day 3: [No Matter How You Slice It](https://adventofcode.com/2018/day/3) + +## [Write Up](https://codingap.github.io/advent-of-code/writeups/2018/day03) + +## Results + +| | **Part 1** | **Part 2** | +| :--------------: | :--------: | :--------: | +| **Results** | 110195 | 894 | +| **Time (in ms)** | 454.76 | 326.45 | diff --git a/puzzles/2018/day03/solution.ts b/puzzles/2018/day03/solution.ts new file mode 100644 index 0000000..86e5cfe --- /dev/null +++ b/puzzles/2018/day03/solution.ts @@ -0,0 +1,71 @@ +/** + * puzzles/2018/day03/solution.ts + * + * ~~ No Matter How You Slice It ~~ + * this is my solution for this advent of code puzzle + * + * by alex prosser + * 11/28/2024 + */ + +/** + * the code of part 1 of the puzzle + */ +const part1 = (input: string) => { + const grid: { [key: string]: number } = {}; + + // parse input and place all claims in grid + input.trim().split('\n').forEach(line => { + const [_, coords, area] = line.replace(/\s/g, '').split(/[@:]/); + const [x, y] = coords.split(',').map(num => parseInt(num)); + const [width, height] = area.split('x').map(num => parseInt(num)); + + for (let j = 0; j < height; j++) { + for (let i = 0; i < width; i++) { + grid[`${x + i},${y + j}`] = (grid[`${x + i},${y + j}`] || 0) + 1; + } + } + }) + + // find all spots with 2 or more claims + return Object.values(grid).filter(num => num >= 2).length; +}; + +/** + * the code of part 2 of the puzzle + */ +const part2 = (input: string) => { + const grid: { [key: string]: number } = {}; + + // parse input and place all claims in grid + const claims = input.trim().split('\n').map(line => { + const [_, coords, area] = line.replace(/\s/g, '').split(/[@:]/); + const [x, y] = coords.split(',').map(num => parseInt(num)); + const [width, height] = area.split('x').map(num => parseInt(num)); + + for (let j = 0; j < height; j++) { + for (let i = 0; i < width; i++) { + grid[`${x + i},${y + j}`] = (grid[`${x + i},${y + j}`] || 0) + 1; + } + } + + return { x, y, width, height }; + }); + + // look to see if any spot has only 1 claim in all area + for (let claim = 0; claim < claims.length; claim++) { + let containsOther = false; + for (let j = 0; j < claims[claim].height; j++) { + for (let i = 0; i < claims[claim].width; i++) { + if (grid[`${claims[claim].x + i},${claims[claim].y + j}`] > 1) containsOther = true; + } + } + + if (!containsOther) return claim + 1; + } + + // unreachable + return -1; +}; + +export { part1, part2 }; diff --git a/puzzles/2024/day01/README.md b/puzzles/2024/day01/README.md new file mode 100644 index 0000000..22a1646 --- /dev/null +++ b/puzzles/2024/day01/README.md @@ -0,0 +1,16 @@ +# Advent of Code 2024 - Day 1: [Historian Hysteria](https://adventofcode.com/2024/day/1) + +## [Write Up](https://codingap.github.io/advent-of-code/writeups/2024/day01) + +## Results + +| | **Part 1** | **Part 2** | +| :--------------: | :--------: | :--------: | +| **Results** | 765748 | 27732508 | +| **Time (in ms)** | 2.25 | 2.00 | + +%%% + +Leaderboard Positions - **Part 1**: 1265, **Part 2**: 1476 + +Hello all! Today is the first day of Advent of Code 2024, and it wasn't bad! Last year's part 1 was leagues harder than today, so I got some stuff done. In this puzzle, we need to compare two sets of number lists. In part 1, we need to sort each list and add the distances between each value. In part 2, we need to add the "similarity scores" of each number in the left list. This is calculated with `num * occurence of num in right list`. Overall, it wasn't a bad day, it just took two tries to correctly read the prose. Next time I will try to do better! \ No newline at end of file diff --git a/puzzles/2024/day01/solution.ts b/puzzles/2024/day01/solution.ts new file mode 100644 index 0000000..fe888b5 --- /dev/null +++ b/puzzles/2024/day01/solution.ts @@ -0,0 +1,54 @@ +/** + * puzzles/2024/day01/solution.ts + * + * ~~ Historian Hysteria ~~ + * this is my solution for this advent of code puzzle + * + * by alex prosser + * 11/30/2024 + */ + +/** + * the code of part 1 of the puzzle + */ +const part1 = (input: string) => { + let leftList: number[] = []; + let rightList: number[] = []; + + // get list of left and right numbers + input.trim().split('\n').forEach(line => { + const [left, right] = line.split(/\s+/).map(num => parseInt(num)); + leftList.push(left); + rightList.push(right); + }); + + leftList.sort((a, b) => a - b); + rightList.sort((a, b) => a - b); + + let sum = 0; + for (let i = 0; i < leftList.length; i++) { + sum += Math.abs(leftList[i] - rightList[i]); + } + return sum; +}; + +/** + * the code of part 2 of the puzzle + */ +const part2 = (input: string) => { + const leftList: number[] = []; + const rightOccurences: { [key: number]: number } = {}; + input.trim().split('\n').forEach(line => { + const [left, right] = line.split(/\s+/).map(num => parseInt(num)); + leftList.push(left); + rightOccurences[right] = (rightOccurences[right] || 0) + 1; + }); + + let sum = 0; + for (let i = 0; i < leftList.length; i++) { + sum += leftList[i] * (rightOccurences[leftList[i]] || 0); + } + return sum; +}; + +export { part1, part2 }; diff --git a/writeups/2015/day01/index.html b/writeups/2015/day01/index.html index 8057b80..8cf6825 100644 --- a/writeups/2015/day01/index.html +++ b/writeups/2015/day01/index.html @@ -53,206 +53,206 @@
[Back to Hub]
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

diff --git a/writeups/2023/day01/index.html b/writeups/2023/day01/index.html index b32c046..15537a2 100644 --- a/writeups/2023/day01/index.html +++ b/writeups/2023/day01/index.html @@ -53,206 +53,206 @@ [Back to Hub]
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

diff --git a/writeups/2023/day02/index.html b/writeups/2023/day02/index.html index 96f2181..4c0a77e 100644 --- a/writeups/2023/day02/index.html +++ b/writeups/2023/day02/index.html @@ -53,206 +53,206 @@ [Back to Hub]
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

diff --git a/writeups/2023/day03/index.html b/writeups/2023/day03/index.html index 37dff90..1c987ed 100644 --- a/writeups/2023/day03/index.html +++ b/writeups/2023/day03/index.html @@ -53,206 +53,206 @@ [Back to Hub]
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

diff --git a/writeups/2023/day04/index.html b/writeups/2023/day04/index.html index 8060c05..6285853 100644 --- a/writeups/2023/day04/index.html +++ b/writeups/2023/day04/index.html @@ -53,206 +53,206 @@ [Back to Hub]
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

diff --git a/writeups/2023/day05/index.html b/writeups/2023/day05/index.html index 35f93ba..9f207f9 100644 --- a/writeups/2023/day05/index.html +++ b/writeups/2023/day05/index.html @@ -53,206 +53,206 @@ [Back to Hub]
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

diff --git a/writeups/2023/day06/index.html b/writeups/2023/day06/index.html index 2076d28..212a8fe 100644 --- a/writeups/2023/day06/index.html +++ b/writeups/2023/day06/index.html @@ -53,206 +53,206 @@ [Back to Hub]
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

diff --git a/writeups/2023/day07/index.html b/writeups/2023/day07/index.html index d50b69c..7ba8964 100644 --- a/writeups/2023/day07/index.html +++ b/writeups/2023/day07/index.html @@ -53,206 +53,206 @@ [Back to Hub]
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

diff --git a/writeups/2023/day08/index.html b/writeups/2023/day08/index.html index bbb6187..7816d64 100644 --- a/writeups/2023/day08/index.html +++ b/writeups/2023/day08/index.html @@ -53,206 +53,206 @@ [Back to Hub]
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

diff --git a/writeups/2023/day09/index.html b/writeups/2023/day09/index.html index dd25489..2a8840d 100644 --- a/writeups/2023/day09/index.html +++ b/writeups/2023/day09/index.html @@ -53,206 +53,206 @@ [Back to Hub]
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

diff --git a/writeups/2023/day10/index.html b/writeups/2023/day10/index.html index 90b473d..62c05eb 100644 --- a/writeups/2023/day10/index.html +++ b/writeups/2023/day10/index.html @@ -53,206 +53,206 @@ [Back to Hub]
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

diff --git a/writeups/2023/day11/index.html b/writeups/2023/day11/index.html index 299c347..5f1e512 100644 --- a/writeups/2023/day11/index.html +++ b/writeups/2023/day11/index.html @@ -53,206 +53,206 @@ [Back to Hub]
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

diff --git a/writeups/2023/day12/index.html b/writeups/2023/day12/index.html index 2061006..53788e2 100644 --- a/writeups/2023/day12/index.html +++ b/writeups/2023/day12/index.html @@ -53,206 +53,206 @@ [Back to Hub]
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

diff --git a/writeups/2023/day13/index.html b/writeups/2023/day13/index.html index 66c5ad2..fc899d3 100644 --- a/writeups/2023/day13/index.html +++ b/writeups/2023/day13/index.html @@ -53,206 +53,206 @@ [Back to Hub]
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

diff --git a/writeups/2023/day16/index.html b/writeups/2023/day16/index.html index 8f246b2..6929c0c 100644 --- a/writeups/2023/day16/index.html +++ b/writeups/2023/day16/index.html @@ -53,206 +53,206 @@ [Back to Hub]
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

diff --git a/writeups/2023/day18/index.html b/writeups/2023/day18/index.html index de7dfb3..39ebbd2 100644 --- a/writeups/2023/day18/index.html +++ b/writeups/2023/day18/index.html @@ -53,206 +53,206 @@ [Back to Hub]
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

diff --git a/writeups/2023/day19/index.html b/writeups/2023/day19/index.html index 591a80d..6e33f11 100644 --- a/writeups/2023/day19/index.html +++ b/writeups/2023/day19/index.html @@ -53,206 +53,206 @@ [Back to Hub]
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+