Yes. Has anyone investigated the relative strengths of these idioms? What’s the 
overhead of setting up the sparse representation?
If I always use my version, it’s just that I’m lazy,

Cheers

Mike

Sent from my iPad

> On 24 Oct 2019, at 10:16, R.E. Boss <r.e.b...@outlook.com> wrote:
> 
> Your ixbin is equal to (4&$.$.)
> 
> 
> R.E. Boss
> 
> 
>> -----Oorspronkelijk bericht-----
>> Van: Programming <programming-boun...@forums.jsoftware.com>
>> Namens 'Mike Day' via Programming
>> Verzonden: donderdag 24 oktober 2019 11:08
>> Aan: programm...@jsoftware.com
>> Onderwerp: Re: [Jprogramming] Quora problem
>> 
>> (I see RE Boss has just posted, while I was drafting - sorry if it's the
>> same!)
>> 
>> I thought to exploit the property that
>> S3(n) = sum i^2, i <: n, is n(n+1)(2n+1)%6 but solving S(n) - S(m) = 2018 
>> isn't
>> that easy!
>> Anyway, we could define
>>      S3  =:  6 <.@%~ (* (>: * >:@+:))
>> but as we need a string of squares it's overkill.
>> Either way,  it's useful to be able to identify the indices of ones in a 
>> boolean
>> matrix:
>>     ixbin =: $#.inv I.@,
>> 
>> So we get, accprding to taste:
>> 
>>   -/"1 ixbin 2018 = -/~ +/\ *: i. >: 20
>> 12
>>    -/"1 ixbin 2018 = -/~ S3 i. 20 NB. not as efficient as it looks!
>> 12
>> 
>> 
>>    ts'-/"1 ixbin 2018 = -/~ S3 i. 20'
>> 1.53e_5 8768
>>    ts'-/"1 ixbin 2018 = -/~ +/\ *: i. >: 20'
>> 8.7e_6 9856
>> 
>> MIke
>> 
>> 
>> 
>> 
>>> On 24/10/2019 07:36, Skip Cave wrote:
>>> I occasionally try to solve Quora math problems to polish my J skills.
>>> Here's a problem that
>>> 
>>> * "The integer 2018 can be written uniquely as the sum of consecutive
>>> squared integers. How many squares does the sum contain?"*
>>> 
>>> a=.2^~i.100
>>> 
>>> NB. Find how many consecutive squared integers it takes to sum to
>>> 2018. Try each length until I get a hit.
>>> 
>>> +/2018=+/"1]5,\a
>>> 
>>> 0
>>> 
>>> +/2018=+/"1]6,\a
>>> 
>>> 0
>>> 
>>> +/2018=+/"1]7,\a
>>> 
>>> 0
>>> 
>>> +/2018=+/"1]8,\a
>>> 
>>> 0
>>> 
>>> +/2018=+/"1]9,\a
>>> 
>>> 0
>>> 
>>> +/2018=+/"1]10,\a
>>> 
>>> 0
>>> 
>>> +/2018=+/"1]11,\a
>>> 
>>> 0
>>> 
>>> +/2018=+/"1]12,\a
>>> 
>>> 1 NB. A hit!
>>> 
>>> +/2018=+/"1]13,\a
>>> 
>>> 0
>>> 
>>> 
>>> So the answer is 12
>>> 
>>> List them:
>>> 
>>> b#~2018=+/"1 b=.12,\a
>>> 
>>> 49 64 81 100 121 144 169 196 225 256 289 324
>>> 
>>> 
>>> Is there a way to do this search without explicit looping?
>>> 
>>> 
>>> Skip
>>> 
>>> 
>>> Skip Cave
>>> Cave Consulting LLC
>>> ----------------------------------------------------------------------
>>> For information about J forums see
>> http://www.jsoftware.com/forums.htm
>> 
>> 
>> 
>> --
>> 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

Reply via email to