[Cascavel-pm] Somar elementos numericos de um array
Luis Motta Campos
luismottacampos em yahoo.co.uk
Terça Abril 10 00:12:41 PDT 2007
On Apr 9, 2007, at 4:57 PM, Patty Silva wrote:
> Pessoal.. tem como eu somar elementos numericos de um array?
> ex:
> @teste=(1,2,4,1,3,1,1,1,4,56,7,8,9);
> somar=1+2+4+1+3....
> sem precisar do for?
Patty
O pessoal sugeriu que você usasse outros métodos, que eu considero
equivalentes ao FOR: MAP, List::Util e outros. Aqui tem uma sugestão
genérica, que é complicada de ler, não serve para código de produção
mas é educativa.
Conceito: você está precisando somar uma lista de números.
Solução sugerida: construa um programa que faça isso e rode o
programa, colete o resultado no final.
Implementação:
#!/usr/bin/perl
use strict;
use warnings;
use English; # Para poder dizer $LIST_SEPARATOR ao invés de $"
my @numeros = 1..100;
my $soma;
local $LIST_SEPARATOR = '+'; # se você não usar "English", use
($"), que é a mesma coisa.
my $programa = qq{\$soma = @numeros};
eval $programa;
if( $@ ) { # erro no programa?
print STDERR "$@";
} else {
print $soma, $/;
}
__END__
Como você pode ver, meu programa não usa loops (bom, o CORE do
Perl usa, mas isto é o mais perto que se pode chegar da ausência de
loops...)
Alguém pode por favor incluir a minha sugestão nos benchmarks?
Putamplexos!
--
Luis Motta Campos (a.k.a. Monsieur Champs) is a software engineer,
Perl fanatic evangelist, and amateur {cook, photographer}
Mais detalhes sobre a lista de discussão Cascavel-pm