2016-12-05 23:44:36 +01:00
|
|
|
|
func vdc(value, base=2) {
|
|
|
|
|
|
while (value[-1] > 0) {
|
2017-09-23 10:01:46 +02:00
|
|
|
|
value.append(value[-1] / base -> int)
|
2016-12-05 23:44:36 +01:00
|
|
|
|
}
|
2017-09-23 10:01:46 +02:00
|
|
|
|
var (x, sum) = (1, 0)
|
2016-12-05 23:44:36 +01:00
|
|
|
|
value.each { |i|
|
2017-09-23 10:01:46 +02:00
|
|
|
|
sum += ((i % base) / (x *= base))
|
2016-12-05 23:44:36 +01:00
|
|
|
|
}
|
2017-09-23 10:01:46 +02:00
|
|
|
|
return sum
|
2016-12-05 23:44:36 +01:00
|
|
|
|
}
|
2017-09-23 10:01:46 +02:00
|
|
|
|
|
|
|
|
|
|
for base in (2..5) {
|
|
|
|
|
|
var seq = 10.of {|i| vdc([i], base) }
|
|
|
|
|
|
"base %d: %s\n".printf(base, seq.map{|n| "%.4f" % n}.join(', '))
|
2016-12-05 23:44:36 +01:00
|
|
|
|
}
|