【问题标题】:How to reverse a mathematical function in python, so that the input can figured from the output?如何在python中反转数学函数,以便输入可以从输出中计算出来?
【发布时间】:2019-08-28 11:00:58
【问题描述】:

我遇到了这个问题。我有这个称为“争夺”的功能。 它有两个参数,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

【问题讨论】:

  • 你的'scramble'函数不只是循环左移你的字符串s吗?例如,尝试运行scramble('abcde', 2),看看你会得到什么。有了这些知识,扭转局面应该很简单。
  • @NiayeshIsky 这听起来很愚蠢,但我该怎么做呢?我试过了,结果又是一次循环左移。

标签: python algorithm math binary


【解决方案1】:

从您的打乱函数的输出中,您可以找出如何解扰。

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

【讨论】:

    猜你喜欢
    • 2013-05-26
    • 1970-01-01
    • 2019-02-26
    • 1970-01-01
    • 2015-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多