code wiki / (root) / nx_integral_gate.nx

nx_integral_gate.nx source

↩ module page · 97 lines · 3581 B

1// nx_integral_gate.nx -- REFEREE for R-FACE-0 (nx_integral). 2// Fills an 8x6 grayscale image with a deterministic varied pattern, builds the 3// SAT, and checks nx_integral_rect_sum against a BRUTE-FORCE pixel sum for a 4// range of rectangles (full frame, interior sub-rect, single pixel, the four 5// edges/corners). Every pair PRINTED. Exit 0 GREEN / 1 RED. 6// Sovereign: syscalls + nx_image + nx_integral. license_tier: ORIGINAL 7import "syscalls.nx" 8import "nx_image.nx" 9import "nx_integral.nx" 10 11const W: i64 = 8 12const H: i64 = 6 13 14func gp(logfd: i64, s: *u8) -> i64 { 15 var n: i64 = 0 16 while s[n] != (0 as u8) { n = n + 1 } 17 sys_write(1, s, n) 18 if logfd > 0 { sys_write(logfd, s, n) } 19 return 0 20} 21func gn(logfd: i64, v: i64) -> i64 { 22 let bb: *u8 = sys_mmap(28) 23 var m: i64 = v 24 if m < 0 { sys_write(1, "-\x00" as *u8, 1); if logfd > 0 { sys_write(logfd, "-\x00" as *u8, 1) } m = 0 - m } 25 let t: *u8 = sys_mmap(28) 26 var k: i64 = 0 27 if m == 0 { t[0] = 48 as u8; k = 1 } 28 while m > 0 { t[k] = (48 + (m % 10)) as u8; m = m / 10; k = k + 1 } 29 var i: i64 = 0 30 while i < k { bb[i] = t[k - 1 - i]; i = i + 1 } 31 sys_write(1, bb, k) 32 if logfd > 0 { sys_write(logfd, bb, k) } 33 return 0 34} 35 36func brute(img: *Image, x0: i64, y0: i64, x1: i64, y1: i64) -> i64 { 37 var s: i64 = 0 38 var y: i64 = y0 39 while y <= y1 { 40 var x: i64 = x0 41 while x <= x1 { s = s + nx_image_get(img, x, y, 0); x = x + 1 } 42 y = y + 1 43 } 44 return s 45} 46 47func main() -> i64 { 48 let logfd: i64 = sys_openat_append("knowledge/status/integral_gate.log\x00" as *u8, 0x1a4) 49 gp(logfd, "INTEGRAL-GATE R-FACE-0 frame=8x6\n\x00" as *u8) 50 51 let img: *Image = nx_image_alloc(W, H, 1) 52 var y: i64 = 0 53 while y < H { 54 var x: i64 = 0 55 while x < W { nx_image_set(img, x, y, 0, (x * 7 + y * 13) % 200); x = x + 1 } 56 y = y + 1 57 } 58 let ii: *IntegralImage = nx_integral_build(img) 59 60 // rectangles to test: x0,y0,x1,y1 61 let rx0: *i64 = sys_mmap(64) as *i64 62 let ry0: *i64 = sys_mmap(64) as *i64 63 let rx1: *i64 = sys_mmap(64) as *i64 64 let ry1: *i64 = sys_mmap(64) as *i64 65 rx0[0]=0; ry0[0]=0; rx1[0]=7; ry1[0]=5 // full frame 66 rx0[1]=2; ry0[1]=1; rx1[1]=5; ry1[1]=4 // interior 67 rx0[2]=3; ry0[2]=3; rx1[2]=3; ry1[2]=3 // single pixel 68 rx0[3]=0; ry0[3]=0; rx1[3]=0; ry1[3]=0 // top-left corner pixel 69 rx0[4]=7; ry0[4]=0; rx1[4]=7; ry1[4]=5 // right column 70 rx0[5]=0; ry0[5]=5; rx1[5]=7; ry1[5]=5 // bottom row 71 rx0[6]=4; ry0[6]=2; rx1[6]=7; ry1[6]=5 // bottom-right block 72 let nr: i64 = 7 73 74 var ok: i64 = 1 75 var i: i64 = 0 76 while i < nr { 77 let sat: i64 = nx_integral_rect_sum(ii, rx0[i], ry0[i], rx1[i], ry1[i]) 78 let bf: i64 = brute(img, rx0[i], ry0[i], rx1[i], ry1[i]) 79 gp(logfd, " rect[\x00" as *u8); gn(logfd, rx0[i]); gp(logfd, ",\x00" as *u8); gn(logfd, ry0[i]) 80 gp(logfd, "..\x00" as *u8); gn(logfd, rx1[i]); gp(logfd, ",\x00" as *u8); gn(logfd, ry1[i]) 81 gp(logfd, "] sat=\x00" as *u8); gn(logfd, sat); gp(logfd, " brute=\x00" as *u8); gn(logfd, bf) 82 if sat != bf { ok = 0; gp(logfd, " MISMATCH\x00" as *u8) } 83 gp(logfd, "\n\x00" as *u8) 84 i = i + 1 85 } 86 87 if ok == 1 { 88 gp(logfd, "INTEGRAL-GATE result=ALL-PASS verdict=GREEN\n\x00" as *u8) 89 if logfd > 0 { sys_close(logfd) } 90 sys_exit(0) 91 return 0 92 } 93 gp(logfd, "INTEGRAL-GATE result=FAIL verdict=RED\n\x00" as *u8) 94 if logfd > 0 { sys_close(logfd) } 95 sys_exit(1) 96 return 1 97}