[Odin] Gen substrings, check if prime, append to result[Odin] Gen substrings, check if prime, append to result

🔢

Encoded Digits

Week 25, 2026

package main import "core:fmt" import "core:math" import "core:strconv" import "core:strings" main :: proc () { digits := "20266172596384" fmt.printfln("Input:\t%v", digits) fmt.printfln("Output:\t%v", encode(digits)) } encode :: proc (digits: string) -> string { sb := strings.builder_make() for digits := digits; digits != ""; digits = digits[1:] { for l in 1..=len(digits) { n, _ := strconv.parse_int(digits[:l]) if is_prime(n) do strings.write_string(&sb, digits[:l]) } } return strings.to_string(sb) } is_prime :: proc (n: int) -> bool { if n<2 do return false if n==2 || n==3 do return true if n%2==0 do return false @static cache: map [int] struct {} if n in cache do return true m := int(math.floor(math.sqrt(f64(n)))) for i:=3; i<=m; i+=2 { if n%i==0 do return false } cache[n] = {} return true }