infer var type when initializer is a number constant

This commit is contained in:
2025-12-23 18:10:56 +01:00
parent 5682318915
commit c527aceecd
36 changed files with 118 additions and 100 deletions

View File

@@ -1,5 +1,5 @@
func part1[l1: array, l2: array] : void
let out: i64 = 0
let out = 0
for i in 0..array.size(l1)
out = out + math.abs(array.nth(l1, i) - array.nth(l2, i))
@@ -7,7 +7,7 @@ func part1[l1: array, l2: array] : void
io.println_i64(out)
func part2[l1: array, l2: array] : void
let out: i64 = 0
let out = 0
for i in 0..array.size(l1)
out = out + array.nth(l1, i) * alg.count(l2, array.nth(l1, i))

View File

@@ -14,7 +14,7 @@ func check[report: array] : bool
return true
func part1[data: array] : void
let out: i64 = 0
let out = 0
for i in 0..array.size(data)
if check(array.nth(data, i))
@@ -23,7 +23,7 @@ func part1[data: array] : void
io.println_i64(out)
func part2[data: array] : void
let out: i64 = 0
let out = 0
for i in 0..array.size(data)
if check(array.nth(data, i))

View File

@@ -14,7 +14,7 @@ func check[lines: array, x: i64, y: i64, dx: i64, dy: i64] : bool
return true
func part1[lines: array] : void
let out: i64 = 0
let out = 0
for x in 0..array.size(lines)
for y in 0..str.len(array.nth(lines, x))
@@ -38,7 +38,7 @@ func part1[lines: array] : void
io.println_i64(out)
func part2[lines: array] : void
let out: i64 = 0
let out = 0
for x in 1..array.size(lines)-1
for y in 1..str.len(array.nth(lines, x))-1

View File

@@ -26,7 +26,7 @@ func sort_by_rules[update: array, rules_left: array, rules_right: array] : void
swapped = true
func part1[updates: array, rules_left: array, rules_right: array] : void
let out: i64 = 0
let out = 0
for i in 0..array.size(updates)
let update: array = array.nth(updates, i)
@@ -36,7 +36,7 @@ func part1[updates: array, rules_left: array, rules_right: array] : void
io.println_i64(out)
func part2[updates: array, rules_left: array, rules_right: array] : void
let out: i64 = 0
let out = 0
for i in 0..array.size(updates)
let update: array = array.nth(updates, i)

View File

@@ -44,7 +44,7 @@ func solve[ops: array, e: array] : i64
return 0
func part1[equations: array] : void
let out: i64 = 0
let out = 0
for i in 0..array.size(equations)
out = out + solve(["add", "mul"], array.nth(equations, i))
@@ -52,7 +52,7 @@ func part1[equations: array] : void
io.println_i64(out)
func part2[equations: array] : void
let out: i64 = 0
let out = 0
for i in 0..array.size(equations)
out = out + solve(["add", "mul", "concat"], array.nth(equations, i))

View File

@@ -1,6 +1,6 @@
func part1[lines: array] : void
let password: i64 = 0
let dial: i64 = 50
let password = 0
let dial = 50
for i in 0..array.size(lines)
let line: str = array.nth(lines, i)
@@ -22,8 +22,8 @@ func part1[lines: array] : void
io.println_i64(password)
func part2[lines: array] : void
let password: i64 = 0
let dial: i64 = 50
let password = 0
let dial = 50
for i in 0..array.size(lines)
let line: str = array.nth(lines, i)

View File

@@ -9,7 +9,7 @@ func part1_is_invalid_id[s: str] : bool
return str.equal(first, second)
func part1[ranges: array] : void
let sum: i64 = 0
let sum = 0
for i in 0..array.size(ranges)
let parts: array = array.nth(ranges, i) |> str.split("-")
@@ -40,7 +40,7 @@ func part2_is_invalid_id[s: str] : bool
return false
func part2[ranges: array] : void
let sum: i64 = 0
let sum = 0
for i in 0..array.size(ranges)
let parts: array = array.nth(ranges, i) |> str.split("-")

