Thanks, the fill is needed otherwise it would return the wrong result
if the last number is the same as the first. I don't think my version
is susceptible to that but would be interested to find an example if
it is


correct:

(,@((#,{.);.1~ _1&(|.!._) ~: ])) (1 1 1 3 2 2 2 1 1 1)

3 1 1 3 3 2 3 1

vs (no fill)

(,@((#,{.);.1~ _1&(|.) ~: ])) (1 1 1 3 2 2 2 1 1 1)

1 3 3 2 3 1

You can see this in:

Correct:

(<;.1~ _1&(|.!._) ~: ]) (1 1 1 3 2 2 2 1 1 1)
┌─────┬─┬─────┬─────┐
│1 1 1│3│2 2 2│1 1 1│
└─────┴─┴─────┴─────┘

Incorrect:

(<;.1~ _1&(|.) ~: ]) (1 1 1 3 2 2 2 1 1 1)
┌─┬─────┬─────┐
│3│2 2 2│1 1 1│
└─┴─────┴─────┘


vs


On Thu, Dec 10, 2015 at 9:05 AM, 'Pascal Jasmin' via Programming
<programm...@jsoftware.com> wrote:
> You may have gotten lucky with _1&|.  (fill not needed afaiu)
>
> an improvement to mine, after seeing yours.
>
>
> # ,@( ((# , {. );. 1)~  1 , 2 ~:/\ ])^:(40) 1 1 1 3 2 2 2 1 1 3
>
>
>
> ----- Original Message -----
> From: Joe Bogner <joebog...@gmail.com>
> To: programm...@jsoftware.com
> Sent: Thursday, December 10, 2015 8:47 AM
> Subject: Re: [Jprogramming] advent 10
>
> Clever use of the state machine. I enjoy seeing those...
>
> Here's mine:
>
> NB. part 1
> # (,@((#,{.);.1~ _1&(|.!._) ~: ]))^:40 input=:(1 1 1 3 2 2 2 1 1 3)
>
> 252594
>
> NB. part 2
> # (,@((#,{.);.1~ _1&(|.!._) ~: ]))^:50 input=:(1 1 1 3 2 2 2 1 1 3)
>
> 3579328
>
>
> To explain, we are going to use cut to split the array when the number
> is different than the previous number
>
> Return 1 if the number is different than the previous number, otherwise 0
>
>    (_1&(|.!._) ~:  ]) (1 1 1 3 2 2 2 1 1 3)
> 1 0 0 1 1 0 0 1 0 1
>
> Apply cut to the sequence to cut into intervals
>
> (<;.1~ _1&(|.!._) ~:  ]) (1 1 1 3 2 2 2 1 1 3)
> ┌─────┬─┬─────┬───┬─┐
> │1 1 1│3│2 2 2│1 1│3│
> └─────┴─┴─────┴───┴─┘
>
>
> Instead of boxing, return count of the first item in each interval
>
> ((#,{.);.1~ _1&(|.!._) ~:  ]) input=:(1 1 1 3 2 2 2 1 1 3)
> 3 1
> 1 3
> 3 2
> 2 1
> 1 3
>
>
> from here, just ravel and count the numbers
>
>
>
> On Thu, Dec 10, 2015 at 3:55 AM, Ryan Eckbo <ec...@cim.mcgill.ca> wrote:
>> Oops, typo in the title - this is for day 10, not 8.
>>
>> On 10 Dec 2015, at 19:52, Ryan Eckbo wrote:
>>
>>> A previous advent answer got me thinking about state machines, so I wrote
>>> one for this problem.   The extra initial state ruins the natural mapping
>>> between states and numbers, but I think it's unavoidable?  Also someone
>>> could probably write a clever verb to generate the table.
>>>
>>>
>>> NB. state machine -- can be confusing because rows/states 1,2,3,..
>>> represent numbers 0,1,2,..
>>> S=: 0 10#: 10* ". }. [;._2 noun define
>>> 0    1    2    3    4    5    6    7    8    9
>>> 1.1  2.1  3.1  4.1  5.1  6.1  7.1  8.1  9.1  10.1   NB. initial
>>> 1.0  2.2  3.2  4.2  5.2  6.2  7.2  8.2  9.2  10.2   NB. 0
>>> 1.2  2.0  3.2  4.2  5.2  6.2  7.2  8.2  9.2  10.2   NB. 1
>>> 1.2  2.2  3.0  4.2  5.2  6.2  7.2  8.2  9.2  10.2   NB. 2
>>> 1.2  2.2  3.2  4.0  5.2  6.2  7.2  8.2  9.2  10.2   NB. 3
>>> 1.2  2.2  3.2  4.2  5.0  6.2  7.2  8.2  9.2  10.2   NB. 4
>>> 1.2  2.2  3.2  4.2  5.2  6.0  7.2  8.2  9.2  10.2   NB. 5
>>> 1.2  2.2  3.2  4.2  5.2  6.2  7.0  8.2  9.2  10.2   NB. 6
>>> 1.2  2.2  3.2  4.2  5.2  6.2  7.2  8.0  9.2  10.2   NB. 7
>>> 1.2  2.2  3.2  4.2  5.2  6.2  7.2  8.2  9.0  10.2   NB. 8
>>> 1.2  2.2  3.2  4.2  5.2  6.2  7.2  8.2  9.2  10.0   NB. 9
>>> )
>>> v=:[: ,@:((#,{.)every) (0;S)&;:
>>> smoutput $ v^:40 Input=: 1 1 1 3 2 2 2 1 1 3
>>> smoutput $ v^:50 Input
>>> ----------------------------------------------------------------------
>>> 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