Nice and direct - and yet, somehow, an approach which had not occurred to me.

Thanks,

-- 
Raul


On Sat, Jun 24, 2017 at 6:06 AM, 'Mike Day' via Programming
<[email protected]> wrote:
> Oops - that diagnostic "q" was unnecessary:
>
> c =: 3 : 0
>
> m =. >./y
>
> for_i. }.>:i.#y do.
>
> m =. m >. >./ i ([ * <./\) y
>
> end.
>
> )
>
> ts'c qq'
>
> 0.0143082 21632
>
> M
>
>
> On 24/06/2017 10:53, 'Mike Day' via Programming wrote:
>>
>> This explicit version is faster and much less space intensive;
>>
>> same idea but the do loop avoids holding the square array.
>>
>> Still no early stopping condition though:
>>
>> c =: 3 : 0
>>
>> m =. >./y
>>
>> for_i. }.>:i.#y do.
>>
>> m =. m >. >./ q =. i ([ * <./\) y
>>
>> end.
>>
>> )
>>
>> ts'a qq' NB. qq as previous post, below
>>
>> 0.0316207 2.24246e7
>>
>> ts'c qq'
>>
>> 0.0149281 28544
>>
>> Thanks,
>>
>> Mike
>>
>>
>> On 24/06/2017 10:09, 'Mike Day' via Programming wrote:
>>>
>>> Having at last had a go at solving this, post breakfast (if not Brexit).
>>> I don't think it's a new approach,  but it's fairly nifty.
>>>
>>> It considers run lengths times heights.
>>>
>>>    a =: >./^:2@:(>:@i.@# ([ * <./\) ])
>>>    qq=:1000?.1000000
>>>
>>>    a qq
>>>
>>> 7030779
>>>
>>>
>>>    ts'a qq'      NB. time & space
>>> 0.0328879 2.24246e7
>>>
>>>    ts'maxsqr qq'
>>> 0.0385574 322944
>>>
>>> So - marginally faster,  but rather space intensive.
>>>
>>> Probably better with a stopping condition,  perhaps using ^:_ , rather
>>> than
>>> doing all possible heights,  but the code would be a bit more
>>> complicated, I think.
>>>
>>> Cheers,
>>>
>>> Mike
>>>
>>>
>>>
>>> On 21/06/2017 14:12, Raul Miller wrote:
>>>>
>>>>     nsqr=: [ * maxbitlen@ceilpos"0 1~
>>>>     maxsqr=: >./@(nsqr ~.)
>>>
>>>
>>>
>>>
>>> ---
>>> This email has been checked for viruses by Avast antivirus software.
>>> https://www.avast.com/antivirus
>>> ----------------------------------------------------------------------
>>> 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