6
votes

Comment obtenir un éventail de valeurs maximales entre deux tableaux

Je cherche un moyen élégant d'obtenir un tableau contenant les valeurs maximales entre deux tableaux.

Signification S'il y a deux tableaux: P>

c = Array.new(a.size)
for i in 0...a.size
  c[i] = [a[i], b[i]].max
end


3 commentaires

Pourquoi pas 9,5, .. ? valeurs maximales entre deux tableaux Quelle est la logique?


@Babai c'est le maximum sage d'élément


Pourquoi ne pas montrer le code que vous avez écrit pour nous faire savoir que vous avez essayé de trouver une réponse vous-même? C'est le chemin du débordement de la pile. "Les questions demandant au code doivent démontrer une compréhension minimale du problème résolu. Inclure les tentatives de solutions, pourquoi elles n'ont pas fonctionné et les résultats attendus. Voir aussi: Liste de contrôle de la pile de dépassement ".


3 Réponses :


14
votes

Cela devrait fonctionner: xxx

transpose retourne [[[1, 3], [5, 2], [9, 11]] < / Code> et Carte (&: max) trouve le maximum de chaque sous-tableau.

A.zip (b) (comme suggéré par Abe VOELKER) est équivalent à [a, b] .transposez si les deux tableaux ont le même nombre d'éléments. Si la taille de l'élément diffère, transpose augmenterait une exception: xxx

référence xxx

sortie xxx


4 commentaires

Mais, avec [A, B] .Transposez Vous ne pouvez pas faire un énumérateur paresseux comme vous le pouvez avec zip. Pour les grandes matrices, cela créera un grand nombre de matrices temporaires.


@stefan pouvez-vous faire référence maintenant s'il vous plaît? Vous êtes expert sur lequel je sais :)


Pour une référence future, je veux juste noter que les informations sur zip n'étaient pas dans votre réponse lorsque j'ai posté le mien; Votre Ninja Modifier ne s'affiche pas dans l'historique de modification :-) (Je ne veux tout simplement pas que la PPL pense que j'ai copié)


@Abevoelker Ouais, alors ne suit pas chaque changement, j'ai ajouté une référence à votre message.



7
votes
a.zip(b).map(&:max) # => [3, 5, 11]

1 commentaires

Sous Ruby 2.0, vous voudrez peut-être faire un zip paresseux, a.lazy.zip (b) .MAP (&: max) .to_a pour un gain de mémoire possible avec d'énormes tableaux (bien qu'à environ 2x Diminution de la vitesse)



4
votes

Comment est le ci-dessous?

Remarque: em> La taille doit être égale à la fois de la matrice. p>

    user     system      total        real
Stefan  0.047000   0.000000   0.047000 (  0.046874)
Abe     0.047000   0.000000   0.047000 (  0.046873)
babai1  0.031000   0.000000   0.031000 (  0.031249)
babai2  0.062000   0.000000   0.062000 (  0.062497)
babai3  0.032000   0.000000   0.032000 (  0.031249)


0 commentaires