# Re: [Jprogramming] advent of code 2016

```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 -
>> 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
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm```