[Cascavel-pm] Golfe! Re: Brincadeira / desafio aos Monges

Daniel Ruoso daniel em ruoso.com
Segunda Março 13 06:43:21 PST 2006


Em Sáb, 2006-03-11 às 12:17 -0300, Gabriel Vieira escreveu:
> --------------->8----------------
> @valida = ("par","impar");
> while(1){
>  chomp(my $numero = <STDIN>);
>  print &verifica($numero);
> 
> }
> sub verifica{
>  my $numero = shift;
>  return "$numero) é ". $valida[($numero % 2)] . "\n";
> }
> -------------8<--------------
> resolve? :D

Golfe!

print'é '.('par','impar')[shift()&1]

Obs: como ele nao dizia que precisava ler do STDIN, aceitei o numero
como argumento do aplicativo...

Para ser didatico:
1) shift() sem parametros pode pegar os argumentos passados ao programa.

2) Caso não tenham notado, quis utilizar um método diferente para ver se
é ou não par... o % funciona vendo se existe diferença na divisão por 2.
O método que eu utilizei verifica se o bit menos significativo está
setado ou não... ou seja, como o bit menos significativo vale 1, sempre
que ele tive setado é pq o número é impar.

3) Você pode usar a lista anonimamente e referenciar um elemento direto
dela. Foi isso que eu fiz. ('par','impar') eh uma lista, que acesso o
elemento shift()&1 (0 se par, 1 se impar) anonimamente.

Então em 37 caracteres resolvi a questão (aproveitando a resposta do
Grabriel, claro). Alguem faz em menos?

daniel



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