Comment puis-je somme les tableaux de l'élément de sage en Perl?
J'ai deux tableaux:
@arr1 = ( 1, 0, 0, 0, 1 );
@arr2 = ( 1, 1, 0, 1, 1 );
Je veux somme des éléments des deux tableaux pour obtenir de nouveau comme
( 2, 1, 0, 1, 2 );
Puis-je le faire sans boucle, par le biais de réseaux?
Les chiffres sont toujours à 0 et de 1? Si oui, vous pourriez traiter que comme un entier et juste ajouter deux entiers ensemble pour vous donner un troisième entier avec les mêmes chiffres de ce tableau.
Évidemment, cela suppose également que le nombre de chiffres est petit.
C'est OK. J'ai seulement des 0 et des 1.
Pourquoi ne voulez-vous pas en boucle sur eux? Vous avez une certaine aversion pour résoudre le problème et de passer dans la vie? 🙂
Si les tableaux sont énormes et que la vitesse est un problème envisager PDL perlmonks.org/?node_id=598007
Évidemment, cela suppose également que le nombre de chiffres est petit.
C'est OK. J'ai seulement des 0 et des 1.
Pourquoi ne voulez-vous pas en boucle sur eux? Vous avez une certaine aversion pour résoudre le problème et de passer dans la vie? 🙂
Si les tableaux sont énormes et que la vitesse est un problème envisager PDL perlmonks.org/?node_id=598007
OriginalL'auteur Dmytro Leonenko | 2009-12-08
Vous devez vous connecter pour publier un commentaire.
pour Perl 5:
Je pensais que tu voulais le résultat dans une référence à un tableau, sinon crochets ne sont pas nécessaires
Ne fonctionne pas dpaste.com/130684
ne pas déclarer my($a,$b) - ils sont des variables spéciales ici et "pairwise" prend soin de $a et $b localisation pour vous
Cela ne fait boucle sur les deux tableaux, il est juste caché à l'intérieur de deux à deux.
OriginalL'auteur catwalk
Si vous utilisez Perl 6:
La Perl 6 Calendrier De L'Avent a d'autres exemples.
Voir @passerelle pour Perl 5 mise en œuvre.
est
<<+>>
l'aéroglisseur de l'opérateur?Je pense que c'est peut être l'OVNI de l'opérateur.
OriginalL'auteur rjstelling
Fondamentalement, non, vous ne pouvez pas le faire sans "en boucle par le biais de réseaux" parce que vous avez besoin pour accéder à tous les éléments des deux tableaux afin de somme. À la fois les réponses pour l'instant juste cacher la boucle sous une couche d'abstraction, mais il est toujours là.
Si vous êtes inquiet au sujet de boucler sur de très grands tableaux, il est probablement préférable d'envisager d'autres façons de garder la somme à la date que vous allez.
OriginalL'auteur rjp
quel est le problème avec le bouclage des tableaux? c'est la base.
je sais exactement ce que je fais. Je n'aime pas penser que compliqué, c'est tout.
OriginalL'auteur ghostdog74
Vous avez vu un style C pour la boucle, et
pairwise
. Voici un idiomatiques Perl pour la boucle etmap
:J'aime
map
etpairwise
meilleur. Je ne suis pas sûr que j'ai une préférence entre ces deux options.pairwise
poignées de certains détails ennuyeux de plomberie pour vous, mais il n'est pas intégré commemap
. D'autre part, la solution map est très idiomatique, et peut être opaque à temps partiel perler.Donc, pas de réel gagne pour l'une ou l'autre approche. De l'OMI, à la fois
pairwise
etmap
sont bonnes.OriginalL'auteur daotoad
Si vous êtes vraiment peur de la boucle, alors vous pouvez binaire hacher les tableaux, la somme des paires, puis, de manière récursive remonter le tableau résultant. Pas de boucle là, et comme un bonus que vous obtenez à savoir comment une partie de la rapide transformation de fourier de la dérivation des œuvres.
OriginalL'auteur parm
De http://www.perlmonks.org/?node_id=122393
Ou:
Ou:
Ou (Perl 6):
OriginalL'auteur Vinicius José Latorre
À éviter (explicite) de la boucle, voici une solution qui utilise la récursivité "au lieu de":
De sortie:
Noter que
use v5.20
signifie que vous n'avez pas à écrireuse strict; use warnings
, je pense.Excuses/bravo à @parm pour l'idée.
OriginalL'auteur asjo
Je ne suis pas sûr de ce que vous comptez faire avec la somme une fois que vous l'avez, mais vous prévoyez de ne plus le vecteur y des trucs de type, puis Math::Matrice pourrait être un bon ajustement.
OriginalL'auteur mwp