IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Exercice sur le déplacement possible du roi sur un échiquier


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2023
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2023
    Messages : 1
    Par défaut Exercice sur le déplacement possible du roi sur un échiquier
    Bonjour je suis nouveau en python
    j'ai reçu un exercice de mon prof qui demande d'écrire une code qui renvoi une liste des déplacements possible du roi dans un échiquier vide en fonction de sa position
    j'aimerais savoir s'il y aurait un moyen plus efficace de le faire sans utiliser la méthode Bourin comme j'ai fais.

    Merci d'avance

    def testdaR (echiquier:list, h:int, v:int)->list:

    """"
    liste de tuples représentant la liste des déplacements autorisés pour le roi situé sur la case (h, v).
    ===

    Entrée :
    --------
    echiquier(liste):liste initiale
    h(entier):entier positif non nul représentant la position horizontale du roi à déplacer
    v(entier):entier positif non nul représentant la position verticale du roi à déplacer

    Sortie:
    --------
    Liste de liste representant les déplacements autorisés pour le roi

    ===

    Jeux de tests :
    ---------------
    >>>testdaR(echiquiervide(),1,1)
    [(0, 1), (1, 0), (1, 1)]



    """


    assert h<=8 and v<=8

    #regarder si le roi est situé dans l'un des 4 angles de l'échiquier
    if h==1 and v==1:
    deplacement=[(0,1),(1,0),(1,1)]
    elif h==1 and v==8:
    deplacement= [(0,-1),(1,0),(1,-1)]
    elif h==8 and v==1:
    deplacement= [(0,1),(-1,0),(-1,1)]
    elif h==8 and v==8:
    deplacement= [(0,-1),(-1,0),(-1,-1)]

    #regarder si le roi est situé sur la 1ere puis sur la dernière colonne de l'échiquier
    elif h==1 and v!=1:
    deplacement=[(0,1),(0,-1),(1,0),(1,1),(1,-1)]
    elif h==8 and v!=8:
    deplacement=[(0,1),(0,-1),(-1,0),(-1,1),(-1,-1)]

    #regarder si le roi est situé sur la 1ere puis sur la dernière ligne de l'échiquier
    elif h!=1 and v==1:
    deplacement=[(0,1),(1,0),(-1,0),(1,1),(-1,1)]
    elif h!=8 and v==8:
    deplacement=[(0,-1),(1,0),(-1,0),(1,-1),(-1,-1)]
    else:
    deplacement= [(0,1),(0,-1),(1,0),(-1,0),(-1,1),(-1,-1),(1,1),(1,-1)]
    return deplacement

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Salut,

    Le roi se déplace d'une case dans toutes les 8 directions.

    Et les déplacements dans ces 8 directions, c'est faire varier 2 indices (i, j) dans -1..+1 en filtrant i = j = 0.
    Après tester si la position est "dans l'échiquier" peut se faire avec une grille 10x10 de booléens où les 8x8 cases au centre représentent les cases physiques et les case du bords sont "virtuelles"/inaccessibles.

    Comme le roi ne se déplace que d'une case la position à tester sera toujours dans la grille 10x10 et accessible ou pas, c'est la valeur associée à cette case du tableau.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 835
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par Movich11 Voir le message
    je suis nouveau en python
    Et nouveau sur le forum. Il n'y a rien de mal à ça mais quand tu as vu ton post une fois terminé, tu ne t'es pas dit "punaise mon code est illisible, comment font les autres?" pour ensuite aller te promener voir justement comment font les autres pour poster un code lisible???
    Sinon c'est écrit dans les règles que manifestement tu n'es pas allé voir non plus.

    Citation Envoyé par Movich11 Voir le message
    #regarder si le roi et situer dans l'un des 4 angles de l'échiquier
    #regarder si le roi et situer sur la 1ere puis sur la dernière ligne de l'échiquier
    #regarder si le roi et situer sur la 1ere puis sur la dernière ligne de l'échiquier
    Tu ne sais pas non plus conjuguer un participe passé? Ou bien tu penses que parce que c'est de l'informatique la grammaire ne sert plus à rien???

    Citation Envoyé par Movich11 Voir le message
    >>>testdaR(echiquiervide(),1,1)
    [(0, 1), (1, 0), (1, 1)]
    Me semble qu'un roi peut se déplacer dans les 8 directions, mais que la position initiale (1, 1) ne fait pas partie des déplacements autorisés. Ou alors je me trompe et (1, 1) ce n'est pas la position finale mais l'indice de déplacement mais il reste quand-même encore 5 déplacements possibles...

    Citation Envoyé par Movich11 Voir le message
    j'aimerais savoir s'il y aurait un moyen plus efficace de le faire sans utiliser la méthode Bourin comme j'ai fait.
    Oui. Créer une fois les 8 déplacements puis supprimer ceux qui sont impossibles et retourner ce qui reste. Accessoirement je ne vois pas à quoi sert la liste "echiquier" reçue par la fonction et que tu n'utilises pas.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. exercice sur les matrices
    Par massimo dans le forum MATLAB
    Réponses: 3
    Dernier message: 22/03/2007, 17h20
  2. besoin d aide sur un exercice sur les pointeurs
    Par azumachakib69 dans le forum C
    Réponses: 3
    Dernier message: 28/12/2006, 01h16
  3. Exercice sur les tableaux
    Par IDE dans le forum Algorithmes et structures de données
    Réponses: 15
    Dernier message: 06/11/2006, 19h33
  4. Besoin d'aide pour un exercice sur les registres
    Par zakuza dans le forum Assembleur
    Réponses: 5
    Dernier message: 14/04/2006, 14h23
  5. Réponses: 4
    Dernier message: 28/07/2005, 16h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo