[Cascavel-pm] Intersecção e diferença entre arrays

Wendel Scardua wendelscardua em gmail.com
Quinta Janeiro 17 07:16:08 PST 2008


Continuando o golf...   (ainda não me conformo de não conseguir nada
melhor que 45 no codegolf.com/choose , mas tudo bem, rs)

* @a1 - @a2 , 46 chars:

@x{@a2}=(1)x em a2;print join', ',grep!$x{$_}, em a1

* @a1 inter @a2, 45 chars:

@x{@a1}=(1)x em a1;print join', ',grep$x{$_}, em a2

[]s
Wendel

2008/1/17 eden <edencardim em gmail.com>:
> Você pode usar o módulo List::Compare ... Mas isso merece um golf:
>
> O problema é:
>
> assumindo que as seguintes variáveis estão inicializadas:
>
> @a1=1..5;
> @a2=3..7;
>
> problema 1: imprimir @a1 - @a2 com os itens separados por vírgula. vai
> resultar em "1, 2"
> problema 2: imprimir @a1 ∩ @a2 com os itens separados por vírgula. vai
> resultar em "3, 4, 5"
>
> Minhas soluções:
>
> diferença:
>
> @a1{@a1}=1;
> delete @a1{@a2};
> print join ', ', keys %a1;
>
> intersecção:
>
> @a1{@a1}=1;
> print join ', ', grep { exists $a1{$_} } @a2;
>
> --
> edenc.vox.com


Mais detalhes sobre a lista de discussão Cascavel-pm