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

Shell et commandes GNU Discussion :

Jeu de sudoku : saisie de la grille initiale


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Liamm
    Femme Profil pro
    Enseignant
    Inscrit en
    Janvier 2019
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 164
    Par défaut Jeu de sudoku : saisie de la grille initiale
    Bonjour,

    J'ai repris un programme python (3) pour avoir un exemple de programmation en "backtracking".

    Je cherche un moyen plus rapide de saisir la grille de départ.
    Actuellement je saisis directement la grille dans le source python :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    board = [
        [0, 0, 0, 8, 0, 0, 4, 0, 3],
        [2, 0, 0, 0, 0, 4, 8, 9, 0],
        [0, 9, 0, 0, 0, 0, 0, 0, 2],
        [0, 0, 0, 0, 2, 9, 0, 1, 0],
        [0, 0, 0, 0, 0, 0, 0, 0, 0],
        [0, 7, 0, 6, 5, 0, 0, 0, 0],
        [9, 0, 0, 0, 0, 0, 0, 8, 0],
        [0, 6, 2, 7, 0, 0, 0, 0, 1],
        [4, 0, 3, 0, 0, 6, 0, 0, 0]
    ]
    Idée1 : Écrire un script :
    On lui passe en paramètre une chaîne de caractères de longueur 9*9=81 caractères;
    Et on récupère en sortie standard le tableau formaté comme ci-dessus.
    Ne reste plus à faire qu'un copier coller de celui-ci dans le programme source python.

    Est-ce faisable facilement ? Cela en vaut-il la peine ?

    Idée2 : Avez-vous d'autres idées ?

  2. #2
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 364
    Par défaut
    Où est l'utilité de le faire en shell puisque python sait lire facilement un fichier texte et faire de la transformation ?

  3. #3
    Membre confirmé Avatar de Liamm
    Femme Profil pro
    Enseignant
    Inscrit en
    Janvier 2019
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 164
    Par défaut
    Je pensais que c'était plus rapide en shell (en une ligne de commande)

  4. #4
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 293
    Par défaut
    Bonjour

    À noter, le paquet sudoku.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    magrille=( 1 0 0 0 0 0 0 2 0 0 0 0 0 2 8 0 0 6 0 0 2 0 0 9 4 5 3 0 4 0 0 3 5 6 0 2 0 0 8 0 0 0 7 0 0 6 0 1 7 9 0 0 8 0 2 1 3 9 0 0 5 0 0 9 0 0 6 5 0 0 0 0 0 7 0 0 0 0 0 0 9 )
    magrille=( $( sudoku -c"$difficulte" -g |sed -n 's/\./0/g;H;${g;s/[^0-9 ]//g;p}') )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $ sudoku -chard -g
    % randomly generated - hard
     9 . 1 | . 4 3 | . . 6
     . 5 . | 2 . . | . . 1
     . 4 . | 6 . . | . 9 .
    -------+-------+-------
     6 . . | . . . | . 3 .
     . . 5 | 7 . 4 | 1 . .
     . 1 . | . . . | . . 7
    -------+-------+-------
     . 6 . | . . 8 | . 7 .
     8 . . | . . 7 | . 2 .
     5 . . | 3 9 . | 8 . .

  5. #5
    Membre confirmé Avatar de Liamm
    Femme Profil pro
    Enseignant
    Inscrit en
    Janvier 2019
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 164
    Par défaut
    Merci flodelarab,

    Sans charger le paquet "sudoku" j'ai écrit cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    #!/bin/bash                   
     
    ARG1=${1:?"Ce script nécessite a 1 arguments: \
    	   1) arg1=0123456789...81c...9876543210 "}
     
    #####   Script : sudoku.sh $1=chaine de 81 caractères              #####
    #
    # Auteur :               Liam
    # Date de creation :     Septembre 2021
    # Date de modification : 
    #
    #======================================================================#
    # Création d'une grille sudoku                                         #
    # => à partir de la saisie en paramètre de 81 caractères parmi [0...9] #
    #    La grille obtenue pourra                                          #
    #    être copier dans le pgm sudoku.backtraking.py                     #
    #======================================================================#
    #
    # ENTREE :                                 SORTIE :
    # paramètre1 : c d c de 81 car             grille sudoku formatée
    #
    var=$1
     
    printf "board = [" 
    printf "\n"
    for i in 0 1 2 3 4 5 6 7
    do
        printf "    ["
        for j in 0 1 2 3 4 5 6 7
        do
    	    printf "${var:9*i+j:1}, "
    	done
    	printf "${var:9*i+8:1} ],\n"
    done
     
        printf "    ["
        for j in 0 1 2 3 4 5 6 7
        do
    	printf "${var:9*8+j:1}, "
    	done
     
    	printf "${var:9*8+8:1} ]\n"
        printf "        ]"
    printf "\n"
     
    #
    #======================================================================#

  6. #6
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 666
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    printf "board = [" 
    printf "\n"
    autant écrire il faut aussi vérifier que l'argument fourni contient effectivement le nombre de caractères requis.

    n'oublie pas de commenter ton script, et de donner des noms explicites aux variables.
    et un exemple de chaîne fonctionnelle, parce que je ne vais pas la trouver tout seul.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

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

Discussions similaires

  1. [Free Pascal] Réalisation d'un jeu de Sudoku avec la SDL
    Par tazbrraaa dans le forum Free Pascal
    Réponses: 10
    Dernier message: 04/12/2014, 19h02
  2. Jeu du Sudoku
    Par Hero13 dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 06/10/2014, 10h07
  3. Réponses: 5
    Dernier message: 14/03/2008, 19h45
  4. VirtualTreeView - Problème de saisie en mode grille
    Par Morvan Mikael dans le forum Delphi
    Réponses: 4
    Dernier message: 05/07/2007, 16h02
  5. Interface graphique pour jeu de Sudoku
    Par Stradithehutt dans le forum Interfaces Graphiques
    Réponses: 5
    Dernier message: 01/11/2006, 10h43

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