# Re: [Jprogramming] advent of code 2016

```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 -
> 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
> >>
> >>
> >> 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,
> >>>
> >>>
> >>> ----------------------------------------------------------------------
> >>> 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```