From be8000bb4e4ec9f32efc71a32990968827f64e9e Mon Sep 17 00:00:00 2001 From: Christian Neukirchen Date: Sun, 6 Dec 2015 20:17:19 +0100 Subject: day6 --- day6.k | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 day6.k (limited to 'day6.k') diff --git a/day6.k b/day6.k new file mode 100644 index 0000000..6f95738 --- /dev/null +++ b/day6.k @@ -0,0 +1,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];x[2]];rg[x[1];x[3]]]:1}; +off: {f[rg[x[0];x[2]];rg[x[1];x[3]]]:0}; +toggle:{f[rg[x[0];x[2]];rg[x[1];x[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];x[2]];rg[x[1];x[3]]]+:1}; +off: {f[rg[x[0];x[2]];rg[x[1];x[3]]]-:1 + f[rg[x[0];x[2]];rg[x[1];x[3]]]|:0}; +toggle:{f[rg[x[0];x[2]];rg[x[1];x[3]]]+:2}; + +op' l; + ++/+/f -- cgit 1.4.1