Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
37
Task/Negative-base-numbers/Sidef/negative-base-numbers.sidef
Normal file
37
Task/Negative-base-numbers/Sidef/negative-base-numbers.sidef
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
func EncodeNegBase(Num n, Num b { .~~ (-36 .. -2) }) {
|
||||
var out = []
|
||||
var r = 0
|
||||
while (n) {
|
||||
(n, r) = divmod(n, b)
|
||||
if (r < 0) {
|
||||
n += 1
|
||||
r -= b
|
||||
}
|
||||
out << r.base(-b)
|
||||
}
|
||||
return (out.join.flip || "0")
|
||||
}
|
||||
|
||||
func DecodeNegBase(Str s, Num b { .~~ (-36 .. -2) }) {
|
||||
var total = 0
|
||||
for i,c in (s.flip.chars.kv) {
|
||||
total += (Num(c, -b) * b**i)
|
||||
}
|
||||
return total
|
||||
}
|
||||
|
||||
say (" 10 in base -2: ", EncodeNegBase(10, -2))
|
||||
say ("146 in base -3: ", EncodeNegBase(146, -3))
|
||||
say (" 15 in base -10: ", EncodeNegBase(15, -10))
|
||||
|
||||
say '-'*25
|
||||
|
||||
say ("11110 from base -2: ", DecodeNegBase("11110", -2))
|
||||
say ("21102 from base -3: ", DecodeNegBase("21102", -3))
|
||||
say (" 195 from base -10: ", DecodeNegBase("195", -10))
|
||||
|
||||
say '-'*25
|
||||
|
||||
# Extra
|
||||
say ("25334424 in base -31: ", EncodeNegBase(25334424, -31))
|
||||
say ("sidef from base -31: ", DecodeNegBase("sidef", -31))
|
||||
Loading…
Add table
Add a link
Reference in a new issue