st.k 899 B

123456789101112131415161718192021222324252627
  1. / evalST
  2. / pass the data generated
  3. / by the compiled function
  4. / to evalST to get an
  5. / action that can be called
  6. // condition vec, actions vec, transition table, table args
  7. evalST: {[c;a;t;args] eidx:*&c[args]; ts: t[0;eidx]; (a[ts[0]];ts[1])};
  8. / Actions
  9. A1: {[] "fan low"};
  10. A2: {[] "fan med"};
  11. A3: {[] "fan hig"};
  12. A4: {[] "heat on"};
  13. A5: {[] "acpw on"};
  14. A6: {[] "allp of"};
  15. c: {[args] T:args[0]; isOff:args[1]; (isOff;T<18;T<22;T<26;T<30;T>30)};
  16. a: (A1;A2;A3;A4;A5;A6);
  17. t: (((0N;1);(4;5);(1;2);(2;3);(3;4);(5;6));((6;1);(4;5);(0N;2);(2;3);(3;4);(5;6));((6;1);(4;5);(1;2);(0N;3);(3;4);(5;6));((6;1);(4;5);(1;2);(2;3);(0N;4);(5;6));((6;1);(0N;5);(1;2);(2;3);(3;4);(5;6));((6;1);(4;5);(1;2);(2;3);(3;4);(0N;6)));
  18. s: ("Off";"FanLow";"FanMedium";"FanHigh";"Heating";"Cooling");
  19. at: (`i;`i;`i); / T, isOff, current state - see c
  20. state: 0;
  21. (action;state): evalST[c;a;t;(20;0;state)];
  22. :action
  23. :s[state]