Voici le problème. L'entrée est une liste d'entiers. Si trois nombres adjacents apparaissent les uns à côté des autres, ils doivent être supprimés et l'opération se poursuit. Application iPhone avec des balles de mêmes couleurs. Le résultat devrait être le nombre de balles qui seront détruites.
Exemple :
input = [3,3,4,4,4,3,4]
1ère itération
output: [3,3,3,4]
Résultat final :
6
4,4,4 lors de la première itération, donc trois balles. et 3,3,3 à la deuxième. Au total six.
Mon code est ci-dessous. Il va supprimer les 4,4,4 mais échouera ensuite, car l'index de la liste dépassera rapidement la plage.
def balls(a):
curr_index = 0
removed_count = 0
while len(a) > 2:
if (a[curr_index] == a[curr_index+1]) and (a[curr_index] == a[curr_index+2]):
a.remove(a[curr_index])
a.remove(a[curr_index+1])
a.remove(a[curr_index+2])
curr_index += 1
removed_count += 3
return removed_count
a = [3, 3, 4, 4, 4, 3, 4]
print(balls(a)) # devrait afficher 6
Des idées ?