View File

@@ -1,10 +1,10 @@
func part1[lines: array] : void
let sum: i64 = 0
let sum = 0
for i in 0..array.size(lines)
let line: str = array.nth(lines, i)
let largest: i64 = 0
let largest = 0
for j in 0..str.len(line)
for k in (j+1)..str.len(line)
let s: str = mem.alloc(3)
@@ -20,7 +20,7 @@ func part1[lines: array] : void
// had to cheat this one
func part2_rec[bank: str, start: i64, remaining: i64] : i64
let largest: i64 = 0
let largest = 0
let largest_idx: i64 = start
let len: i64 = str.len(bank)
@@ -36,7 +36,7 @@ func part2_rec[bank: str, start: i64, remaining: i64] : i64
return largest
func part2[lines: array] : void
let sum: i64 = 0
let sum = 0
for i in 0..array.size(lines)
let line: str = array.nth(lines, i)

View File

@@ -1,5 +1,5 @@
func main[] : i64
let sum: i64 = 0
let sum = 0
for i in 0..266000
if i % 2 != 0

View File

@@ -1,5 +1,5 @@
func main[] : i64
let sum: i64 = 0
let sum = 0
for i in 0..1000
if i % 5 == 0 | i % 3 == 0

View File

@@ -1,7 +1,7 @@
func main[] : i64
let sum: i64 = 0
let a: i64 = 0
let b: i64 = 1
let sum = 0
let a = 0
let b = 1
while a < 4000000
if a % 2 == 0

View File

@@ -1,6 +1,6 @@
func main[] : i64
let n: i64 = 600851475143
let f: i64 = 2
let n = 600851475143
let f = 2
while f * f <= n
if n % f == 0

View File

@@ -1,5 +1,5 @@
func main[] : i64
let out: i64 = 0
let out = 0
for a in 500..1000
for b in 500..1000

View File

@@ -1,5 +1,5 @@
func main[] : i64
let out: i64 = 1
let out = 1
for i in 1..21
out = math.lcm(out, i)

View File

@@ -1,9 +1,9 @@
func main[] : i64
let sum_of_squares: i64 = 0
let sum_of_squares = 0
for i in 1..101
sum_of_squares = sum_of_squares + i * i
let square_of_sum: i64 = 0
let square_of_sum = 0
for i in 1..101
square_of_sum = square_of_sum + i
square_of_sum = square_of_sum * square_of_sum

View File

@@ -1,7 +1,7 @@
func main[] : i64
let found: i64 = 0
let found = 0
let i: i64 = 1
let i = 1
while true
if math.is_prime(i)
found = found + 1

View File

@@ -1,11 +1,11 @@
func main[] : i64
let n: str = "7316717653133062491922511967442657474235534919493496983520312774506326239578318016984801869478851843858615607891129494954595017379583319528532088055111254069874715852386305071569329096329522744304355766896648950445244523161731856403098711121722383113622298934233803081353362766142828064444866452387493035890729629049156044077239071381051585930796086670172427121883998797908792274921901699720888093776657273330010533678812202354218097512545405947522435258490771167055601360483958644670632441572215539753697817977846174064955149290862569321978468622482839722413756570560574902614079729686524145351004748216637048440319989000889524345065854122758866688116427171479924442928230863465674813919123162824586178664583591245665294765456828489128831426076900422421902267105562632111110937054421750694165896040807198403850962455444362981230987879927244284909188845801561660979191338754992005240636899125607176060588611646710940507754100225698315520005593572972571636269561882670428252483600823257530420752963450"
let out: i64 = 0
let out = 0
let max: i64 = str.len(n) - 13
for i in 0..max
let s: i64 = 1
let j: i64 = 0
let s = 1
let j = 0
while j < 13
s = s * (n[i + j] - '0')
j = j + 1

View File

@@ -1,5 +1,5 @@
func main[] : i64
let sum: i64 = 0
let sum = 0
for i in 0..2000000
if math.is_prime(i)

View File

