code wiki / (root) / nx_symj_ga.nx

nx_symj_ga.nx source

↩ module page · 61 lines · 2028 B

1// GENERATED by nx_symjudge -- sweep harness, do not edit 2import "nx_syscalls.nx" 3func sgn(x: i64) -> i64 { if x > 0 { return 1 } if x < 0 { return 0 - 1 } return 0 } 4func sjh_w(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } sys_write(1, s, n); return 0 } 5func sjh_nl() -> i64 { let b: *u8 = sys_mmap(8); b[0] = 10 as u8; sys_write(1, b, 1); return 0 } 6func sjh_n(v: i64) -> i64 { 7 var m: i64 = v 8 if m < 0 { let nb: *u8 = sys_mmap(8); nb[0] = 45 as u8; sys_write(1, nb, 1); m = 0 - m } 9 let t: *u8 = sys_mmap(24) 10 var k: i64 = 0 11 if m == 0 { t[0] = 48 as u8; k = 1 } 12 while m > 0 { t[k] = (48 + (m % 10)) as u8; m = m / 10; k = k + 1 } 13 let ob: *u8 = sys_mmap(24) 14 var i: i64 = 0 15 while i < k { ob[i] = t[k - 1 - i]; i = i + 1 } 16 sys_write(1, ob, k) 17 return 0 18} 19func main() -> i64 { 20 var viol: i64 = 0 21 var checked: i64 = 0 22 var vrep: i64 = 0 23 var x: i64 = (0 - 600) 24 while x <= 600 { 25 let r: i64 = sgn(x) 26 let rn0: i64 = sgn(0 - x) 27 if rn0 != (0 - r) { viol = viol + 1 28 if vrep == 0 { vrep = 1 29 sjh_w("SYMJVIOL odd x=" as *u8) 30 sjh_n(x) 31 sjh_w(" r=" as *u8) 32 sjh_n(r) 33 sjh_nl() } } 34 var bad1: i64 = 0 35 if r < (0 - 1) { bad1 = 1 } 36 if r > 1 { bad1 = 1 } 37 if bad1 == 1 { viol = viol + 1 38 if vrep == 0 { vrep = 1 39 sjh_w("SYMJVIOL range x=" as *u8) 40 sjh_n(x) 41 sjh_w(" r=" as *u8) 42 sjh_n(r) 43 sjh_nl() } } 44 if x == 0 { if r != 0 { viol = viol + 1 45 if vrep == 0 { vrep = 1 46 sjh_w("SYMJVIOL fix0 x=" as *u8) 47 sjh_n(x) 48 sjh_w(" r=" as *u8) 49 sjh_n(r) 50 sjh_nl() } } 51 } 52 checked = checked + 1 53 x = x + 1 54 } 55 sjh_w("SYMJ sgn checked=" as *u8) 56 sjh_n(checked) 57 sjh_w(" viol=" as *u8) 58 sjh_n(viol) 59 sjh_nl() 60 return 0 61}