[Rio-pm] Golfe! lendo arquivos, ordenando entradas e removendo duplicadas
Marco A P D'Andrade
mdacwb em gmail.com
Terça Março 4 11:21:07 PST 2008
Adriano++
Mas o que eu propus foi simplesmente:
sort -u lista.txt
Mesma abordagem do one-liner !
Ok... não se aplica em perl golf, mas é uma solução simples para o proglema ;)
Sds,
Marco Antonio
Em 04/03/08, breno<breno em rio.pm.org> escreveu:
> Bah, mas a gente tá falando de desenvolver um programa que faça isso.
> Pensando assim poderiamos chamar o prog de "a" e fazer o Ultimate
> Shell Script:
>
> ./a
>
> e ganhamos o golfe com 1 caractere. A idéia é fazer um programa que
> resolva o problema. Usando os próprios recursos do shell, a sua
> resposta não ganha não:
>
> $ wc -c /usr/bin/sort
> 39736 /usr/bin/sort
>
> muito mais até do que a maior resposta :-)
>
> []s
>
> -b
>
> 2008/3/4 Marco A P D'Andrade <mdacwb em gmail.com>:
>
> > Ah!
> >
> > A Camila foi mais rapida no gatilho :D
> >
> > Mas, como eu gosto de usar Perl onde ele é a melhor solução... nesta
> > dá para dar uns pontinhos pro Julio Neves ... ;)
> >
> > sort -u
> >
> > Sds,
> > Marco Antonio
> >
> > Em 04/03/08, Marco A P D'Andrade<mdacwb em gmail.com> escreveu:
> > > 32 caracteres ;)
> > >
> > > perl -ne '$v{$_}++;END{print sort keys%v}'
> > >
> > > Pra que um array, se vc está controlando em hash ?
> > >
> > >
> > > Em 04/03/08, breno<breno em rio.pm.org> escreveu:
> >
> >
> > >
> > > > 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
> > > > >
> >
> >
> > > > _______________________________________________
> > > > Rio-pm mailing list
> > > > Rio-pm em pm.org
> > > > http://mail.pm.org/mailman/listinfo/rio-pm
> > > >
> > >
> > _______________________________________________
> > Rio-pm mailing list
> > Rio-pm em pm.org
> > http://mail.pm.org/mailman/listinfo/rio-pm
> >
> _______________________________________________
> Rio-pm mailing list
> Rio-pm em pm.org
> http://mail.pm.org/mailman/listinfo/rio-pm
>
Mais detalhes sobre a lista de discussão Rio-pm