#!/usr/bin/ruby

#
## https://rosettacode.org/wiki/Sorting_algorithms/Bead_sort#Sidef
#

func beadsort(arr) {

    var columns = [];
    var rows = [];

    arr.each { |datum|
        range(0, datum-1).each { |column|
            ++(columns[column] := 0);
            ++(rows[columns[column] - 1] := 0);
        }
    }

    rows.reverse;
}

var arr = [5,3,1,7,4,1,1];
assert_eq(beadsort(arr), [1, 1, 1, 3, 4, 5, 7]);

say "** Test passed!";