15 Oct 2020

Défis Python

Défis Python

Défis Python 2<sup>de</> - CodiMD

Défis Python 2de

Défis tirés de Prologin

1. La réponse à la question universelle ?

Niveau 0

Énoncé

Haruhi va observer les animaux aquatiques de la toundra africaine, pour cela elle s’équipe de jumelles, de sa tente et d’un gouter composé de biscuits et d’un peu de thé dans un thermos. Lors de ses observations elle peut observer plusieurs animaux dont : des lions, des girafes, des éléphants, des pingouins, des rhinocéros, des bébés hyènes, des zèbres, des antilopes, des mamans hyènes, des zébus, des cheetahs, des vautours, des panthères, des papas hyènes, des gnous et des lapins.

Pour tous ces animaux, Haruhi se demande quel serait le nombre idéal de pattes qu’il pourrait avoir, la réponse à cette question est toujours 42.

Ecrire un programme qui affiche 42.

Entrée

Sur la première ligne, un animal.

Sortie

La réponse universelle, 42.

Exemples d’entrée/sortie

Exemple d’entrée

CHEETAH

Exemple de sortie

42

2. Volvian, c’est mon eau

Niveau 1

Énoncé

Joseph Marchand aimerait installer un distributeur automatique d’eau déshydraté Volvian pour les voyageurs spatiaux assoiffés. Il a cependant un peu de mal à trouver un algorithme pour rendre la monnaie aux acheteurs.

Joseph souhaite que son distributeur rende le moins de billets et de pièce possible par transaction.

Aidez-le à écrire l’algorithme qui compte le nombre minimal de pièces à rendre au client.

Dans le système galactique de Joseph, la monnaie possède 8 valeurs sous forme de pièces : 200, 100, 50, 20, 10, 5, 2, 1.

Le montant m fourni par le voyageur sera toujours supérieur ou égal au prix p de la commande sur le distributeur. Les commandes n’excèdent jamais 500.

Entrée

  • Sur la première ligne, un entier p qui représente le prix de l’article acheté.
  • Sur la deuxième ligne, un entier m qui correspond au montant payé par le client.

Sortie

Un entier qui correspond au plus petit nombre de pièces que le distributeur doit rendre au client.

Contraintes

  • 1≤p≤500
  • p≤m≤500

Exemples d’entrée/sortie

Exemple d’entrée

10
40

Exemple de sortie

2

Commentaire

Le voyageur paie 40 pour une commande de 10. Il reste donc 30 à rendre. Le rendu optimal se fait via une pièce de 20 et une pièce de 10. Donc un total de 2 pièces.

Exemple d’entrée

50
50

Exemple de sortie

0

Commentaire

Le voyageur paie 50 pour une commande de 50. Il ne reste donc plus rien à rendre, c’est à dire 0 pièce.

3. Météorite, Vagues, Vent !

Niveau 1

Énoncé

Deux êtres célestes veulent se battre pour contrôler une planète. Pour ce faire, ils peuvent tous les deux effectuer une des trois actions suivantes :

Action 0 : lancer une météorite
Action 1 : créer des vagues gravitationnelles
Action 2 : envoyer des vents électromagnétiques

Chacune de ces actions a ses points forts et ses points faibles. En effet, la météorite n’est pas affectée par les vents électromagnétiques, mais étant faite de matière dense, les vagues gravitationnelles l’arrêtent net. Les vagues gravitationnelles sont donc efficaces contre les météorites, mais restent inefficaces contre les vents électromagnétiques. Ces vents électromagnétiques, malgré leurs inefficacités envers les météorites, traversent sans problème les vagues gravitationnelles.

Les deux êtres choisissent leur action en même temps. L’un sortira vainqueur, l’autre sera perdant.

Entrée

Sur la première ligne un entier S indiquant l’action de l’être céleste 1.
Sur la deuxième ligne un entier T indiquant l’action de l’être céleste 2.

Sortie

L’entier correspondant au joueur gagnant (1 ou 2), ou 0 en cas d’égalité.

Contraintes

  • 0≤S≤2
  • 0≤T≤2

Exemples d’entrée/sortie

Exemple d’entrée

0
2

Exemple de sortie

1

Commentaire

Les entiers donnés en entrée correspondent à la météorite et aux vents. Comme la météorite n’est pas affectée par les vents, l’être céleste 1 gagne.

Exemple d’entrée

1
2

Exemple de sortie

2

Commentaire

Les entiers donnés en entrée correspondent aux vagues et aux vents. Comme les vents traversent sans problème les vagues, l’être céleste 2 gagne.

4. Fuel

Niveau 1

Énoncé

Avant de décoller, l’équipage du vaisseau Nigolorp doit prévoir la quantité de carburant à charger afin de tenir tout le voyage. Le capitaine estime qu’il faut prévoir 60kg de carburant par personne.

