Skip to content

v1.2.0 #26

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 26 commits into from
Dec 15, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
d084154
fix: use ts no-unused-vars rule
weaponsforge Dec 13, 2024
a6099b8
feat: day 2 red-nosed reports sample test soln, #7
weaponsforge Dec 13, 2024
45e31de
feat: day 2 red-nosed reports quiz 1/2 soln, #7
weaponsforge Dec 13, 2024
dddb60b
feat: day 2 red-nosed reports quiz 2/2 soln, #7
weaponsforge Dec 13, 2024
fa22d02
Merge pull request #18 from weaponsforge/feat/weaponsforge-7
weaponsforge Dec 13, 2024
60f449b
docs: update text
weaponsforge Dec 13, 2024
822b6e0
docs: update text
weaponsforge Dec 13, 2024
760b6d3
feat: day 3 mull it over quiz 1/2 soln, #7
weaponsforge Dec 13, 2024
b3389a7
feat: day 3 mull it over quiz 2/2 soln, #8
weaponsforge Dec 13, 2024
8257b09
docs: update README
weaponsforge Dec 13, 2024
700a827
Merge pull request #20 from weaponsforge/feat/weaponsforge-8
weaponsforge Dec 13, 2024
4c83ec1
chore: refactor quiz folder contents
weaponsforge Dec 13, 2024
4e73437
Merge pull request #21 from weaponsforge/feat/refactor-folders
weaponsforge Dec 13, 2024
ba57b18
chore: update dockerfile
weaponsforge Dec 14, 2024
1f86aa0
feat: day 4 ceres search quiz 1/2 soln, #9
weaponsforge Dec 14, 2024
b02c132
chore: add code and function descriptions
weaponsforge Dec 14, 2024
0c7d907
chore: update text
weaponsforge Dec 14, 2024
95726e6
feat: day 4 ceres search quiz 2/2 soln, #9
weaponsforge Dec 14, 2024
2107b87
Merge pull request #23 from weaponsforge/feat/weaponsforge-9
weaponsforge Dec 14, 2024
748e8a5
chore: update README
weaponsforge Dec 14, 2024
ae65aca
chore: add notes
weaponsforge Dec 14, 2024
32231b8
feat: day 5 print queue quiz 1/2 soln, #10
weaponsforge Dec 15, 2024
9f8cd6c
chore: remove redundant code
weaponsforge Dec 15, 2024
2640e10
feat: day 5 print queue quiz 2/2 soln, #10
weaponsforge Dec 15, 2024
bd1b193
chore: include newer fxns to export
weaponsforge Dec 15, 2024
cb766a3
Merge pull request #25 from weaponsforge/feat/weaponsforge-10
weaponsforge Dec 15, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ FROM base AS production
ENV NODE_ENV=production
COPY --from=build /opt/app/dist /opt/app/dist
COPY package*.json ./
RUN npm install && npm prune --production
USER user
EXPOSE 9229
CMD ["sh"]
30 changes: 18 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,10 @@ This repository contains solutions and a local development environment for the [
<summary><b style="font-size: 24px;">2024</b></summary>

- Day 1: Historian Hysteria [[link]](/src/2024/2024-12-01/README.md)
- Day 2: Red-Nosed Reports [[link]](/src/2024/2024-12-02/README.md)
- Day 3: Mull It Over [[link]](/src/2024/2024-12-03/README.md)
- Day 4: Ceres Search [[link]](/src/2024/2024-12-04/README.md)
- Day 5: Print Queue [[link]](/src/2024/2024-12-05/README.md)

</details>

Expand All @@ -33,14 +37,13 @@ It follows the directory structure:
> [!NOTE]
> 📂 dist<br>
> 📂 src<br>
> └─ 📂 lib<br>
> └─ 📂 utils<br>
> └─ 📂 sample<br>
> └─ 📂 2024<br>
> └─── 📂 2024-12-01<br>
> └───── 📂 lib<br>
> └───── 📄 input.txt<br>
> └───── 📄 quiz.ts<br>
> └───── 📄 quiz.test.ts<br>
> └───── 📄 main.ts<br>
> └───── 📄 sample.test.ts<br>
> └───── 📄 README.md<br>
> └─── 📂 2024-12-02<br>
Expand All @@ -55,15 +58,14 @@ It follows the directory structure:

Each Advent of Code (AOC) event quiz has its folder under **`"/src/<YEAR>/<YYYY-MM-DD>"`** containing:
- **/lib**: Folder containing main quiz solution logic
- **input.txt**: Quiz input from AOC
- **quiz.ts**: Quiz answer(s) validated with AOC
- **quiz.test.ts**: Test of the correct quiz answers
- **input.txt**: Random quiz input
- **main.ts**: Main program entry point containing quiz answer(s) using random input
- **sample.test.ts**: Minimal sample input with expected correct answers
- **README.md**: Static copy of the AOC quiz question
- **README.md**: Reference and other notes about the AOC quiz question

#### Other Items

- **/src/lib**: Folder containing generic utility helper functions
- **/src/utils**: Folder containing generic utility helper functions
- **/src/dist**: Folder containing the JavaScript files compiled from TypeScript (not committed to the repository)
- **/src/sample**: Miscellaneous random examples
- **/src/index.ts**: Exports all solutions to AOC quiz answer functions
Expand Down Expand Up @@ -92,17 +94,21 @@ Each Advent of Code (AOC) event quiz has its folder under **`"/src/<YEAR>/<YYYY-

Using Node

1. Run a non-test TypeScript file inside the **/src** directory. For example:

1. (Optional) Replace the values of specific `input.txt` in the `"/src/<YEAR>/<YYYY-MM-DD>"` directories with actual AOC input.
2. Run a non-test TypeScript file inside the **/src** directory. For example:
```
npx vite-node src/sample/sample.ts
```
2. Run compiled JavaScript code from the TypeScript files. For example:

```
npx vite-node src/2024/2024-12-01/main.ts
```
3. Run compiled JavaScript code from the TypeScript files. For example:
```
npm run transpile
node dist/sample/sample.js
```
3. See the [Available Scripts](#available-scripts) section for more information.
4. See the [Available Scripts](#available-scripts) section for more information.

## ⚡ Alternate Usage

Expand Down
1 change: 0 additions & 1 deletion docker-compose.prod.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ services:
dockerfile: Dockerfile
target: production
volumes:
- ./output:/opt/app/output
- /opt/app/node_modules
ports:
- "9229:9229"
Expand Down
7 changes: 4 additions & 3 deletions eslint.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,17 @@ export default [
{ languageOptions: { globals: globals.node } },
pluginJs.configs.recommended,
...tseslint.configs.recommended,
{ ignores: ['node_modules/*'] },
{ ignores: ['node_modules/**'] },
{
rules: {
'no-unused-vars': 'error',
// 'no-unused-vars': 'off',
'no-undef': 'error',
'no-trailing-spaces': 'error',
'@typescript-eslint/no-unused-vars': ['error'],
'indent': ['error', 2],
'linebreak-style': ['error', 'unix'],
'quotes': ['error', 'single'],
'semi': ['error', 'never'],
'no-trailing-spaces': 'error',
'comma-dangle': ['error', 'never'],
'object-curly-spacing': ['error', 'always'],
'eol-last': ['error', 'always']
Expand Down
92 changes: 9 additions & 83 deletions src/2024/2024-12-01/README.md
Original file line number Diff line number Diff line change
@@ -1,88 +1,14 @@
## Day 1: Historian Hysteria

**Source:** https://adventofcode.com/2024/day/1<br>
**Status:** Complete

### 📘 Part 1

The Chief Historian is always present for the big Christmas sleigh launch, but nobody has seen him in months! Last anyone heard, he was visiting locations that are historically significant to the North Pole; a group of Senior Historians has asked you to accompany them as they check the places they think he was most likely to visit.

As each location is checked, they will mark it on their list with a star. They figure the Chief Historian must be in one of the first fifty places they'll look, so in order to save Christmas, you need to help them get fifty stars on their list before Santa takes off on December 25th.

Collect stars by solving puzzles. Two puzzles will be made available on each day in the Advent calendar; the second puzzle is unlocked when you complete the first. Each puzzle grants one star. Good luck!

You haven't even left yet and the group of Elvish Senior Historians has already hit a problem: their list of locations to check is currently empty. Eventually, someone decides that the best place to check first would be the Chief Historian's office.

Upon pouring into the office, everyone confirms that the Chief Historian is indeed nowhere to be found. Instead, the Elves discover an assortment of notes and lists of historically significant locations! This seems to be the planning the Chief Historian was doing before he left. Perhaps these notes can be used to determine which locations to search?

Throughout the Chief's office, the historically significant locations are listed not by name but by a unique number called the location ID. To make sure they don't miss anything, The Historians split into two groups, each searching the office and trying to create their own complete list of location IDs.

There's just one problem: by holding the two lists up side by side (your puzzle input), it quickly becomes clear that the lists aren't very similar. Maybe you can help The Historians reconcile their lists?

For example:

```text
3 4
4 3
2 5
1 3
3 9
3 3
```

Maybe the lists are only off by a small amount! To find out, pair up the numbers and measure how far apart they are. Pair up the smallest number in the left list with the smallest number in the right list, then the second-smallest left number with the second-smallest right number, and so on.

Within each pair, figure out how far apart the two numbers are; you'll need to add up all of those distances. For example, if you pair up a 3 from the left list with a 7 from the right list, the distance apart is 4; if you pair up a 9 with a 3, the distance apart is 6.

In the example list above, the pairs and distances would be as follows:

- The smallest number in the left list is 1, and the smallest number in the right list is 3. The distance between them is 2.
- The second-smallest number in the left list is 2, and the second-smallest number in the right list is another 3. The distance between them is 1.
- The third-smallest number in both lists is 3, so the distance between them is 0.
- The next numbers to pair up are 3 and 4, a distance of 1.
- The fifth-smallest numbers in each list are 3 and 5, a distance of 2.
- Finally, the largest number in the left list is 4, while the largest number in the right list is 9; these are a distance 5 apart.
Visit the Advent of Code website for more information on this puzzle at:

To find the total distance between the left list and the right list, add up the distances between all of the pairs you found. In the example above, this is `2 + 1 + 0 + 1 + 2 + 5`, a total distance of `11`!

Your actual left and right lists contain many location IDs. What is the total distance between your lists?

> **Your puzzle answer was** 2086478.

---

### 📗 Part 2

Your analysis only confirmed what everyone feared: the two lists of location IDs are indeed very different.

Or are they?

The Historians can't agree on which group made the mistakes or how to read most of the Chief's handwriting, but in the commotion you notice an interesting detail: a lot of location IDs appear in both lists! Maybe the other numbers aren't location IDs at all but rather misinterpreted handwriting.

This time, you'll need to figure out exactly how often each number from the left list appears in the right list. Calculate a total similarity score by adding up each number in the left list after multiplying it by the number of times that number appears in the right list.

Here are the same example lists again:

```text
3 4
4 3
2 5
1 3
3 9
3 3
```

For these example lists, here is the process of finding the similarity score:

- The first number in the left list is `3`. It appears in the right list three times, so the similarity score increases by `3 * 3 = 9`.
- The second number in the left list is `4`. It appears in the right list once, so the similarity score increases by `4 * 1 = 4`.
- The third number in the left list is `2`. It does not appear in the right list, so the similarity score does not increase `(2 * 0 = 0)`.
- The fourth number, `1`, also does not appear in the right list.
- The fifth number, `3`, appears in the right list three times; the similarity score increases by `9`.
- The last number, `3`, appears in the right list three times; the similarity score again increases by `9`.

So, for these example lists, the similarity score at the end of this process is `31 (9 + 4 + 0 + 0 + 9 + 9)`.
**Source:** https://adventofcode.com/2024/day/1<br>
**Status:** Complete ⭐⭐

Once again consider your left and right lists. What is their similarity score?
<br>

> **Your puzzle answer was** 24941624.
| Code | Description |
| --- | --- |
| **listTotalDistance.ts** | Calculates the total distance between the smallest value-pairs from array `a` and array `b`. |
| **similarityScore.ts** | Calculates the similarity scores of elements in array `a` with array `b` by multiplying each element in array `a` with the total number of its duplicates in array `b`. |
| **fileReader.ts** | Reads a two-column (2) number input separated by three (3) space characters from a text file. |
Loading
Loading