Ich versuche, ein Array von Ganzzahlen zu einem Hash zu gruppieren, basierend auf dem, wo die einzelnen Werte in einen Bereich fallen. Grundsätzlich möchte ich ein Array in ein Histogramm mit fester Breite konvertieren.Ruby Array to Histogram: Wie gruppieren Zahlen nach Bereich?
Beispiel:
values = [1,3,4,4,4,4,4,10,12,15,18]
bin_width = 3
ich die Array-Werte in einem Bereich basierenden historgram von wo sie fallen in eine 3-gliedrige breiten Schaufel wie so zu gruppieren müssen:
{'0..2'=>[1,3],'3..5'=>[4,4,4,4,4],'6..8'=>[],'9..11'=>[10]....
Ist gibt es eine einfache Ein-Zeilen-Lösung (vielleicht so etwas wie values.group_by{|x| #range calc}
), die hier funktionieren würde?
Fragen: 1) Ich denke, 3 in 3..5 sein sollte. 2) Warum verwenden Sie Strings als Schlüssel anstelle von echten Bereichen ?, 3) Sie brauchen auch die leeren Bereiche? – tokland
sollte es keine Obsession sein, One-Liner zu schreiben. Streben nach Lösungen, die nur Ausdrücke beinhalten (das ist es, mit einem funktionalen Ansatz) ja, aus Angst, Zuweisungen, um ein paar Zeilen zu speichern, nein. – tokland