【问题标题】:Exponential-Golomb Decoder in Python (Codewars)Python 中的指数哥伦布解码器 (Codewars)
【发布时间】:2022-01-05 12:11:24
【问题描述】:

我正在尝试通过其中一项 Codewars 挑战 ,,Exponential-Golomb Decoder”:https://www.codewars.com/kata/5e4d8a53b499e20016b018a0/swift

这个想法是以二进制格式输入:“001000000101111001010001101” -> 00100 000010111 1 00101 0001101

并返回解码后的数字列表:[3, 22, 0, 4, 12]

如果你给出 Sentence 例如 00100 00101,让我们看看你以 2 个前导零开头,然后点击 1,然后所以第一个结果数字是零个数+1+零个数(00+1+00),假设这个数字的长度是5,所以我想要像 sentence = [length:] 这样制作新句子并遍历它,但它不会遍历新句子,而是旧句子

有什么想法吗?非常感谢

def reccurent():
    sentence = input("Enter the number:")
    nums = []
    number = ""

    for i in sentence:
        i = int(i)

        if i == 0:
            number += str(0)

        else:
            number += str(1)

            if len(number) == 1:
                nums.append(number)
                number = ""
                sentence = sentence[i:]

            else:
                length = len(number) + len(number) - 1
                word = str(sentence[:length])
                nums.append(word)
                number = ""
                sentence = sentence[length:]
    print(nums)

reccurent()

结果 输入号码:0011000100

['00110', '1', '0100']

进程以退出代码 0 结束

应该是 ['00110','00100']

谢谢

【问题讨论】:

    标签: python python-3.x binary exponential


    【解决方案1】:

    以下是根据提供的代码进行的修改。

    def reccurent():
        sentence = input("Enter the number:")
        nums = []
        number = ""
        
        # Define parameters to save the cursor offset position
        offset = 0
        for index, i in enumerate(sentence):
    
            # Skip the value before the cursor
            if index < offset:
                continue
    
            number += i
            if i != "0":
    
                if len(number) == 1:
                    nums.append(number)
                    offset = index + 1
                else:
                    length = len(number) * 2 - 1
                    word = sentence[offset: offset + length]
                    nums.append(word)
                    offset += length
                number = ""
    
        print(nums)
        
    reccurent()
    
    Enter the number:0011000100
    ['00110', '00100']
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-24
      相关资源
      最近更新 更多