code wiki / _hdl_build / _claude_jpeg_census.nx

_claude_jpeg_census.nx source

↩ module page · 90 lines · 3317 B

1// _claude_jpeg_census.nx -- CLAUDE's lane in race 4 (JPEG marker census, handwritten). 2// Contract: read /tmp/race_input.bin; print NSEG= (segments through SOS, -1 refused) then 3// SOI=/APP0=/DQT=/SOF=/DHT=/SOS= content offsets (standalone: after marker; lengthed: after 4// the 2-byte inclusive length); -1 absent; -2 when refused. license_tier: ORIGINAL 5import "nx_syscalls.nx" 6 7func cj_dec(label: *u8, v: i64) -> i64 { 8 var n: i64 = 0 9 while label[n] != (0 as u8) { n = n + 1 } 10 sys_write(1, label, n) 11 var av: i64 = v 12 if av < 0 { sys_write(1, "-" as *u8, 1); av = 0 - av } 13 if av == 0 { sys_write(1, "0" as *u8, 1) } 14 if av > 0 { 15 let buf: *u8 = sys_mmap(32) 16 var pos: i64 = 0 17 var x: i64 = av 18 while x > 0 { buf[pos] = (48 + (x % 10)) as u8; x = x / 10; pos = pos + 1 } 19 let outb: *u8 = sys_mmap(32) 20 var oi: i64 = 0 21 while oi < pos { outb[oi] = buf[pos - 1 - oi]; oi = oi + 1 } 22 sys_write(1, outb, pos) 23 } 24 sys_write(1, "\n" as *u8, 1) 25 return 0 26} 27 28func cj_standalone(m: i64) -> i64 { 29 if m == 0xD8 { return 1 } 30 if m == 0xD9 { return 1 } 31 if m >= 0xD0 { if m <= 0xD7 { return 1 } } 32 return 0 33} 34 35// one pass: out[0]=count(-1 refused), out[1..6]=content offsets of D8/E0/DB/C2/C4/DA (-1 absent) 36func cj_walk(b: *u8, n: i64, out: *i64) -> i64 { 37 out[0] = 0 38 var i: i64 = 1 39 while i <= 6 { out[i] = 0 - 1; i = i + 1 } 40 var off: i64 = 0 41 while off < n { 42 if off + 2 > n { out[0] = 0 - 1; return 0 - 1 } 43 if (b[off] & 0xff) != 0xFF { out[0] = 0 - 1; return 0 - 1 } 44 let m: i64 = b[off + 1] & 0xff 45 if cj_standalone(m) == 1 { 46 if m == 0xD8 { if out[1] < 0 { out[1] = off + 2 } } 47 out[0] = out[0] + 1 48 off = off + 2 49 } else { 50 if off + 4 > n { out[0] = 0 - 1; return 0 - 1 } 51 let l: i64 = ((b[off + 2] & 0xff) << 8) | (b[off + 3] & 0xff) 52 if l < 2 { out[0] = 0 - 1; return 0 - 1 } 53 if off + 2 + l > n { out[0] = 0 - 1; return 0 - 1 } 54 let body: i64 = off + 4 55 if m == 0xE0 { if out[2] < 0 { out[2] = body } } 56 if m == 0xDB { if out[3] < 0 { out[3] = body } } 57 if m == 0xC2 { if out[4] < 0 { out[4] = body } } 58 if m == 0xC4 { if out[5] < 0 { out[5] = body } } 59 out[0] = out[0] + 1 60 if m == 0xDA { if out[6] < 0 { out[6] = body } return out[0] } 61 off = off + 2 + l 62 } 63 } 64 return out[0] 65} 66 67func main() -> i64 { 68 let lenp: *i64 = sys_mmap(16) as *i64 69 let b: *u8 = sys_read_file("/tmp/race_input.bin\x00" as *u8, lenp) 70 let n: i64 = lenp[0] 71 let out: *i64 = sys_mmap(64) as *i64 72 let c: i64 = cj_walk(b, n, out) 73 cj_dec("NSEG=\x00" as *u8, out[0]) 74 if c < 0 { 75 cj_dec("SOI=\x00" as *u8, 0 - 2) 76 cj_dec("APP0=\x00" as *u8, 0 - 2) 77 cj_dec("DQT=\x00" as *u8, 0 - 2) 78 cj_dec("SOF=\x00" as *u8, 0 - 2) 79 cj_dec("DHT=\x00" as *u8, 0 - 2) 80 cj_dec("SOS=\x00" as *u8, 0 - 2) 81 return 0 82 } 83 cj_dec("SOI=\x00" as *u8, out[1]) 84 cj_dec("APP0=\x00" as *u8, out[2]) 85 cj_dec("DQT=\x00" as *u8, out[3]) 86 cj_dec("SOF=\x00" as *u8, out[4]) 87 cj_dec("DHT=\x00" as *u8, out[5]) 88 cj_dec("SOS=\x00" as *u8, out[6]) 89 return 0 90}