Sujet précédent

Lancer Programmation pour résoudre un Sudoku

Cette page

Package: Sudoku - la méthode de la programmation orientée objet

C’est la méthode de oop pour résoudre le Sudoku.

class sudoku.sudoku.Box(idx, p)[source]

Box

get_group_number(num, pos=, []notInLineX=None, notInLineY=None)[source]

si le nombre non affectée dans cette zone qui c’est toutes les positions possibles ont la même direction, nous l’appeler comme un GroupNumber

class sudoku.sudoku.Chain(numList, posList)[source]

Une chaîne de deux positions au-dessus et qui ne sont pas dans la même boîte, mais dans la même ligne, et peuvent former une chaîne, désigne le nombre possible de cette chaîne positions ne peut être remplie à ces positions

class sudoku.sudoku.GroupNumber(b, num, p, direction, idx)[source]

Groupe Nombre dans la boîte

class sudoku.sudoku.LineX(idx, p)[source]

Ligne de X

class sudoku.sudoku.LineY(idx, p)[source]

Ligne de Y

class sudoku.sudoku.Matrix(file='')[source]

Un tableau d’un Sudoku

allow(x, y, v)[source]

Vérifier si la position x, y, peut être réglée à la valeur v

can_see(p0, method='u', num=0)[source]

get the possition list which can see the position, p method: “u”: un-assigned positions, “a”: all, “s”: assigned positions num: if method=”u”, the position must have be possible to be filled the number

get_all_pos(diff=, []method='a', num=0, chain=None, possibles=None)[source]

get all postion

print_rec()[source]

Imprimer toutes les étapes du processus de résolution

read(file)[source]

Lire Sudoku définissons à partir du fichier

reduce(x, y, v, d='set', check=False, info='')[source]

reduce the position(x, y)’s possible numbers from v Return:

int, as following
2 -- if set a number,
1 -- if just set number
0 -- if is not in the possible set, if check is True, it will raise an SudokuError exception
setit(x, y, v, d='define', info='')[source]

set the position x, y to be the number v return: >=1 if set successfully, 0 if it can’t be set the number v

sort_unassigned_pos_by_possibles(possibles=0)[source]

Get unassign position’s possible number list, format is [p1, p2,...] and Sorted By the possible numbers possibles: 0 for all, >=2, mean get only the possible numbers for it

class sudoku.sudoku.Number(v)[source]

nombre d’objets

can_see_by_group_number(p1)[source]

Check if the position, p1, can be seen of all this number’s group number” return: gn if can be seen by it, or None

setit(p1)[source]

enregistrer la position assignée dans la liste des p

class sudoku.sudoku.Point(x, y)[source]

Une position à la table d’un Sudoku

can_see(p1)[source]

this position can see p1? the value can’t be 3 or 7 it means the same pos rtn: 0: can’t see p1

1: can see it in x line 2: can see it in y line 4: can see it in the box
can_see_those(posList)[source]

check this position can see which positions in the posList, a [(x, y),...] list

class sudoku.sudoku.SolveMethod(fun, idx, name='', level=0, obvious=True)[source]

méthode objet

exception sudoku.sudoku.SudokuDone(x, y, v)[source]

Une exception Lorsque le tableau a été rempli 81 postes

exception sudoku.sudoku.SudokuError(x, y, v, t)[source]

Une exception lorsque x, y ne peuvent pas être réglés ou réduire ou forment le nombre vt: est le type: ‘s’ signifie ensemble, «r» signifie réduire

exception sudoku.sudoku.SudokuStop[source]

Une exception Lorsque le numéro d’enregistrement = recLimit

exception sudoku.sudoku.SudokuWhenPosSet(x, y, v)[source]

Une exception Lorsque la position, checkPos, a été défini, et le programme veulent SETIT

sudoku.sudoku.check_inobvious_number(m, first=1, only=False)[source]

Check every number which has been assigned and known as group-number and its effect’s boxes’ does not have assigned that number” Only: False, check all numbers

True, check the first number only

first: the first number to be checked

sudoku.sudoku.check_line_last_possible_for_number(m, first=1, only=False)[source]

Vérifiez chaque ligne qui ont une seule position pour le nombre de non affecté

sudoku.sudoku.check_obvious_number(m, first=1, only=False)[source]

Check every number which has been assigned and its effect’s boxes’ does not have assigned that number Only: False, check all numbers

True, check the first number only

first: the first number to be checked

sudoku.sudoku.compare_result(m, emu, result)[source]

