[Rio-pm] Golfe! lendo arquivos, ordenando entradas e removendo duplicadas
breno
breno em rio.pm.org
Terça Março 4 11:01:20 PST 2008
perl -ne 'push em a,$_ unless$v{$_}++;END{print sort em a}'
42 caracteres :-)
Me ocorreu que a transição do sort era desnecessária assim que eu li
meu próprio post :-)
[]s
-b
2008/3/4 breno <breno em rio.pm.org>:
> 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