in reply to GOLF challenge: destroy dup array elements
Some idea of the complexity may be understood by saying how many distinct elements @a_list produces:
There are good arguments for 1, 2, and 3...my $ref = []; @a_list = ([[], []], [[], []], [$ref, $ref]);
The easiest and therefore usual answer is, "They are the same if they yield the same strings in string context." (That would give 3 above.) That is reasonable. And it can be done with 21 characters:
To do substantially better than this, what you need to do is decide on a canonical representation. For instance use Storable to turn data into strings, using the appropriate flag for canonical order. The full code for that is..somewhat longer than for above. And will break when you start to throw around closures, etc...sub r{ #23456789_123456789_1 my%e;grep!$e{$_}++,@_ }
|
|---|