【问题标题】:Python: Tribonacci sequence - what is the difference in these codes?Python:Tribonacci 序列 - 这些代码有什么区别?
【发布时间】:2018-06-04 02:21:24
【问题描述】:

我正在尝试解决代码战 (http://www.codewars.com) 挑战:

6 kyu:斐波那契、Tribonacci 和朋友


挑战:

考虑一个以 4 个元素的签名开始的 Quadribonacci,每个后续元素都是前 4 个元素的总和,一个 Pentabonacci(好吧,Cinquebonacci 可能听起来更意大利化,但听起来也很糟糕)带有签名5 个元素,每个后面的元素是前面 5 个元素的总和,以此类推。

您必须构建一个 Xbonacci 函数,该函数接受 X 个元素的签名 - 并记住每个下一个元素是最后 X 个元素的总和 - 并返回如此种子序列的前 n 个元素。


但我似乎无法理解这两个函数之间的区别。 第一个被拒绝,而第二个被接受。

拒绝代码:

def Xbonacci(signature, num):    
    a_list = signature[:] 
    final_list = signature[:]

    for i in range(0, num-len(signature)):     

        a = sum( a_list[ :len(a_list)] )                 
        final_list.append(a)                  
        a_list.append(a)    
        a_list.remove(a_list[0])

    return final_list

接受的代码:

def Xbonacci(signature,n):
    result = signature[:]

    for x in range(n-len(signature)):
        current_fib = 0
        start = len(result) - len(signature)
        for y in result[start:]:
            current_fib += y
        result.append(current_fib)

    return result[:n]

我错过了什么吗?

【问题讨论】:

  • 这两个函数在n < len(signature)时有不同的行为。

标签: python python-3.x indexing slice


【解决方案1】:

n < len(signature) 时,这两个函数有不同的行为。

功能1:

>>> Xbonacci([1, 2, 3], 1)
[1, 2, 3]

功能2:

>>> Xbonacci([1, 2, 3], 1)
[1]

由于挑战说“返回如此种子序列的前 n 个元素”,所以第一个函数是不正确的。

【讨论】:

    猜你喜欢
    • 2012-09-27
    • 2011-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-22
    • 2013-05-13
    • 2014-04-01
    相关资源
    最近更新 更多