Scrabble (niveau première)
Bonjour,
Je dois créer un Scrabble pour mon devoir de nsi, mais je suis perdu. Le prof nous a donné un code avec des fonctions à compléter, quelqu'un pourrait m'aider ? (il faut compléter les 4 fonctions mises entre guillemets).
Je dois créer un Scrabble pour mon devoir de nsi, mais je suis perdu. Le prof nous a donné un code avec des fonctions à compléter, quelqu'un pourrait m'aider ? (il faut compléter les 4 fonctions mises entre guillemets).
scrabble={"A":1,"B":3,"C":3,"D":2,"E":1,"F":4,"G":2,"H":4,"I":1,"J":8,"K":10,"L":1,"M":2,"N":1,"O":1,"P":3,"Q":8,"R":1,"S":1,"T":1,"U":1,"V":4,"W":10,"X":10,"Y":10,"Z":10} def points(mot): """ Fonction retournant le nombre de points au scrabble de la chaine de caractères mot """ pt = 0 for lettre in mot : pt = pt + scrabble[lettre] return pt def dico_scrabble(fichier): """ Fonction retournant un dictionnaire dico ayant pour clé le nombre de lettre et pour valeur un dictionnaire associant un mot à son nombre de point au scrabble """ dico = {n : {} for n in range(2,16)} # on initialise le dictionnaire pour des mots de 2 à 15 caractères f = open(fichier) # on ouvre le fichier for ligne in f: # on parcourt le fichier ligne par ligne mot = ligne.strip() # on nettoie chaque ligne des caractères parasites type retour de ligne \n # on stocke dans dico le nombre de point de mot au bon endroit ... à compléter f.close() return dico def solutions(main,n): """ Fonction retournant une liste sol de tuple (mot,valeur) autorisés au scrabble pour des mots de n lettres pris dans une main donnée""" sol = [] for mot in mots[n]: # Pour chaque mot de n lettres autorisés dispo = list(main) # Liste des lettres de la main disponible for lettre in mot : # Pour chaque lettre du mot # Si la lettre est disponible # alors la retirée des lettres disponible # sinon arreté la boucle et passer au mot suivant ... à compléter else : # Si toutes les lettres du mot sont disponible # ajouter à la liste sol le tuple (mot,valeur) ... à compléter return sol def meilleur_coup(main): """ Fonction retournant un dictionnaire rep associant à chaque nombre de lettre un tuple (mot,valeur) tel que mot est le meilleur coup à jouer avec n lettres de main et valeur le nombre de points au scrabble rapporté par mot """ rep ={} for n in range(2,8): # Pour chaque nombre n de lettre jouable # Récupère la liste des tuple (mot,valeur) de n lettres et autorisés au scrabble ... à compléter # Détermine le mot de valeur maximal et ajoute le au dictionnaire rep ... à compléter return rep fichier = 'scrabble.txt' mots = dico_scrabble(fichier) main = input("Votre main : ").upper() best = meilleur_coup(main) print(best)
A voir également:
- Pyton scrabble
- Ordi scrabble - Télécharger - Jeux vidéo
- Débloquer scrabble go - Forum jeux en ligne
- Isc.ro scrabble - Forum jeux en ligne
- Scrabble isc ro ✓ - Forum Réseaux sociaux
- Pour scrabble go - Forum jeux en ligne
3 réponses
Bonjour,
On donne toujours la même réponse pour ce genre de questions .....
Commence par lire ceci :
https://www.commentcamarche.net/infos/25899-demander-de-l-aide-pour-vos-exercices-sur-ccm/
Puis reviens nous voir avec tes tentatives en expliquant sur quelle(s) partie(s) exactement tu bloques....
Là, peut-être qu'on t'aider à corriger....
On donne toujours la même réponse pour ce genre de questions .....
Commence par lire ceci :
https://www.commentcamarche.net/infos/25899-demander-de-l-aide-pour-vos-exercices-sur-ccm/
Puis reviens nous voir avec tes tentatives en expliquant sur quelle(s) partie(s) exactement tu bloques....
Là, peut-être qu'on t'aider à corriger....
Bonjour,
Explication du sujet
Si j'ai bien compris ton sujet, le but est de trouver dans un fichier
Au scrabble, le score d'un mot est obtenu en sommant les valeurs de ses lettres (voir variable
Dans ton exercice, on ignore complètement le plateau et donc les mots éventuellement déjà posés. Ça a du sens si c'est le premier mot qu'on pose, mais si on voulait faire une intelligence artificielle pour les coups suivants, il faudrait quelque chose d'un peu plus compliqué (pour rappel, au scrabble, les mots suivants sont raccrochés à au moins un mot existant, ce qui donne l'opportunité de réutiliser une ou plusieurs lettres).Toutes ces difficultés semblent ignorées dans ton exercice.
Pour démarrer
Pour que ton programme soit exécutable et que tu vois où en est le squelette qu'on t'a proposé, tu pourrais remplir les "trous" par avec des
Par exemple, ligne 40, deux variables sont significatives (
Veille à respecter l'indentation, en Python, c'est important !
Étant donné ces variables, à toi d'écrire les bonnes instructions pour réaliser ce qui est écrit en commentaire.
Si tu es toujours bloqué
Il faudrait joindre le fichier
Bonne chance
Explication du sujet
Si j'ai bien compris ton sujet, le but est de trouver dans un fichier
scrabble.txt(qui contient vu le programme les mots autorisés au scrabble) les mots dont la taille est comprise entre 2 et 16 pouvant être posés étant donnée un ensemble de lettres défini dans
main.
Au scrabble, le score d'un mot est obtenu en sommant les valeurs de ses lettres (voir variable
scrabbleet la fonction
points).
Dans ton exercice, on ignore complètement le plateau et donc les mots éventuellement déjà posés. Ça a du sens si c'est le premier mot qu'on pose, mais si on voulait faire une intelligence artificielle pour les coups suivants, il faudrait quelque chose d'un peu plus compliqué (pour rappel, au scrabble, les mots suivants sont raccrochés à au moins un mot existant, ce qui donne l'opportunité de réutiliser une ou plusieurs lettres).Toutes ces difficultés semblent ignorées dans ton exercice.
Pour démarrer
Pour que ton programme soit exécutable et que tu vois où en est le squelette qu'on t'a proposé, tu pourrais remplir les "trous" par avec des
Par exemple, ligne 40, deux variables sont significatives (
mainet
n), donc pour les afficher, on peut ajouter :
for n in range(2,8): print(f"main = {main}") print(f"n = {n}")
Veille à respecter l'indentation, en Python, c'est important !
Étant donné ces variables, à toi d'écrire les bonnes instructions pour réaliser ce qui est écrit en commentaire.
Si tu es toujours bloqué
Il faudrait joindre le fichier
scrabble.txt(au moins les premières lignes, s'il est long) et nous dire ce qui te bloque.
Bonne chance
Re, merci de ton aide.
En fait, juste avant d'en venir à ma question, j'aimerai contextualiser. Nous (ma classe et moi) venons d'entrer en classe de première, et notre professeur nous a donner ce devoir qui à notre niveau paraît compliqué. Cela fait de nombreux jours que j'essaie de faire ce devoir, sans succès, mais je viens enfin d'accomplir la première fonction toute à l'heure.
J'aimerai finalement demander ici une aide très approfondie des 3 autres fonctions afin de comprendre et d'ensuite pouvoir faire ce devoir.
Merci d'avance pour votre aide.
En fait, juste avant d'en venir à ma question, j'aimerai contextualiser. Nous (ma classe et moi) venons d'entrer en classe de première, et notre professeur nous a donner ce devoir qui à notre niveau paraît compliqué. Cela fait de nombreux jours que j'essaie de faire ce devoir, sans succès, mais je viens enfin d'accomplir la première fonction toute à l'heure.
J'aimerai finalement demander ici une aide très approfondie des 3 autres fonctions afin de comprendre et d'ensuite pouvoir faire ce devoir.
Merci d'avance pour votre aide.