В одной компьютерной игре игрок выставляет в линию шарики разных цветов. Когда образуется непрерывная цепочка из трех и более шариков одного цвета, она удаляется из линии. Все шарики при этом сдвигаются друг к другу, и ситуация может повториться. 
  
Напишите программу, которая по данной ситуации определяет, сколько шариков будет "уничтожено". Естественно, непрерывных цепочек из трех и более одноцветных шаров в начальный момент может быть не более одной. 
  
  
crush=1 
count=0 
L = [int(num) for num in input().split()] 
  
for i in range(1,len(L)): 
    if L[i]==L[i-1]: 
        crush+=1 
    elif crush>2: 
        for k in range(crush): 
            del L[i-k-1] 
        count+=crush 
        crush=1 
  
print(count)
	
	
	Python
	
		
		
								
				
								
				
																				
							
			
	
		
			Почему list index out of range? что надо исправить?
Потому, что в конструкции range(1,len(L)) верхняя граница цикла - len(L) - фиксируется в момент начала цикла и дальше никак не меняется. А реальная длина L в процессе работы уменьшается.
				
							 cur = list(map(int, input().split())) + ['@']
lng, old = len(cur), []
while len(cur) != len(old):
  old, pos = cur, 0
  for i in range(1, len(cur)):
    if cur[i] == cur[i - 1]: continue
    if i - pos < 3: pos = i
    else:
      cur = cur[:pos] + cur[i:]
      break
print(lng - len(cur))  L = list(map(int, input().split())) + ['@']
lng, pos, i = len(L), 0, 1
while i < len(L):
  if L[i] == L[i - 1]: i += 1
  elif i - pos < 3: pos, i = i, i + 1
  else:
    L, i = L[:pos] + L[i:], pos
    while pos > 0 and L[pos - 1] == L[i]: pos -= 1
print(lng - len(L)) Ошибка "list index out of range" возникает, потому что вы удаляете элементы из списка `L` внутри цикла `for k in range(crush)`, и после удаления элементов длина списка `L` уменьшается. Это может привести к тому, что в какой-то момент индекс `i` станет больше, чем новая длина списка `L`, и возникнет ошибка "list index out of range". 
 
Чтобы исправить эту ошибку, вы можете переписать ваш код таким образом:
 
```python
crush = 1
count = 0
L = [int(num) for num in input().split()]
 
i = 1
while i < len(L):
if L[i] == L[i - 1]:
crush += 1
elif crush > 2:
del L[i - crush:i]
count += crush
crush = 1
i -= crush
else:
i += 1
 
print(count)
```
 
В этой версии кода мы используем `while` цикл вместо `for` цикла, чтобы управлять индексом `i` вручную и избежать проблемы с выходом за пределы списка. Кроме того, мы используем `del` для удаления элементов внутри списка, но корректно обновляем значение `i` после удаления элементов.
				
									Чтобы исправить эту ошибку, вы можете переписать ваш код таким образом:
```python
crush = 1
count = 0
L = [int(num) for num in input().split()]
i = 1
while i < len(L):
if L[i] == L[i - 1]:
crush += 1
elif crush > 2:
del L[i - crush:i]
count += crush
crush = 1
i -= crush
else:
i += 1
print(count)
```
В этой версии кода мы используем `while` цикл вместо `for` цикла, чтобы управлять индексом `i` вручную и избежать проблемы с выходом за пределы списка. Кроме того, мы используем `del` для удаления элементов внутри списка, но корректно обновляем значение `i` после удаления элементов.
								
									Руслан Краснов								
								ясно, спасибо! а в строчке del L[i - crush:i]  имеется в виду del L[i - crush-1]? и еще почему то исправленная программа в бесконечный цикл уходит							
																				
								
									Руслан Краснов								
								на примере 5 1 3 3 3 2 он уходит в цикл бесконечный							
											Похожие вопросы
- Питон, циклы, функция range
- Помогите с информатикой Задание сделать через ввод массива и for i in range() Python
- Ошибка TypeError: 'str' object is not callable . Python 3. Как исправить?
- Помогите исправить ошибку в коде. Python
- Опять "записная книжка" на Python. В прошлый раз упустил из виду что index возвращает только первое вхождение, т. е. (+)
- Как исправить число Pi? :)
- Помогите исправить код на питоне я постоянно проигрываю в камень ножницы бумага и игра не идёт до трех побед
- Помогите пожалуйста исправить мой код на языке питон
- Помогите исправить код
- Cannot import name 'XXX' from 'XXXXX' ошибка возникает как исправить?
 
			