code wiki / (root) / nx_flavor_design_test.nx

nx_flavor_design_test.nx source

↩ module page · 77 lines · 2752 B

1// nx_flavor_design_test.nx -- smoke for nx_flavor_design (T5). 2// 3// Proves generative, target-driven flavor design + the MEASURED EXCEED 4// (a generated BLEND beats every single ingredient on perceived profile): 5// - distance metric basics (1-2) 6// - best single picks the closest palette ingredient (3) 7// - GENERATIVE: best 2-ingredient blend beats best single for a balanced 8// target, and it is the sweet+sour pair (4-6) 9// - generalises: a pure-sweet target picks the pure-sweet ingredient (7) 10// Exit code = failed assertion number; 0 = all pass. 11 12import "nx_syscalls.nx" 13import "nx_taste_psychophysics.nx" 14import "nx_flavor_design.nx" 15 16func main() -> i64 { 17 // --- distance basics --- 18 let a: *i64 = (sys_mmap(40)) as *i64 19 a[0] = 300 20 a[1] = 300 21 a[2] = 0 22 a[3] = 0 23 a[4] = 0 24 let b: *i64 = (sys_mmap(40)) as *i64 25 b[0] = 300 26 b[1] = 300 27 b[2] = 0 28 b[3] = 0 29 b[4] = 0 30 if nx_flavor_distance(a, b) != 0 { return 1 } 31 b[0] = 0 32 if nx_flavor_distance(a, b) != 300 { return 2 } 33 34 // --- target: balanced sweet-sour --- 35 let target: *i64 = (sys_mmap(40)) as *i64 36 target[0] = 300 37 target[1] = 300 38 target[2] = 0 39 target[3] = 0 40 target[4] = 0 41 42 // --- palette of 3 pure ingredients (flat 3*5 = 15 i64) --- 43 let pal: *i64 = (sys_mmap(8 * 15)) as *i64 44 pal[0] = 300 // ing0 pure sweet 45 pal[5] = 300; pal[6] = 0 // ing1 pure sour: index 6 = sour 46 pal[6] = 300; pal[5] = 0 47 pal[12] = 300 // ing2 pure salty (index 10..14, salty = +2) 48 49 // (set the rest explicitly to avoid relying on zero-init beyond mmap) 50 pal[1] = 0; pal[2] = 0; pal[3] = 0; pal[4] = 0 51 pal[7] = 0; pal[8] = 0; pal[9] = 0 52 pal[10] = 0; pal[11] = 0; pal[13] = 0; pal[14] = 0 53 54 // --- best single is one of the pures (distance 300 from balanced) --- 55 let bi: i64 = nx_flavor_design_best(target, pal, 3) 56 if bi < 0 { return 3 } 57 let single_d: i64 = nx_flavor_design_best_distance(target, pal, 3) 58 59 // --- GENERATIVE: best blend beats best single --- 60 let oi: *i64 = (sys_mmap(8)) as *i64 61 let oj: *i64 = (sys_mmap(8)) as *i64 62 let blend_d: i64 = nx_flavor_design_best_blend(target, pal, 3, oi, oj) 63 if blend_d >= single_d { return 4 } // a NEW combination matches better 64 if oi[0] != 0 { return 5 } // chose pure-sweet 65 if oj[0] != 1 { return 6 } // + pure-sour 66 67 // --- generalises: pure-sweet target picks the pure-sweet ingredient --- 68 let target2: *i64 = (sys_mmap(40)) as *i64 69 target2[0] = 300 70 target2[1] = 0 71 target2[2] = 0 72 target2[3] = 0 73 target2[4] = 0 74 if nx_flavor_design_best(target2, pal, 3) != 0 { return 7 } 75 76 return 0 77}