Cependant, comme certains membres du vaisseau sont plus ou moins enrobés, il s’inquiète et décide de rajouter 20kg de carburant supplémentaire pour chaque personne pesant strictement plus de 90kg.

Le but de l’équipage du Nigolorp est d’écrire un programme capable de calculer la quantité de carburant à emporter en fonction des poids des différents membres de l’équipage et l’afficher.

Entrée
Sur la première ligne, un entier N représentant le nombre de membres dans l’équipage.

La deuxième ligne contient N entiers indiquant le poids P de chaque personne.

Sortie
La quantité de carburant à emporter en kg.

Contraintes

  • 0≤N≤100
  • 1≤P≤1000

Exemples d’entrée/sortie

Exemple d’entrée

3
67 121 88

Exemple de sortie

200

Commentaire

Ici, l’équipage est constitué de trois personnes. La première fait 67 kg, on prend donc 60 kg de carburant pour elle. La seconde fait 121 kg. Comme 121 > 90, on prend 60 + 20 kg de carburant supplémentaire pour elle. La troisième fait 88 kg, on ajoute donc 60 kg de carburant en plus. Au total, on doit prendre 200 kg de carburant.

5. Arnaque aérienne

Niveau 1

Énoncé

Comme le disait le grand-père de Joseph Marchand, « Le plus beau voyage est celui qu’on n’a pas encore fait ». New York était dans la tête de Joseph depuis plusieurs années maintenant, et il a décidé aujourd’hui d’acheter son billet d’avion.

Quelques secondes avant de cliquer sur le bouton « Acheter ! », son amie Haruhi lui envoie une liste de prix qu’elle a trouvés sur Internet. Joseph est curieux de voir si ces derniers sont moins chers que le billet qu’il s’apprêtait à acheter.

Entrée
Sur la première ligne le prix initial du billet de Joseph.

Sur la deuxième ligne un entier N, correspondant au nombre de billets envoyés par Haruhi. La ligne suivante contient les N prix trouvés par Haruhi.

Sortie
Si Haruhi a trouvé au moins 3 prix strictement moins chers que celui de Joseph, affichez « ARNAQUE ! » pour l’avertir. Sinon « Ok bon voyage, bisous, n’oublie pas de m’envoyer des photos ! ».

Contraintes

  • 1≤N≤100
  • 1≤prix≤2000

Exemples d’entrée/sortie

Exemple d’entrée

570
4
495 1200 540 450

Exemple de sortie

ARNAQUE !

Commentaire

Exactement 3 billets sont strictement moins chers que celui choisi par Joseph : 495, 540, et 450. Ça sent l’arnaque…

Exemple d’entrée

820
5
580 2000 970 1050 820

Exemple de sortie

Ok bon voyage, bisous, n'oublie pas de m'envoyer des photos !

Commentaire

Seul le billet à 580€ est strictement inférieur au billet de Joseph à 820€.

Solution

prix_initial = int(input()) nb_prix = int(input()) prix = list(map(int, input().split())) nb_inf = 0 for p in prix: if p < prix_initial: nb_inf += 1 if nb_inf >= 3: print("ARNAQUE !") else: print("Ok bon voyage, bisous, n'oublie pas de m'envoyer des photos !")

6. Le déluge

Niveau 1

Énoncé

Il y a fort longtemps, existait un continent où vivait une espèce rare : le Prolosaure. Ce continent était composé de N montagnes (numérotées de 1 à N) de différentes altitudes dans lesquelles les paisibles dinosaures vivaient en paix.

Un jour, une tempête se déchaîna et entraîna une montée globale du niveau de l’eau. Les Prolosaures se demandent si une partie de leur foyer a disparu sous les eaux.

On vous donne une liste de nombres représentant les altitudes des différentes montagnes qui composent le continent ainsi que l’altitude globale atteinte par la montée des eaux. Écrivez un programme qui indique si au moins une montagne a été submergée par les flots.

Entrée
L’entrée comprendra :

  • un entier relatif h correspondant à l’altitude atteinte par la mer ;
  • sur la ligne suivante, un entier naturel non nul N correspondant au nombre de montagnes ;
  • sur la ligne suivante, N entiers relatifs yi séparés par des espaces, représentant l’altitude de chaque montagne.

Sortie
Vous afficherez en sortie :

  • 1 si au moins une montagne a été submergée, c’est-à-dire que son altitude est strictement inférieure au niveau de la mer ;
  • 0 sinon.

Contraintes

  • -1 000 ≤ h ≤ 1 000 ;
  • 1 ≤ N ≤ 100 ;
  • -1 000 ≤ yi ≤ 1 000.

Exemples d’entrée/sortie

Exemple d’entrée

-91
13
-41 -47 -52 -57 -74 -77 -23 -14 -56 2 -74 -40 -59

Exemple de sortie

0

Commentaire


Ici, aucune montagne n’est recouverte par l’eau.

Exemple d’entrée

-42
12
-53 35 -44 -55 -47 -65 42 -25 -6 78 -7 -79

Exemple de sortie

