[Jprogramming] All anagrams, ignoring reversal

Mike Day mike_liz.day at tiscali.co.uk
Thu Jun 16 06:40:43 UTC 2016


Not so elegant, then!

Would have been nice....

M



On 16/06/2016 00:33, Roger Hui wrote:
> Your version is incorrect?
>
>     (g allperms 4) -: (A.&i.~ -:&!)4
> 0
>
>     (g allperms 4) ; (A.&i.~ -:&!)4
> ┌───────┬───────┐
> │0 1 2 3│0 1 2 3│
> │0 1 3 2│0 1 3 2│
> │0 2 1 3│0 2 1 3│
> │0 2 3 1│0 2 3 1│
> │0 3 1 2│0 3 1 2│
> │0 3 2 1│0 3 2 1│
> │1 0 2 3│1 0 2 3│
> │1 0 3 2│1 0 3 2│
> │1 2 0 3│1 2 0 3│
> │1 3 0 2│1 2 3 0│
> │2 0 1 3│1 3 0 2│
> │2 1 0 3│1 3 2 0│
> └───────┴───────┘
>
> - Both 0 2 3 1 and its reversal occurs in your result
> - Neither 2 0 1 3 nor its reversal occurs in your result
>
>
>
>
> On Wed, Jun 15, 2016 at 4:16 PM, Mike Day <mike_liz.day at tiscali.co.uk>
> wrote:
>
>> I like your version of all perms; it's even more elegant than
>> tap =: i.@! A. i.
>>
>> Anyway,  a quite elegant variant produces what I think you
>> require,  here with a transpose to save lines:
>>     |:(A.&i.~ -:&!)4
>> 0 0 0 0 0 0 1 1 1 1 1 1
>> 1 1 2 2 3 3 0 0 2 2 3 3
>> 2 3 1 3 1 2 2 3 0 3 0 2
>> 3 2 3 1 2 1 3 2 3 0 2 0
>>
>> Any use?
>> Mike
>>
>>
>> On 15/06/2016 22:42, Louis de Forcrand wrote:
>>
>>> Hi,
>>>
>>> How would you go about generating all unique permutations of a list,
>>> while counting each perm and its reversal as one?
>>> A perhaps clearer (but less efficient) way of doing this is generating
>>> all permutations and then removing (reversed) duplicates:
>>>
>>>      allperms=: (A.&i.~ !) 4 NB. 4 is just an example
>>>      ]those_I_want=: ([: {."2@~. (/:~@,: |.)"1) allperms
>>> 0 1 2 3
>>> 0 1 3 2
>>> 0 2 1 3
>>> 0 2 3 1
>>> 0 3 1 2
>>> 0 3 2 1
>>> 1 0 2 3
>>> 1 0 3 2
>>> 1 2 0 3
>>> 1 3 0 2
>>> 2 0 1 3
>>> 2 1 0 3
>>>
>>> There is surely a better way to do this!
>>>
>>> Thanks,
>>> Louis
>>>
>>> ----------------------------------------------------------------------
>>> 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


---
This email has been checked for viruses by Avast antivirus software.
https://www.avast.com/antivirus



More information about the Programming mailing list