Как перевернуть биты 1 и 0 для простых индексов - PullRequest
0 голосов
/ 06 июля 2018

У меня есть список двоичных чисел, и бит нужно переключать от 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 голосов
/ 06 июля 2018

это потому, что вы делаете 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)
...