Aller au contenu

Pointage 2

Le cadre

Un musée aimerait analyser sa fréquentation maximale, pour cela chaque personne reçoit un ticket numéroté, qui est pointé à l'entrée et à la sortie. Le numéro est enregistré dans une liste.

Par exemple, la liste [2, 5, 2, 8, 1, 1, 5, 8] signifie :

  • Au départ, le musée est vide ; 0 personne présente.
  • Le 2 entre ; 1 personne présente
  • Le 5 entre ; 2 personnes présentes
  • Le 2 sort ; 1 personne présente
  • Le 8 entre ; 2 personnes présentes
  • Le 1 entre ; 3 personnes présentes
  • Le 1 sort ; 2 personnes présentes
  • Le 5 sort ; 1 personne présente
  • Le 8 sort ; 0 personne présente
  • à la fin, le musée est vide.

Exercice

Coder une fonction fréquentation_max

  • qui prend un tableau pointage de taille \(2n\) et qui contient \(n\) entiers positifs en double exemplaire.
    • la première occurrence d'un entier \(k\) signifie qu'une personne avec le ticket \(k\) entre.
    • la seconde occurrence d'un entier \(k\) signifie qu'une personne avec le ticket \(k\) sort.
  • et qui renvoie le nombre maximal de personnes présentes à la fois.

⚠ On demande une gestion de points supplémentaires :

  • Si un numéro apparait une troisième fois dans la liste du pointage, c'est un bogue du système. La fonction devra alors provoquer volontairement une erreur avec raise ValueError("BUG: Numéro déjà sorti")
  • Si un numéro n'apparait qu'une fois dans la liste du pointage, c'est qu'une personne est probablement restée dans le musée à la fermeture. La fonction devra alors provoquer volontairement une erreur avec raise ValueError("WARNING: Musée non vide à la fermeture")
###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier
Évaluations restantes : /
.128013x/Tr;nbylaeu)dVM63Am(P+02-WU]59fq7B8 N_o=Gpcwgv4F1kRIéhtsSà[ji:E050o0l0(0k0.0j0)0L0S0j0k0)0)0P010(0.0R010406050)0m0u0u0k0e0i040*0O0j0m140O0g050c1b1d1f1h190R04051x1q1A0c1x190o0.0V0|0~10120%0.0U0%0j1O0%0(17050@0h0j0l1J0 11011N1P1R1P0(1X1Z1V0(0e1y0(0%1#1L010G0_0l0g0k0u0l010|1k0)0R0k0g120z1V26281_1%1|1Z1 21170a0L0w0e0O0R0O0)0.1n0g0L0=240e0e0l0S2v1q2d0g1y0c1@2I1;1?1=1W0o2f121R0g1~2s1V1G1I0}1$2S0.2U0g0O2Y1V0R2B1y2G2I2:1a272w2!1`2)0e1e0j170L0Y2F2@182?2e2_1%2{2}2 0z3228342G2R01390k2~040L0s3d2H193g37123j3l0L0W3p3f2@3h3v2 0E3z3r3B3t3i0O2|3k2 0r3G352^1K383L3a3m0I3Q3s3T3u3V3N3m0K3Z3I3#3K3M3w0F3+363-3D040Y0y3=3S2#3.3W0Y311r333H3?3~3^0Y3c433e453}2`3%3l0Y3o4b3q3R3C4g170Y3y4k3A464f3/4p3F4s4d4n4w3_3P4z4m3J483Y4F3!474o3_3*4K3,4M4C0Y3;4Q4u3U4C0z3{4W4e4Y3W0z422=1D2.1q2Y2L0o1?2Q3J0S2*221y4:1z4.4,2=4_0=2/4R1`0Z170=0G3z4G3-0T2 5b4L2`0G170G0e0$0H0m1~0@2v0N1e0b5g551%16040v5w4X3u172r2%0@0U0l5C4%125z0n0/3G0L5S0L5c47170l0G0G2C145a4s5U5h1%0O170P3z5)5x120u0.174#2:065T5:5D3i5X5Z5#0.0G5t0k5v5(5V1`5,045.685*5=5@045_445|6938170)3L140)5/6m126b6d2:5}5M3i0h580.2D5L3h5z0v0n5R5T6u0157040G3L6t6f5 040g1c0$2p6T5;010O5e042%6#5~0g5F0O5H0k5J6G3J5z5Q4z5|6l6U6P636,6A6.6W6Y6!6e6$6(176+776-6o6q0.6s4s6N6_6L6|6|6N6 5%6y6N736p0e6r6@3-5z0,7x5W740u6Z0O7B1`5z0D6`5`7m7N6M6~170e0^0)5K7c724{0p3k5p0:2A6S7i6U6I7H1%0)2b04010J0C0Q0/0L0M750O2x0$0-0+0L7u14017,5N176K6{7O7P6$735Y5!2D707W3h6b0A6x336z3h5?4p7l8a7s7e7v7g85017z8y736X7E762=7*170D718j5-8K3J0Z0S170d0e5p8s6}6$6P0l0`7V8G6$7k898a8o4H8v7w7)8%177A8/7d7D7F8y7J8N3-6w8|3~8P170X3k7U8V7N8u048e627q8n6N6b0x8m3e8+3-8q3_967m7o7a9c9i989a8g645u8 6a17020j0(0f9y6n99619v8`177L6k8*7n6U8d9I5$65677r6U8~8i8,9H8f5$3G5{8b5~6P6R0e9F5E8^8F9d9X6)7b9W8c8-8x8?6A8(7M977Q6*9r2H9j3~796W0O0(9/6V829}8$5~8A9~3C178D8_ak6^8I9M4c9Oa7567R7T8#9?8c7Y7!0l7$2p9.ap7y175BaI3~7.17010B0t0!0M0#0M7@0L0q0m0)0$1!2)2w0V0.2y800~0L5!2|0?0m2B84aM7I879(8W9+7Ra=0e1p9Z3@609$639U3Q0c520l2I2-bc4/1H4;2L2O2J0k1Ybf0c4:19bp0?0^0`04.