ruby - How to split an array into sub-arrays based on integer values -



ruby - How to split an array into sub-arrays based on integer values -

i need know how break array sub-arrays based on value of integers in array. i'm trying take big array , break 1-10, 11-20, 21-30...etc , need able count sub arrays have numbers "7 integers between 1-10, 6 integers between 11-20, 12 integers between 21-30."

i've got single line random number generator give me array following:

rand_num = (array.new(200) {(1..100).to_a[rand(100)]})

this gives me array of 200 hundred random numbers between 1 , 100 , need able split them apart according value , tell how much in each one.

then need display numbers. i've searched everywhere , want .partition, can't work.

if buckets simple utilize group_by this:

array.group_by { |n| (n - 1) / 10 }

that give hash this:

{0=>[1, 2, 3, ...], 1=>[11, 12, 13, ...], ...}

then throw in sort_by forcefulness nice ordering , map summarize results:

array.group_by { |n| (n - 1) / 10 }. sort_by { |k, v| k }. map { |n, a| [10 * n + 1 .. 10 * (n + 1), a.length] }

for example:

# %7 easy way non-uniform set. >> (1..100).select { |n| n % 7 == 0 } => [7, 14, 21, 28, 35, 42, 49, 56, 63, 70, 77, 84, 91, 98] >> (1..100).select { |n| n % 7 == 0 }.sort_by { |k, v| k }.group_by { |n| (n - 1) / 10 }.map { |n, a| [10 * n + 1 .. 10 * (n + 1), a.length] } => [[1..10, 1], [11..20, 1], [21..30, 2], [31..40, 1], [41..50, 2], [51..60, 1], [61..70, 2], [71..80, 1], [81..90, 1], [91..100, 2]]

ruby split integer arrays

Comments

Popular posts from this blog

How do I check if an insert was successful with MySQLdb in Python? -

delphi - blogger via idHTTP : error 400 bad request -

postgresql - ERROR: operator is not unique: unknown + unknown -