Python 在给定字母表上将整数转换为字符串的算法
我正在尝试实现一种算法,该算法将艺术性的长非负整数转换为给定字母表a和长度k的字符串,并以二进制字节顺序: 在哪里 我的代码:Python 在给定字母表上将整数转换为字符串的算法,python,algorithm,Python,Algorithm,我正在尝试实现一种算法,该算法将艺术性的长非负整数转换为给定字母表a和长度k的字符串,并以二进制字节顺序: 在哪里 我的代码: def ToString(x, k, A): S = [] N = len(A) # N = |A| for i in reversed(range(0,k)): s_k = InverseRank(x % N,A,N,k,i) x = x // N S.insert(0,s_
def ToString(x, k, A):
S = []
N = len(A) # N = |A|
for i in reversed(range(0,k)):
s_k = InverseRank(x % N,A,N,k,i)
x = x // N
S.insert(0,s_k)
return S
def InverseRank(x,A,N,k,i):
return A[(x//N**(k-i-1)) % N]
但是,它不能正常工作
A = ['A', 'B', 'C', 'D', 'E'] # Alphabet
k = 3
x = 123
S = ToString(x,k,A)
结果:
s => ['A', 'A', 'E']
无论选择哪个x,结果字符串只在最后一个字符中不同。前两个总是“A”您误解了“where”的解释。表达式
是函数的算法应该生成的,而不是要在您的行中使用的秩函数
s_k=InverseRank(x%N,A,N,k,i)
一种解决方法是将您的s_k=InverseRank(x%N,A,N,k,i)
更改为s_k=A[x%N]
您误解了“where”的解释。表达式
是函数的算法应该生成的,而不是要在您的行中使用的秩函数
s_k=InverseRank(x%N,A,N,k,i)
一种解决方案是将s_k=InverseRank(x%N,A,N,k,i)
更改为s_k=A[x%N]