[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) } }