LINUX.ORG.RU

уникальные элементы в массиве массивов

 ,


0

1

Всем привет! Есть такая структура:

@a1 = qw(a b c);
@a2 = qw(c b a);
@a3 = qw(b c a);
@a4 = qw(a b d);
...
@array_all = (@a1, @a2, @a3, @a4);

как имея @array_all, отбросить повторяющиеся cba/bca, оставив abc/abd. Т.е. найти лишь уникальные массивы в массиве, по значениям. Безотносительно их порядкового номера.

Заранее спасибо за любую помощь.

Deleted

что то типа: a1 ~~ сверить с каждым, и так далее для всех, по есть перебором

anonymous ()
Ответ на: комментарий от ziemin

бгг... спасибо, вылетело из головы :)

Deleted ()

Это же плоский массив, для массива массивов надо так: (\@a1, \@a2, \@a3, \@a4);

uniq в perl обычно делается через хеш

disarmer ★★★ ()

Какая-то странная задача. Уникальные элементы: a b c d. Уникальные триплеты: все четыре уникальны. Чем уникален abc/abd от cba или bca?

Update: догнал

gh0stwizard ★★★★★ ()
Последнее исправление: gh0stwizard (всего исправлений: 1)
#!/usr/bin/env perl
use strict;
use warnings;

my @a1 = qw(a b c);
my @a2 = qw(c b a);
my @a3 = qw(b c a);
my @a4 = qw(a b d);
my @array_all = (@a1, @a2, @a3, @a4);

my %hash_all = map { $_, undef } @array_all;

my @array_uniq = keys %hash_all;

foreach( @array_uniq )
{
  print "$_\n";
}
$ perl uniq.pl 
c
a
b
d

DELIRIUM ☆☆☆☆☆ ()
Ответ на: комментарий от DELIRIUM

немного не то, что требуется. @array_all - массив массивов, звиняй, в ОП не указал сразу.

push @uAoA, $_ if !$h{join $;, @$_}++;

У тебя по ссылке наркоманы!

что тебя тут смутило? склеивание элементов в ключ хэша? :-D

Deleted ()
Ответ на: комментарий от gh0stwizard

но не в такой ужасной постановке

эмм, ват? :)

Deleted ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.