[Odin] Rune by rune scan[Odin] Rune by rune scan
⌨️
Run-Length Encoding
Week 34, 2026
package main
import "core:fmt"
main :: proc () {
text := #load("input.txt", string)
state: State
for r in text do state_push(&state, r)
state_print(state)
fmt.println()
}
State :: struct {
rune : rune,
count : int,
}
state_push :: proc (s: ^State, r: rune) {
if s.rune == r {
assert(s.count > 0)
s.count += 1
} else {
state_print(s^)
s^ = { r, 1 }
}
}
state_print :: proc (s: State) {
if s.count > 0 {
fmt.printf("%i%r", s.count, s.rune)
}
}