Ruby: какой простой способ проверить, все ли значения в 2D-массиве одинаковы в определенном столбце или строке? - PullRequest
3 голосов
/ 29 января 2011
[[0, 1, 2],
 [2, 1, 0],
 [0, 1, 2]]

Какой простой способ проверить, что в этой матрице все значения в столбце одинаковые?

[[0, 1, 0],
 [2, 2, 2],
 [0, 1, 2]]

А потом по горизонтали?

Ответы [ 2 ]

4 голосов
/ 29 января 2011

1.

a.map{|row|row[x]}.uniq.size == 1

или

a.transpose[x].uniq.size == 1

2.

a[x].uniq.size == 1
1 голос
/ 29 января 2011

Чтобы проверить, есть ли строка, в которой все элементы одинаковы, вы можете сделать:

array.any? do |row|
  row.all? {|item| row[0] == item }
end

Чтобы проверить, есть ли столбец, вы можете сначала перенести массив, а затем сделать то же самое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...