@@ -1,5 +1,5 @@
func main[] : i64
let N: i64 = 20
let N = 20
let grid: array = []
array.push(grid, [8, 2, 22, 97, 38, 15, 0, 40, 0, 75, 4, 5, 7, 78, 52, 12, 50, 77, 91, 8])
@@ -23,7 +23,7 @@ func main[] : i64
array.push(grid, [20, 73, 35, 29, 78, 31, 90, 1, 74, 31, 49, 71, 48, 86, 81, 16, 23, 57, 5, 54])
array.push(grid, [1, 70, 54, 71, 83, 51, 54, 69, 16, 92, 33, 48, 61, 43, 52, 1, 89, 19, 67, 48])
let out: i64 = 0
let out = 0
for i in 0..N-3
for j in 0..N-3

View File

@@ -1,7 +1,7 @@
func num_divisors[n: i64] : i64
let end: i64 = math.isqrt(n)
let out: i64 = 0
let out = 0
for i in 1..end+1
if n % i == 0
out = out + 2
@@ -11,8 +11,8 @@ func num_divisors[n: i64] : i64
return out
func main[] : i64
let n: i64 = 0
let i: i64 = 1
let n = 0
let i = 1
while true
n = n + i
if num_divisors(n) > 500

View File

@@ -4,15 +4,15 @@ func collatz_num[n: i64] : i64
return n * 3 + 1
func collatz_seq[n: i64]: i64
let i: i64 = 1
let i = 1
while n != 1
n = collatz_num(n)
i = i + 1
return i
func main[] : i64
let max: i64 = 0
let max_index: i64 = 0
let max = 0
let max_index = 0
for i in 1..1000000
let seq: i64 = collatz_seq(i)

View File

@@ -1,7 +1,7 @@
func main[] : i64
let n: i64 = 40
let r: i64 = 20
let out: i64 = 1
let n = 40
let r = 20
let out = 1
for i in 1..r+1
out = out * (n - (r - i)) / i

View File

@@ -3,7 +3,7 @@ func main[] : i64
array.push(n, 1)
for j in 0..1000
let carry: i64 = 0
let carry = 0
for i in 0..array.size(n)
let tmp: i64 = array.nth(n, i) * 2 + carry
array.set(n, i, tmp % 10)
@@ -12,7 +12,7 @@ func main[] : i64
array.push(n, carry % 10)
carry = carry / 10
let sum: i64 = 0
let sum = 0
for i in 0..array.size(n)
sum = sum + array.nth(n, i)

View File

@@ -3,7 +3,7 @@ func main[] : i64
let s2: array = [3, 6, 6, 8, 8, 7, 7, 9, 8, 8]
let s3: array = [0, 0, 6, 6, 5, 5, 5, 7, 6, 6]
let sum: i64 = 0
let sum = 0
for i in 1..10
sum = sum + array.nth(s1, i)

View File

@@ -10,8 +10,8 @@ func days[y: i64, m: i64] : i64
return 31
func main[] : i64
let wday: i64 = 0
let sun: i64 = 0
let wday = 0
let sun = 0
for year in 1901..2001
for mon in 1..13

View File

@@ -1,5 +1,5 @@
func multiply[n: array, x: i64] : void
let carry: i64 = 0
let carry = 0
for i in 0..array.size(n)
let prod: i64 = array.nth(n, i) * x + carry
array.set(n, i, prod % 10)
@@ -14,7 +14,7 @@ func main[] : i64
for i in 2..101
multiply(n, i)
let sum: i64 = 0
let sum = 0
for i in 0..array.size(n)
sum = sum + array.nth(n, i)

View File

@@ -1,9 +1,9 @@
func divisors_sum[n: i64] : i64
let k: i64 = n
let sum: i64 = 1
let sum = 1
for i in 2..k+1
let p: i64 = 1
let p = 1
while k % i == 0
p = p * i
k = k / i
@@ -11,7 +11,7 @@ func divisors_sum[n: i64] : i64
return sum - n
func main[] : i64
let sum: i64 = 0
let sum = 0
for i in 2..10000
let d: i64 = divisors_sum(i)