Estoy tratando de agrupar una matriz de enteros en un hash en función de dónde caen los valores individuales en un rango. Básicamente, quiero convertir una matriz a un histograma de ancho fijo.Ruby Array to Histogram: cómo agrupar números por rango?
Ejemplo:
values = [1,3,4,4,4,4,4,10,12,15,18]
bin_width = 3
necesito grupo los valores de la matriz en un historgram a base de gama por donde caen en una amplia cubo 3-unidad, así:
{'0..2'=>[1,3],'3..5'=>[4,4,4,4,4],'6..8'=>[],'9..11'=>[10]....
Es hay una solución simple de una línea (tal vez algo como values.group_by{|x| #range calc}
) que funcionaría aquí?
preguntas: 1) Creo que debería estar en 3 3..5. 2) ¿por qué usar cadenas como teclas en lugar de rangos reales ?, 3) ¿necesita también los rangos vacíos? – tokland
no debería haber obsesión por escribir frases ingeniosas. Esforzarse por soluciones que solo involucren expresiones (eso es, usar un enfoque funcional) sí, temer las asignaciones para guardar un par de líneas, no. – tokland