【问题标题】:Encode list and rotate it, decode with original list编码列表并旋转它,使用原始列表解码
【发布时间】:2022-07-31 17:57:20
【问题描述】:

这是我在函数式编程中遇到的问题。

假设我有一个列表[2, 1, 3]。 我可以旋转它以获得[1, 3, 2]。 再次旋转得到[3, 2, 1]

我现在有了获得编码列表的编码功能。 假设它被称为Encoded [2, 1, 3]。 旋转后,获取Encoded [1, 3, 2]

我现在有解码功能。 当它收到Encoded[2, 1, 3]。 它可以返回[2, 1, 3]

当它收到Encoded [1, 3, 2]。 它仍然可以返回[2, 1, 3]

简单来说:

`decoded(encoded list) = list`

`decoded(rotate(encoded list)) = list`

还有一个条件是这个列表的数组的范围是0..255,除此之外,不接受任何值。

我的想法是,当我生成编码列表时,我应该做一些工作以使解码函数返回原始列表,无论列表发生什么

任何帮助对我来说都很重要,非常感谢。

【问题讨论】:

    标签: python java list haskell functional-programming


    【解决方案1】:

    如果我的问题是正确的,那么在您拥有 encoded 之后,您仍然需要 original 列表。如果你这样做:

    def rotate(lst: list):
        rotated = lst.copy()
        rotated.append(rotated[0])
        rotated.pop(0)
        return rotated
    
    original = [2, 1, 3]
    encoded = rotate(original)
    
    print(original) # [2, 1, 3]
    print(encoded) # [1, 3, 2]
    

    您拥有这两个列表,因此您可以对encoded 执行任何操作,但您仍然是original,无需使用函数返回。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-15
      • 2020-04-23
      • 1970-01-01
      • 1970-01-01
      • 2019-04-14
      • 1970-01-01
      • 1970-01-01
      • 2015-10-03
      相关资源
      最近更新 更多