Как перевернуть математическую функцию в python, чтобы вход вычислялся по выходу? - PullRequest
1 голос
/ 07 апреля 2019

У меня есть эта проблема.У меня есть эта функция под названием "схватка".Он принимает два параметра, S и B. B - это двоичная строка («101010»).Я знаю, что это можно изменить, потому что это было сделано раньше.Я пытаюсь преобразовать эту строку в расшифрованную версию

"1100001110000111000011000010100001110000111000010100001110000010000110010001011001110000101010001011000001000" С S = 9.

Вот моя первая попытка.Я пробовал несколько вариантов, но он просто не будет работать, так как противоположностью модуля (который производит остаток) является деление (производит частное)

У меня есть S. Мне просто нужен способпревратить R в B.

def unscramble(r, s):
    b = ""
    x = s
    while x < len(r) + s:
        b += r[x / len(r)]
        x += 1
    return b

Проблема в том, что он создает плавающее число с десятичными точками, которое не может работать при нарезке.

def scramble(b, s):
    r = ""
    x = s
    while x < len(b) + s:
        r += b[x % len(b)]
        x += 1
    return r

1 Ответ

0 голосов
/ 07 апреля 2019

из вывода вашей функции шифрования вы можете выяснить, как расшифровать.

def scramble(b, s):
    r = ""
    x = s
    while x < len(b) + s:
        r += b[x % len(b)]
        x += 1
    return r

def unscramble(r, s):
    b = ""
    x = s
    b = r[-x:]
    b += r[0:-x]
    return b

r = scramble('homer simpson', 2)
print(r)

s= unscramble('mer simpsonho', 2)
print(s)

выход:

mer simpsonho
homer simpson
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...