Mine is also similar -- In previous years I did a tacit only solution to something similar: http://code.jsoftware.com/wiki/User:Joe_Bogner/ByteCodeInterpreter but opted for the simpler approach here
I used a MAXGUARD early on to make sure my loop didn't run away -- although I could have just used jbreak. Unnecessary globals are also left in there. MAXGUARD=:50000000 NB. http://www.jsoftware.com/pipermail/programming/2014-July/037999.html amend=: (0:{::])`(1:{::])`(2:{::])}~ inc =: (# input) # 0 blank =: (# input) # 0 jmp =: 0 run =: 3 : 0 steps =: 0 ip =: 0 running =: 1 while. (steps < MAXGUARD) *. running do. jmp =: (ip { input) + (ip { inc) inc =: (amend 1;ip;blank) + inc ip =: ip + jmp NB. smoutput (steps;jmp;ip;(inc+input)) steps=: >: steps if. ip >: (#input) do. running=: 0 end. end. smoutput steps ) run2 =: 3 : 0 steps =: 0 ip =: 0 running =: 1 while. (steps < MAXGUARD) *. running do. jmp =: (ip { input) + (ip { inc) if. jmp >: 3 do. inc =: (amend _1;ip;blank) + inc else. inc =: (amend 1;ip;blank) + inc end. ip =: ip + jmp NB. smoutput (steps;jmp;ip;(inc+input)) steps=: >: steps if. ip >: (#input) do. running=: 0 end. end. smoutput steps NB. smoutput (steps;jmp;ip;(inc+input)) ) run2 '' On Tue, Dec 5, 2017 at 6:09 PM, Raul Miller <[email protected]> wrote: > Mine's similar: > > steps=:3 :0 > bounds=. _1+0,#y > cnt=. 1+ndx=. 0 > while. 1=bounds I. nxt=. ndx+off=. ndx{y do. > y=. (1+off) ndx} y > ndx=. nxt > cnt=. 1+cnt > end. > ) > > But part 2 was only required another 7 characters, so there's that > (though it also took over 70 times as many steps to complete.) > > That said, I should perhaps note that my leaderboard score is 0 - I'm > waiting plenty of time before trying these things. > > -- > Raul > > On Tue, Dec 5, 2017 at 5:05 PM, Ric Sherlock <[email protected]> wrote: > > Did anyone come up with a nice Jish solution for this? > > > > Mine (see below) ended up being very scalar. > > > > > > > > > > > > > > > > > > > > > > > > > > > > countJumps=: 3 :0 > > > > count=. idx=. 0 > > > > offsets=. y > > > > while. (0 <: idx) *. (idx < #offsets) do. > > > > count=. count + 1 > > > > idx_new=. idx ([ + {) offsets > > > > offsets=. idx (1 + {)`[`]} offsets > > > > idx=. idx_new > > > > end. > > > > count;idx;offsets > > > > ) > > > > > > countJumps 0 3 0 1 _3 > > > > 5 > > ---------------------------------------------------------------------- > > For information about J forums see http://www.jsoftware.com/forums.htm > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm > ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
