Предположим, у меня есть список чисел. Все значения должны быть неотрицательными целыми числами, большинство из которых будет 0. Ненулевые значения всегда будут неубывающими по отношению к индексу. Учитывая неотрицательное целое число n, я хочу найти все экземпляры, для которых есть n или меньше соседних нулей, и заменить их на крайнее левое ненулевое значение (за исключением случая, когда первое значение массива равно a 0), включая ненулевые числа, расположенные справа от нулей. Все остальное, что не равно нулю, должно быть уменьшено справа от того места, где они встречаются.
Например: если n = 2,
for each sequence of n or fewer consecutive zeros starting from the left going right:
keep track of the index of the beginning of the sequence and of the end
starting from the beginning of the sequence, look to the value to the left
if that value is nonzero:
set each of the values in this sequence of zeros equal to that value
repeat until at end of array until there are more than n consecutive zeroes:
look to the value to the right:
if that value is nonzero, set equal to the leftmost non-zero value of the sequence
Возможно, я упустил какой-то нюанс, но, надеюсь, мои примеры понятны. Рад ответить на любые уточняющие вопросы.
Предположим, у меня есть список чисел. Все значения должны быть неотрицательными целыми числами, большинство из которых будет 0. Ненулевые значения всегда будут неубывающими по отношению к индексу. Учитывая неотрицательное целое число n, я хочу найти все экземпляры, для которых есть n или меньше соседних нулей, и заменить их на крайнее левое ненулевое значение (за исключением случая, когда первое значение массива равно a 0), включая ненулевые числа, расположенные справа от нулей. Все остальное, что не равно нулю, должно быть уменьшено справа от того места, где они встречаются. Например: если n = 2, [code][0, 0, 1, 1, 0, 0, 0, 2, 2, 0, 0, 3, 3, 3, 0, 0, 0, 0, 4] [/code] будет изменен на [code][0, 0, 1, 1, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 3] [/code] Кроме того, [code][0, 0, 1, 1, 0, 0, 2, 2, 0, 0, 3] [/code] будет изменен на [code][0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1] [/code] Я рассматриваю это следующим образом, используя псевдокод: [code]for each sequence of n or fewer consecutive zeros starting from the left going right: keep track of the index of the beginning of the sequence and of the end starting from the beginning of the sequence, look to the value to the left if that value is nonzero: set each of the values in this sequence of zeros equal to that value repeat until at end of array until there are more than n consecutive zeroes: look to the value to the right: if that value is nonzero, set equal to the leftmost non-zero value of the sequence [/code] Возможно, я упустил какой-то нюанс, но, надеюсь, мои примеры понятны. Рад ответить на любые уточняющие вопросы.
Я новичок в Python и пробую Turtle с помощью руководств. Этот вопрос оказался многословным, моя вина.
Я разработал 2 игры, обрабатываемые 2 функциями (в отдельном модуле), которые вызываются из MAIN:
F1: играет в игру «Зарисовка эскиза», в которой...