new var declaration syntax

This commit is contained in:
2026-05-27 20:25:58 +02:00
parent 284bc61f24
commit 4fda79f0bc
48 changed files with 450 additions and 449 deletions

View File

@@ -12,34 +12,34 @@ func check[update: Array, rules_left: Array, rules_right: Array] : bool
return true
func sort_by_rules[update: Array, rules_left: Array, rules_right: Array] : void
let swapped = true
swapped := true
while swapped
swapped = false
for i in 0..update->size-1
let a: i64 = array.nth(update, i)
let b: i64 = array.nth(update, i+1)
a : i64 = array.nth(update, i)
b : i64 = array.nth(update, i+1)
if rule_exists(rules_left, rules_right, b, a)
let tmp = a
tmp := a
array.set(update, i, b)
array.set(update, i+1, tmp)
swapped = true
func part1[updates: Array, rules_left: Array, rules_right: Array] : void
let out = 0
out := 0
for i in 0..updates->size
let update: Array = array.nth(updates, i)
update : Array = array.nth(updates, i)
if check(update, rules_left, rules_right)
out = out + array.nth(update, update->size / 2)
io.println_i64(out)
func part2[updates: Array, rules_left: Array, rules_right: Array] : void
let out = 0
out := 0
for i in 0..updates->size
let update: Array = array.nth(updates, i)
update : Array = array.nth(updates, i)
if !check(update, rules_left, rules_right)
sort_by_rules(update, rules_left, rules_right)
out = out + array.nth(update, update->size / 2)
@@ -47,23 +47,23 @@ func part2[updates: Array, rules_left: Array, rules_right: Array] : void
io.println_i64(out)
func main[] : i64
let data = must(io.read_text_file?("input.txt")) |> str.split("\n\n")
data := must(io.read_text_file?("input.txt")) |> str.split("\n\n")
let rules_left = []
let rules_right = []
let rules_lines = str.split(array.nth(data, 0), "\n")
rules_left := []
rules_right := []
rules_lines := str.split(array.nth(data, 0), "\n")
for i in 0..rules_lines->size
let line: str = array.nth(rules_lines, i)
let parts = str.split(line, "|")
line : str = array.nth(rules_lines, i)
parts := str.split(line, "|")
array.push(rules_left, str.parse_i64(array.nth(parts, 0)))
array.push(rules_right, str.parse_i64(array.nth(parts, 1)))
let updates = []
let updates_lines = str.split(array.nth(data, 1), "\n")
updates := []
updates_lines := str.split(array.nth(data, 1), "\n")
for i in 0..updates_lines->size
let line: str = array.nth(updates_lines, i)
let xs = str.split(line, ",")
line : str = array.nth(updates_lines, i)
xs := str.split(line, ",")
for i in 0..xs->size
array.set(xs, i, str.parse_i64(array.nth(xs, i)))