|
|
|
@ -1,24 +1,43 @@ |
|
|
|
from functools import reduce |
|
|
|
from functools import reduce,partial |
|
|
|
from operator import mul |
|
|
|
# from math import fmod |
|
|
|
def _base(n,b): |
|
|
|
out =[] |
|
|
|
while n: |
|
|
|
out.append(n%b) |
|
|
|
out.insert(0,n%b) |
|
|
|
n //= b |
|
|
|
return out |
|
|
|
|
|
|
|
def _multbase(n,bases): |
|
|
|
out = [] |
|
|
|
if functools.reduce(mul,bases) < n: |
|
|
|
if reduce(mul,bases) < n: |
|
|
|
raise ValueError("Not enough bases/not big enough") |
|
|
|
|
|
|
|
for base in reversed(bases): |
|
|
|
out.append(n%bases) |
|
|
|
out.insert(0,n%bases) |
|
|
|
n //= base |
|
|
|
if not n: |
|
|
|
return out |
|
|
|
|
|
|
|
def base(n,base_arg): |
|
|
|
try: |
|
|
|
return _multbase(n,base_arg |
|
|
|
except ValueError: |
|
|
|
return _base(n,base_arg) |
|
|
|
def _fbase(n,b,se = 2**-64): |
|
|
|
out = [] |
|
|
|
if b < 1: |
|
|
|
b = 1/b |
|
|
|
op = out.append |
|
|
|
else: |
|
|
|
op = partial(out.insert,0) |
|
|
|
print(b) |
|
|
|
r = 1 |
|
|
|
while n > r != 0: |
|
|
|
r = int(n%b) |
|
|
|
op(r) |
|
|
|
n = (n-r)/b |
|
|
|
return out |
|
|
|
def _fmultbase(n,b,se = 0.01): |
|
|
|
out = [] |
|
|
|
if reduce(mul,bases) < n: |
|
|
|
raise ValueError("Not enough bases/not big enough") |
|
|
|
for base in reversed(bases): |
|
|
|
out.insert(0,n%base) |
|
|
|
n /= base |
|
|
|
if n < se or n == 0: |
|
|
|
return out |
|
|
|
#test |