Dans un fichier python nommé nomprenom.py Vous définirez les fonctions en suivant la nomenclature suivante :
def exercice1(arg1, arg2, etc.):
Sans utiliser de library ou de fonction native, réalisez un algorithme donnant le jour de la semaine d'une date donnée. On rappelle qu'il n'y a un 29 février que pour les années bissextiles = année divisible par 4 sauf si elle est divisible par 100, auquel cas il faut qu'elle soit divisible par 400.
Entrée : une date au format "dd/mm/yyyy"
Sortie : un jour écrit en toute lettres en anglais "monday"/"tuesday"/"wednesday"/"thursday"/"friday"/"saturday"/"sunday"
Indice : ex exercice1("22/11/2017") renvoie "wednesday"
Sans utiliser la comparaison native de chaînes de caractères, réalisez un algorithme qui compare alphabétiquement deux mots.
Entrée : mot1, mot2 (en minuscules, sans accent) Sortie : -1 si mot1 est avant mot2 dans l'ordre alphabétique, 1 si mot1 est après mot2, 0 si il s'agit du même mot.
Ex : exercice2("maison", "maire") = 1
On rappelle l'ordre alphabétique : "abcdefghijklmnopqrstuvwxyz"
Lorsqu'ils cherchent à nommer leurs recherches les médecins optent pour une technique un peu particulière d'acronyme : Ils cherchent un mot dont les lettres sont présentes dans le nom de leur thèse.
Ex réel : "The Biomarkers In aSthma To predict Recurrences and severe Outcomes" => Bistro
Règles :
- les lettres doivent être présentes dans l'ordre
- si une lettre est présente en début d'un mot de moins de 3 lettres : elle vaut 2 points
- si une lettre est présente en début d'un mot de plus de 3 lettres : elle vaut 3 points
- si une lettre est en majuscule dans la chaîne initiale : elle vaut 5 points
Entrée : Une chaîne de caractères contenant des majuscules et des minuscules (pas d'accent)
Sortie : Un mot du dictionnaire correspondant. On choisira celui avec le meilleur score. Et parmis ceux-là, le plus long. Si il y en a plusieurs. Le premier dans l'ordre alphabétique.
Help : Un dictionnaire de mots français est disponible sur http://troisyaourts.com/~smwhr/supinternet/dico_fr_full.lst
4.1 Entrée : un nombre n
Sortie : une liste de dates d'anniversaire au format dd/mm générés aléatoirement
ex : exercice41(3) = ["16/07", "21/03", "27/10"]
4.2 Entrée : une liste de dates d'anniversaire au format dd/mm
Sortie : true si il y en a 2 identiques / false si toutes sont différentes
ex : exercice42(["16/07", "21/03", "27/10", "16/07"]) = True
4.3 Entrée : un nombre n, un nombre m
Sortie : la proportion de True, si on effectue m tirages de n dates anniversaire successivement
ex : exercice43(29, 100) = 0.68
Carte exemple : http://troisyaourts.com/~smwhr/supinternet/tileset/map.txt
Un bateau pirate cherche à échapper à ses ennemis.
Il entre en E, doit sortir en T, doit éviter la terre (#) et ses ennemis (X). Les (~) représente la mer
Entrée : une chaîne de caractères représentant la map (garantie : un E, un T, qu'il existe un chemin pour aller de E à T)
Sortie : la chaîne de d'entrée où le trajet du bateau pirate a été matérialisé par des points (.). On choisira le chemin le plus court.
Un chauffeur deliveroo à vélo cherche à optimiser ses livraisons.
Il reçoit sur son application une liste de personnes à livrer et une liste de restaurants où ces personnes ont commandés.
Ces listes sont des tuples de coordonnées GPS.
Règles :
- Une personne ne peut être livrée que si le livreur est d'abord passé au restaurant correspondant
- Le livreur ne peut porter que 3 commandes simultanéments
Données :
- On rappelle la formule pour calculer la distance entre deux points géographiques : https://stackoverflow.com/questions/19412462/getting-distance-between-two-points-based-on-latitude-longitude
- On considère qu'un livreur deliveroo se déplace à 12km/h
- Pour simplifier, on considèrera que le chauffeur se déplace à vol d'oiseau
Exemple d'entrée :
[
(("Jack",(48.866694, 2.396482)), ("Le Camion qui fume", (48.864955, 2.374604))),
(("Pauline",(48.880956, 2.350303)), ("Sunken Chip", (48.873058, 2.361803))),
(("Hugo",(48.844185, 2.396399)), ("Le Chalet Savoyard", (48.864012, 2.397681))),
(("Elodie",(48.861799, 2.358958)), ("Schwartz's Deli", (48.857057, 2.358748))),
(("Barbara",(48.868600, 2.403526)), ("Jaisalmer", (48.864012, 2.397681))),
(("Julien",(48.879269, 2.389793)), ("Los Pollos", (48.857066, 2.395439))),
]
Sortie : La durée minimale du trajet à effectuer.
Entrée : une chaîne de caractère S de taille 15 constituée de chiffres
Sortie : un chiffre C tel que
- on double tous les chiffres de rang (=position) pair (0,2,4...,14) : si le double dépasse 9, on additionne ses chiffres
- on additionne le tout : on obtient R
- on cherche C pour que C+R soit un multiple de 10.
Ex : Entrée : les 15 premiers chiffres de votre carte bleue ; Sortie : le dernier chiffre de votre carte bleue.