2014-04-29 10 views
0

alors j'essaye de créer un conseil de Sudoku en Python et de faire fonctionner le NN et d'apprendre à le résoudre. Mais j'ai des problèmes en essayant de mettre ces valeurs initiales à 0. Plutôt que d'avoir à écrire a1 = 0, a2 = 0, etc. Y a-t-il un moyen plus rapide d'assigner ces valeurs dans un code simple? Merci.Réseau de neurones du Sudoku

def create(): 
print '| - - - | - - - | - - - |', 
print '|', a1, a2, a3, '|', b1, b2, b3, '|', c1, c2, c3, '|', 
print '|', a4, a5, a6, '|', b4, b5, b6, '|', c4, c5, c6, '|', 
print '|', a7, a8, a9, '|', b7, b8, b9, '|', c7, c8, c9, '|', 
print '| - - - | - - - | - - - |', 
print '|', d1, d2, d3, '|', e1, e2, e3, '|', f1, f2, f3, '|', 
print '|', d4, d5, d6, '|', e4, e5, e6, '|', f4, f5, f6, '|', 
print '|', d7, d8, d9, '|', e7, e8, e9, '|', f7, f8, f9, '|', 
print '| - - - | - - - | - - - |', 
print '|', g1, g2, g3, '|', h1, h2, h3, '|', i1, i2, i3, '|', 
print '|', g4, g5, g6, '|', h4, h5, h6, '|', i4, i5, i6, '|', 
print '|', g7, g8, g9, '|', h7, h8, h9, '|', i7, i8, i9, '|', 
print '| - - - | - - - | - - - |', 
+0

Je ne sais pas réseau de neurones, mais si vous avez un peu de souplesse dans les déclarations, une liste ou une autre structure de données similaire serait probablement rendre votre vie beaucoup plus facile. – StephenTG

+0

Utilisez la liste et la boucle for au lieu d'utiliser des variables différentes. par exemple. '[a.append (0) pour i dans la plage (9)]'. – rutulPatel

Répondre

3

Vous allez probablement vouloir utiliser une liste pour cela.

Si vous voulez vraiment garder la façon dont vous le faites, vous pouvez le faire:

a1 = a2 = a3 ... = i9 = 0 

ou pour sauver un peu d'espace d'écriture

#(0,)*81 is the same thing as writing 0, 0, ..., 0 
a1, a2, a3, ..., i9 = (0,)*81 

, mais je vous suggère d'utiliser un liste des listes.

Voici une liste de compréhension qui crée une liste de 9 zéros:

a = [0 for x in range(9)] 

Utilisez cette idée de créer une compréhension de liste qui crée une liste de 9 listes.

grid = [[0 for x in range(9)] for y in range(9)] 

Ensuite, vous pouvez accéder à la grille comme ceci:

>>> print grid[0][0] 
>>> 0 
>>> print grid[8][8] 
>>> 0 
>>> print grid 
>>> [[0, 0, 0, 0, 0, 0, 0, 0, 0], 
    [0, 0, 0, 0, 0, 0, 0, 0, 0], 
    [0, 0, 0, 0, 0, 0, 0, 0, 0], 
    [0, 0, 0, 0, 0, 0, 0, 0, 0], 
    [0, 0, 0, 0, 0, 0, 0, 0, 0], 
    [0, 0, 0, 0, 0, 0, 0, 0, 0], 
    [0, 0, 0, 0, 0, 0, 0, 0, 0], 
    [0, 0, 0, 0, 0, 0, 0, 0, 0], 
    [0, 0, 0, 0, 0, 0, 0, 0, 0]] 
+0

Votre première suggestion ne fonctionnera pas, elle devrait être 'a1 = a2 ... = 0' ou' a1, a2, ... = 0, 0, ... ' – jonrsharpe

+0

@jonrsharpe Merci, résolu. – Matthew

1

Lorsque vous travaillez avec ces structures en Python Je definitly suggérer de donner un coup d'oeil à la numpy.matrix.

Vous pouvez simplement écrire

>>> import numpy 
>>> m = numpy.zeros(shape=(9,9)) 
+3

Il existe une distinction importante entre un 'numpy.matrix' et un' numpy.array', en particulier lorsque vous les multipliez ensemble. Vous mentionnez une matrice, mais votre code crée un tableau! – Hooked

+0

@Hooked Vous avez certainement raison! J'ai suggéré d'examiner la partie de la matrice, tout en fournissant ce que je pensais être le moyen le plus facile d'obtenir la structure requise, qui est en fait juste un tableau. Cependant, passer ce tableau au constructeur 'matrix' devrait suffire pour obtenir l'objet' numpy.matrix' finalement requis. – 5agado

Questions connexes