Créer un module
Résolu
qwerty_azerty
Messages postés
6
Statut
Membre
-
jisisv Messages postés 3678 Statut Modérateur -
jisisv Messages postés 3678 Statut Modérateur -
bonjour,
pour un DM en ISN je dois générer un module de 5 lignes et 5 colonnes avec des 0 ou 1 aléatoirement. Puis le créer un algorithme qui repère combien de fois trois 1 sont alignés horizontalement, verticalement et en diagonale.
par exemple sur une ligne : [0,1,1,1,0] on comptera 1
pour l'instant voila ce que j'ai fais:
mais lla variable nb_align_h reste toujours à 0, je pense que le problème est au niveau de iet de j
Merci pour votre réponse
pour un DM en ISN je dois générer un module de 5 lignes et 5 colonnes avec des 0 ou 1 aléatoirement. Puis le créer un algorithme qui repère combien de fois trois 1 sont alignés horizontalement, verticalement et en diagonale.
par exemple sur une ligne : [0,1,1,1,0] on comptera 1
pour l'instant voila ce que j'ai fais:
from random import randint
L=[[randint(0,1) for i in range(5)]for j in range(5)]
for ligne in L:
print(ligne)
nb_align_h=0
for i in range(0) :
for j in range (0) :
if ligne[i][j]+ligne[i][j+1]+ligne[i][j+2]==3:
nb_align_h=nb_align_h+1
for i in range(1) :
for j in range (0) :
if ligne[i][j]+ligne[i][j+1]+ligne[i][j+2]==3:
nb_align_h=nb_align_h+1
for i in range(2) :
for j in range (0) :
if ligne[i][j]+ligne[i][j+1]+ligne[i][j+2]==3:
nb_align_h=nb_align_h+1
for i in range(3) :
for j in range (0) :
if ligne[i][j]+ligne[i][j+1]+ligne[i][j+2]==3:
nb_align_h=nb_align_h+1
for i in range(4) :
for j in range (0) :
if ligne[i][j]+ligne[i][j+1]+ligne[i][j+2]==3:
nb_align_h=nb_align_h+1
for j in range(0) :
for i in range (0) :
if ligne[i][j]+ligne[i+1][j]+ligne[i+2][j]==3:
nb_align_h=nb_align_h+1
for j in range(1) :
for i in range (0) :
if ligne[i][j]+ligne[i+1][j]+ligne[i+2][j]==3:
nb_align_h=nb_align_h+1
for j in range(2) :
for i in range (0) :
if ligne[i][j]+ligne[i+1][j]+ligne[i+2][j]==3:
nb_align_h=nb_align_h+1
for j in range(3) :
for i in range (0) :
if ligne[i][j]+ligne[i+1][j]+ligne[i+2][j]==3:
nb_align_h=nb_align_h+1
for j in range(4) :
for i in range (0) :
if ligne[i][j]+ligne[i+1][j]+ligne[i+2][j]==3:
nb_align_h=nb_align_h+1
print(nb_align_h)
mais lla variable nb_align_h reste toujours à 0, je pense que le problème est au niveau de iet de j
Merci pour votre réponse
| EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI Merci d'y penser dans tes prochains messages. |
2 réponses
-
Bonjour
Deux remarques:
1- range(0) retoune [] donc tu ne rentres dans aucune de tes boucles...
2- ligne n'est pas la bonne variable pour désigner le contenu de ton module de 5 lignes sur 5 colonnes
Bonnes Fêtes de Fin d'Année
Ritchi-
-
Bonjour,
Voici de quoi faire les vérifications horizontales, verticales et horizontales pour chercher trois 1 consécutifs.from random import randint L = [[randint(0, 1) for i in range(5)] for j in range(5)] for ligne in L: print(ligne) nb_align_h = 0 nb_align_v = 0 nb_align_d1 = 0 nb_align_d2 = 0 # check horizontal: for i in range(5): for j in range(0,3): if L[i][j] + L[i][j+1] + L[i][j+2] == 3: print("Trois 1 en i=%s j=%s (horizontal)" %( i, j)) nb_align_h = nb_align_h + 1 # check vertical: for i in range(0,3): for j in range(5): if L[i][j] + L[i+1][j] + L[i+2][j] == 3: print("Trois 1 en i=%s j=%s (vertical)" %( i, j)) nb_align_v = nb_align_v + 1 # check diagonal gauche vers droite: for i in range(0,3): for j in range(0,3): if L[i][j] + L[i+1][j+1] + L[i+2][j+2] == 3: print("Trois 1 en i=%s j=%s (horizontale 1)" %( i, j)) nb_align_d1 = nb_align_d1 + 1 # check diagonal droite vers gauche: for i in range(0,3): for j in range(2,5): if L[i][j] + L[i+1][j-1] + L[i+2][j-2] == 3: print("Trois 1 en i=%s j=%s (horizontale 2)" %( i, j)) nb_align_d2 = nb_align_d2 + 1 print("\nIl y a :") print("- %s combinaisons avec trois 1 en horizontal" % (nb_align_h)) print("- %s combinaisons avec trois 1 en vertical" % (nb_align_v)) print("- %s combinaisons avec trois 1 en diagonal 1" % (nb_align_d1)) print("- %s combinaisons avec trois 1 en diagonal 2" % (nb_align_d2))
Voici un exemple de résultat affiché:
[0, 1, 0, 0, 1]
[1, 1, 1, 1, 0]
[1, 0, 1, 0, 0]
[1, 1, 1, 1, 1]
[1, 1, 1, 1, 0]
Trois 1 en i=1 j=0 (horizontal)
Trois 1 en i=1 j=1 (horizontal)
Trois 1 en i=3 j=0 (horizontal)
Trois 1 en i=3 j=1 (horizontal)
Trois 1 en i=3 j=2 (horizontal)
Trois 1 en i=4 j=0 (horizontal)
Trois 1 en i=4 j=1 (horizontal)
Trois 1 en i=1 j=0 (vertical)
Trois 1 en i=1 j=2 (vertical)
Trois 1 en i=2 j=0 (vertical)
Trois 1 en i=2 j=2 (vertical)
Trois 1 en i=1 j=1 (horizontale 1)
Trois 1 en i=2 j=0 (horizontale 1)
Trois 1 en i=0 j=4 (horizontale 2)
Trois 1 en i=1 j=3 (horizontale 2)
Trois 1 en i=2 j=2 (horizontale 2)
Il y a :
- 7 combinaisons avec trois 1 en horizontal
- 4 combinaisons avec trois 1 en vertical
- 2 combinaisons avec trois 1 en diagonal 1
- 3 combinaisons avec trois 1 en diagonal 2
Bonnes Fêtes de Fin d'Année
Ritchi -
-
-
Et puisque ta matrice est formée exclusivement de 0 et 1, pourquoi faire des tests avec comparaison ?
Il suffit d'additionner les éléméns de chaque ligne, colonne....
A moins que tu ne veuilles modifier tes hypothèses par la suite bien sûr.
Dans ce cas une classe appropriée serait plus souple.