0

数字のリストがあります

((100),(99),(97),(96),(3),(2))

2 番目の数値がその前の数値の 2 以内にある場合、その数値から 2 を取得し、最後の数値が負にならない限り、リスト内のその後のすべての数値を取得します。たとえば、

First iteration, substrate 2 from 97 and lower
((100), (97), (95), (94,),(1),(0))

Second iteration, substrate 2 from 94 and lower
((100), (97), (95), (92), (0),(0))
4

1 に答える 1

0

shift再帰関数とヘルパー関数を使用した回答は次のsubtract2とおりです。

def subtract2(p, i):
    while i < len(p):
        p[i] = p[i] - 2 if p[i] - 2 >= 0 else p[i]
        i += 1

def shift(p, i):
    # base case
    if i >= len(p) - 1:
        return
    elif p[i] - 2 <= p[i+1]:
        subtract2(p, i+1)
    # recurse
    return shift(p, i+1)

お役に立てれば

于 2013-06-12T21:00:47.377 に答える