Initial commit: Days 1 - 5
This commit is contained in:
39
day02.sql
Normal file
39
day02.sql
Normal file
@@ -0,0 +1,39 @@
|
||||
with
|
||||
bounds as (
|
||||
select
|
||||
unnest(string_split(trim(content, '\n'), ',')) as f,
|
||||
string_split(f, '-') as bounds,
|
||||
cast(bounds[1] as int64) as low,
|
||||
cast(bounds[2] as int64) as high
|
||||
from read_text('data/02.in')
|
||||
),
|
||||
|
||||
candidates as (
|
||||
select
|
||||
unnest(range(low, high + 1)) as num,
|
||||
cast(num as string) as num_str,
|
||||
len(num_str) as len
|
||||
from bounds
|
||||
),
|
||||
|
||||
part1 as (
|
||||
select sum(num) as solution
|
||||
from candidates
|
||||
where num_str[: len // 2] = num_str[len // 2 + 1:]
|
||||
),
|
||||
|
||||
part2 as (
|
||||
select sum(num) as solution
|
||||
from candidates
|
||||
where exists (
|
||||
select stride from range(1, len) as range (stride)
|
||||
where
|
||||
len % stride = 0
|
||||
and repeat(num_str[: stride], len // stride) = num_str
|
||||
)
|
||||
)
|
||||
|
||||
select
|
||||
part1.solution as p1,
|
||||
part2.solution as p2
|
||||
from part1, part2;
|
||||
Reference in New Issue
Block a user