comparer la liste des résultats, afin de vérifier s’il ya même résultat à chaque étape après le dernier enregistrement de m.rec original si même pour tous imiter résultat, cela signifie qu’il doit être vrai, ne peut donc faire par elle

sudoku.sudoku.emulator(m, x, y, v, targets=, []checkval=0)[source]

emulate the x, y to be set v, then start to use some basic methods to try to solve it will stop when and return 1: one of the targets have been set the checkval 2: isDone -1: error is True 0: all basic methods have been tested, and can’t solve and the result matrix

sudoku.sudoku.fill_last_position_by_setting(m, sets)[source]

When setting a number, may cause 1-3 groups left only one possible position check if a group have only position left, just set it

sudoku.sudoku.fill_last_position_of_group(m, first=1, only=False)[source]

Si les positions non assignées à un groupe (ligne ou boîte) sont une seule gauche

sudoku.sudoku.fill_only_one_possible(m, first=1, only=False)[source]

Consultez toutes les positions non affecté, si c’est possible numéros gauche on ne WRITEN_POSSIBLE_LIMIT: C’est vrai, Vérifier la writen de position est vraie ou fausse note, ne cochez pas.

Args:
m: Matrix Object first (int): the first number of checking only (bool): just check the first number or not
Returns:
in the tuple format (sets, reduces, method Index to restart using, first, only)
sudoku.sudoku.guess(m, idx=0, first=0, only=False)[source]

Guess Method

sudoku.sudoku.reduce_by_emulate_possible_in_one_position(m, first=1, only=False)[source]

when a position(p1) has 2 or more possible numbers, we can emulate every possible number and get its result, 1. if it causes an error, we can reduce that number, 2. if it can solve the sudoku, we can set this number, 3. if all possible number can’s get condition 1 or 2, we can compare their rec, if they have the same records, we can do it.

sudoku.sudoku.reduce_by_emulate_possible_number_in_group(m, first=1, only=False)[source]

when a group(lineX, lineY, Box) has 2 or more position have the same possible number, we can emulate every position to set the number and get its result, 1. if it causes an error, we can reduce the position’s possible number from that number, 2. if it can solve the sudoku, we can set this number in the position, 3. if all possible position can’s get condition 1 or 2, we can compare their rec, if they have the same records, we can do it.

sudoku.sudoku.reduce_by_group_number(m, first=1, only=False)[source]

Réduire le nombre possible dans une posiition par GroupNumber

sudoku.sudoku.reduce_by_two_possible_in_one_position(m, first=1, only=False)[source]

quand une position (p1) ne dispose que de deux nombres possibles, nous pouvons supposer que la position est un nombre (en premier), puis essayer d’imiter pour définir la position de l’autre numéro (deuxième), puis voir le premier numéro sera rempli dans un position (P2) qui la position peut voir si c’est le cas, nous pouvons réduire toutes ces positions qui peuvent voir P1 et P2 dans le même temps du premier numéro

sudoku.sudoku.reg_method()[source]

enregistrer toutes les méthodes comme un objet et de les enregistrer dans une liste de revenir

sudoku.sudoku.set_obvious_method_for_pos(m, method1, p1, v)[source]

Check is there an more obvious method for the position, p1 than method1 Obvious methods include fillLastPostionOfGroup=0 and checkObviousNumber=1 return: True: set, False: not set

sudoku.sudoku.solve(file, loop_limit=0, rec_limit=0, check=None, level_limit=0, emu_limits=2, use_try=True, use_emu=False)[source]

Solve a sudoku which define in a file! loopLimit: the limit for the method loops, 0: no limits recLimit: when the records >= recLimit, it will stop, 0: no limits

sudoku.sudoku.try_error(m=None, file='', depth=0)[source]

Try Error Method, only fill the first possible postion

sudoku.sudoku.update_chain(m, first=1, only=False)[source]

Mettre à jour la chaîne de retour à la ligne: = 0 signifie le montant du numéro de chaîne dans la matrice, m

sudoku.sudoku.update_group_number(m, num)[source]

Update the group number, num, in a box, and store those group number in m.n.group list return: >=0 means the group number’s amount in the matrix, m

sudoku.sudoku.update_indirect_group_number(m, num, amt=0, start=0, first=1, only=False)[source]

Update in-direct Group Number, formed by the assigned number and groupnumber already known, a recursive function

sudoku.sudoku.write_down_possible(m, first=1, only=False)[source]

Notez les numéros possibles dans chaque position de non affecté si WRITEN_POSSIBLE_LIMITS a mis à 1 .. 9, il ne notez les possibles qui