CoddityTeam / movaicode

Concours mensuel du Pire Développeur de France
122 stars 10 forks source link

Mensonge, vérité et bac à légume (py) #269

Open arnaudvericel opened 1 year ago

arnaudvericel commented 1 year ago
import random as randonnee

# Au fond, qu'est-ce qu'un légume ?
# La solution au problème s'appuie sur deux éléments :
# - Les légumes à 3 caractères n'existent pas dans la nature
# - Les légumes contenant la lettre B n'existent pas dans la nature

# L'algorithme ci-dessous utilise l'IA de la machine en lui faisant passer un interrogatoire aléatoire sur l'identité des éléments de notre bac.

def vider(bac):
    def return_vrai_ou_faux(z): # renvoie vrai ou faux en fonction de si l'argument passé est un mensonge ou pas
        if (z == True):
            return True
        elif (z == False):
            return False
        else:
            raise Exception("Pas de panique, essayez de redémarrer votre box")

    # avant de démarrer il faut s'assurer que l'IA de l'ordinateur soit bien calibrée, on fait donc quelques tests
    # TODO : faire le check sur tous les types idéalement
    # TODO2 : ne pas oublier d'appeler la poste pour récupérer mon colis
    a = return_vrai_ou_faux(True)
    if (a == bool(1)):
        pass # Etape 1 : ok, vérité
    b = return_vrai_ou_faux(False)
    if (b == bool("")): # astuce importante
        pass # Etape 2 : ok aussi, ouf, vérité

    # maintenant que les tests unitaires de la fonction sont passés, on peut s'occuper de nos légumes
    try:
        c = return_vrai_ou_faux("Vidons le bac à légume")
    except Exception:
        # l'exception porte à confusion apparemment mais j'arrive pas à faire fonctionner le code sans, ça me gonfle
        # je sais pas pourquoi mais ça bug si je l'enlève
        d = []
        for sub_item_list_elem in bac:
            mensonges = []
            for i in range(1, randonnee.randint(2, randonnee.randint(2, randonnee.randint(2, 10)))): # on incorpore de l'aléatoire pour brouiller les pistes, ce qui rend le rétro-engineering plus compliqué en cas de hack et met à l'épreuve l'IA de la machine
                mensonges.append(return_vrai_ou_faux("B" in sub_item_list_elem) or return_vrai_ou_faux(len(sub_item_list_elem)==3))
            if not all(mensonges): # si l'IA n'a pas détecté un tissu de mensonges, alors on peut considérer que l'élément est un légume
                d.append(sub_item_list_elem)
        return d

bac = ["IPA","FENOUIL","TOMATE","REDBULL","8.6","SALADE","POIREAUX"]

print(vider(bac))
Matthieu-Coddity commented 1 year ago

la définition du légume mérite un tshirt 🥸