[Rio-pm] Golfe! lendo arquivos, ordenando entradas e removendo duplicadas

breno breno em rio.pm.org
Terça Março 4 10:34:00 PST 2008


Salve, pessoal! (Não, sério, salvem sempre... acabei de perder vários
arquivos aqui)

Hoje vieram falar comigo com um código Perl de 11 linhas que recebe um
arquivo no seguinte formato:

-------------8<-----------------
palavra1
palavra2
palavra3
....
-------------8<-----------------

e retorna uma lista com todas as palavras ORDENADAMENTE e SEM REPETIÇÕES.

Daí pensei cá com meus botões... dá pra fazer em 1 linha... e eis que
saiu minha tacada:


perl -ne 'push em a,$_ unless$v{$_}++;END{@a=sort em a;print em a}' lista.txt
lista2.txt ...


47 caracteres. Mas como não sou um praticante ávido de Golfe (salve
salve mestre Fernando), tenho certeza que dá pra fazer em menos. Notem
que desse jeito, ao contrário do código inicial, é possível passar
quantos arquivos de lista de palavras tiverem, e ele vai ordenar e
remover duplicadas como se tudo fosse um único arquivão.

Quem se habilita ao desafio?

Dica: acho que trabalhando com concatenação de strings (ao invés de
push em lista) fica bem menor...


[]s

-b


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