#!/usr/bin/env python3
"""
Partie "mini projet" : génération de tous les menus possibles.
"""

def parse_args():
    """Renvoie le nom du fichier à utiliser en entrée.

    Si exactement un argument est donné, alors cette fonction
    renvoie cet argument.

    Dans tous les autres cas, la fonction doit arrêter le programme
    à l'aide de la fonction exit du module sys après avoir affiché
    un message à l'utilisateur indiquant comment utiliser le programme.
    """
    # TODO
    ...

def lire_carte(nom_fichier):
    """
    Cette fonction construit et renvoie un dictionnaire à partir du fichier dont le nom est passé
      en paramètre.
    Les clefs du dictionnaire renvoyé correspondent aux types des plats proposés, ce sont des
      chaines de caractères.
    La valeur associée à chaque type de plat est un tableau dynamique de chaînes de caractères
      contenant tous les choix possibles pour le type de plat.
    """
    # TODO
    ...

def afficher_carte(carte):
    """
    Affiche la carte passée en paramètre en respectant le format donné dans l'énoncé.
    """
    # TODO
    ...


def choisir_menu_aleatoirement(carte):
    """
    Renvoie **un tuple** de taille n contenant des tuples à 2 éléments,
    n étant le nombre d'entrées dans le dictionnaire carte passé en paramètre.
    """
    # TODO
    ...

def generer_tous_les_plats(carte):
    """
    Fonction génératrice permettant d'itérer sur tous les plats possibles
    dans la carte passée en paramètre.
    """
    # TODO
    ...

def generer_toutes_les_possibilites(carte, nb_plats):
    """
    Fonction génératrice renvoyant un itérateur permettant de parcourir tous les choix de taille
    nb_plats possibles.
    Un choix est un tuple de taille nb_plats.
    """
    # TODO
    ...

def main():
    """
    Programme principal.
    """
    print("\n*** Question 1 ***")
    nom_fichier = parse_args()
    print(f"On travaille avec le fichier {nom_fichier}")

    print("\n*** Question 2 ***")
    carte = lire_carte(nom_fichier)
    print(carte, end="\n\n")

    print("\n*** Question 3 ***")
    afficher_carte(carte)

    print("\n*** Question 4 ***")
    print(f"{choisir_menu_aleatoirement(carte)}\n")

    print("\n*** Question 5 ***")
    print(*generer_tous_les_plats(carte), sep="\n")

    print("\n*** Question 6 ***")
    print(*generer_toutes_les_possibilites(carte, 1), sep="\n")
    print()
    print(*generer_toutes_les_possibilites(carte, 2), sep="\n")

if __name__ == "__main__":
    main()
