特定のリストの数字を再帰的に合計するプログラムを作成しています。たとえば、ソース リストに 10 個の要素がある場合、2 番目のリストには 9 個、3 番目のリストには 8 個というように、1 個の要素しかない最後のリストまで続きます。これは、最初の要素を 2 番目の要素に追加し、次に 2 番目の要素を 3 番目の要素に追加するというように行われます。シェルからのフィードバックなしで立ち往生しています。エラーをスローせずに停止し、数秒でファンが狂ったように回転します。
ここでかなりの数の投稿を読み、アプローチを変更しましたが、これまでのところ、探している結果が得られるかどうかはわかりません. 前もって感謝します:
#---------------------------------------------------
#functions
#---------------------------------------------------
#sum up pairs in a list
def reduce(inputList):
i = 0
while (i < len(inputList)):
#ref to current and next item
j = i + 1
#don't go for the last item
if j != len(inputList):
#new number eq current + next number
newNumber = inputList[i] + inputList[j]
if newNumber >= 10:
#reduce newNumber to single digit
newNumber = sum(map(int, str(newNumber)))
#collect into temp list
outputList.append(newNumber)
i = i + 1
return outputList;
#---------------------------------------------------
#program starts here
#---------------------------------------------------
outputList = []
sourceList = [7, 3, 1, 2, 1, 4, 6]
counter = len(sourceList)
dict = {}
dict[0] = sourceList
print '-------------'
print 'Level 0:', dict[0]
for i in range(counter):
j = i + 1
if j != counter:
baseList = dict.get(i)
#check function to understand what it does
newList = reduce(baseList)
#new key and value from previous/transformed value
dict[j] = newList
print 'Level %d: %s' % (j, dict[j])