This commit is contained in:
ctsk
2025-12-07 20:05:55 +01:00
parent bb619ba9a2
commit d78792f807
2 changed files with 213 additions and 0 deletions

142
data/07.in Normal file
View File

@@ -0,0 +1,142 @@
......................................................................S......................................................................
.............................................................................................................................................
......................................................................^......................................................................
.............................................................................................................................................
.....................................................................^.^.....................................................................
.............................................................................................................................................
....................................................................^.^.^....................................................................
.............................................................................................................................................
...................................................................^.^...^...................................................................
.............................................................................................................................................
..................................................................^.^.....^..................................................................
.............................................................................................................................................
.................................................................^.....^...^.................................................................
.............................................................................................................................................
................................................................^...^.^.....^................................................................
.............................................................................................................................................
...............................................................^.^.^.^.^.^...^...............................................................
.............................................................................................................................................
..............................................................^.^...^.^.^...^.^..............................................................
.............................................................................................................................................
.............................................................^.^.^.^...^.^.^.^.^.............................................................
.............................................................................................................................................
............................................................^...^.^.^.^.^.^.^...^............................................................
.............................................................................................................................................
...........................................................^.^...^.....^...^.^.^.^...........................................................
.............................................................................................................................................
..........................................................^.^.^.^.^.....^.....^...^..........................................................
.............................................................................................................................................
.........................................................^.^.^.^.^.^.^.....^.^.^.^.^.........................................................
.............................................................................................................................................
........................................................^.^.^.^...^.^.^.^.^.......^.^........................................................
.............................................................................................................................................
.......................................................^...^.^.^.^.^.^.^...^.^...^...^.......................................................
.............................................................................................................................................
......................................................^.^.....^.....^.^.^.^.....^.^.^.^......................................................
.............................................................................................................................................
.....................................................^...^...^.^.^.^.^...^...^.^...^.^.^.....................................................
.............................................................................................................................................
....................................................^.....^.^...^...^...^.^.....^...^...^....................................................
.............................................................................................................................................
...................................................^.^.^...^.....^.....^.^...^.^.^.^.^.^.^...................................................
.............................................................................................................................................
..................................................^...^.^...^.....^...^.^...^.....^...^.^.^..................................................
.............................................................................................................................................
.................................................^.^.^.^.^.^.^.^...^.^.^.^.^.^.^.^...^.^.^.^.................................................
.............................................................................................................................................
................................................^.^...^.^.^.^.^.^.^.^.^.^...^.^.^.^.^.^.^.^.^................................................
.............................................................................................................................................
...............................................^.^.^.^...^.^.^.^.^.^.^.^...^.^.^.^.....^...^.^...............................................
.............................................................................................................................................
..............................................^.^.....^.^...^.^...^.^.^...^.^.^.^.^.^.....^.^.^..............................................
.............................................................................................................................................
.............................................^.^.......^.........^...^.....^.^.^.^.^.^...^.^...^.............................................
.............................................................................................................................................
............................................^...^.^...^.^.^.^.^...........^...^.^.^...^.^.^.^...^............................................
.............................................................................................................................................
...........................................^...^.^.^...^.^.^.^...^...^.^.^.....^...^.^.^.^.^...^.^...........................................
.............................................................................................................................................
..........................................^.^.^...^...^.^.........^...^.^.^.^.^.^.^.......^.^.^...^..........................................
.............................................................................................................................................
.........................................^.^.^.^.^.^.^.........^.^...^.^.^.^.^.^...^...^...^.^.^...^.........................................
.............................................................................................................................................
........................................^...^.^...^.....^.^.^.^.^.^...^.^.^.^...^.^.^...^.^...^...^.^........................................
.............................................................................................................................................
.......................................^...^...^...^.^.^.^.^.^...^.^.^.^.......^.^...^.^.^...^.......^.......................................
.............................................................................................................................................
......................................^.....^...^.^...^.^.^.^...^...^.^.^...^.^.....^.^.^.^...^...^.^.^......................................
.............................................................................................................................................
.....................................^.^...^.........^.^...^...^.^.....^.^.^.^...^.^.......^.^.^...^.^.^.....................................
.............................................................................................................................................
....................................^.^.^.^.^.^.^...^...^.^...^.^.......^.^.^.^...^...^.^.^.^.^...^.^...^....................................
.............................................................................................................................................
...................................^.....^.^.^.^.^.^...........^...^.^.^.^.^.^.^.^.^.^.^...^...^.^...^.^.^...................................
.............................................................................................................................................
..................................^...^...^.^...^.^.^.^...^.^.^...^...^...^.^.^.^.^.....^...^...^.^.^.....^..................................
.............................................................................................................................................
.................................^...^.^.^.^.^.^.....^.^.....^.^.^...^...^.^.....^.......^.....^...^.^...^.^.................................
.............................................................................................................................................
................................^.^.^.^...^.^.^.^.^.^.^.......^.^.^.^.^...^...^.^.^.^.^...^.^.......^.....^.^................................
.............................................................................................................................................
...............................^.^...^...^.....^.^...^.......^.^.^.^.^.^.^.^.....^.^.^.^.^.^.^.......^.^.^...^...............................
.............................................................................................................................................
..............................^...^.....^.^.^.^.....^.^.^.^.^.^.^.^.....^...^.^...^.^.^.^.^...^.^.....^.^.^.^.^..............................
.............................................................................................................................................
.............................^.^...^...^.^.^.^.^.^.^.^.......^.....^.^.........^...^.^...^.^.^.....^.^.^.^.^.^.^.............................
.............................................................................................................................................
............................^.^.^.^...^...^.....^...^.^.....^.^.^.^.^.^.^.^.^.^.^.....^.^.^...^.^.^.^.^.^.^.^.^.^............................
.............................................................................................................................................
...........................^.^.^.^.^.^...^.^.^.^.^...^.^.......^...^.^.^.^.^.^.^.^...^.^.^.....^...^.^.....^.^.^.^...........................
.............................................................................................................................................
..........................^.^.^.^.^.^.^.^.^.......^.^.^...^...^.....^.^.^.^.^.....^.^.^...^...^...........^.^.^...^..........................
.............................................................................................................................................
.........................^.^...^...^.......^...^...^.^...^.^.....^...^.^.^...^.^.^.^.^.^.^.^.......^.^...^...^.....^.........................
.............................................................................................................................................
........................^.^.^.^.^.^.^.^.....^.^...^.^.^.^...^.....^.^.^...^...^.^.^.^...^.....^.^.....^.^.....^.^.^.^........................
.............................................................................................................................................
.......................^.^.^.^.^.^.^...^...^.^.^...^.^.^.....^.^.^.....^.^.^.^.^.^.....^.^...^...^.^.^.^.^.^.^.....^.^.......................
.............................................................................................................................................
......................^...^.^.^.^.....^.....^.^.^.......^...^.^.^.^...^.....^.^.^.^.^.^.^.^.^.^.^...^...^...^...^.^...^......................
.............................................................................................................................................
.....................^.^...^.^.^.^.^.^...^.^.^...^.^.....^.^...^.^.^.^.^.^.^.....^.^.^.^.^.......^.......^.^.^.^.^.^.^.^.....................
.............................................................................................................................................
....................^.^.^.......^.......^.^.....^.^...^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.....^.^.....^.....^.^.^....................
.............................................................................................................................................
...................^.....^.^...^...^.^.^.^...^.^.^.......^.^.^.^.^.^.^.^.^.^.^.^.......^.^.^.^.......^.^.^...^...^.^.^...^...................
.............................................................................................................................................
..................^.^.^.....^.^.^.^.^.^...^.....^.^.^.^.^.^.^...^.^.^.....^...^.^.^.^.^.^...^.^.^...^.^.^.^...^.^.^...^.^.^..................
.............................................................................................................................................
.................^.......^...^.^.......^.^.^.^.^...^...^.^...^.^...^.^.....^.....^.^.^.^...^...^...^.^.^...^.^.^.^.^.^.^.^.^.................
.............................................................................................................................................
................^.....^.^...^.^.^.^.^.....^.^.^...^...^.^...^.^.^...^.^.^.^.^.^.^.^.^...^.^...^.^...^.......^...^.^...^.^.^.^................
.............................................................................................................................................
...............^.^...^.^.^.....^.........^...^.....^.^.^.........^.^.^.^...^.^.^.^...^.^.^...^.^.....^.^.^.^...^...^.^.^.^.^.^...............
.............................................................................................................................................
..............^.^.^...^.^.^.^.^.....^.^.^.^.^...^.^.^.^.......^...^.......^.^.^.^.^.^...^.^.....^.^...^.......^.^.^.....^.....^..............
.............................................................................................................................................
.............^.^.^.^.^...^...^...^.....^.^.^.^.^.^.^...^.....^.^...^.^...^.^.......^.^.^.^.^.^.^...^.......^...^.^...^.^.^.^.^.^.............
.............................................................................................................................................
............^.^...^...^.....^.^...^.^.^.^.....^...^.^...^.....^.^.^.^...^.^.^...........^...^.^.^.^...^.^.^.^.^.^.^.....^.^.^.^.^............
.............................................................................................................................................
...........^...^...^.......^.^...^.^...^.^.^...^.^.^.^.^.^.^.^.^.^.^.^...^.....^.^.^.^.^.^...^.^.^.....^...^.......^...^...^.^.^.^...........
.............................................................................................................................................
..........^.^.^.^.^...^.^.^.....^...^.^...^.^.^...^.......^.^.^.^...^.^.^.^.....^.^.^...^.^.^...^...^...^.^...^.^.^...^.....^.^...^..........
.............................................................................................................................................
.........^.^.^.....^...^.^.^.......^.^.^...^.^...^.^.^.^...^.......^.^.^.^...^...^.^.^.^.^.....^.^.^...^...^.....^.^.....^.^.^...^.^.........
.............................................................................................................................................
........^.^.^.^.^.^.^...^.^.....^.......^...^.^.^.^.^.....^.........^.^...^.^...^.^.^...^.^.....^.^.^...^.^.^.^.^...^.^.^...^...^.^.^........
.............................................................................................................................................
.......^.^.^.^.^...^.^.......^.^.^.^.^.........^.^.....^.^.^.^.^...^.^.^...^.^.^.^.......^.^.......^...^.^.^.^.^.^.^.^.....^.....^.^.^.......
.............................................................................................................................................
......^...^.^.^.^.^.^.^.....^.^.^...^.^.^.....^.^.^...^.^...^...^.^.^.^.^.^.^.^.^.^.^.^.^.^...^.^...^.^.^...^.^.^.^.....^.^.^...^...^.^......
.............................................................................................................................................
.....^...^...^.^...^.^.^.^.^...^.^.^.^.^.^.^.^.^.....^...^...^.^.^...^.^.^.^...^...^.^.^.^.^.^...^.^.^.....^...^...^.^.^.^.^.....^.^.^.^.....
.............................................................................................................................................
....^.^...^.^...^.^.^.^.^...^...^...^...^.^...^...^.^.^.^.^.^...^.....^.....^.^.....^...^.^...^...^.^...^.^.^.^.^.^.^.^...^.^.^.^.^...^.^....
.............................................................................................................................................
...^.^.^.^.^...^.^.^.^.....^.^.^.^.^...^.^.^...^.^...^.^...^.....^...^.....^.^.^.^...^.^.^...^.^...^...^.^.^.....^.^.^.^...^.^.^.^...^...^...
.............................................................................................................................................
..^.^.^...^.^...^.^.^.^...^.^.^.^.^.....^.^...^.........^.^...^.^...^.^.^.^...^.^.^.^.^.^.^.^...^.......^.^.^.^.^.^.^...^.^.^.....^.^.^...^..
.............................................................................................................................................
.^.^.^.^.....^.^.^.....^...^.^.^.^.^.^.^...^...^.^...^.^.....^...^.^.^.......^.^.^.......^...^.^.^.^.^.^.^.^.^...^.^.^.......^...^.^.....^.^.
.............................................................................................................................................

71
day07.sql Normal file
View File

@@ -0,0 +1,71 @@
with recursive
grid (line, row) as (
select
unnest(line),
generate_subscripts(line, 1) as row
from (
select string_split(trim(content, e'\n'), e'\n') as line
from read_text('data/07.in')
)
),
dims as (
select
max(row) as height,
max(length(line)) as width
from grid
),
initial as (
select col from range(1, (select width from dims)) r (col), grid
where row = 1 and line[col] <> '.'
),
trace (depth, col, num) as (
select
1,
col,
cast(1 as int128)
from initial
union
select
depth,
col,
sum(num)
from
(
select
depth + 1 as depth,
unnest(
case
when line[col] = '^'
then [col - 1, col + 1]
else [col]
end
) as col,
num
from
trace, grid
where
depth + 1 = row
)
group by depth, col
),
part1 (solution) as (
select count(*) from trace, grid
where line[col] = '^' and depth + 1 = row
),
part2 (solution) as (
select sum(num) from trace
where depth = (select height from dims)
)
select
part1.solution as p1,
part2.solution as p2
from part1, part2;