Table des Matières

Sujet précédent

cours

Sujet suivant

Lancer Programmation pour résoudre un Sudoku

Cette page

Comment faire un environnement de simulation en Python pour résoudre un sudoku

Nous pensons que les classes définies est la plus difficile pour l’apprenant dans la méthode de la programmation orientée objet de la programmation. Donc, dans ces cours d’apprentissage pour résoudre le sudoku, nous n’expliquons pas comment faire une classe, les biens et méthodes en détail. Mais juste faire une explication de classes existent, les propriétés et méthodes de cette bibliothèque pour les apprenants. Donc, nous pouvons expliquer ces structures de données comme un environnement de simulation pour résoudre un sudoku comme un être humain.

Nous pouvons première image que il ya des maisons 9x9 dans une belle vallée, et ils sont construits comme:

_images/p4.png

** Un monde imaginaire **

Il ya 9 pays, chaque pays dispose de 9 personnes. Ils décident de vivre ensemble dans cette belle vallée. Et il ya des maisons 9x9, Ils veulent laisser tous les gens vivent dans une maison, et chaque ligne X-chemin, la ligne Y-chemin, et chaque boîte 3x3 comprennent les gens de tous les pays. Et si c’est le cas, ils peuvent dire eux-mêmes sont un vrai groupe uni dans le monde, pouvez-vous les aider?

et alors nous pouvons commencer à résoudre le monde wondeful pour ces gens ...

Qu’est-ce qu’une classe? et un objet?

Classe est le nom collectif pour un groupe d’objets qui ont les mêmes comportements, les caractéristiques, les formes. Donc, animal peut être un nom de classe, et l’éléphant est un type d’objet de cette classe.

Un objet est chose qui appartiennent une classe ou plusieurs classes.You peuvent traiter un objet est une entité d’une classe, comme l’homme est une classe, mais vous est un objet, une entité qui appartient classe humaine.

Dépendra le domaine qui nous voulons aborder, ou à définir, nous allons définir quelques classes différentes pour décrire les mêmes objets. Comme si nous voulons étudier un système de bio-écologie de la ville, on peut définir une classe d’animaux, qui contiennent certaines personnes, certains animaux, et ainsi de suite ... Mais quand notre domaine est de faire une demande de livre de téléphone, nous pouvons définir une classe de personne qui contiennent certaines personnes, mais pas d’animaux, à l’exception de nos animaux de compagnie ont un téléphone portable aussi.

Dans cette bibliothèque sudoku de résolution, nous définissons les classes suivantes:

  • Nombre Classe:

    Vous pouvez traiter chaque numéro comme un autre homme, il ya 9 pays, et chaque pays dispose de 9 hommes. Donc, nous pouvons traiter la classe en tant que numéro un de catégorie Pays. Chaque pays a son ID, voici 1-9, et chaque pays serait d’enregistrer les positions où leurs habitants vivent dans cette vallée.

  • Point de Classe:

    Point est une maison ici. Il indique qu’il est vide ou pas, si elle n’est pas vide, quel pays les gens y vit? si elle est vide, les gens de qui comtés peuvent vivre ici?

  • GroupBase Classe:

    GroupBase est un groupe de ligne de X, Y ou ligne d’une zone de 3x3. C’est la classe de base de boîte, Linex, Liney. Il indique que les maisons appartiennent à lui, combien de personnes ont vécu dans ce groupe? et les personnes qui comtés toujours pas vivre dans ce groupe?

  • Box Classe:

    Chaque bloc de 3x3. Chaque boîte a son Identifiant, de gauche à droite, de haut en bas, il est affecté 1-9, comme l’image suivante:

    _images/p5.png
  • LinEx Classe:

    Chaque ligne X-Way. Chaque ligne X-Way a son Identifiant, de gauche à droite, il est affecté 1-9, comme l’image suivante:

    _images/p6.png
  • Liney Classe:

    Chaque ligne y-chemin. Chaque ligne y-chemin a son Identifiant, de haut en bas, il est affecté 1-9, comme l’image suivante:

    _images/p7.png
  • Matrix Class:

    Matrix Class est le monde d’un jeu de sudoku. C’est la belle vallée, dont 9 pays, tous les pays ont 9 personnes, il ya des maisons 9x9 pour tous ces gens.

Qu’est-ce qu’une propriété?

La propriété est dans une classe à déclamer ce qu’il COTAIN et comment ils ressemblent ou leurs conditions. Comme une classe de personne, peuvent avoir ces propriétés de combien d’argent il encore, combien d’enfants il encore, et premier enfant est garçon ou fille, quel âge ont-elles?

