array - Cuente si hay más de 1 aparición en una matriz de 2d en Ruby
ruby slice (2)
Aquí hay una forma más clara de hacer lo que quiere, sin ninguna de las preocupaciones asociadas.
array.count{|i| i[1] == array.last[1]}
Tengo una matriz ordenada:
array = [[4, 13], [1, 12], [3, 8], [2, 8], [0, 3]]
Lo que me muestra una posición (matriz [n] [0]) y el número de ocurrencias de esa posición (matriz [n] [1]).
Necesito probar para ver si más de un elemento en la matriz tiene la misma cantidad de ocurrencias que el último elemento.
Pensé que podría hacerlo con esto:
array.detect {|i| i[1] == array.last[1] }.length
Pero devuelve 2 para la matriz anterior, y parece que también devuelve 2 para la siguiente matriz:
array = [[4, 13], [1, 12], [3, 8], [2, 3], [0, 3]]
Cuando lo ejecuto sin longitud, siempre devuelve la primera ocurrencia.
¿Hay alguna forma de que esto cuente las ocurrencias?
EDITAR:
Lo siento, haré mi pregunta de seguimiento en una nueva pregunta.
Intenta usar find_all
lugar de detect
. detect
devuelve la primera coincidencia. En su primer ejemplo, esa es la array[3]
, que es otra matriz de longitud 2. Es por eso que devuelve 2 (siempre debe devolver 2 o cero para sus matrices). find_all
devolverá una matriz de las coincidencias (en lugar de la primera coincidencia) y su longitud será el valor que desee.