0
votes

Vérifiez si tous les éléments du tableau 2D sont égaux (Ruby)

En regardant ici, j'ai défini la méthode actuelle de test si un tableau de taille inconnue contient des éléments correspondants;

test = [[2,2,2,2,2,2],
        [2,2,2,2,2,2],
        [2,2,2,2,2,2],
        [2,2,2,2,2,2],
        [2,2,2,2,2,2],
        [2,2,2,2,2,2],
        [2,2,2,2,2,2]]

def is_identical? array
array.uniq.length == 1
end

def all_identical? array
array.each { |subarray| puts is_identical?(subarray)} 
end

print "Primary array contains matching elements? "
puts is_identical?(test)
puts "Subarrays each contain matching elements?"
all_identical?(test)

=begin
  if (2d elements are all identical) == true
    "YAY"
  end
=end


4 commentaires

Votre question n'est pas claire. Mettre à jour et fournir un exemple de cas de test. Sinon, pourquoi ne pouvez-vous pas simplement utiliser l'opérateur de comparaison `==` i.e. array_a == array_b ?


Bonjour @lacostenycoder - Je viens de mettre à jour le poste, j'espère que c'est plus clair. Vous ne savez pas comment j'utiliserais l'opérateur de comparaison dans ce cas ... des conseils?


Tout ce dont vous avez besoin est arr.flatten.uniq.size == 1 pour n'importe quel niveau de nid de matrice.


Bon à savoir, merci @CarySwoveland - édité!


3 Réponses :


0
votes

Je ne suis pas sûr que ce soit le moyen le plus efficace de le faire, mais c'est la meilleure idée que je pouvais penser: xxx


0 commentaires

0
votes

Pour vérifier une matrice de dimension, comme vous l'avez déjà fait:

test.all? { |e| e == test.first }


1 commentaires

test.all? a la vertu de revenir dès qu'un élément est deferent.



0
votes

Vous n'avez besoin de rien de plus que ce simple 1 doublure

[[1,2,3],[1,2,3],[1,2,3]].uniq.count == 1 #=> true

[[1,2],[1,2,3],[1,2,3]].uniq.count == 1 #=> false


0 commentaires