Using RE’s and Henry’s suggestions, a slight generalisation to your #3 …

as2=: ;(#\ <@<"1@([\) ]) ‘abcdef'

Rob

> On 26 Oct 2019, at 7:36 am, Skip Cave <s...@caveconsulting.com> wrote:
> 
> Roger,
> 
> Nice! It seems there are many different approaches:
> 
> allsubsets=: #:@i.@(2&^)@# #"_1 _ ]
> as=.3 :';<@(<\.)\y'
> ;(>:i.5) (|.@[ <@{."0 1 <\) 'abcde'
> 
> Even if the result is to be integers, It seems it is easier to start with
> literals and then convert to integers later, if at all.
> 
> My next challenge is to generate all *permutations* of all subsets.
> 
> Skip
> 
> 
> 
> Skip Cave
> Cave Consulting LLC
> 
> 
> On Thu, Oct 24, 2019 at 1:54 PM Roger Hui <rogerhui.can...@gmail.com> wrote:
> 
>>   allsubsets=: #:@i.@(2&^)@# #"_1 _ ]
>>   allsubsets 'abcd'
>> 
>> d
>> c
>> cd
>> b
>> bd
>> bc
>> bcd
>> a
>> ad
>> ac
>> acd
>> ab
>> abd
>> abc
>> abcd
>>   allsubsets ;:'animal vegetable mineral'
>> ┌─────────┬─────────┬───────┐
>> │         │         │       │
>> ├─────────┼─────────┼───────┤
>> │mineral  │         │       │
>> ├─────────┼─────────┼───────┤
>> │vegetable│         │       │
>> ├─────────┼─────────┼───────┤
>> │vegetable│mineral  │       │
>> ├─────────┼─────────┼───────┤
>> │animal   │         │       │
>> ├─────────┼─────────┼───────┤
>> │animal   │mineral  │       │
>> ├─────────┼─────────┼───────┤
>> │animal   │vegetable│       │
>> ├─────────┼─────────┼───────┤
>> │animal   │vegetable│mineral│
>> └─────────┴─────────┴───────┘
>> 
>> 
>> 
>> On Thu, Oct 24, 2019 at 11:30 AM Skip Cave <s...@caveconsulting.com>
>> wrote:
>> 
>>> I find R. E. Boss' function quite useful in many instances. I call it
>> "all
>>> sets". Is this a standard idiom in J? Is there a more efficient
>>> construction that does this? Is there a primitive that does this?
>>> 
>>> as=.3 :';<@(<\.)\y' NB. All Sets
>>> 
>>> as i.5
>>> 
>>> │0│0 1│1│0 1 2│1 2│2│0 1 2 3│1 2 3│2 3│3│0 1 2 3 4│1 2 3 4│2 3 4│3 4│4│
>>> 
>>> 
>>> Skip
>>> 
>>> 
>>> 
>>> On Thu, Oct 24, 2019 at 12:30 PM R.E. Boss <r.e.b...@outlook.com> wrote:
>>> 
>>>> Obviously the squares >2018 don't play any role whatsoever, so you can
>>>> restrict yourself to %:2018
>>>> 
>>>>> a#~2018=>+/ each a=.;<@(<\.)\2^~i.>.%:2018
>>>> 49 64 81 100 121 144 169 196 225 256 289 324
>>>> 
>>>> R.E. Boss
>>>> 
>>>> 
>>>>> -----Oorspronkelijk bericht-----
>>>>> Van: Programming <programming-boun...@forums.jsoftware.com>
>>>>> Namens Skip Cave
>>>>> Verzonden: donderdag 24 oktober 2019 19:12
>>>>> Aan: programm...@jsoftware.com
>>>>> Onderwerp: Re: [Jprogramming] Quora problem
>>>>> 
>>>>> To me it seems that R. E. Boss provided the simplest approach.
>>>>> Don't know about efficiency, but the results appear instantly:
>>>>> 
>>>>>> a#~2018=>+/ each a=.;<@(<\.)\2^~i.100
>>>>> 
>>>>> 49 64 81 100 121 144 169 196 225 256 289 324
>>>>> 
>>>>> Skip
>>>>> 
>> ----------------------------------------------------------------------
>>>>> 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