20 lines
393 B
Text
20 lines
393 B
Text
static to = [@|'0'..'9', @|'a'..'z']
|
|
static from = Hash(to.pairs.map{@|_}.flip...)
|
|
|
|
func base_to(n, b) {
|
|
var s = ""
|
|
while (n) {
|
|
s += to[n % b]
|
|
n //= b
|
|
}
|
|
s.reverse
|
|
}
|
|
|
|
func base_from(n, b) {
|
|
var t = 0
|
|
n.each { |c| t = (b*t + from{c}) }
|
|
t
|
|
}
|
|
|
|
say base_from("rosetta", 36) # string to number
|
|
say base_to(60272032366, 36) # number to string
|