Des personnes forment une file d’attente devant un distributeur de billets. Certaines doivent retirer de l’argent, ceux sont des gens ordinaires; d’autres veulent voler de l’argent, ceux sont des voleurs et enfin les autres sont des policiers, ils cherchent les voleurs.
Étant donnée une file d’attente au format chaîne, comme celle-ci :
V1VT2VTVV
Où T représente une personne ordinaire; V un voleur et un chiffre un policier.
La valeur numérique représente la zone de surveillance. Par exemple, 1 signifie qu’il peut voir 1 personne devant lui et 1 personne à l’arrière. Tous les voleurs dans la ligne de vue de la police seront capturés !
Votre tâche consiste à créer une fonction pris admettant en paramètre la file d’attente et qui donne le nombre de voleurs pris par les policiers.
>> pris("V1VT2VTVV")
3
# En effet le policier "1" prend les 2 voleurs à côté de lui
# Le policier "2" prend celui à droite (l'autre a déjà été attrapé)
>> pris("V5VT3VTTTVVVVTT1TV1V")
5
# Le policier "5" prend 3 voleurs et le dernier policier "1" en prend 2
def pris(f): queue=list(f) for i,p in enumerate(queue): if p.isdigit(): for j in range(max(0,i-int(p)), min(len(f),1+i+int(p))): if queue[j]=="V": queue[j]="!" return queue.count("!")