blob: fbc112ebcd48177086a0eff429b5e806783ac54d (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
d:0:"day6";
ss:{1 _' (&y=y,x) _ y,x}; / split x at y
ds:{0$ss[x;","]}; / split , digits
rg:{(x&y)+!(_abs x - y)+1}; / range x..y inclusive
l:ss[;" "]' d;
f:1000 1000 # 0;
on: {f[rg . x 0 2; rg . x 1 3]:1};
off: {f[rg . x 0 2; rg . x 1 3]:0};
toggle:{f[rg . x 0 2; rg . x 1 3]~:};
op:{
:["on"~x[1];on[,/ds'x[2 4]]
"off"~x[1];off[,/ds'x[2 4]]
"toggle"~x[0];toggle[,/ds'x[1 3]]]
};
op' l;
#&,/f
/ 2nd part
f:1000 1000 # 0;
on: {f[rg . x 0 2; rg . x 1 3]+:1};
off: {f[rg . x 0 2; rg . x 1 3]-:1
f[rg . x 0 2; rg . x 1 3]|:0};
toggle:{f[rg . x 0 2; rg . x 1 3]+:2};
op' l;
+/+/f
|