У меня есть список B = [0,0,0,0,0,0,0,0,0], но это может быть любая длина.Создание условного итерационного списка
Я пытаюсь выполнить итерацию всех возможных значений, которые я могу поместить в B по итерации. Когда выполняется какое-либо условие C, я хочу «перезагрузить» элемент, который я только что повторил, и надавить на следующий элемент вверх на 1. Тип вроде двоичного:
000 становится 001, но затем, когда мы увеличиваем до 002, условие C является встретились, чтобы мы опустили его до 0 и увеличили следующий столбец: 002 становится 010 и т. д.
Извините, если я это плохо объяснил.
Так B может идти от
B=[0,0,0,0,1,2,5]
to
B=[0,0,0,0,1,2,6]
to
B=[0,0,0,0,1,2,7]
и так далее.
Но когда условие C выполняется, я хочу, чтобы сбросить таким образом:
B=[0,0,0,0,1,2,96]
...attempt to increment
B=[0,0,0,0,1,2,97]
...attempt to increment
Condition C met
B=[0,0,0,0,1,3,0]
И быть в состоянии сделать это, пока я в конце концов попал условие С на крайнем левом элементе (эквивалент удара 1111111 и быть больше не может его увеличить).
Ради облегчения кодирования скажем условие C = сумма всех чисел превышает 100.
Моя попытка (в соответствии с просьбой AGF):
B=[0,0,0,0,0,0,0,0]
lenB=len(B)
while sum(B)<=100: #I think I have to somehow account for having tried incrementing the far left instead
B[lenB-1]+=1 #increment last value in B
while sum(B)>100: #if the sum is greater than 100
B[lenB-1]=0 #reset the far right element
B[lenB-2]+=1 #increment the next element
#but this is wrong because it needs to perform this check again and again
#for every column, while also checking if B[len-1] or B[len-2] even exists
EDIT: Мое состояние C в реальность MUCH сложнее, чем просто проверка, если Sum (B)> 100. Я просто использую это как фиктивное условие, потому что я могу просто заменить «если сумма (B)> 100» моей более сложной условной функцией.
Что вы пробовали? Пожалуйста, сообщите нам _специально_ какую часть вы не можете решить и покажите нам свою попытку. Мы не здесь, чтобы написать ваш код для вас. – agf
Я не знаю, как правильно прокручивать процесс и отслеживать, где я, и как я знаю, чтобы увеличить количество вещей.Потому что я думаю, что мне приходится учитывать ситуации, когда мне нужно сбросить сразу несколько вещей, например, как вы могли бы быть в 0111111 и «сбросить» до 1000000. – AOAOne
@agf Я добавил свою попытку выше по запросу – AOAOne