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}