Files
zern/examples/puzzles/aoc2025_03.zr

51 lines
1.3 KiB
Plaintext

func part1[lines: array] : void
let sum = 0
for i in 0..array.size(lines)
let line: str = array.nth(lines, i)
let largest = 0
for j in 0..str.len(line)
for k in (j+1)..str.len(line)
let s: str = mem.alloc(3)
str.set(s, 0, line[j])
str.set(s, 1, line[k])
str.set(s, 2, 0)
let n: i64 = str.parse_i64(s)
if n > largest
largest = n
sum = sum + largest
io.println_i64(sum)
// had to cheat this one
func part2_rec[bank: str, start: i64, remaining: i64] : i64
let largest = 0
let largest_idx: i64 = start
let len: i64 = str.len(bank)
for i in (start)..(len-remaining+1)
let v: i64 = bank[i] - '0'
if v > largest
largest = v
largest_idx = i
if remaining > 1
return largest * math.pow(10, remaining - 1) + part2_rec(bank, largest_idx + 1, remaining - 1)
else
return largest
func part2[lines: array] : void
let sum = 0
for i in 0..array.size(lines)
let line: str = array.nth(lines, i)
sum = sum + part2_rec(line, 0, 12)
io.println_i64(sum)
func main[] : i64
let lines: array = io.read_file("input.txt") |> str.split("\n")
part1(lines)
part2(lines)