#!/usr/bin/ruby
# Translation of: https://rosettacode.org/wiki/Binary_search#Perl
func binary_search(array, value, low, high) {
high < low && return -1;
var middle = (high+low / 2 -> int);
if (value < array[middle]) {
return binary_search(array, value, low, middle-1);
}
elsif (value > array[middle]) {
return binary_search(array, value, middle+1, high);
}
return middle;
}
var arr = [
0,
3,
5,
7,
8,
12,
15,
23,
55,
75,
122,
345,
553,
676,
883,
997,
];
[15, 120, 122, 532, 1235, 8, 0, 12425, 997, 325].each { |value|
var idx = binary_search(arr, value, 0, arr.end);
arr.contains(value) == (idx != -1) ||
"Error on value: %d\n".sprintf(value).die;
"%20s -> %2s\n".printf(value, idx);
}