Partage
  • Partager sur Facebook
  • Partager sur Twitter

Blocage sur le carré magique de France IOI

Sujet résolu
    27 novembre 2019 à 16:33:47

    Bonjour,

    Je suis bloquée sur l'exercice du carré magique de France IOI, j'ai trois tests non passants (sans savoir le contenu de ces tests) et je n'arrive pas à débusquer le cas manquant (mon pgm est trop permissif car envoie yes au lieu de no).

    L'énoncé est disponible ici : http://www.france-ioi.org/algo/task.php?idChapter=564&idTask=469

    Merci pour votre aide ! Voici mon code :

    nbCases=int(input())
    sommeLigne=0
    sommeRef=0
    sommeDiag=0
    sommeDiag2=0
    sommeCol=0
    tableau=[]
    condition=0
    chiffres=[0]*(nbCases*nbCases)
    chiffresRef=[1]*(nbCases*nbCases)
    
    #Construction du tableau  
    for loop in range (nbCases):
       ligne= input().split()
       for loop in range (nbCases):
          ligne[loop] = int(ligne[loop])
       tableau.append(ligne)
    #print(tableau)
          
    #Calcul de la somme de référence
    for loop in range (nbCases):
       sommeLigne+=tableau[0][loop]
    sommeRef=sommeLigne
    #print(sommeRef)
    
    #Calcul de la somme des lignes
    for loop in range (1,nbCases):
       sommeLigne=0
       for n in range (nbCases):
          sommeLigne+=tableau[loop][n]
    #      print(sommeLigne)
       if sommeLigne!=sommeRef:
          condition+=1
    
    #Calcul de la somme des colonnes
    for loop in range (nbCases):
       sommeCol=0
       for n in range (nbCases):
          sommeCol+=tableau[n][loop]
    #      print(sommeCol)
       if sommeCol!=sommeRef:
          condition+=1
          
    #Calcul de la somme des diagonales
    for loop in range (nbCases): 
       sommeDiag+=tableau[loop][loop]
    #   print(sommeDiag)
    if sommeLigne!=sommeRef:
       condition+=1
       
    for loop in range (nbCases): 
       sommeDiag2+=tableau[loop][nbCases-1-loop]
    #   print(sommeDiag2)
    if sommeLigne!=sommeRef:
       condition+=1
    
    #Chaque chiffre une seule fois
    for ligne in range (nbCases):
       for col in range (nbCases):
          #print(tableau[ligne][col])
          if 1<=tableau[ligne][col]<=(nbCases*nbCases):
             chiffres[tableau[ligne][col]-1]+=1
          else:
             condition+=1
    #print(chiffres)
    if chiffres!=chiffresRef:
       condition+=1
    
    if condition==0:  
       print('yes')
    else:
       print('no')
       



    • Partager sur Facebook
    • Partager sur Twitter
      10 décembre 2019 à 19:20:06

      Merci @PascalOrtiz ! Mauvaise relecture de ma part :)
      • Partager sur Facebook
      • Partager sur Twitter

      Blocage sur le carré magique de France IOI

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown