[Odin] Clock ticks simulation[Odin] Clock ticks simulation

ā²ļø

Broken Clocks

Week 24, 2026

package main import "core:fmt" main :: proc () { find_longest_unique_N_clock_combinations(N=2, debug=false) find_longest_unique_N_clock_combinations(N=3, debug=false) } find_longest_unique_N_clock_combinations :: proc ($N: int, $debug: bool) { #assert(N > 1) clocks : [N] int combinations: [dynamic] [N] int max_cycles : int defer delete(combinations) for i in 0.. max_cycles: max_cycles = cycles clear(&combinations) fallthrough case cycles == max_cycles: append(&combinations, clocks) } clocks_valid = false #reverse for &c, i in clocks do if c < 60-N+1+i { c += 1 for j:=i+1; j (cycles: int) { when debug do logf :: fmt.printf else do logf :: proc (..any) {} Clock :: struct { value : int, step : int, } clocks: [dynamic; 10] Clock assert(len(steps) <= cap(clocks)) logf("----") for s in steps { append(&clocks, Clock { 0, s }) logf("\tšŸ•—%d", s) } logf("\n") for cycles = 1; /**/; cycles += 1 { clocks_in_sync := true logf("-%02d-", cycles) for &c in clocks { c.value += c.step c_in_sync := c.value%60 == 0 clocks_in_sync &&= c_in_sync logf("\t%r%d", c_in_sync ? 'āœ…' : 'āŒ', c.value) } logf("\n") if clocks_in_sync do break } logf("\n") return }