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

During your visit to our site, NumWorks needs to install "cookies" or use other technologies to collect data about you in order to:

With the exception of Cookies essential to the operation of the site, NumWorks leaves you the choice: you can accept Cookies for audience measurement by clicking on the "Accept and continue" button, or refuse these Cookies by clicking on the "Continue without accepting" button or by continuing your browsing. You can update your choice at any time by clicking on the link "Manage my cookies" at the bottom of the page. For more information, please consult our <a href="https://www.numworks.com/legal/cookies-policy/">cookies policy</a>.