code wiki / _hdl_build / _rle_authored.nx
_rle_authored.nx source
↩ module page · 15 lines · 688 B
1// AUTHORED BY THE NISHI BUILDER (rle template) -- run-length decode, bits-up
2import "nx_syscalls.nx"
3func rle_decode(s: *u8, n: i64, out: *u8) -> i64 {
4 var op: i64=0; var i: i64=0
5 while i+1<n { let count: i64=s[i] as i64; let by: u8=s[i+1]; var k: i64=0; while k<count { out[op]=by; op=op+1; k=k+1 } i=i+2 }
6 return op
7}
8func main() -> i64 {
9 let s: *u8=sys_mmap(8); s[0]=3 as u8; s[1]=65 as u8; s[2]=2 as u8; s[3]=66 as u8
10 let out: *u8=sys_mmap(32); let n: i64=rle_decode(s, 4, out)
11 let exp: *u8="AAABB" as *u8
12 var ok: i64=1; if n!=5 { ok=0 } var i: i64=0; while i<5 { if out[i]!=exp[i] { ok=0 } i=i+1 }
13 if ok==1 { sys_exit(0) } sys_exit(1)
14 return 1
15}