voleurs.py

Created by schraf

Created on September 08, 2018

226 Bytes

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
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("!")