Here's how I'd approach the computational part of this problem: L=: + 0j1&* R=: + 0j_1&*
+/+. 2 R 3 L 0 5 +/+. 2 R 2 R 2 R 0 2 +/+. 5 R 5 L 5 R 3 R 0 18 Thanks, -- Raul On Thu, Dec 1, 2016 at 6:09 PM, Jan-Pieter Jacobs <janpieter.jac...@gmail.com> wrote: > My solution for day 1, using complex notation for X Y. > > > NB. in contains the input > d =: */\ 0j1 * 'R L' i. in #~ 'RL' e. ~ in NB. get directions for each move > st =: ". in -. 'RL' NB. step lengths > NB. get the manhattan distance (+/@:+. of all steps after each other, i.e. > their sum > ]r =: +/ | +. +/ d * st > > NB. Part two: the first crossing. > t =: <@:>:@i."0 st NB. prepare tracks of lengths ~ step length > dl =: (<"0 d) *&.>t NB. put each track in the right direction > ll =: > ([ ,{:@[ + ])&.>/ dl NB. sum from previous end point, and > concatenate. > NB. find the distance to the first place encountered more than once. > ]rr =: +/|+. {. (~. #~ (1<#)/.~) ll > > Cheers, > > Jan-Pieter > > 2016-12-01 21:23 GMT+01:00 'Pascal Jasmin' via Programming < > programm...@jsoftware.com>: > >> looks like I double pasted? all one line. >> >> >> +&| /}. {: > f each/ (,: 0 0 0) (, <)~ |. dltb each ',' cut 'R2, R2, R2' >> >> or >> >> +&| /}. {: > f each/ (,: 0 0 0) (, <)~ |. dltb each ',' cut a >> >> >> >> ----- Original Message ----- >> From: Joe Bogner <joebog...@gmail.com> >> To: programm...@jsoftware.com >> Sent: Thursday, December 1, 2016 2:39 PM >> Subject: Re: [Jprogramming] advent of code 2016 >> >> Nice, that sounds like what i had in mind. I get a domain error though: >> >> a =. 'R2, R2, R2' >> >> O =: 4 2 $ _1 0 0 1 1 0 0 _1 >> f =: 4 : 0 >> a =. 4 | x ({.@] + _1 1 {~ 'R' = {.@[) {: y >> y , a , (}. {: y) + x (".@}.@[ * O {~ ]) a >> ) >> >> +&|/ }. {: > f each/ (,: 0 0 0) (, <)~ |. dltb each ',' cut a f each/ >> (,: 0 0 0) (, <)~ |. dltb each ',' cut a NB. part 1 >> >> >> plot <"1 |: }."1 > f each/ (,: 0 0 0) (, <)~ |. dltb each ',' cut a >> NB. part 2, find intersection in plot >> >> >> Running all gives me: >> >> >> +&|/ }. {: > f each/ (,: 0 0 0) (, <)~ |. dltb each ',' cut a f >> each/ (,: 0 0 0) (, <)~ |. dltb each ',' cut a NB. part 1 >> |domain error: f >> | a=.4|x ({.@]+_1 1{~'R'={.@[){:y >> >> >> >> This is what it works up to: >> >> (,: 0 0 0) (, <)~ |. dltb each ',' cut a NB. part 1 >> ┌──┬──┬──┬─────┐ >> │R2│R2│R2│0 0 0│ >> └──┴──┴──┴─────┘ >> >> This seems to work though: >> >> +&|/ }. {: > f each/ (,: 0 0 0) (, <)~ |. dltb each ',' cut a >> 2 >> >> +&|/ }. {: > f each/ (,: 0 0 0) (, <)~ |. dltb each ',' cut 'R2,R2,R2' >> 2 >> >> +&|/ }. {: > f each/ (,: 0 0 0) (, <)~ |. dltb each ',' cut 'R5,L5,R5,R3' >> 12 >> >> >> It looks like there may be a typo in your paste >> >> This >> >> +&|/ }. {: > f each/ (,: 0 0 0) (, <)~ |. dltb each ',' cut a f each/ >> (,: 0 0 0) (, <)~ |. dltb each ',' cut a NB. part 1 >> >> Should be this: >> >> >> +&|/ }. {: > f each/ (,: 0 0 0) (, <)~ |. dltb each ',' cut a >> >> >> >> On Thu, Dec 1, 2016 at 2:11 PM, 'Pascal Jasmin' via Programming >> <programm...@jsoftware.com> wrote: >> > I posted an alternate solution, >> > >> > a =. wdclippaste '' NB. input from clipboard >> > >> > O =: 4 2 $ _1 0 0 1 1 0 0 _1 >> > f =: 4 : 0 >> > a =. 4 | x ({.@] + _1 1 {~ 'R' = {.@[) {: y >> > y , a , (}. {: y) + x (".@}.@[ * O {~ ]) a >> > ) >> > >> > +&|/ }. {: > f each/ (,: 0 0 0) (, <)~ |. dltb each ',' cut a f each/ >> (,: 0 0 0) (, <)~ |. dltb each ',' cut a NB. part 1 >> > >> > >> > plot <"1 |: }."1 > f each/ (,: 0 0 0) (, <)~ |. dltb each ',' cut a NB. >> part 2, find intersection in plot >> > >> > general description, >> > >> > O holds direction vectors, >> > 0 0 0 is appended to reversed list of commands, where position 0 is the >> orientation index into 0, and other 2 are x y positions of taxi. >> > >> > f/ updates orientation and x y on each iteration, where intermediate >> value a is new orientation. >> > >> > >> > >> > >> > ----- Original Message ----- >> > From: Joe Bogner <joebog...@gmail.com> >> > To: programm...@jsoftware.com >> > Sent: Thursday, December 1, 2016 1:43 PM >> > Subject: Re: [Jprogramming] advent of code 2016 >> > >> > I added an alternate solution to problem 1, part 1 - >> > http://code.jsoftware.com/wiki/Essays/Advent_Of_Code_ >> 2016#Imperative_Style_.28cleanup.29 >> > >> > If I had the time, I would think about how to reformulate it so I >> > could use / to reduce the input to a single solution. I recall using >> > that pattern last year >> > >> > >> > On Thu, Dec 1, 2016 at 12:53 PM, Joe Bogner <joebog...@gmail.com> wrote: >> >> I've started a wiki page for it so we don't have to go back and add >> >> them later. Feel free to edit/add >> >> >> >> http://code.jsoftware.com/wiki/Essays/Advent_Of_Code_2016 >> >> >> >> My solution to the first problem is pretty bad (works though). I >> >> intend to add another solution that's in a more functional style >> >> >> >> On Thu, Dec 1, 2016 at 11:16 AM, 'Pascal Jasmin' via Programming >> >> <programm...@jsoftware.com> wrote: >> >>> back again this year, >> >>> >> >>> >> >>> http://adventofcode.com/2016 >> >>> ---------------------------------------------------------------------- >> >>> 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 >> ---------------------------------------------------------------------- >> 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 ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm