Sto provando a raggruppare un array di numeri interi in un hash in base a dove i singoli valori rientrano in un intervallo. Fondamentalmente voglio convertire una matrice in un istogramma a larghezza fissa.Ruby Array to Histogram: come raggruppare i numeri per intervallo?
Esempio:
values = [1,3,4,4,4,4,4,10,12,15,18]
bin_width = 3
devo raggruppare i valori di matrice in un historgram gamma-based dove cadono in un ampio secchio 3 elementi in questo modo:
{'0..2'=>[1,3],'3..5'=>[4,4,4,4,4],'6..8'=>[],'9..11'=>[10]....
Is c'è una soluzione a linea semplice (forse qualcosa come values.group_by{|x| #range calc}
) che funzionerebbe qui?
domande: 1) Credo che 3 dovrebbe essere in 3..5. 2) perché usare le stringhe come chiavi al posto delle gamme reali? 3) hai bisogno anche degli intervalli vuoti? – tokland
non ci dovrebbe essere ossessione per scrivere one-liner. Sforzarsi per soluzioni che riguardano solo espressioni (che è, usando un approccio funzionale) sì, temendo incarichi per salvare un paio di linee, no. – tokland