Próbuję zgrupować tablicę liczb całkowitych w haszowanie na podstawie tego, gdzie poszczególne wartości mieszczą się w zakresie. Zasadniczo chcę przekonwertować tablicę na histogram o stałej szerokości.Ruby Array to Histogram: jak grupować liczby według zakresu?
przykład:
values = [1,3,4,4,4,4,4,10,12,15,18]
bin_width = 3
muszę grupy wartości tablicy w histogram zakresie oparte o, gdzie wchodzą one w 3-jednostkę szerokości wiadra tak:
{'0..2'=>[1,3],'3..5'=>[4,4,4,4,4],'6..8'=>[],'9..11'=>[10]....
jest istnieje proste rozwiązanie jednoliniowe (może coś takiego jak values.group_by{|x| #range calc}
), które działałoby tutaj?
pytania: 1) Chyba 3 powinny być 3..5. 2) po co używać ciągów jako kluczy zamiast prawdziwych zakresów ?, 3) potrzebujesz również pustych zakresów? – tokland
Nie powinno być obsesji na punkcie pisania jednoosobowych. Dążenie do rozwiązań, które obejmują tylko wyrażenia (to jest to, stosując podejście funkcjonalne) tak, obawiając się przydziałów, aby zapisać kilka linii, nie. – tokland