Compare commits

...
10 Commits
13 changed files with 1319 additions and 34 deletions

No files matched your search

+20 -2
View File
@@ -2,6 +2,8 @@
[Advent of Code](https://adventofcode.com/) problems of 2025.
### Progress
| Day | Name | Part 1 | Part 2 |
| :-: | :------------------ | :----: | :----: |
| 1 | Secret Entrance | ⭐ | ⭐ |
@@ -10,6 +12,22 @@
| 4 | Printing Department | ⭐ | ⭐ |
| 5 | Cafeteria | ⭐ | ⭐ |
| 6 | Trash Compactor | ⭐ | ⭐ |
| 7 | Laboratories | ⭐ | |
| 7 | Laboratories | ⭐ | ⏱️ |
| 8 | Playground | ⭐ | ⭐ |
| 9 | Movie Theater | ⭐ | |
| 9 | Movie Theater | ⭐ | 🌓 |
| 10 | Factory | ⭐ | ⏱️ |
| 11 | Reactor | ⭐ | |
| 12 | Christmas Tree Farm | | |
### Symbols
- 🌓 Completed with test input but some corner-case left on real input.
- ⏱️ Completed with test input but to slow to complete with real input.
- ⭐ All done.
## Brain made
1. I don't hate AIs,
2. I love humans!
![Brainmade logo](https://brainmade.org/white-logo.svg)
+22
View File
@@ -0,0 +1,22 @@
import { assertEquals } from "@std/assert";
import {
count_min_button_presses,
count_min_button_presses_joltage,
read_machine_manuals,
} from "../exercises/day_10.ts";
Deno.test("Day 10 - A", async () => {
const manual_list = await read_machine_manuals(
"src/exercises/assets/day_10_test_input.txt",
);
const result = count_min_button_presses(manual_list);
assertEquals(result, 7);
});
Deno.test("Day 10 - B", async () => {
const manual_list = await read_machine_manuals(
"src/exercises/assets/day_10_test_input.txt",
);
const result = count_min_button_presses_joltage(manual_list);
assertEquals(result, 33);
});
+10
View File
@@ -0,0 +1,10 @@
import { assertEquals } from "@std/assert";
import { count_all_out_paths, read_device_list } from "../exercises/day_11.ts";
Deno.test("Day 11 - A", async () => {
const input_list = await read_device_list(
"src/exercises/assets/day_11_test_input.txt",
);
const result = count_all_out_paths(input_list, "you");
assertEquals(result, 5);
});
+7
View File
@@ -0,0 +1,7 @@
import { read_situation_summary } from "../exercises/day_12.ts";
Deno.test("Day 12 - A", async () => {
const summary = await read_situation_summary(
"src/exercises/assets/day_12_test_input.txt",
);
});
+177
View File
@@ -0,0 +1,177 @@
[...#...] (0,2,3,6) (0,1,4,6) (1,3,4,5) (1,2,4,6) (0,2,3,4,5) (2,3,6) (1,2) (2,3,4,5,6) {37,24,84,71,44,32,71}
[...##.] (0,3,4) (0,1,2,5) (0,1,3,4,5) (3,4) {53,34,17,42,42,34}
[###.] (1,3) (0,1,2) {4,13,4,9}
[.#.....] (0,1,6) (0,2,4) (1,3,4,6) (0,1,3,5) (4,5) {219,37,194,30,211,23,19}
[...##] (1,2) (0,2,3) (0,3) (1,3) (2,3,4) {10,20,23,37,14}
[#.##] (1,3) (2) (0,1,2) (2,3) {16,26,38,24}
[#...] (1,3) (0,1) (0,3) (1) (2,3) {2,13,11,15}
[.###.#.] (0,3,6) (0,1,2,5,6) (1,2,3,4,5) (0,1,2,3,4,5) (0,1,4,5) (0,4,6) {76,41,23,27,48,41,50}
[#...#..###] (2,3,5,6,7,8,9) (0,4,6,7,8,9) (1,7,8) (0,1,2,8) (0,1,2,3,4,5,6,9) (0,2,3,4,5,7) (1,6,8) (1,6,9) {56,71,48,29,37,29,50,54,76,31}
[####...] (0,1,2,3,4,6) (1,2,4) (1,3,5) (0,2,5) (4,6) (0,1,4,5,6) (3,5,6) (3) (0,1,2,5) {32,56,31,49,53,50,48}
[#...#.##] (0,4,6,7) (0,3,5,6) (0,1,3,4) (0,1,2,5,6,7) (0,1,2,5,7) (0,2,3,4,5,6) {202,164,169,27,19,189,185,175}
[##....#.#] (2,3,8) (3,4,7) (1) (1,2,3,5,6,8) (5,8) (0,1,5,6,8) (4,6,7,8) (0,3,4,5,7,8) {15,17,16,20,15,21,27,15,45}
[##.#] (0,1,2) (0,1) (1,3) (2,3) (0,2) {176,12,167,3}
[....#....#] (0,3,6) (1,3,4) (3,4,5,9) (0,1,3,5,6,7,8,9) (1,2,3,4,6,8,9) (1,2,3,4,6,7,8,9) (2,5) (4,5,6,7) {19,29,5,35,36,44,41,38,19,23}
[####.##] (2,4) (0,1,6) (0,1,2,3,6) (1,2,4) (0,2,4,5,6) {36,207,217,13,204,13,36}
[#.#..##.] (0,1,2,3,4,5) (0,1,6,7) (5,7) (2,3,5,7) (2) (0,1,4) (2,3,4) (4,5) (0,2,3,4,5,7) {62,44,46,37,54,48,19,45}
[#.#.#.] (0,2,4) (1,3,4,5) (2) (1,2,3,4,5) {2,21,31,21,23,21}
[#...##..#] (0,3,4,7,8) (0,1,2,3,4,5,7) (2,3,4,6,7,8) (4,6,7) (6,7) (0,1,2,3,4,5,8) (2,4,5,6,7) (1,2,4,5,6) {46,38,60,60,78,46,48,75,41}
[..##.##] (2,4) (3,4) (2,4,5) (2,3,5,6) (0,1,2,3,6) (0,1,6) {32,32,57,38,49,24,37}
[####.####.] (0,1,2,3,5,6,7,8) (0,1,3,4,6,8) (1,3) (0,1,3,4,5,6,7) (0,2,3,4,5,8) (0,3,4,5) (2,7) (1,3,4,7,8,9) (0,1,2,4,6,9) (0,1,2,4,5,6,7,8,9) {48,51,33,56,55,42,32,53,36,25}
[#.....] (0,1,2,4,5) (0,1,3,4) (1,2,3) (3,4,5) (0,3,4) (0,2,4,5) {56,38,35,48,73,47}
[#.###] (0,1,2) (0,1,3) (0,2,3) (0,2,3,4) (2,3,4) {24,14,24,24,16}
[#.##.#..##] (1,2,6,7,8) (0,1,2,4,5,6,8,9) (0,1,2,3,5,6,7,8,9) (0,1,2,3,6,7,8,9) (0,2,4,8) (0,1,2,3,4,5,6,7,9) (2,3,4,7,8) (0,3,4,5,7,8) {94,71,110,75,83,57,71,84,112,62}
[###..####] (2,3) (3,4,5,7,8) (3,4) (1,4) (2,3,4,5,6,7,8) (2,3,4,6,7,8) (0,1,3,5,7) (0,3,5,6,7) (1,3,5,6,7,8) (0,1,2,4,5,7,8) (1,2,5,8) {44,61,49,85,75,93,48,89,72}
[.#..#.] (0,2) (5) (0,2,3,5) (2,4,5) (1,4,5) (1,4) (0,2,3) (1,2,5) {25,167,41,18,161,196}
[#.##...] (0,4,5,6) (0,1,2,3,4,5) (3,5) (0,2,3,5,6) (0,3,4,5) (0,1) (2,3,4,5,6) (3,4,6) (0,4,6) {68,22,57,101,79,92,63}
[.###....#] (2) (0,3,7,8) (0,7,8) (1,8) (2,6,8) (0,3,5,6) (0,1,2,4,7) {151,19,28,36,14,20,34,131,136}
[######.] (1,3,5) (2,3,4,6) (2,4,5,6) (1,5,6) (0,1,3,5,6) (3,4) (0,1,5) (3,4,5) (0,1,2,3,5) {29,58,119,29,119,169,131}
[#.###.###] (1,3,5) (0,2,3,4,6,8) (0,2,3,4,5,6) (1,3,4,6,7,8) (1,2,4,5,6,7) (0,1,4,6,7) (0,3,4,5,7,8) (2,5) (1,2,3,4,6,7,8) (0,2,3,4,6,7,8) (3,5) {53,44,74,90,86,78,69,59,52}
[..#.#.#] (0,1,3,4,5,6) (1,2,4) (0,3,4) (1,6) (1,3,4,6) {31,59,13,44,57,18,46}
[...#..] (2,3,4,5) (1,2,4) (0,4) (1,2,3,4,5) (1,4) (2) (1,3,5) (0,4,5) {35,28,33,17,76,33}
[...##...##] (0,1,2,3,4,6,7,8,9) (2,3,4,5) (0,1,2,4,5,6,7,8) (0,3,5,6,7,8,9) (3,8,9) (0,2,3,4,9) (1,3,4,5,6,7,8,9) (0,1,5,6,7,8,9) (0,2,3,5,6,7) (5,8) (4,7) (0,1,7,8) {241,49,53,252,65,240,238,246,264,251}
[.##..#] (0,2,3,5) (0) (0,1,3) (1,2,4) (1,3) (0,1,2,4) {32,23,12,15,10,2}
[#####....#] (0,1,4,5,6,7,9) (1,2,3,9) (0,2,3,4,5,6,7,9) (2,4,5,6,8,9) (1,3,5,8) (0,2,3,4,6,7,8,9) (2,3,4,6,8,9) (2,3,8,9) (0,1,2,4,6,7,8,9) (3,5,8,9) (1,2,3,4,5,7,8,9) {39,52,92,86,82,78,73,48,110,114}
[######.##.] (2,3,4,5,6,7,8,9) (2,3,4,6,8) (7,8) (7) (3,7,9) (0,1,2,3,5,7,8) (6,7) (0,1,3,5,7,9) (2,4,5,6,9) (7,9) (0,1,2,4,6) (0,2,3,4,7,8) {32,13,71,65,69,47,69,88,54,62}
[.###......] (1,2,3) (1,2,5,7,9) (1,4,8,9) (2,3,4,5) (0,2,4,5,8) (2,4,8) (0,1,4,6,7,8) (0,6,9) {19,33,37,14,44,8,16,3,41,36}
[.#..#] (1,3) (0) (1,2,3,4) (3,4) (1,2,3) {11,26,22,42,33}
[.##..#] (2,3) (0,1,3,4) (1,3,4) (1,2,5) {20,33,9,24,24,9}
[##..##.] (1,5,6) (0,1,2,3) (0,5,6) (0,1,2,4) (2,3,4,5,6) (0,2,4,5) {19,19,20,19,12,33,32}
[.####] (1,3) (0,1,3) (1,4) (1,3,4) (1,2,3,4) (0,3,4) (0,2,4) {22,50,20,39,49}
[.#.#####] (1,5,6,7) (0,1,2,3,4,5) (1,2,5) (2,3) (2,3,4,5,6) (0,1,2,3,5,7) (0,2,3,4,5,7) (0,1,3,4,5) {58,68,63,82,57,92,34,44}
[..###.####] (0,1,3,7,9) (1,2,4,7,8) (0,1,2,5,7) (1,3,4,5,7,8,9) (0,1,5,6,7,8,9) (0,1,3,4,6,8,9) (1,8) (3,4,9) (0,1,4,5,6) (2,4,7) (2,3,5,6,7,8,9) (0,1,2,4,5,6,9) {27,44,21,21,34,36,30,28,30,32}
[.#.##.#..] (1,5,7,8) (0,2) (0,3,7,8) (0,1,2,4,5,6,7,8) (0,1,3,4,5,6,7) (4,5,8) (0,5,7) {46,33,31,9,33,55,17,48,58}
[##.######.] (0,1,3,4,5,6,7,8) (1,3,5,6,7) (0,3,4,5,6,7,9) (0,2,3,5,7,9) (0,1,7,8) (0,2,8,9) (2,7,8) (0,1,2,3,5,8,9) (4,5) {177,34,28,176,152,179,160,180,35,158}
[###..] (1,3,4) (0,4) (4) (0,2,3,4) (1,2) (2) (0,1,3) {32,22,20,19,31}
[.#.##] (0,1,4) (3,4) (1,2,3) (1,3,4) {173,191,7,25,191}
[#...###] (0,3,4,5,6) (0,1,3,4,5) (0,1,2,3,5) (1,3) (0,1) (0,2,3,4,6) (1,2,3) (3,4,6) (4) {34,42,16,67,64,23,31}
[.#.#..#..#] (0,2,3,4,5,7,8,9) (0,2,3,4,6,7,8,9) (1,3,6,9) (0,5,6,8,9) (1,2,3,4,9) (1,4,5,6,7,9) (0,1,2,3,5,7) (0,1,2,9) (0,1,2,3,4,6,7,8) (3,7) (0,1,2,4,5,7,8,9) {91,77,78,80,84,69,81,89,80,108}
[#....#.] (0,1,2) (1,4,5,6) (1,3,4,5) (2,3,5) (0,3,4,5,6) (0,2,6) (2,3,4,5,6) (1,2,3,4,5,6) {28,30,73,56,43,63,57}
[...###..#] (1,2,4,7,8) (0,1,4,8) (0,2,3,4,5,6,7,8) (2,3,5,6,7) (1,7) (0,4,5,7) (6,8) (0,4) (0,6) {198,54,44,24,210,25,32,64,54}
[....####] (1,3,4,5) (1,3,6) (1,4,5,7) (4,5,6,7) (0,1,3,4,5,6,7) (0,1,4,5,6,7) (0,1,2,3,5,6) {35,74,11,41,73,84,61,58}
[...#.###.] (0,2,3,4,7,8) (2,3,5,6) (0,1,3,4,6,7,8) (0,3,4,5,7) (0,3,4,5,7,8) (0,5) (0,1,2,5,6,7) (0,1,5,6,7,8) (0,2,3,5,6,7,8) {82,41,12,50,41,62,50,70,68}
[#....###.#] (1,2,4,5,6,7,8,9) (1,2,3,4,7) (4) (6,8,9) (0,2,3,4,6,7,9) (0,1,3,5,6) (0,3,4,5,6,8,9) (0,3,5,6,7,8,9) (2,4,7) (2,4,5,6) (4,8) (1,2,4,6,7,8,9) (2,5) {52,40,64,69,92,62,88,52,67,65}
[#.#..#.#] (0,2) (0,2,3,4,5,7) (0,4,5,6,7) (3,4,5) (0,1,3,4,5) (0,1,2,4,6,7) (1,4) (1,2,5,7) (3,4,7) (1,3) {63,63,42,53,91,59,25,46}
[##.###.###] (3,4,7,9) (0,2,3,4,6,7,9) (4,5,7,8,9) (0,4,5,6,7) (0,1,2,3,4,6) (0,1,3,4,5,7,8,9) (0,1,2) (3,4,5,6,7) (0,3,6,7,8,9) (0,2,3,4,5,7,9) (1,7) (0,1,2,3,4,5,7,8) (7,8) {84,63,53,88,96,67,55,104,39,48}
[.##..##..] (0,1,2,3,4,5,7) (0,5,8) (0,1,2,5,8) (0,1,3,4,7,8) (0,1,2,4,5,6,7) (0,1) (0,1,4,5,6,7,8) (2,3,5,6,7,8) (1,2,4,5,7,8) {171,173,65,59,167,180,138,187,170}
[.###.#..] (3,5,6,7) (3,5,7) (1,2,3,4,5,7) (0,1,3,4,5,7) (0,1,2) (0,1,3,4,6,7) (0,2,4) (0,3,4,6) {238,28,28,220,226,10,211,26}
[..##.] (0,1,2,3) (2,3) (1,4) {11,20,21,21,9}
[.###.#####] (0,4,5,6,7,8,9) (2,3,4,5,8,9) (1,2,4,5) (0,1,2,3,4,6,8,9) (1,2,3,5,6,7,8,9) (0,1,4,5,8,9) (0,2,3,4,5,6,7,9) (3,4,5,9) (1,2,3,4,5,6,7,8) {192,65,72,67,229,220,196,179,213,215}
[###..#.#] (2,3,5) (1,4) (1,2,5) (0,1,2,4,5,6) (0,4,6) (3,4) (0,1,2,5) (0,2,3,4,6,7) (2,4,6,7) (0,1,2,3,5,7) {73,48,232,50,216,55,206,190}
[.###..##] (0,1,3,4,5,6,7) (1,2,3,4,6,7) (0,3,4,5) (0,1,4,5,6) (0,2,3,4,6,7) (0,4,6,7) (2,3,6) (0,1,2,3,4,5) (0,7) (4,6) {49,29,39,54,62,33,53,27}
[####] (1,2) (2,3) (0,1,3) (3) (2) (0,1) {18,20,22,31}
[.......#] (0,1,3,4,5,7) (5) (0,2,3,4,5,6) (6) (2,3,4,5,7) (0,1,2,3,7) (0,2,4,6,7) (1,6) (0,1,2,4,5,6) {63,39,164,166,165,151,42,170}
[#.#.] (1,3) (1) (1,2) (0,1,2) (0,3) (3) {25,47,27,25}
[.###] (0,3) (2,3) (1,2,3) (1,3) {132,23,26,165}
[..#...] (0,3,4) (2) (1,2,3,5) (0,1,3,4,5) {19,9,17,25,19,9}
[##.#] (1,2,3) (0,1,3) (0,1,2) {123,138,15,138}
[..##...#.#] (0,1,3,4,6,8,9) (0,8,9) (0,2,4,5,7,8,9) (0,2,3,7) (2,3,5,8,9) (0,1,2,3,4,6,9) (0,3,4,6,8,9) (1,3,6,7,9) (1,2,3,8) (0,6,7,9) {57,57,53,74,43,19,50,39,53,77}
[.#.#..#.#] (1,3,4,5,6,7) (1,7) (2,8) (1,3,4,5,7,8) (0,1,2,4,5,6,7) (0,8) (3,5,8) (1,3,5,6) {8,23,4,17,3,19,6,19,21}
[...######.] (0,2,3,4,6,8,9) (1,3,9) (0,1,2,3,4,5,9) (0,2,4,6,7,9) (3,5) (0,4,5,8) (0,3,5,6,8) (1,2,3,5,6,7,8) {34,3,20,37,24,30,29,8,27,20}
[.#...] (0,2) (1,3) (2,3) (0,4) (2,4) (3) {19,5,152,10,155}
[##.##.#...] (2,4,6,7,8,9) (1,3,9) (2,4) (1,3,5,6) (0,2) (0,1,2,4,6,7,9) (1,6,8) (0,1,3,4,5,6,9) (0,2,3,4,5,6,8,9) (0,1,2,7,8) (2) {40,62,63,38,42,26,60,29,42,44}
[##.###.] (0,3,5,6) (0,1,3,4,5) (0,1,5) (0,3,4,6) (0,1,3,4,6) (0,2,3,5) (4,5) (1,2,5,6) (1,2,4) {50,28,22,34,27,47,21}
[.#.##..##] (3,5,7) (0,1,3) (1,2,5,6) (0,3,6,7,8) (4,6) (5,8) (3,8) (0,3,4,5) (1,2,3) (0,2,3,4,6,7,8) (8) {26,33,25,65,16,34,6,7,35}
[.#...#..] (0,3,7) (1,2,6) (0,1,4,5,6,7) (2,5,6) (0,7) (0,2,5) (1,3,4,5,7) {34,52,23,18,33,37,41,45}
[##..#..#..] (0,1,2,4,5,7,8,9) (3,4,6,9) (0,1,3,5,6,7,8) (0,2,3,4,6,7,8) (1,2,4) (1,3,4,5,6,7,8) (0,1,2,4,5,6) (0,1,5,8,9) (1,3,4,5,6,7,8,9) (0,4,7,9) (0,1,6,7,9) {71,59,35,53,80,48,57,75,63,62}
[###.#....#] (0,2,7,9) (0,5,6,8) (1,2,4,5,7,8,9) (3,7) (0,7,9) (4,6,8) (2,4,8) (3,5,7) (0,1,2,3,4,5,7) (0,1,3,4,5,8) (1,3,5,6,8,9) (2,8) {59,45,56,52,66,51,25,62,73,34}
[.###] (2,3) (0,3) (1,2,3) {107,18,36,143}
[....##] (3,4) (0,5) (0,1,3,5) (2,4) (3,4,5) (4,5) {143,8,16,32,59,173}
[.##.....] (1,4,5,6,7) (0,4,5,6,7) (1,2,4) (2,5,6) (1,2) (0,1,2,3,6,7) (1,2,3,6,7) (1,3,4,5,6,7) {23,167,69,33,139,144,165,148}
[...#..#.#.] (1,3,4) (3,6) (0,1,2,3,4,6,7,8,9) (0,1,3,5,6,7,8,9) (1,2,3,4,7) (2) (0,1,4,6,8,9) (0,1,2,3,4,9) (0,1,3,4,5,7,8,9) (0,3,8,9) (0,1,2,3,6,8,9) (1,2,3,4,6,7,8,9) {89,246,209,234,219,28,69,193,88,107}
[##...#] (1,2,4,5) (1,2,3,4) (0,2,4) (2,4) {15,20,204,17,204,3}
[##...##...] (0,5,9) (0,1) (6) (4,8) (0,1,5,8) (2,3,5,7,8) (0,1,2,4,5,7,9) (0,2,3,4,7,9) (2,3,4,5,6,7,8,9) (0,2,4,7) (0,1,3,4,5,6) (0,3,4,6,8,9) {74,35,52,41,64,60,22,52,38,60}
[.#.###] (2,5) (2,3,4) (1,2,3,4) (0,3,5) (1) {9,9,28,34,25,12}
[.##.#.#] (1,2,3,4) (1,2,4,5) (1,2,6) (0,1,4,6) (2,3,5) (1,2) (1,5,6) {12,48,50,29,36,26,20}
[..####..#] (0,1,2,4,5,7,8) (0,2,3,4,6,7) (0,1,2,3,4) (0,1,2,4,6,7,8) (0,2,3,5,6,8) (2,6,7,8) (1,4,8) (1,3,4,5,7,8) (0,6,8) (1,2,4,5,8) (0,7) {189,54,61,39,72,17,46,152,56}
[###.######] (1,2,4,5,7,8) (0,1,2,3,4,6,8,9) (0,1,2,3,4,5,6,9) (1,5,7,9) (2,3,4) (0,1,2,4,5,6,7,8,9) (3,5,6,7) (0,1,2,4,5,7,9) (0,1,3,4,5,8,9) {52,85,78,55,85,91,46,71,44,69}
[.###..###] (1,2,3,6,7) (2) (1,4,6) (1,2,5,6,8) (0,1,3,5,6,7,8) (1,3,5) (0,3,4,5,7) (0,5) {42,59,23,58,31,51,50,49,17}
[..#.] (0,1,2) (1,2,3) (0,3) (0) (1,2) (0,2,3) {30,27,34,20}
[##.#.#] (0,1,2,5) (0,1,4,5) (2,3) (1,3,4,5) {16,140,8,130,138,140}
[.##.####.#] (2,3,5,7) (0,1,2,6,8) (6) (1,2,4,5,7) (0,2,3,5,6,7,8,9) (1,2,4,5,6,7,9) (0,1,2,5,7,8) (0,3,4,5,6,9) (1,3) (0,1,4,5,7,8) {42,56,53,33,27,63,33,62,41,27}
[.#..#] (0,1,3,4) (1,2,3) (0,3) {23,29,14,37,15}
[#####.#.] (1,2,4,6) (0,1,4,5,6) (0,1,2,3,5,6) (0,1,2,6,7) (1,3,6,7) (0,2,4) (0,3,4,5,6) (6) (2,3,4,5,7) {48,56,30,46,58,43,91,24}
[.#....#] (0,1,5) (1,3,4,5,6) (0,4,6) (1,2,3,4,5) (0,1,2,3,4,6) {32,210,20,208,220,192,218}
[#.#...##] (0,1,2,3,5,6) (0,2,3,4,5,7) (0,2,4) (0,4,6,7) (1,2,7) (1,4,5) (0,2,6,7) {57,40,52,26,42,37,43,47}
[.#....###] (3,6,7,8) (1,2,3,4,5,6) (0,5,7) (2,4,5,6) (1,2,3,6) (2,3,4,5,6,7,8) (1,2,4,5,6,8) {17,38,59,40,40,57,60,26,16}
[#####] (0,1,2,4) (1,3) (2,3) (1,4) (2,3,4) (0,4) {27,33,24,25,32}
[.###] (0,2,3) (1,2,3) {3,3,6,6}
[##...#] (0,1,2,4,5) (0,5) (1,4) (0,2,3,5) (5) (0,1,4) (0,1,2) (2,3) {42,40,40,5,25,27}
[.###] (1,2,3) (0,1,2,3) {15,19,19,19}
[####.#.] (1,4,5,6) (0,1,2,3,5) (0,1,2,3,5,6) (2) (2,3) {35,44,68,51,9,44,26}
[#.####.#.] (1,4,5,6,8) (1,2,6,7) (0,2,3,6,7) (0,3,5,6,7,8) (1,4,7,8) (0,1,2,3,4,5,6,8) (1,4,8) {187,46,195,187,36,27,205,183,38}
[.#.##] (0,2,3,4) (2,3) (1,3,4) (0,1,3) {169,2,183,185,169}
[#.#.###] (0,2,5) (0,5,6) (1,2,3,4,5) (5) (1,4,6) (0,1,3,5,6) {29,31,12,19,19,56,36}
[####..#.##] (2,3,4,5,7,8) (0,1,2,3,5,6,7,8,9) (0,1,2,6) (0,4,5,6,9) (0,1,4,6,7,9) (2,7) (0,2,3,4,5,6,8) (0,1,4,6,8,9) {48,44,45,19,44,20,48,34,31,25}
[.#####.] (1,2,3,5,6) (3,6) (0,1,3,5,6) (1,5) (0,1) (0,2,5) (0,3,4) {43,37,29,55,9,52,46}
[#...#] (2,4) (0,1,2,3) (1,3,4) (0,4) {16,9,21,9,37}
[#.###.] (0,5) (0,3,4,5) (0,2) (0,1,2,3,4) (1,2) {65,34,53,36,36,27}
[.#..#.] (1,3,5) (1,2,3,4) (0,2,3,4,5) (0,1,3,4) (0,1,3) (3,4,5) (0,1,2,5) {45,50,21,45,32,15}
[..###] (2,3,4) (1,2,4) (0,3,4) (3,4) (0,1,3) {12,25,17,19,22}
[.###..##] (0,2,5,6) (1,4,5,6) (1,2,3,5,6) (0,4,5,6,7) (1,3,4,6) (1,3,7) (0,4,7) {38,34,22,21,42,37,45,29}
[####] (1,3) (0,1,2,3) {187,203,187,203}
[..#..##.] (0,1,2,4,5,6,7) (0,1,2,3,4,5) (4,6) (0,1,6,7) (1,3,5,7) (0,2,3,4,5,7) {37,38,30,38,42,48,29,52}
[..##] (0,3) (0,2) (1,3) {9,180,8,181}
[#.###.] (1,4,5) (2,3,4,5) (0,1,2,4) (0,1,2,5) (3,5) (1,3,4) (0,1,3) {46,59,45,48,40,44}
[#.#...] (0,1,3,4) (0,2) (0,2,3,4) (3,4,5) (1,2,4,5) (1,2,3) (2) {34,28,48,235,217,190}
[#...###.#] (1,2,4,5,6) (1,2,3,4,5,7,8) (2,3) (0,2,4,6) (0,5,7,8) (0,2,3,6,8) (1,2,4,5) {39,43,81,54,43,62,39,35,55}
[.###.#.##] (0,1,4,6,7,8) (0,4,6,7,8) (0,1,6,7) (0,3,4,5,8) (1,2,4,6,7,8) (0,1,3,4,5,6,7,8) (0,3,4,5) (1,2,3,5,7,8) (1,3,4,7) (4,7) (1,3,7,8) {40,34,17,42,57,32,27,51,54}
[#.#...##] (2,3,4,6) (1,2,4,5,6,7) (3,5,7) (0,6) (0,1,2,4,6) (1,3,4,6) (4,5,7) (1,4,5,6) (0,1,4,5,6,7) (0,1,2,3,6,7) {62,70,56,37,84,48,103,48}
[##..] (0,3) (1,2,3) (1,2) (0,2,3) (2) {20,12,48,32}
[.#.###] (1,2,4,5) (0,1,3) (0,2,3,4,5) (0,5) (0,3) (1,2,5) (0,1,5) (2,4) {50,45,29,27,18,48}
[.####] (1,3,4) (0,1,2,4) (0,2,3,4) (2,4) (0,1,2) {49,48,53,35,57}
[####..###] (0,1,3,4,7,8) (0,4,6,8) (1,7,8) (0,2,3,6) (0,1,3,4,8) (4,5) (2,7) (1,3,4,7,8) (1,5,6,8) (1,2) {39,76,24,56,72,25,13,51,66}
[##.#.#..] (2,3) (2,3,4) (0,3,5) (0,1,2,5) (0,4,6) (1,2,5,7) {55,30,39,25,20,46,20,11}
[#..#.#.#.] (0,3,5,6) (1,3,4,6,7,8) (1,2,6,8) (4,5) (0,1,3,4,8) (2,3,5,6,7,8) (0,2,5,6) (0,2,3,4,5,6,7) (0,3,4,5,7) (0,1,2,3,5,7,8) {258,55,58,283,84,265,273,70,68}
[#....##] (0,4) (0,1,3,5,6) (1,2,3) (0,1,2,3,6) (4,5,6) (0,1,3,4,5) (0,2,3,6) {43,37,21,45,47,42,32}
[..#...] (1,3,4,5) (0,1,2,3,5) (1,2,3,4) (0,4) {36,29,25,29,29,22}
[...##..] (0,1,4,5,6) (0,1,3,4,5,6) (0,1,2,3,5) (0,3,4,5) (3,5) (0,1,2,3) (1,3,4,6) {160,58,21,183,155,163,37}
[##..##..] (2,3,6) (0,1,4,7) (2,4,6,7) (2,4,6) (0,3,6) (1,4,6,7) (0,1,3,4,6,7) (3,4,5,6) (0,3,4,6) {21,24,33,36,48,5,62,38}
[#.....##] (1,2) (1,4,7) (2,3,4) (0,2,4,5) (1,3) (0,6,7) {7,27,35,19,28,5,2,10}
[##.....#.] (0,2,3,6,8) (1,3,4,5,7) (0,4,5,6) (1,2,3,4,6,7,8) (0,1,4,5,6,7,8) (1,2,5,8) (0,2,3,4,7) {33,65,38,41,62,57,41,56,50}
[#...###..] (2,3,4,5,7) (0,1,2,4,7,8) (0,1,2,3,5,6,7) (6,7,8) (4,5,8) (1,3,4,8) (5,8) (0,2) (0,2,3,5,6,7,8) {37,36,48,59,44,79,50,63,80}
[.##..] (1,3) (3) (0,1,2) (0,4) (0,1,3,4) (1,2) {9,28,12,22,5}
[###..#.#.#] (1,2,4,6,7,8) (4,6) (0,2,5,6,7,9) (0,1,2,3,5,6,8,9) (0,1,6,8) (0,2) (1,2,6,7) (0,3,5) (1,2,6,7,9) (3,7,9) (0,1,6,7,8) (1,2,3,4,7,8,9) (0,2,3,4,5,7,9) {182,75,172,36,36,140,203,188,59,167}
[....#..] (0,1,3) (0,4,6) (1,2) (0,2,4) (3,5,6) (1,4,5,6) (0,3) (0,1,3,4) {73,25,18,47,42,12,29}
[....#....#] (0,1,2,5,6,7,8) (0,1,2,3,4,6,7,8,9) (0,2) (0,1,4,5,6,8,9) (2,3,8,9) (4,9) (1,2,3,5,7,8,9) (2,6,7,8) (5,7,8) (0,1,2,3,4,6,7,9) (1,3,5,7,8,9) {37,49,63,30,20,49,52,67,75,41}
[..#.##..] (0,2,5,6) (0,4,7) (0,1,2,3,5,7) (6,7) (1,2,4,5) (0,1,2,4,5,7) (0,1,2,4,7) {197,178,198,155,23,185,40,197}
[###.#] (3,4) (0,2,3,4) (0,2,3) (1,3,4) (1,2,3) (0,1,2) {39,44,54,47,17}
[....#.#.] (3,6) (1,2,3,4) (2,3,6,7) (2,5,6,7) (0,1,2,3,5,7) (2,3,4) (2,3,5) (0,3,4,5,6,7) (3,4) (1,2,3,6) {17,13,48,86,56,34,44,26}
[..#.] (0,3) (1,2) (2,3) (1,2,3) {13,17,20,32}
[..#..] (0,1,2,4) (0,2,3) (2) {4,0,16,4,0}
[...##.] (3,4) (0,2,5) (1,3) (0,1,4) (0,3,5) (1,4) (1,2) {26,47,16,31,29,17}
[#.#.#..##] (2,3) (0,2,5,7,8) (0,6) (2,3,4,5,6,8) (1,3,4,5,6,8) (2,4,6,7) (1,8) (0,2) {42,22,58,39,39,43,54,28,45}
[##.#] (0,1,3) (0,2,3) {10,9,1,10}
[##....] (2,3) (2,3,4,5) (0,5) (1,2,3) (2,3,4) (0,2,3,5) {22,16,56,56,12,33}
[.#...#..] (0,2,3,6,7) (0,1,2,3,5,7) (6,7) (0,1,2,3,6,7) (0,1,2,3,5,6) (0,3,4,7) (4,5) (1,4,5,7) (0,1,2,3,5,6,7) {50,36,49,50,14,35,49,57}
[#.#..#] (2,4) (0,2,5) (2,3,4,5) (1,2,4) (0,2,3,4,5) (1,3,4,5) (2,3) {18,26,65,61,72,56}
[..##] (1,2) (0,2) (0,3) {22,1,11,12}
[.###.###..] (0,1,2,3,6,8,9) (0,5,9) (1,2,3,4,5,6,8,9) (0,1,2,4,5,7,8,9) (0,1,2,3,7,8,9) (2,4,7) (1,2,5,6,8) (3,4,5,8,9) (4,7,8,9) {218,225,238,230,43,42,202,36,239,243}
[.#...#.#.] (4,8) (0,2,3,7,8) (0,1,2,8) (0,2,3,4,5,6,8) (1,2,6) (2,6,7,8) (3,6,8) (0,2,3,4,5,7,8) {25,23,51,35,26,9,47,27,75}
[..#...###.] (0,1,4,5,6,9) (3,4,6,9) (1,2,3,6,8) (0,2,3,4,5,7,8,9) (1,3,8) (0,2,5,7,8,9) (1,2,3,5) (0,3,4,6,8) (3,5) (3,5,6) (2,7) (9) {37,30,35,65,44,39,60,26,38,40}
[..##...##.] (0,1,4,8,9) (2,3,7) (2,3,4,5,7) (4,6,7,8) (5,6) (1,5,9) (0,2,3,4,5,6,8,9) (2,5,6,9) (0,6) (1,8) (1,5,8,9) (2,9) (1,3,4,7) {17,38,39,24,32,49,18,24,35,55}
[###.#] (0,2) (4) (0,2,3) (3,4) (0,1,2,4) (0,1,2) {45,28,45,18,38}
[.###] (0,2) (1,2,3) {19,195,214,195}
[##.#] (3) (1,2) (2) (0,2,3) (0) {114,14,120,114}
[.##...] (1,2,5) (1,3,4) (0,2,4,5) (2) (0,3,5) {11,31,39,21,20,27}
[.##......] (0,2,4,5,6) (2,3,4,6,8) (0,1,2,3,5,6,7) (0,5,6,7,8) (2,3,4,5,8) (1,4,7) (8) (0,1,3,4,6,7,8) (3) (0,1,2,7) {46,32,56,51,44,47,34,43,52}
[.###] (0,2) (0,3) (1) (2,3) {12,3,15,15}
[#.#..##..#] (1,5,7) (0,1,2,3,4,6,7,8,9) (2,9) (0,5,6) (1,4,9) (1,2,5,7,9) (0,2,8,9) (4,9) {23,28,40,3,28,29,18,17,8,65}
[#..#.###.] (1,2,3) (0,2,3,4,7) (1,3,4,5,6,7,8) (0,2,4,5,6,8) (1,2,3,5,8) (0,2,4,5,6,7,8) (0,2,5,8) (0,1,2,3,4,5,7) (2,3,8) (1,3,6,7) {196,226,235,250,204,219,51,222,70}
[...#.] (2,3) (0,2,4) (0,2,3) (1,4) (1,2,4) {37,26,61,26,43}
[..#.#.##.#] (0,3,4,5,6,7,8,9) (0,1,2,5,6,7,8) (0,2,3,4,5,6,7,8,9) (1,2,4,7) (0,8) (5,6) (0,1,2,3,5,6,7,8) (0,1,2,3,4,5,6,7) (0,2,3,4,5,6,8,9) (1,3,6,8) (0,2,3,6,7,9) (1,2) (0,4,5,7,9) {91,200,210,76,78,74,83,76,72,48}
[..#.] (0) (0,2) (1,2,3) (2) (1) (2,3) {32,11,50,15}
[#.##.###..] (0,4,5,6,7,8,9) (2,3,4,5,6,7,9) (4,6,8) (0,1,3,4,6,7,8,9) (0,1,2,3,4,7) (1,2,4,8) (1,4) (0,1,2,3,4,5,6,8,9) (1,2,4,7,8) (0,2,3,5,8) (1,4,5,6,7) (1,4,9) {73,109,75,65,139,66,78,83,82,68}
[.####.#...] (0,3,4,6,7,8) (2,9) (0,1,2,3,4,5,6,8) (1,2,3,4,5,6,8,9) (0,1,2,3,7) (0,2,3,5,8) (0,1,2,3,4,5,6,7,9) (0,1,3,4,6) (0,1,4,6,9) (0,3,4,5,6,7,8,9) {60,44,35,48,45,24,45,33,27,29}
[.###..#] (0,1,2,3,6) (1,4) (3,6) (0,1,4,5) (1,2,4,5,6) (0,1,6) (1,2,5) (0,1,3,5) {47,80,22,28,41,41,43}
[.##..] (2,3) (0,1,2,3) (0,3,4) (0,1,2) (2,3,4) (3,4) (4) {50,37,65,71,59}
[.#..###.] (1,3,4) (0,1,4,5,6) (4,5) (0,1,7) (6) (1,2,3,4) (2,3,5,6) (0,3,4,5,6) {31,28,158,177,46,184,174,10}
[#..#.#....] (0,3,4) (1,4,5,6,7,8) (1,3,4,5,7,8) (0,5,7,8) (0,1,2,3,5,8,9) (0,3,4,5,6,7,8) (0,2,4,8,9) (0,6) (2,3,5,6,7,8,9) (0,2,3,4,5,7,9) (1,2,4,5,6,7,8,9) {84,45,59,70,73,75,52,57,78,59}
[#.#..] (1,3,4) (2,4) (0,2) (0,1,4) (2,3) (1,3) (0,4) {17,29,14,28,25}
[#.#.#.##] (1,4,7) (0,2,5,6) (4,7) (2,3,4,6,7) (1,3,5,6) (0,2,4,6,7) {19,200,38,24,237,17,43,237}
[..##.##...] (0,1,3,5,6,7,8,9) (0,2,4,5,6,8) (1,3,6,9) (0,1,2,3,4,5,7,8,9) (3,4,5) (2,3,4,5,9) (1,2,4,5,8) (0,2,3,7,9) (1,2,6,7,8,9) (1,2,5,9) (1,3) (1,7) {56,86,93,96,79,106,45,49,60,87}
[.#.###] (0,5) (0,4,5) (2,3,4,5) (0,1) (0,2) {247,198,18,4,22,39}
[##.#.] (0,2,3,4) (0,2) (0,1,2,3) (0,1,4) {53,29,33,14,25}
[#####] (1,3,4) (0,2,3,4) (0,2) {36,15,36,31,31}
[..###] (0,2,4) (1,2,4) (0,3) {13,5,9,9,9}
[.#..] (0,2) (1,2,3) (0,3) (1,2) (0,1,3) {29,14,18,21}
@@ -0,0 +1,3 @@
[.##.] (3) (1,3) (2) (2,3) (0,2) (0,1) {3,5,4,7}
[...#.] (0,2,3,4) (2,3) (0,4) (0,1,2) (1,2,3,4) {7,5,12,7,2}
[.###.#] (0,1,2,3,4) (0,3,4) (0,1,2,4,5) (1,2) {10,11,11,5,10,5}
+543
View File
@@ -0,0 +1,543 @@
pnn: opd
gyc: elv lvv
mnx: ivr ibb
vgu: kzj pqv
ilm: eej qlx wgv qrg
zgs: zuw xsc qna ere thp jmf wxk myq oip tey eva ydb izr yhm
ifm: qlj
cuj: out
ocn: bvx hpb jee iad jqj bzm hig abe kng ggh oqo pzp iao hud jpk
nme: hli
wfq: ewj
thc: wzt pol iee ogz
sig: qlx wgv
dgw: kgf xlt
hly: wmu xku
rbs: odx
zvp: opd zkx xeu bhx zgs
cki: ztj you
itw: nya qyb eae
onp: exe gsv
zle: out
qhv: pmn tut uhu
ibt: ncx
pum: ztj you
tmh: hbx hsh ktr nph dcg
vyy: krx
ktr: grm
ggh: ilm ang bwj
wtb: rbs aaz
ugk: fet
ltn: odx ztj
oah: out
xcx: pqv wfq elj
apt: out
dac: muz fio pum qyf
lwa: qfc eqq qoq orb
hiv: xjx enn sie
xvu: vze aek tjd wll
bhx: qna mon voe vxt myq ere jmf wxk ljp yhm zuw tey nha nme thp ydb mfv ozp izr
lmb: ltn wgp mpp
ksl: xku wmu grm
hns: zle nvu
vmw: bxw
yfn: qju
vpl: pok
kzj: kkj ewj
mon: ure xhk ahv mty
xll: vol bdk
wmo: dca gnt
miv: hly qhb eru mnw
ica: msp exg thc
prk: ssx dca dtc
hud: psu
oqo: tyx odi ljw
nqe: hns
hlr: lmm ymk xcx
mwt: cuj apt mtq bqu
ere: fod dxi
wex: uhy wvp
ogp: lhh weu
qab: out
exg: pol
hvq: out
dlf: skp dmm nci vmw
oey: out
mge: edd dmm skp nci
yhm: mty dnc xhk
pol: xgp ljd ufv ibt pcj qpe jvv yey uhx
msp: ogz wzt
kwv: zlt jlx
wgp: you
bzm: bww oby oii
mqw: elv jhz lvv
xyv: opd zkx bhx zgs
vyl: pbz wmy bdk
nya: hcb fet fsf
tut: bxw xku sbb wmu grm
uyz: fay jvm
zxo: opd zkx bhx xeu
rfp: ckl nzc msp
jbf: vlu pss ipe
thv: xeu
plf: ibb sgk ivr ibw
pmq: lex cyo
opb: qlj
tlr: fay uey
uhx: vyy uqc erw
efr: hiv zhy
mkm: bha
sxu: cyo exe gsv lex
lex: rfp
eae: hcb isb fet
xkk: yia mwt mgs
ywb: qfc qoq orb eqq wjp
thp: fod dxi
vcz: djo yqr
voe: hli ovs yyd
baa: azd
oip: ovs
iao: mqw gyc
ehf: rdv akw
vcu: ena
cvo: zle oah nvu
gft: mpp
rrc: oah der
tgp: out
pzd: zgi
myq: ovs lgq hli
der: out
xjx: iha tog
bmq: mjz drr
dtc: oey rqm
pyp: zgi unr
zgi: ztj
emu: ill xfs qpb
pfs: gsv exe cyo
koy: msp ckl
xml: umi nfp dpz bqi aot
vfz: qst
zpe: ifm brt opb
dpz: fsf isb fet
zhy: enn xjx
wvp: lnf umb
xnb: nfp aot bqi
uvf: ibb fwe sgk
fwe: fen yxo
ljd: pgg gke okt
lgq: ugk
qpe: vyy bgp erw
hgk: mwt
bzq: pgs esy
mdz: pum cge qyf muz fio
vlm: opd bhx zgs
odx: xfh oyz ehh iuo ord vpl drs eyt xkx baa mfl
ufv: rho
fen: yug kmf woh
zbl: hud szr iao oqo pzp hig abe ggh kng bzm jqj iad jee hpb mcr ipg bvx
yet: jhz
lnf: xkk hgk aqi
wmy: aak qdq
you: drs plk eph csl wex vld ord vfz idu
khw: skt ssx dca dtc
ggt: nqp
nha: zhy ite
bpf: zle der nvu oah
qmu: yva wtb
pti: ilx xve vjw
qun: vyy bgp
tha: aot bqi dpz umi nfp
txq: xmv zae bcr
los: hvq nsb
ucq: yug
aot: fsf
ibb: fen ucq
eva: gnx ijp
wgf: fet
uxu: fkw qnc lbd
qgw: zgs bhx zkx opd
hdl: jnj hrx
vze: wzt ogz iee
wjp: iee pol qju wzt
kuz: pzd pyp rho zqe
vxt: hiv ite
nld: cgq miv
gke: dve twf
nfp: isb fsf hcb
brt: xvu
ssx: oey njy
ite: enn sie
gsv: rfp koy ica
xbi: bhx zkx opd
egs: grm wmu sbb xku
dcg: wmu bxw xku
qyb: fsf isb hcb
azd: swd hxc
eim: ptq wtb yva
jpk: aow oii oby bww
hig: yet
kkj: qab evn twt
raz: nxx lps nld
twt: out
uqc: omz ipk mne
vlk: gnx hdl mtr
jlx: dcg ktr hbx
rdj: jsa kxe nfm
mne: odx ztj you
ure: qth
evn: out
ofa: zgi
qlx: xyv xkg jcy thv
elj: ewj kkj pan
pbz: vcu aak
xfy: cgq miv vii
yva: cki aaz
skp: sbb wmu grm
zgr: jbn djo
ahv: fft
zmp: rfu pbz wmy vol bdk
lmm: elj kzj
ijp: hrx jnj
eej: xbi xkg xyv jcy thv
vyz: lwa yyr duu
ubk: xyg mge ufe
hbx: bxw sbb wmu grm
ltq: mwt yia
xve: vxd cfr gft
hrx: ehf
elw: weu iml zuu lhh
nph: wmu sbb grm xku bxw
okt: twf mdz dac
fpe: rho zqe
lbs: zgr vcz
qfc: pol iee wzt
kcc: xmv vrk zae bcr
dfi: qfc qoq
war: pmn
gnx: jnj uxp bmq hrx
vrm: equ tfg
grm: ggt myt pmq vyz zpe
csl: xll
qdq: qah los ena
tjy: out
yjs: wzt qju iee
tiv: lhh iml weu
vld: wgb uhy
wqv: jlx tmh yeh
rkw: wmu bxw xku
zae: lrp
ipe: ymk xdb
duo: wzt ogz qju
iml: opd
tce: xfy lps nxx
fod: xml xnb tha
qrg: jcy xbi
qhb: xku sbb wmu grm
dde: vol bdk rfu
qju: pcj pti qvy bjz qun rdj kju cnt huy rbj qpe
zuu: zkx xeu bhx zgs
ewj: evn twt tjy
ejf: brt
xkx: zap hhw azd
skt: njy
kmf: egs
lhh: zgs xeu bhx zkx
uqk: nfm qmu jsa eim
mcr: sig bwj
duu: qfc qoq wjp
uey: qhv prl
dve: pum cge qyf muz
yqr: prk kvk
qth: wgf ede pgs
mfv: rwg umy
abe: bww oby
drr: akw
mpp: ztj odx
iha: isb
kvk: skt gnt dtc
huy: nfm kxe qmu jsa eim
dmm: bxw xku sbb grm
mgs: apt cuj
ptq: aaz cki
uma: cki rbs
cyo: ica koy rfp
yjl: xll vyl
lrp: wzt qju iee pol ogz
uvv: ufe dlf
pss: xcx
ozp: ite
xfh: vlu qst
nzc: ogz iee pol
nbr: uhu pmn glj
qrf: zkx opd zgs bhx
mnw: bxw
uxp: mjz
jgp: tsx jaq ekw
bml: rrc bpf
idu: uhy
psu: fkw hqn lbd
bwj: kyw qlx wgv qrg
eqq: pol qju
pmn: grm sbb
myt: ywb lwa duu
pqv: kkj
zkx: efr ydb mfv all izr zuw vlk tey nme thp yhm qna xsc voe vxt oip myq wxk jmf
tfg: kgf xlt duo
ovg: isb fsf hcb
iad: uxu rru
cfr: mpp
hqn: nbo pnn zxo
bjz: vjw xve ncx ilx
ckl: qju iee ogz
edd: wmu
yeh: hbx dcg nph ktr
djo: kvk khw rby wmo
sbu: fsf isb fet hcb
lvv: vlm dzr
ftk: ifm brt bha
fft: pgs ede esy ojl
kgf: iee ogz wzt
hpb: psu rru uxu
jvv: okt pgg
erw: omz
lbd: snl
jyh: exg nzc
snl: zgs xeu zkx
uuy: nld nxx
qpb: zgs bhx zkx
prl: tut
nbo: zgs xeu opd
nfm: wtb ptq yva uma
vjw: gft vxd
qna: ced dxi
uwx: der nvu
oyz: uhy wgb
wzt: huy jvv qpe fpe qun uqk pcj kju cnt ufv ljd rdj qvy
pan: evn qab
swd: ieu nqe
dzr: opd zkx bhx zgs
kxe: ptq yva
jmf: rwg sys
qpc: vrm hyu nqp
xyg: dmm edd vmw nci
eph: hlr ipe vlu pss
exe: koy rfp jyh ica
ced: tha
ehh: vcz zgr
blb: vrm
szr: bwj sig
drg: umi nfp dpz
weu: bhx xeu zgs zkx
sfk: qhv nbr
ffk: isb fsf hcb
aaz: you odx
nxx: cgq
iee: pcj qvy qun ufv bjz fpe
vlu: ymk vgu xcx xdb
bvx: tyx odi
oii: lov xqv
nci: sbb bxw
kju: rho pyp ofa pzd
pzp: yet mqw gyc
wdd: bcr
jhz: dzr vlm
xlt: pol iee ogz
bdk: qdq aak vcu
oqz: nxx
fzw: lhh zuu weu zvp
krx: odx
ieu: cvo uwx rrc bpf
umi: fet fsf hcb
mfl: zmp
bww: emu
rby: dca gnt
qvy: nfm eim
rfu: qdq aak
muz: ztj you odx
cnt: okt
fgd: nqp hyu
jqj: ang bwj
wmu: ogj bon pfs txq wdd vyz kcc zpe fgd ggt mkm ftk ran sxu myt onp vrb ejf qpc pmq
stt: xyg
xkg: zgs bhx zkx opd
odm: nxx lps nld
bgp: ipk mne
qst: xcx ymk vgu xdb lmm
lov: qgw
oyo: wqv iva
uvr: ltn
ilx: gft lmb uvr vxd
unr: you ztj odx
ojl: isb hcb
vol: qdq
jcy: opd zkx xeu bhx zgs
sgk: yxo ucq
ztj: vld vfz baa eyt xkx eph mfl plk iuo idu ehh vpl xfh oyz csl jbf lbs drs yjl wex
ncx: uvr lmb gft cfr
ipg: uxu
qyf: ztj odx
ipk: ztj
mty: bzq qth
mjz: fvj rdv
sie: sbu iha tog
eyt: azd zap
orb: wzt ogz pol iee
esy: isb
iva: yeh tmh
slh: uhu glj
xqv: qrf xfs
mll: yqr djo jbn
ydb: xhk ure ahv dnc mty
gnt: rqm
all: ure mty dnc
odi: byx hrv tsx jaq ekw
xeu: ljp vxt myq ere jmf xsc qna izr ydb mfv eva tey vlk nme thp zuw
tjd: ogz qju wzt
cge: odx ztj you
ope: mgs
xku: pfs txq bon mkm ftk ggt pmq sxu qpc vyz fgd
ljp: umy rwg
mtq: out
rru: fkw qnc lbd
chu: uwx bpf hns
vti: eae
xmv: yjs
jsy: zvp lhh
ogj: dfi
bon: vrm
ovs: ffk ugk
hcb: uyz tlr uvv ubk uvf iez mnx raz pzs tce stt uuy oqz anf rkh xud oyo plf trv
dnc: bzq qth
hxc: chu glu nqe
tsx: elw ogp
akw: hcb
fay: prl slh
gcl: bxw wmu sbb
vrb: lwa ywb yyr
jvm: qhv war
vxd: wgp
nvu: out
lqw: abe szr hpb hud iad jqj
eru: sbb
rkh: kwv wqv
fdb: bml ieu chu
rwg: vti
zqe: rpv unr
ang: eej kyw
yxo: yug kmf
byx: fzw ogp elw tiv
xgp: gke okt
hhw: fdb swd
xsc: hiv zhy
xdb: elj pqv wfq
oby: xqv
xfs: zkx zgs bhx xeu
aow: lov emu
qnc: snl ecl
zlt: dcg nph ktr hbx hsh
opd: ljp qna xsc mon myq wxk voe oip mfv eva efr izr ozp nha tey
woh: rkw gcl
qlj: vze tjd
hli: ffk ovg
tey: hdl ijp gnx
iez: iva wqv
wgv: thv xyv
uhu: xku bxw wmu sbb
trv: uey
elv: ass
equ: duo xlt
efj: wll tjd aek vze
ufe: nci
enn: tog iha sbu
fet: plf tce hxn oyo xud uuy uvf uvv mnx odm tlr uyz
wgb: zoe
bxw: onp vrb ejf ogj qpc kcc
rdv: fsf fet isb
nqp: tfg equ
glu: bpf rrc uwx hns cvo
izr: ahv xhk dnc
twf: pum
ass: bhx xeu
hrv: tiv
yyd: ffk
umb: ltq ope xkk
mtr: bmq uxp
ecl: opd zkx
drs: zmp vyl dde
rho: zgi unr
cgq: ksl mnw hly
ena: hvq
fsf: hxn pzs oyo rkh xud uuy plf
aek: ogz qju iee
rqm: out
jsa: wtb yva uma
anf: xyg dlf
rbj: rho pyp pzd ofa
kng: ljw jgp odi tyx
pgs: fet
dja: eae qyb
lps: cgq
omz: you ztj
kyw: xyv xkg jcy
yyr: qfc qoq eqq
ede: fsf
xud: ibw ibb fwe
hyu: dgw
pok: swd hxc
umy: itw dja
yia: apt mtq cuj tgp
yug: gcl rkw
jbn: rby kvk khw prk
bqi: hcb
pcj: erw bgp vyy
aak: qah los ena
fio: odx
bcr: yfn yjs
ivr: fen yxo
qah: hvq zzs
iuo: wvp uhy
vii: hly qhb
qoq: iee pol wzt
xhk: qth fft
uhy: zoe lnf
pzs: sfk
pgg: twf mdz dac
ogz: huy jvv rbj bjz qun uqk ibt kuz kju uhx rdj ljd
hxn: ufe mge xyg
ibw: ucq
dca: oey njy rqm
isb: plf trv pzs hxn anf oyo rkh xud oqz stt uuy iez uvf ubk uvv raz mnx odm uyz
wll: wzt qju pol
glj: bxw wmu
jnj: ehf drr mjz
njy: out
tog: hcb fet fsf
sys: dja vti
rpv: ztj odx
nsb: out
zuw: mtr ijp gnx
ymk: wfq pqv elj
ill: zkx xeu bhx zgs
ord: zap azd pok
bha: efj xvu qlj
zoe: aqi hgk
bqu: out
wxk: ovs
svr: lqw ocn zbl
jee: yet
zzs: out
fvj: hcb fsf fet isb
ran: ywb dfi lwa
tyx: ekw tsx byx
fkw: ecl nbo snl zxo
plk: mll zgr
zap: fdb swd
jaq: fzw
ljw: tsx hrv ekw
aqi: yia mwt
vrk: lrp yjs yfn
ekw: tiv jsy fzw ogp
dxi: drg xml
sbb: wdd kcc vyz fgd zpe ggt mkm ftk sxu ran bon ogj txq qpc pmq myt blb vrb
hsh: xku bxw wmu sbb grm
yey: okt
@@ -0,0 +1,10 @@
aaa: you hhh
you: bbb ccc
bbb: ddd eee
ccc: ddd eee fff
ddd: ggg
eee: out
fff: out
ggg: out
hhh: ccc fff iii
iii: out
@@ -0,0 +1,33 @@
0:
###
##.
##.
1:
###
##.
.##
2:
.##
###
##.
3:
##.
###
##.
4:
###
#..
###
5:
###
.#.
###
4x4: 0 0 0 0 2 0
12x5: 1 0 1 0 2 2
12x5: 1 0 1 0 3 2
+251
View File
@@ -0,0 +1,251 @@
enum Indicator {
ON = "#",
OFF = ".",
}
type ButtonWiring = number[];
type Joltage = number;
interface MachineManual {
indicators: Indicator[];
button_wirings: ButtonWiring[];
joltage_requirements: Joltage[];
}
export default async function Factory() {
console.log("== Factory ==");
const manual_list = await read_machine_manuals_quick(
"src/exercises/assets/day_10_input.txt",
);
const min_presses = count_min_button_presses(manual_list);
console.log(
">> Min button presses to start: ",
min_presses,
);
const min_joltage_presses = count_min_button_presses_joltage(manual_list);
console.log(
">> Min button presses to function: ",
min_joltage_presses,
);
}
export function count_min_button_presses(manuals: MachineManual[]): number {
let total_sum = 0;
manuals.forEach((manual) => {
const wiring_list = manual.button_wirings;
let min_presses = Infinity;
for (let size = 1; size < wiring_list.length; size++) {
const button_combinations = make_all_combinations_of_size(
wiring_list,
size,
);
button_combinations.forEach((combination) => {
// Apply combination
let pairing_indicator = manual.indicators.map((_) => Indicator.OFF);
combination.forEach((b) => {
pairing_indicator = apply_wiring_to_indicators(
b,
pairing_indicator,
);
});
// Check if valid
if (pairing_indicator.join("") === manual.indicators.join("")) {
min_presses = combination.length;
return;
}
});
if (min_presses < Infinity) {
break;
}
}
total_sum += min_presses;
});
return total_sum;
}
export function count_min_button_presses_joltage(
manuals: MachineManual[],
): number {
let total_sum = 0;
manuals.forEach((manual) => {
const wiring_list = manual.button_wirings;
const target_joltage = manual.joltage_requirements;
// FIXME: calc max possible size
const MAX_SIZE = 8;
const combination_list = make_all_combinations_repeating(
wiring_list,
MAX_SIZE,
);
let min_presses = Infinity;
combination_list.forEach((combination) => {
// Apply combinations
let joltage_indicator = manual.joltage_requirements.map((_) => 0);
combination.forEach((c, i) => {
for (let j = 0; j < c; j++) {
joltage_indicator = apply_wiring_to_joltage(
wiring_list[i],
joltage_indicator,
);
}
});
const combination_size = combination.reduce(
(prev, current) => current + prev,
0,
);
// Update manual min
if (
target_joltage.join("") === joltage_indicator.join("") &&
min_presses > combination_size
) {
min_presses = combination_size;
}
});
total_sum += min_presses;
});
return total_sum;
}
function apply_wiring_to_indicators(
wiring: ButtonWiring,
indicator: Indicator[],
): Indicator[] {
return indicator.map((w, i) =>
wiring.includes(i) ? w === Indicator.ON ? Indicator.OFF : Indicator.ON : w
);
}
function apply_wiring_to_joltage(
wiring: ButtonWiring,
joltage: Joltage[],
): Joltage[] {
return joltage.map((j, i) => wiring.includes(i) ? j + 1 : j);
}
function make_all_combinations_of_size<T extends unknown[]>(
list: T,
size: number,
): T[] {
const binary_cap = Math.pow(2, list.length);
const result_list: T[] = [];
for (let i = 0; i < binary_cap; i++) {
const combination = i.toString(2).padStart(list.length, "0").split("");
if (
combination.reduce((sum, n) => sum + (n === "1" ? 1 : 0), 0) !== size
) {
continue;
}
const next_l = list.map((l, i) => combination[i] === "1" ? l : null).filter(
(l) => l !== null,
);
result_list.push(next_l as T);
}
return result_list;
}
function make_all_combinations_repeating<T extends unknown[]>(
list: T,
max_repetitions: number,
): number[][] {
const binary_base = max_repetitions + 1;
const binary_cap = Math.pow(binary_base, list.length);
const result_list: number[][] = [];
for (let i = 0; i < binary_cap; i++) {
const combination = i.toString(binary_base).padStart(list.length, "0")
.split("");
result_list.push(combination.map((c) => parseInt(c, binary_base)));
}
return result_list;
}
export async function read_machine_manuals(
path: string,
): Promise<MachineManual[]> {
const line_regex = /\[([.#]+)\] (.*)+ \{(.*)\}/g;
const input_txt = await Deno.readTextFile(path);
const lines = input_txt.split("\n");
const manual_list: MachineManual[] = lines.map((line) => {
const matched_line = line.matchAll(line_regex)?.toArray()?.[0];
if (matched_line && matched_line.length > 3) {
const indicators = matched_line[1].toString().split("").map((ch) =>
ch === Indicator.ON ? Indicator.ON : Indicator.OFF
);
const buttons = matched_line[2].split(" ").map((b) =>
b.replaceAll("(", "").replaceAll(")", "").split(",").map((n) =>
parseInt(n)
)
);
const joltages = matched_line[3].split(",").map((j) => parseInt(j));
return {
indicators,
button_wirings: buttons,
joltage_requirements: joltages,
};
}
return null;
}).filter((v) => v !== null);
return manual_list;
}
export async function read_machine_manuals_quick(
path: string,
): Promise<MachineManual[]> {
const input_txt = await Deno.readTextFile(path);
const lines = input_txt.split("\n");
const manual_list: MachineManual[] = [];
lines.forEach((line, line_i) => {
const manual: MachineManual = {
indicators: [],
button_wirings: [],
joltage_requirements: [],
};
line.split(" ").forEach((element) => {
if (element.includes("[")) {
manual.indicators = element.replaceAll("[", "").replaceAll("]", "")
.split("").map((e) => e as Indicator);
} else if (element.includes("{")) {
manual.joltage_requirements = element.replaceAll("{", "").replaceAll(
"}",
"",
).split(",").map((e) => parseInt(e));
} else if (element.includes("(")) {
manual.button_wirings.push(
element.replaceAll("(", "").replaceAll(")", "").split(",").map((e) =>
parseInt(e)
),
);
}
});
if (
manual.button_wirings.length > 0 &&
manual.joltage_requirements.length > 0 && manual.indicators.length > 0
) {
manual_list.push(manual);
}
});
return manual_list;
}
+81
View File
@@ -0,0 +1,81 @@
const INIT = "you";
const END = "out";
type Device = {
name: string;
output_list: string[];
};
export default async function Reactor() {
const input_list = await read_device_list(
"src/exercises/assets/day_11_input.txt",
);
const path_count = count_all_out_paths(input_list, "you");
console.log(">> The number of paths is: ", path_count);
}
export function count_all_out_paths(list: Device[], init: string): number {
let total = 0;
const current_device = list.find((d) => d.name === init);
// Default exits
// NOTE: how to avoid circular connections
if (!current_device) {
return 0;
}
if (current_device.output_list.length < 1) {
return 0;
}
if (current_device.output_list.includes(END)) {
return 1;
}
current_device.output_list.forEach((output) => {
total += count_all_out_paths(list, output);
});
return total;
}
// const REQUIREMENT_1 = "fft";
// const REQUIREMENT_2 = "dac";
// export function find_all_out_complex_paths(
// list: Device[],
// init: string,
// path: string[],
// ): string[][] {
// let total = 0;
// const current_device = list.find((d) => d.name === init);
//
// // Default exits
// // NOTE: how to avoid circular connections
// if (!current_device) {
// return [];
// }
// if (current_device.output_list.length < 1) {
// return 0;
// }
// if (current_device.output_list.includes(END)) {
// return 1;
// }
//
// current_device.output_list.forEach((output) => {
// total += count_all_out_paths(list, output);
// });
//
// return total;
// }
export async function read_device_list(path: string): Promise<Device[]> {
const txt_file = await Deno.readTextFile(path);
const raw_device_list = txt_file.split("\n");
return raw_device_list.filter((d) => !!d).map((device) => {
const [name, raw_outputs] = device.split(": ");
const output_list = raw_outputs.split(" ");
const formatted_device: Device = {
name,
output_list,
};
return formatted_device;
});
}
+88
View File
@@ -0,0 +1,88 @@
enum Point {
FILLED = "#",
EMPTY = ".",
}
type Present = Point[][];
type Region = {
width: number;
height: number;
};
interface Tree {
region: Region;
presents: number[];
}
interface SituationSummary {
presents: Present[];
trees: Tree[];
}
export default async function ChristmasTreeFarm() {
}
function do_presents_fit(tree: Tree, presents: Present[]): boolean {
}
function do_present_pair_fit(tree: Tree, p_a: Present, p_b: Present): boolean {
}
function rotate_present_90_deg(present: Present): Present {
}
function flip_present_horizontal(present: Present): Present {
}
function flip_present_vertical(present: Present): Present {
}
export async function read_situation_summary(
path: string,
): Promise<SituationSummary> {
const txt_input = await Deno.readTextFile(path);
// NOTE: should be done with splits to avoid performance issues on final sample
const block_list = txt_input.split("\n\n");
const present_list: Present[] = [];
const tree_list: Tree[] = [];
block_list.forEach((block) => {
if (block.includes("x")) {
// Tree
const raw_trees = block.split("\n");
raw_trees.forEach((t) => {
if (!t || t.length < 1) {
return;
}
const [raw_region, raw_presents] = t.split(": ");
const region: Tree["region"] = {
width: parseInt(raw_region.split("x")[0]),
height: parseInt(raw_region.split("x")[1]),
};
const presents: Tree["presents"] = raw_presents.split(" ").map((p) => {
const p_n = parseInt(p);
if (p_n === p_n) {
return p_n;
}
return undefined;
}).filter((p) => p !== undefined);
tree_list.push({ region, presents });
});
} else {
// Present
const raw_present = block.split("\n").slice(1);
const present: Present = raw_present.map((line) =>
line.split("").map((p) =>
p === Point.FILLED ? Point.FILLED : Point.EMPTY
)
);
present_list.push(present);
}
});
return {
presents: present_list,
trees: tree_list,
};
}
+74 -32
View File
@@ -96,39 +96,81 @@ function is_area_red_green(
// - Every surround must form a line
// old: Every corner needs to be surrounded
// Error 1: 4560365591
// Verify left wall
// floor.red_tiles.some((tile) => {
// // point and side or point and point and the inverse
// });
const l_cover =
floor.red_tiles.some((tile) =>
tile.x <= tl_corner.x && tile.y <= tl_corner.y
) && floor.red_tiles.some((tile) =>
tile.x <= bl_corner.x && tile.y >= bl_corner.y
);
// r
const r_cover =
floor.red_tiles.some((tile) =>
tile.x >= tr_corner.x && tile.y <= tr_corner.y
) && floor.red_tiles.some((tile) =>
tile.x >= br_corner.x && tile.y >= br_corner.y
);
// b
const b_cover =
floor.red_tiles.some((tile) =>
tile.x <= bl_corner.x && tile.y >= bl_corner.y
) && floor.red_tiles.some((tile) =>
tile.x >= br_corner.x && tile.y >= br_corner.y
);
// t
const t_cover =
floor.red_tiles.some((tile) =>
tile.x >= tr_corner.x && tile.y <= tr_corner.y
) && floor.red_tiles.some((tile) =>
tile.x <= tl_corner.x && tile.y <= tl_corner.y
);
// Error 2: 248032161
// Error 3: 4638219675
const { red_tiles: tiles } = floor;
return l_cover && r_cover && b_cover && t_cover;
let first_verify = false;
if (
tl_corner.x === a.x && tl_corner.y === a.y ||
tl_corner.x === b.x && tl_corner.y === b.y
) {
first_verify = tiles.some((tile) =>
tile.x === tl_corner.x && tile.y >= max_y ||
tile.x <= min_x && tile.y === max_y
) || tiles.some((tile) =>
tile.x <= min_x && tile.y <= max_y && tiles.some((tile_2) =>
tile_2.y >= max_y && tile_2.x === tile.x
)
) || tiles.some((tile) =>
tile.y >= max_y && tile.x <= min_x && tiles.some((tile_2) =>
tile_2.x >= min_x && tile_2.y === tile.y
)
);
} else if (
tr_corner.x === a.x && tr_corner.y === a.y ||
tr_corner.x === b.x && tr_corner.y === b.y
) {
first_verify = tiles.some((tile) =>
tile.x === tr_corner.x && tile.y >= max_y ||
tile.x >= max_x && tile.y === max_y
) || tiles.some((tile) =>
tile.x >= max_x && tile.y <= max_y && tiles.some((tile_2) =>
tile_2.y >= max_y && tile_2.x === tile.x
)
) || tiles.some((tile) =>
tile.y >= max_y && tile.x >= max_x && tiles.some((tile_2) =>
tile_2.x <= min_x && tile_2.y === tile.y
)
);
}
let second_verify = false;
if (
bl_corner.x === a.x && bl_corner.y === a.y ||
bl_corner.x === b.x && bl_corner.y === b.y
) {
second_verify = tiles.some((tile) =>
tile.x === min_x && tile.y <= min_y ||
tile.x <= min_x && tile.y === min_y
) || tiles.some((tile) =>
tile.x <= min_x && tile.y <= min_y && tiles.some((tile_2) =>
tile_2.y >= min_y && tile_2.x === tile.x
)
) || tiles.some((tile) =>
tile.y <= min_y && tile.x <= min_x && tiles.some((tile_2) =>
tile_2.x >= min_x && tile_2.y === tile.y
)
);
} else if (
br_corner.x === a.x && br_corner.y === a.y ||
br_corner.x === b.x && br_corner.y === b.y
) {
second_verify = tiles.some((tile) =>
tile.x === tr_corner.x && tile.y <= min_y ||
tile.x >= max_x && tile.y === min_y
) || tiles.some((tile) =>
tile.x >= max_x && tile.y <= min_y && tiles.some((tile_2) =>
tile_2.y >= min_y && tile_2.x === tile.x
)
) || tiles.some((tile) =>
tile.y <= min_y && tile.x <= max_x && tiles.some((tile_2) =>
tile_2.x >= max_x && tile_2.y === tile.y
)
);
}
return first_verify && second_verify;
}
function calc_distance(a: Coordinate, b: Coordinate): number {