Mercurial > repos > other > adventofcode2023
annotate day12.txt @ 28:5ba34a851816
Implement Day 19 workflows, skip part 2
author | IBBoard <dev@ibboard.co.uk> |
---|---|
date | Wed, 03 Jan 2024 11:34:54 +0000 |
parents | f34254b67082 |
children |
rev | line source |
---|---|
23
f34254b67082
Add failed and almost complete Day 12 part 1
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
1 For each row, the condition records show whether each item is operational (.) or damaged (#). This is the part of the condition records that is itself damaged; for some items, it is simply unknown (?) whether the item is operational or damaged. |
f34254b67082
Add failed and almost complete Day 12 part 1
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
2 |
f34254b67082
Add failed and almost complete Day 12 part 1
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
3 However, after each row, the size of each contiguous group of damaged items is listed in the order those groups appear in the row. This list always accounts for every damaged item, and each number is the entire size of its contiguous group (that is, groups are always separated by at least one operational item: #### would always be 4, never 2,2). |
f34254b67082
Add failed and almost complete Day 12 part 1
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
4 |
f34254b67082
Add failed and almost complete Day 12 part 1
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
5 So, condition records with no unknown item conditions might look like this: |
f34254b67082
Add failed and almost complete Day 12 part 1
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
6 |
f34254b67082
Add failed and almost complete Day 12 part 1
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
7 #.#.### 1,1,3 |
f34254b67082
Add failed and almost complete Day 12 part 1
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
8 .#...#....###. 1,1,3 |
f34254b67082
Add failed and almost complete Day 12 part 1
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
9 .#.###.#.###### 1,3,1,6 |
f34254b67082
Add failed and almost complete Day 12 part 1
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
10 ####.#...#... 4,1,1 |
f34254b67082
Add failed and almost complete Day 12 part 1
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
11 #....######..#####. 1,6,5 |
f34254b67082
Add failed and almost complete Day 12 part 1
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
12 .###.##....# 3,2,1 |
f34254b67082
Add failed and almost complete Day 12 part 1
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
13 |
f34254b67082
Add failed and almost complete Day 12 part 1
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
14 However, the condition records are partially damaged; some of the items' conditions are actually unknown (?). For example: |
f34254b67082
Add failed and almost complete Day 12 part 1
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
15 |
f34254b67082
Add failed and almost complete Day 12 part 1
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
16 ???.### 1,1,3 |
f34254b67082
Add failed and almost complete Day 12 part 1
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
17 .??..??...?##. 1,1,3 |
f34254b67082
Add failed and almost complete Day 12 part 1
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
18 ?#?#?#?#?#?#?#? 1,3,1,6 |
f34254b67082
Add failed and almost complete Day 12 part 1
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
19 ????.#...#... 4,1,1 |
f34254b67082
Add failed and almost complete Day 12 part 1
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
20 ????.######..#####. 1,6,5 |
f34254b67082
Add failed and almost complete Day 12 part 1
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
21 ?###???????? 3,2,1 |
f34254b67082
Add failed and almost complete Day 12 part 1
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
22 |
f34254b67082
Add failed and almost complete Day 12 part 1
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
23 Equipped with this information, it is your job to figure out how many different arrangements of operational and broken items fit the given criteria in each row. |
f34254b67082
Add failed and almost complete Day 12 part 1
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
24 |
f34254b67082
Add failed and almost complete Day 12 part 1
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
25 In the first line (???.### 1,1,3), there is exactly one way separate groups of one, one, and three broken items (in that order) can appear in that row: the first three unknown items must be broken, then operational, then broken (#.#), making the whole row #.#.###. |
f34254b67082
Add failed and almost complete Day 12 part 1
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
26 |
f34254b67082
Add failed and almost complete Day 12 part 1
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
27 The second line is more interesting: .??..??...?##. 1,1,3 could be a total of four different arrangements. The last ? must always be broken (to satisfy the final contiguous group of three broken items), and each ?? must hide exactly one of the two broken items. (Neither ?? could be both broken items or they would form a single contiguous group of two; if that were true, the numbers afterward would have been 2,3 instead.) Since each ?? can either be #. or .#, there are four possible arrangements of items. |
f34254b67082
Add failed and almost complete Day 12 part 1
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
28 |
f34254b67082
Add failed and almost complete Day 12 part 1
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
29 The last line is actually consistent with ten different arrangements! Because the first number is 3, the first and second ? must both be . (if either were #, the first number would have to be 4 or higher). However, the remaining run of unknown item conditions have many different ways they could hold groups of two and one broken items: |
f34254b67082
Add failed and almost complete Day 12 part 1
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
30 |
f34254b67082
Add failed and almost complete Day 12 part 1
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
31 ?###???????? 3,2,1 |
f34254b67082
Add failed and almost complete Day 12 part 1
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
32 .###.##.#... |
f34254b67082
Add failed and almost complete Day 12 part 1
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
33 .###.##..#.. |
f34254b67082
Add failed and almost complete Day 12 part 1
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
34 .###.##...#. |
f34254b67082
Add failed and almost complete Day 12 part 1
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
35 .###.##....# |
f34254b67082
Add failed and almost complete Day 12 part 1
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
36 .###..##.#.. |
f34254b67082
Add failed and almost complete Day 12 part 1
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
37 .###..##..#. |
f34254b67082
Add failed and almost complete Day 12 part 1
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
38 .###..##...# |
f34254b67082
Add failed and almost complete Day 12 part 1
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
39 .###...##.#. |
f34254b67082
Add failed and almost complete Day 12 part 1
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
40 .###...##..# |
f34254b67082
Add failed and almost complete Day 12 part 1
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
41 .###....##.# |
f34254b67082
Add failed and almost complete Day 12 part 1
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
42 |
f34254b67082
Add failed and almost complete Day 12 part 1
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
43 In this example, the number of possible arrangements for each row is: |
f34254b67082
Add failed and almost complete Day 12 part 1
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
44 |
f34254b67082
Add failed and almost complete Day 12 part 1
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
45 ???.### 1,1,3 - 1 arrangement |
f34254b67082
Add failed and almost complete Day 12 part 1
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
46 .??..??...?##. 1,1,3 - 4 arrangements |
f34254b67082
Add failed and almost complete Day 12 part 1
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
47 ?#?#?#?#?#?#?#? 1,3,1,6 - 1 arrangement |
f34254b67082
Add failed and almost complete Day 12 part 1
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
48 ????.#...#... 4,1,1 - 1 arrangement |
f34254b67082
Add failed and almost complete Day 12 part 1
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
49 ????.######..#####. 1,6,5 - 4 arrangements |
f34254b67082
Add failed and almost complete Day 12 part 1
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
50 ?###???????? 3,2,1 - 10 arrangements |
f34254b67082
Add failed and almost complete Day 12 part 1
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
51 |
f34254b67082
Add failed and almost complete Day 12 part 1
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
52 Adding all of the possible arrangement counts together produces a total of 21 arrangements. |
f34254b67082
Add failed and almost complete Day 12 part 1
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
53 |
f34254b67082
Add failed and almost complete Day 12 part 1
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
54 For each row, count all of the different arrangements of operational and broken items that meet the given criteria. What is the sum of those counts? |