Voici les principales propriétés de toutes les classes dans ce libryary:

  • Nombre Classe:

    • v: l’identifiant d’un pays, il est 1-9.

    • p: la liste des maisons de ces gens de la campagne ont vécu dans

    • rempli: combien de personnes ont vécu dans une maison

  • Point de Classe:

    • x: x-chemin postion de cette maison

    • y: la position y-chemin de cette maison

    • v: quel pays les gens ont vécu ici, si elle est vide, sa valeur est 0

    • b: cette maison qui belogn boîte 3x3

  • GroupBase Classe:

    • idx: l’identifiant de ce groupe

    • p: la liste des maisons qui appartiennent à ce groupe

    • rempli: combien de personnes ont vécu dans ce groupe

    • possible: la liste des id de pays qui n’ont pas vécu dans ce groupe

  • Box Classe:

    • Toutes les propriétés GroupBase

    • effets: la zone de liste identifiant les voisins d’une boîte

    • effectsX: la zone de liste identifiant les voisins d’une boîte qui dans la direction X-Way

    • effectsY: la zone de liste identifiant les voisins d’une boîte qui dans la direction Y-chemin

  • LinEx Classe:

    • Ayant les mêmes propriétés que GroupBase

  • Liney Classe:

    • Ayant les mêmes propriétés que GroupBase

  • Matrix Class:

    • p: A deux dimention du point (maison), de p [0] [0] pour p [8] [8] de présenter toutes les maisons dans cette vallée.

    • LinEx: Une liste de ligne x-chemin des maisons

    • Liney: Une liste de droite y-chemin des maisons

    • b: Une liste de la boîte de 3x3 des maisons

    • n: Une liste de pays.

    • remplis: combien de personnes ont vécu dans une maison maintenant.

Qu’est-ce qu’une méthode?

Les méthodes sont les comportements d’une classe ou d’un objet. Par exemple, si nous définissons une classe de la radio contient plusieurs boutons, alors nous devrions définir les méthodes lorsque certaines bouton a été poussé. Il peut commencer à recevoir un programme d’une station, ou enregistrer un programme dans le lecteur CD, etc ..

Voici les principales méthodes des classes de cette bibliothèque:

  • Nombre Classe:

    • Setit (p1): quand le peuple d’un pays à trouver une maison (p1) à vivre, cette méthode sera appelée

  • Point de Classe:

    • can_see (p1): pour vérifier une maison peut voir une autre maison (p1) ou pas?

    • can_see_those (posList): pour vérifier une maison peut voir une liste de maisons, et retourner la liste des maisons qui ne peut les voir.

    Note

    Qu’est-ce que “** VOIR **”?

    les maisons dans le même sens x ou y-chemin ligne ou dans la même boîte, d’une maison, ce qui signifie que cette maison peut ** VOIR ** tous.

  • GroupBase Classe:

    • permettre (v): vérifier le groupe peut permettre aux gens de la campagne (dont l’id est v) de vivre ou pas?

    • get_num_pos (v): arriver là où les gens vivent dans ce groupe qui est les gens du pays (dont l’id est v), s’il n’y a pas des gens de ce pays, il retourne None.

    • count_num_possible (chiffre): obtenir l’identifiant et maisons, qui sont maintenant vide, et sont peut être attribué à un peuple des pays des pays, et les maisons sont égales au nombre (chiffre)

    • get_all_pos (méthode): obtenir toutes les maisons de ce groupe, si la méthode = “a ”; si la méthode = ” u”, obtenir toutes les maisons vides, si la méthode = “s ”, obtenir maisons pas tous vides.

  • Box Classe:

    • Toutes les méthodes GroupBase

    • get_group_number (num): Pour vérifier le nombre dans une boîte de formerait un numéro de groupe ou pas.

    Note

    Qu’est-ce que “** Nombre de groupe **”?

    Numéro du groupe se trouve dans une boîte. Ces maisons dans cette case peuvent et ne peuvent permettre aux gens de certains pays, et ces maisons dans un même ligne (ligne X-Way ou y de ligne de chemin), nous appellerons ces maisons forment un numéro de groupe ** **, Nous n ‘t savent quelle maison est les gens du pays devraient enfin vivre, mais nous savons que les autres maisons dans cette ligne ne seront pas permettre aux gens de la même pays à vivre.

  • LinEx Classe:

    • Avoir les mêmes méthodes que GroupBase

  • Liney Classe:

    • Avoir les mêmes méthodes que GroupBase

  • Matrix Class:

    • get_all_pos (méthode): si la méthode = “a”, obtenir toutes les maisons; si la méthode = “u”, obtenir toutes les maisons vides; si la méthode = “s”, obtenir toutes les maisons où ont vécu les gens

    • sort_unassigned_pos_by_possibles (possibles): obtenir toutes les maisons vides qui ne sont allowfd pour [possibles] pays, les personnes, si possibles == 0, il obtiendra toutes les maisons vides, et triés par les possiles de faible à élevé.

    • can_see (p0, method = “u”, num = 0): obtenir les maisons qui cand la maison (p0), si le num = 0, veut obtenir les maisons seulement sont autorisés les gens du pays num.

    • Setit (x, y, v): Laissez les gens du pays de v vivent dans la maison de la position (x, y).

    • réduire (x, y, v): Quand un peuple du pays à trouver une maison convenable pour vivre, alors une maison vide peut voir la maison permettra de réduire leurs pays possibles gens à vivre po

    • permettre (x, y, v): consultez le pays v gens peuvent vivre dans la maison de la position (x, y) ou pas?

    • lire (dossier): lire le premier défini que le nombre de personnes et où ils ont vécu dans cette vallée.

Jeu fichier défini

Vous pouvez définir le jeu de sudoku en donnant x, y, v ligne par ligne dans un fichier texte. comme suit: définir son fichier est dans le [répertoire d’installation] / sudoku / données /

Un échantillon de définir et de sa matrice originale et le résultat
m3.data

Matrice d’origine

résultat Matrice

_images/m3.png _images/origin.png _images/result.png