Eh...

I seem to have made a mistake here.

   R=: + 0j1&*
   L=: + 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

I was thinking that that should be symmetrical, but at the last
minute, I swapped my definitions of L and R (without rerunning the
code) based on how I thought it should look on a graph.

But, apparently, that gives a different answer:

   +/+. 2 R 3 L 0
_1
   +/+. 2 R 2 R 2 R 0
_2
   +/+. 5 R 5 L 5 R 3 R 0
2

After a bit of thought, though, I think I see where I went wrong:

   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

My apologies for the sloppy initial post. I should have tested it
rather than just thinking it would work.

Thanks,

-- 
Raul



On Fri, Dec 2, 2016 at 12:37 AM, Raul Miller <rauldmil...@gmail.com> wrote:
> 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

Reply via email to