我试图实现一种算法,该算法将画布长,非负整数转换为给定字母A和长度为k的字符串以及bigendian字节顺序的字符串:
其中
我的代码:
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'
答案 0 :(得分:2)
你误解了“在哪里”的解释
表达
是函数的算法应该生成的,而不是在行val unique = df1.union(df2).except(df1.intersect(df2)).show
+----+
| key|
+----+
|1234|
|1221|
+----+
中使用的等级函数。
一种解决方案是将s_k = InverseRank(x % N,A,N,k,i)
更改为s_k = InverseRank(x % N,A,N,k,i)
。