Cette page regroupe des exercices qui demandent un peu plus de reflexion (mathématique) que les exercices des pages précédentes avant de se lancer dans la programmation. Ils nécessitent un niveau collège ou seconde maximum.
Baptiste cherche des chaussettes pour aller à une soirée. Son tiroir est plein de chaussettes, chaque paire est de couleur différente. Pour choisir une chaussette, il met sa main dans le tiroir et ne voit la couleur de la chaussette qu'une fois qu'il l'a sortie du tiroir.
Dans le pire des cas, combien doit-il prendre de chaussettes dans son tiroir pour être sûr d'avoir une paire de la même couleur ?
Entrée : Le nombre n de chaussettes dans le tiroir.
Sortir : Le nombre de chaussettes que Baptiste doit sortir dans le pire des cas du tiroir être sûr d'avoir une paire de la même couleur.
Chacun cherche ses chaussettes sèches
1
2
3
4
5
6
7
8
def ma_fonction(n):
#Ne pas toucher ce qui précède
#Les valeurs pour les variables en entrée seront automatiquement données
#Ecrire ci-dessous en n'oubliant pas d'indenter
Enter to Rename, Shift+Enter to Preview
Exercice n° : Nombre de bises au nouvel an
Difficulté informatique : Très facile Difficulté mathématique : Facile
Des amis passent le soir du reveillon du nouvel an ensemble. A minuit, chacun embrasse (en faisant deux bises) tous les autres invités.
Combien y a-t-il eu de bises échangées pas les invités pour ce nouvel an ?
Entrée : Le nombre n d'invités.
Sortie : Le nombre de bises échangées pour ce nouvel an.
Indications :
On pourra considérer le nombre de bises que doit faire chaque personne puis remarquer qu'en comptant ainsi, on a compté plusieurs fois les mêmes bises.
Nombre de bises
1
2
3
4
5
6
7
8
9
10
def ma_fonction(n):
#Ne pas toucher ce qui précède
#Les valeurs pour les variables en entrée seront automatiquement données
#Ecrire ci-dessous en n'oubliant pas d'indenter
Enter to Rename, Shift+Enter to Preview
Exercice n° : Bases armées
Difficulté informatique : Très facile Difficulté mathématique : Moyenne Notion : Division euclidienne Origine :Hackerrank
Luke est dans ses pensées pendant un cours de maths. Sur un papier quadrillé de n lignes et m colonnes, il imagine que chaque case est une base armée. Il veut envoyer des fournitures à ses bases à des points stratégiques, en marquant chaque point en rouge. Si une base contient au moins un colis de fourniture dedans ou sur un de ses bords, on qu'onsidère qu'il y a accès. Par exemple :
Etant donnés n et m, érire une fonction qui renvoit le nombre minimum de colis que Luke doit envoyer pour fournir toutes ses bases.
Bases armées
1
2
3
4
5
6
7
8
9
10
11
def ma_fonction(n,m):
#Ne pas toucher ce qui précède
#Les valeurs pour les variables en entrée seront automatiquement données
#Ecrire ci-dessous en n'oubliant pas d'indenter
Enter to Rename, Shift+Enter to Preview
Exercice n° : Découpe de morceaux de papier
Difficulté informatique: Très facile Difficulté mathématique : Moyenne Origine :Hackerrank
Marie veut découper un morceau de papier de dimmension en morceau de papier de dimension 1×1 selon les règles suivantes :
Elle ne peut couper qu'un morceau de papier à la fois, c'est à dire qu'elle ne peut pas placer des papiers déjà découpés les uns sur les autres ou d'affilée. Elle ne peut pas non plus les plier avant de les découper.
Elle découpe en ligne droite horizonthalement ou bien verticalement uniquement.
Voici un exemple montrant les trois seules découpes possibles dans ce cas :
Etant donnés n et m, trouver et renvoyer (avec return) le nombre minimum de découpe que Marie peut faire pour découper le papier en carré unité.
Entrée : Les dimensions entières n et m du morceau de papier au départ.
Sortie : Le nombre minimum de découpe nécessaire pour n'obtenir plus que des petits carrés de dimensions 1×1
Indication :
On pourra remarquer que chaque coup de ciseau rajoute un au nombre de morceaux de papier qu'on a ...
Découpe de morceaux de papier
1
2
3
4
5
6
7
8
9
10
def ma_fonction(n,m):
#Ne pas toucher ce qui précède
#Les valeurs pour les variables en entrée seront automatiquement données
#Ecrire ci-dessous en n'oubliant pas d'indenter
Enter to Rename, Shift+Enter to Preview
Exercice n° : Symétrie centrale
Difficulté : Très facile Notions : Symétrie centrale, Vecteurs Origine :Hackerrank
A partir de deux points P et Q, on peut créer un troisième point R symétrique de P par rapport à Q comme sur la figure ci-dessous :
Le but de cet exercice est de créer un programme qui prend en entrée les coordonnées de P et Q et affiche les coordonnées de R.
Entrée : Les coordonnées x_p, y_p, x_q et y_q de P et Q.
Sortie : Les coordonnées du symétrique R de P par rapport à Q. On affichera les résultats d'affilée, simplement séparés d'un espace. Pour cela, on utilisera simplement la syntaxe print(x,y)
Symétrie centrale
1
2
3
4
5
6
7
8
9
10
def ma_fonction(x_p, y_p, x_q, y_q):
#Ne pas toucher ce qui précède
#Les valeurs pour les variables en entrée seront automatiquement données
#Ecrire ci-dessous en n'oubliant pas d'indenter
Enter to Rename, Shift+Enter to Preview
Exercice n° : Carreaux mouvants
Difficulté informatique : Facile Difficulté mathématique : Moyenne Notions : Vecteurs, vitesse Origine :Hackerrank
On considère deux carreaux carrés de côté L, initialement tous les deux placés de manière à avoir leur coin inférieur gauche sur l'origine du repère et leurs cotés parallèles aux axes.
A t=0, les deux carreaux commencent à bouger sur la ligne y=x (pour x et y positifs) avec une vitesse V1 et V2.
Pour une valeur q donnée, afficher la valeur du temps t pour lequel l'aire de l'intersection des deux carreaux est égale à q.
Entrée : Les valeurs de L, V1, V2 et q.
Sortie : La valeur de t cherchée.
Carreaux mouvants
1
2
3
4
5
6
7
8
9
10
def ma_fonction(L,V1,V2,q):
#Ne pas toucher ce qui précède
#Les valeurs pour les variables en entrée seront automatiquement données
#Ecrire ci-dessous en n'oubliant pas d'indenter
Enter to Rename, Shift+Enter to Preview
Exercice n° : Triangle de hauteur minimum
Difficulté : Facile Notion : Aire d'un triangle Origine :Hackerrank
Etant donnés deux entiers a et b, écrire un programme qui donne la plus petite valeur de h telle que le triangle de base b et de hauteur h ait une aire plus grande que a.
Entrée : Des entiers a et b correspondant respectivement à la valeur de l'aire à dépasser et la longueur de la base du triangle.
Sortie : La plus petite valeur de h cherchée, affichée avec print.
Triangle de hauteur minimum
1
2
3
4
5
6
7
8
9
10
11
def ma_fonction(a,b):
#Ne pas toucher ce qui précède
#Les valeurs pour les variables en entrée seront automatiquement données
Audrey passe ses vacances en Syldavie. Dans ce pays, les pièces de monnaie n'ont plus cours, et il n'existe que trois sortes de billets de banque, qui valent respectivement 57, 62 et 72 couronnes.
Hier, Audrey a acheté des croissants à la boulangerie, qui lui ont coûté k couronnes. Elle a donné un certain nombre de billets, d'un montant inférieur à 600 couronnes. Dans le cas où le vendeur a pu lui rendre la monnaie exacte de son achat, quelle somme Audrey a-t-elle donnée au vendeur? (S'il y en a plusieurs, on donnera la plus petite).
Entrée : La somme k payée par Audrey.
Sortie : La somme la plus petite donnée par Audrey pour que le vendeur puisse lui rendre la monnaie. On affichera "Impossible" si le vendeur ne pouvait pas rendre la monnaie.
Monnaie syldave
1
2
3
4
5
6
7
8
def ma_fonction(k):
#Ne pas toucher ce qui précède
#Les valeurs pour les variables en entrée seront automatiquement données
#Ecrire ci-dessous en n'oubliant pas d'indenter
Enter to Rename, Shift+Enter to Preview
Exercice n° : Passage des coordonnées cartésiennes à polaires
Difficulté : Moyen à difficile Notion utilisée : Condition
Le but de cet exercice est de créer un programme qui reçoit les coordonnées cartésiennes et les transforme en coordonnées polaires. On pourra trouver plus d'informations sur les coordonnées polaires par exemple ici : Wikipédia
Entre autre, voici une des façons d'obtenir les valeurs de r et θ :