2023 day 13.
This commit is contained in:
parent
f41b50c9e0
commit
69929b28dd
@ -1,13 +1,43 @@
|
|||||||
import sys
|
import sys
|
||||||
from collections import defaultdict
|
from typing import Callable, Literal
|
||||||
from dataclasses import dataclass
|
|
||||||
|
|
||||||
|
def split(block: list[str], axis: Literal[0, 1], count: int) -> int:
|
||||||
|
n_iter = len(block) if axis == 0 else len(block[0])
|
||||||
|
n_check = len(block) if axis == 1 else len(block[0])
|
||||||
|
|
||||||
|
at: Callable[[int, int], str] = (
|
||||||
|
(lambda i, j: block[i][j]) if axis == 0 else (lambda i, j: block[j][i])
|
||||||
|
)
|
||||||
|
|
||||||
|
for i in range(n_iter - 1):
|
||||||
|
size = min(i + 1, n_iter - i - 1)
|
||||||
|
if (
|
||||||
|
sum(
|
||||||
|
at(i - s, j) != at(i + 1 + s, j)
|
||||||
|
for s in range(0, size)
|
||||||
|
for j in range(n_check)
|
||||||
|
)
|
||||||
|
== count
|
||||||
|
):
|
||||||
|
return i + 1
|
||||||
|
|
||||||
|
return 0
|
||||||
|
|
||||||
|
|
||||||
|
blocks = [block.splitlines() for block in sys.stdin.read().split("\n\n")]
|
||||||
|
|
||||||
lines = sys.stdin.read().splitlines()
|
|
||||||
|
|
||||||
# part 1
|
# part 1
|
||||||
answer_1 = ...
|
answer_1 = sum(
|
||||||
|
split(block, axis=1, count=0) + 100 * split(block, axis=0, count=0)
|
||||||
|
for block in blocks
|
||||||
|
)
|
||||||
print(f"answer 1 is {answer_1}")
|
print(f"answer 1 is {answer_1}")
|
||||||
|
|
||||||
# part 2
|
# part 2
|
||||||
answer_2 = ...
|
answer_2 = sum(
|
||||||
|
split(block, axis=1, count=1) + 100 * split(block, axis=0, count=1)
|
||||||
|
for block in blocks
|
||||||
|
)
|
||||||
print(f"answer 2 is {answer_2}")
|
print(f"answer 2 is {answer_2}")
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,15 @@
|
|||||||
|
#.##..##.
|
||||||
|
..#.##.#.
|
||||||
|
##......#
|
||||||
|
##......#
|
||||||
|
..#.##.#.
|
||||||
|
..##..##.
|
||||||
|
#.#.##.#.
|
||||||
|
|
||||||
|
#...##..#
|
||||||
|
#....#..#
|
||||||
|
..##..###
|
||||||
|
#####.##.
|
||||||
|
#####.##.
|
||||||
|
..##..###
|
||||||
|
#....#..#
|
Loading…
Reference in New Issue
Block a user