2010-11-22 6 views
0
@a1 = qw(1 2 3) 
@a2 = qw(1 2 3 4 5) 

regardant la résultante d'un calcul entre a1 et a2 être inséré comme la valeur de a2 [0]. exemple serait 1 + 1 = 2 aller dans a2 [0] comme 2, alors le prochain calcul serait 2 + 2 (a2 [0] + a1 [1]) résultant en a2 [0] = 4, puis 4 + 3 (a2 [0] + a1 [2]) résultant en a2 [0] = 7, puis passer à la ligne suivante en a2 et effectuer la même fonction contre a1.Perl boucle entre deux tableaux

quand tout dit et fait le résultat serait de print @a2;

+1

Alors, où faites-vous face au problème dans la mise en œuvre de ce ?? Quel est le problème exact que vous vouliez aborder ici? –

+1

ressemble à des devoirs – dietbuddha

+0

J'ai essayé 'my $ a2 = map {my $ a = $ _; map {$ _ + $ a} @ a1} @ a2; 'en tant que carte imbriquée mais cela ne fonctionne pas. J'ai fatigué foreach boucles, mais là je ne peux pas rompre la limite d'avoir à lister chaque élément de @ a1 'foreach (@ 2) {$ _ = $ a1 [0] + $ _; $ _ = $ a1 [1 ] + $ _; $ _ = $ a1 [2] + $ _; } ' –

Répondre

2

donc essentiellement vous ajoutez le total des valeurs dans le premier réseau à chaque élément de la seconde matrice .

my $total = 0; 
($total += $_) for @a1; 
($_ += $total) for @a2; 
+0

Parfait, si simple et je pensais beaucoup trop. Merci et ceci est maintenant résolu. –

2

Utilisation des fonctions de liste pertinentes:

#!/usr/bin/env perl 

use strict; 
use warnings; 

use List::Util  qw(sum ); 
use List::MoreUtils qw(apply); 

my @a1 = qw(1 2 3 ); 
my @a2 = qw(1 2 3 4 5); 

my $sum = sum(@a1); 

@a2 = apply { $_ += $sum } @a2; 

Se référer:

Voir aussi Fergal's answer, ce qui est plus simple dans ce cas.

Questions connexes