如何将1和0的位翻转为质数索引

时间:2018-07-06 03:41:07

标签: indexing bit flip

我有一个二进制数列表,仅对于素数索引,该位需要从0翻转为1或从1翻转为0。二进制数列表实际上接近100位长度。我有一个例如8位长的代码,但是它没有显示预期的输出:

def prime_index (input):
p = list(input)
s = ""

# Loop to check if
# index prime or not
for i in range (2, len(p) + 1):
    if isPrime(i):
        s = s + input[i-1]
        flip = {'0': '1', '1':'0'}
        flip=(flip[input[i]])
        print (flip)
print (s)
input="11111111"
prime_index(input)

我得到这样的输出:

0
0
0
0
1111

结果应显示如下,其中索引[2,3,5,7]的位翻转了:

output:11001010

希望有人可以帮助我。谢谢。

1 个答案:

答案 0 :(得分:0)

那是因为在翻转输入之前您正在做s = s + input[i-1],并且当索引不是素数时,您不会追加s。试试这个。

def prime_index (input):
  p = list(input)
  s = ""

  # Loop to check if
  # index prime or not
  for i in range (0, len(p) - 1):
    if isPrime(i):
        flip = {'0': '1', '1':'0'}
        flip=(flip[input[i]])
        print (flip)
        s = s + flip
    else:
        s = s + input[i]
  print (s)

input="11111111"
prime_index(input)