func part1[lines: Array] : void sum := 0 s := _stackalloc(3) as str for i in 0..lines->size line : str = lines->nth(i) largest := 0 for j in 0..line->len() for k in (j+1)..line->len() s[0] = line[j] s[1] = line[k] s[2] = 0 n := s->parse_i64() if n > largest largest = n sum += largest io.println_i64(sum) // had to cheat this one func part2_rec[bank: str, start: i64, remaining: i64] : i64 largest := 0 largest_idx := start len := bank->len() for i in (start)..(len-remaining+1) v := (bank[i] - '0') as i64 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 sum := 0 for i in 0..lines->size line : str = lines->nth(i) sum += part2_rec(line, 0, 12) io.println_i64(sum) func main[] : i64 ~input, ok := io.read_text_file("input.txt") if !ok panic("failed to open input.txt") lines := input->split("\n") part1(lines) part2(lines)