#!/usr/bin/ruby
# Translation of: http://rosettacode.org/wiki/Benford's_law#Perl
var (actuals, expected) = ([], [])
var fibonacci = 1000.of {|i| fib(i).digit(-1) }
for i in (1..9) {
var num = fibonacci.count { |j| j == i }
actuals.append(num / 1000)
expected.append(1 + (1/i) -> log10)
}
"%17s%17s\n".printf("Observed","Expected")
for i in (1..9) {
"%d : %11s %%%15s %%\n".printf(
i, "%.2f".sprintf(100 * actuals[i-1]),
"%.2f".sprintf(100 * expected[i-1]),
)
}