Odin SolutionsOdin Solutions
🔢
Encoded Digits
Week 25, 2026
All SolutionsGen substrings, check if prime, append to result | greenya | Odin Solutions
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
}