1

Commentaire


Ici, six montagnes sont submergées.

Solution

niveau_eau = int(input()) nombre_montagnes = int(input()) montagnes = [int(i) for i in input().split()] for hauteur in montagnes: if hauteur < niveau_eau: print(1) break else: print(0)

7. Interferences

Niveau 2

Énoncé

L’équipage du vaisseau Nigolorp vient de perdre le contrôle du mastodonte. Très rapidement ils envoient un signal de détresse mais avec tous ces astéroïdes dans l’espace, le message devient rapidement pollué par des interférences.

Par chance, le vaisseau Prolo220 qui passait non loin capte le message mais doit d’abord se débarrasser des caractères ajoutés dus aux interférences.

Tout . dans le message doit être supprimé et lorsqu’un * est lu dans le texte, tous les caractères qui suivent sont ignoré jusqu’à ce qu’on lise à nouveau un *.

Le but de l’équipage du Prolo220 est d’écrire un programme capable de retirer les caractères polluants d’un message et d’afficher le message correct.

Entrée
Sur la première ligne, un entier N représentant la longueur du message envoyé.

Sur la deuxième ligne, la chaîne de caractères correspondant au message.

Sortie
Le message correct, épuré de tous les caractères dus aux interférences.

Contraintes

  • 1≤N≤100

Exemples d’entrée/sortie

Exemple d’entrée

20
s.o*asdsad*..s.*sad*

Exemple de sortie

sos

Commentaire

Ici le message reçu fait 20 caractères, interférences comprises. Le texte reçu est : s.oasdsad…s.sad Après suppression des interférences (points et texte contenu entre des astérisques), on obtient le texte sos.

Exemple d’entrée

21
.pe..p*per.&c*a*rr.ot

Exemple de sortie

pepa

Commentaire

Ici tout le texte est ignoré entre les deux premiers * et après le troisième *.

Solution

def remove_interference(s): fs = "" interference = False for c in s: if c == '*': interference = not interference if c != '*' and c != '.' and not interference: fs += c return fs length = int(input()) text = input() print(remove_interference(text))

8. Flamands migrateurs

Niveau 2

Énoncé

Haruhi s’est découverte une passion pour l’ornithologie. Les flamands roses sont bien connus pour leur formation de vol en V caractéristique. Dans les dessins qui vont suivre, un 1 indique un oiseau, et un 0 un espace entre les oiseaux.

Haruhi souhaite communiquer à ses collègues les motifs qu’elle observe. Néanmoins, dupliquer tous ces croquis serait trop lourd, elle décide donc d’en distribuer une version compressée.

Pour cela, elle utilise l’algorithme du codage par plages. À chaque ligne, si elle rencontre un groupe de n

occurrences consécutives de 0, elle remplace le groupe entier par son codage n ; pareillement pour 1, avec la convention que chaque ligne de sortie débute par le codage d’un 0. Elle sépare les groupes par une espace.

En encodant quelques une de ces images, Haruhi en apprendra certainement beaucoup sur le fabuleux vol des flamands roses.

Entrée

  • Sur la première ligne, un entier : n, le nombre de lignes.
  • Sur la ligne suivante, un entier : m, le nombre de colonnes.
  • Sur les lignes suivantes, une liste de n éléments : formation, la formation de vol des flamands roses.
  • Une ligne par élément de la liste : une liste de m entiers séparés par des espaces. séparées par une espace.

Sortie
Sur la ligne i, pour 1≤i≤n, afficher l’encodage de la ligne i de la formation d’entrée.

Exemples d’entrée/sortie

Exemple d’entrée

5
9
1 0 0 0 0 0 0 0 1
0 1 0 0 0 0 0 1 0
0 0 1 0 0 0 1 0 0
0 0 0 1 0 1 0 0 0
0 0 0 0 1 0 0 0 0

Exemple de sortie

0 1 7 1
1 1 5 1 1
2 1 3 1 2
3 1 1 1 3
4 1 4

Exemple d’entrée

9
13
0 0 0 0 1 0 0 0 0 1 1 1 0
0 0 0 1 1 0 0 0 1 0 0 0 1
0 0 1 0 1 0 0 0 0 0 0 0 1
0 1 0 0 1 0 0 0 0 0 0 0 1
1 0 0 0 1 0 0 0 0 0 0 1 0
1 1 1 1 1 1 0 0 0 0 1 0 0
0 0 0 0 1 0 0 0 0 1 0 0 0
0 0 0 0 1 0 0 0 1 0 0 0 0
0 0 0 0 1 0 0 0 1 1 1 1 1

Exemple de sortie

4 1 4 3 1
3 2 3 1 3 1
2 1 1 1 7 1
1 1 2 1 7 1
0 1 3 1 6 1 1
0 6 4 1 2
4 1 4 1 3
4 1 3 1 4
4 1 3 5

Sur le même sujet

Oturma GruplarıKoltuk TakımlarıMersin Escort