Поиск и уменьшение последовательных нулей PythonPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Поиск и уменьшение последовательных нулей Python

Сообщение Anonymous »

Предположим, у меня есть список чисел. Все значения должны быть неотрицательными целыми числами, большинство из которых будет 0. Ненулевые значения всегда будут неубывающими по отношению к индексу. Учитывая неотрицательное целое число n, я хочу найти все экземпляры, для которых есть n или меньше соседних нулей, и заменить их на крайнее левое ненулевое значение (за исключением случая, когда первое значение массива равно a 0), включая ненулевые числа, расположенные справа от нулей. Все остальное, что не равно нулю, должно быть уменьшено справа от того места, где они встречаются.
Например: если n = 2,

Код: Выделить всё

[0, 0, 1, 1, 0, 0, 0, 2, 2, 0, 0, 3, 3, 3, 0, 0, 0, 0, 4]
будет изменен на

Код: Выделить всё

[0, 0, 1, 1, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 3]
Кроме того,

Код: Выделить всё

[0, 0, 1, 1, 0, 0, 2, 2, 0, 0, 3]
будет изменен на

Код: Выделить всё

[0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1]
Я рассматриваю это следующим образом, используя псевдокод:

Код: Выделить всё

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
Возможно, я упустил какой-то нюанс, но, надеюсь, мои примеры понятны. Рад ответить на любые уточняющие вопросы.

Подробнее здесь: https://stackoverflow.com/questions/792 ... -decrement
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»