Initial commit: Days 1 - 5
This commit is contained in:
60
day03.sql
Normal file
60
day03.sql
Normal file
@@ -0,0 +1,60 @@
|
||||
with recursive banks as (
|
||||
select unnest(split(content, e'\n')) as bank from read_text('data/03.in')
|
||||
),
|
||||
|
||||
banks_1 as (
|
||||
select
|
||||
(select arg_max(i, bank[i]) from range(1, len(bank)) r (i)) as i1,
|
||||
bank
|
||||
from banks
|
||||
),
|
||||
|
||||
banks_2 as (
|
||||
select
|
||||
i1,
|
||||
(select arg_max(i, bank[i]) from range(i1 + 1, len(bank) + 1) r (i))
|
||||
as i2,
|
||||
bank
|
||||
from banks_1
|
||||
),
|
||||
|
||||
banks_12 as (
|
||||
select
|
||||
12 as i,
|
||||
bank,
|
||||
0 as r
|
||||
from banks
|
||||
union all
|
||||
select
|
||||
i - 1,
|
||||
bank,
|
||||
(
|
||||
select arg_max(j, bank[j])
|
||||
from
|
||||
range(
|
||||
r + 1,
|
||||
len(bank) - i + 2
|
||||
) m (j)
|
||||
)
|
||||
from banks_12
|
||||
where i > 0
|
||||
),
|
||||
|
||||
part1 as (
|
||||
select
|
||||
sum(
|
||||
cast(bank[i1] as int64) * 10
|
||||
+ cast(bank[i2] as int64)
|
||||
) as solution
|
||||
from banks_2
|
||||
),
|
||||
|
||||
part2 as (
|
||||
select sum(cast(10 ^ i as int64) * cast(bank[r] as int64)) as solution
|
||||
from banks_12
|
||||
where i < 12
|
||||
)
|
||||
|
||||
select
|
||||
(select solution from part1) as p1,
|
||||
(select solution from part2) as p2;
|
||||
Reference in New Issue
Block a user