code wiki / _hdl_build / _evo_gcd_champ.nx

_evo_gcd_champ.nx source

↩ module page · 29 lines · 947 B

1// DISCOVERED BY nx_evo_gcd (evolved 2-register Euclid from examples) -- a real while loop, at a HELD-OUT (a,b). license_tier: ORIGINAL 2import "nx_syscalls.nx" 3func main() -> i64 { 4 var r0: i64 = 48 5 var r1: i64 = 36 6 var swp: i64 = 0 7 var guard: i64 = 0 8 while r1 != 0 { 9 if guard >= 256 { r1 = 0 } else { 10 if r0 != 0 { r1 = r1 % r0 } 11 r0 = r0 - r1 12 if r1 != 0 { r0 = r0 % r1 } 13 swp = r0 14 r0 = r1 15 r1 = swp 16 guard = guard + 1 17 } 18 } 19 sys_write(1, "RESULT=" as *u8, 7) 20 var mm: i64 = r0 21 if mm < 0 { sys_write(1, "-" as *u8, 1); mm = 0 - mm } 22 let t: *u8 = sys_mmap(28) 23 var k: i64 = 0 24 if mm == 0 { t[0] = 48 as u8; k = 1 } 25 while mm > 0 { t[k] = (48 + (mm % 10)) as u8; mm = mm / 10; k = k + 1 } 26 while k > 0 { k = k - 1; sys_write(1, (((t as i64)+k) as *u8), 1) } 27 sys_write(1, "\n" as *u8, 1) 28 return 0 29}