Advertisement
Guest User

Sonoku v0.6

a guest
Jun 20th, 2018
378
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.28 KB | None | 0 0
  1. programa = 1
  2. cont2 = 0
  3. while (programa == 1):
  4. grade = [[" " for x in range(9)] for y in range(9)]
  5. cont = 0
  6. verificador = 0
  7. dic = {"A":0,"B":1,"C":2,"D":3,"E":4,"F":5,"G":6,"H":7,"I":8}
  8. padrão = True
  9. pistas = open('pistas.txt')
  10. for line in pistas: #Trata as pistas e as insere na matriz.
  11. cont2 +=1
  12. COL1 = line[:1]
  13. coluna = int(ord(COL1) - 65) #Converte a Letra referente a matriz em número.
  14. LIN1 = line[2:3]
  15. linha = int(LIN1) -1
  16. NUM1 = line[4:5]
  17. numero = int(NUM1)
  18. grade[linha][coluna] = numero
  19.  
  20. def Verificador():
  21. for k in range(9):
  22. if k != linha: #verifica as linhas
  23. if grade[linha][coluna] == grade[k][coluna]:
  24. return 1
  25. if k != coluna: #verifica as colunas
  26. if grade[linha][coluna] == grade[linha][k]:
  27. return 1
  28. #verificar cada mini-grade 3x3
  29.  
  30. verificador = Verificador()
  31.  
  32. def verificador_qnt_pistas():
  33. print("Construindo.")
  34.  
  35. def sudoku(): #exibe a grade do sudoku já formatada e com as pistas.
  36. colunasletras = " A B C D E F G H I "
  37. linhaHorizontal1 = " ++---+---+---++---+---+---++---+---+---++ "
  38. linhaHorizontal2 = " ++===+===+===++===+===+===++===+===+===++ "
  39. print (colunasletras)
  40. for i in range(0,9):
  41. if i == 3 or i == 6:
  42. print (linhaHorizontal2)
  43. else:
  44. print(linhaHorizontal1)
  45. for j in range(0,9):
  46. if (j == 3) or (j == 6):
  47. print ("|| {} |".format(grade[i][j]), end = " ")
  48. elif (j == 0):
  49. print (i+1,"|| {} |".format(grade[i][j]), end = " ")
  50. elif (j == 8):
  51. print("| {} ||".format(grade[i][j]),i+1, end = " ")
  52. elif j == 2 or j == 5:
  53. print("| {}".format(grade[i][j]), end = " ")
  54. else:
  55. print("{}".format(grade[i][j]), end = " ")
  56. print()
  57. print(linhaHorizontal1)
  58. print(colunasletras)
  59.  
  60. def Tratamento_de_Jogada(): #Falta um Verificador que funcione
  61. dic = {"A":0,"B":1,"C":2,"D":3,"E":4,"F":5,"G":6,"H":7,"I":8}
  62. padrão = True
  63. while padrão:
  64. jogadas = input("Insira sua Jogada: ")
  65. jogadas = jogadas.split()
  66. jogadas = "".join(jogadas)
  67. jogadas = jogadas.upper()
  68. if jogadas[0].isalpha() and jogadas[0] in dic:
  69. COL1 = jogadas[:1]
  70. coluna = int(ord(COL1) - 65)
  71. if jogadas[1] != ',' or jogadas[3] != ':':
  72. print ('Fora do padrão de jogadas')
  73. padrão = False
  74. if jogadas[2].isdigit():
  75. if int(jogadas[2]) > 0 and int(jogadas[2]) < 10:
  76. linha = int(jogadas[2]) - 1
  77. else:
  78. print('Fora do padrão de jogadas')
  79. padrão = False
  80. else:
  81. print('Fora de padrão de jogadas')
  82. padrão = False
  83. if jogadas[4].isdigit() and len(jogadas) == 5:
  84. if int(jogadas[4]) > 0 and int(jogadas[4]) < 10:
  85. numero = int(jogadas[4])
  86. grade[linha][coluna] = numero
  87. sudoku()
  88. for k in range(9):#verificador
  89. if k != linha: #verifica as linhas
  90. if grade[linha][coluna] == grade[k][coluna]:
  91. print ("JOGADA INVÁLIDA: Entrada feria as regras do programa!")
  92. if k != coluna: #verifica as colunas
  93. if grade[linha][coluna] == grade[linha][k]:
  94. print ("JOGADA INVÁLIDA: Entrada feria as regras do programa!")
  95.  
  96. else:
  97. print('Fora do padrão jogadas')
  98. padrão = False
  99. else:
  100. print('Fora do padrão de jogadas')
  101. padrão = False
  102. else:
  103. print('Fora do padrão de jogadas')
  104. padrão = False
  105.  
  106. #------Algoritmo Principal------
  107. print ("""
  108. Sudoku - Trabalho Final - Versão 0.4 - Data de ínicio: 12/06/2018""")
  109. print ("""Seja Bem Vindo ao Sudoku!
  110. Selecione o Modo de Jogo:
  111. (1) para selecionar o MODO INTERATIVO
  112. (2) para selecionar o MODO BATCH""")
  113. MENU= int(input("Selecione o número referente a opção desejada: "))
  114. if MENU == 1:
  115. print(">>>MODO INTERATIVO: ")
  116. Verificador()
  117. if cont >0 or verificador == 1 or cont2 > 81 or cont2 == 0:
  118. sudoku()
  119. print ("JOGO INVÁLIDO: Configuracao de dicas inválida, tente novamente.")
  120. else:
  121. sudoku()
  122. Tratamento_de_Jogada()
  123. Verificador()
  124. if verificador == 1:
  125. print("JOGO INVÁLIDO: Entrada fere as regras do programa!")
  126. else:
  127. continue
  128.  
  129.  
  130. elif MENU == 2:
  131. print(">>>MODO BATCH: ")
  132. VerificadorPistas()
  133. if cont >0 or verificador == 1:
  134. entradas = open('entradas.txt')
  135. for lines in entradas:
  136. COL1 = line[:1]
  137. coluna = int(ord(COL1) - 65) #Converte a Letra referente a matriz em número.
  138. LIN1 = line[2:3]
  139. linha = int(LIN1) -1
  140. NUM1 = line[4:5]
  141. numero = int(NUM1)
  142. grade[linha][coluna] = numero
  143. else:
  144. programa = int(input("""ESCOLHA UMA OPÇÃO CORRETA!
  145. Pressione {} para reiniciar o programa: """"".format('1')))
  146.  
  147. #depois do sudoku ser preenchido ou ouver erro:
  148. #programa = int(input("""Obrigado por usar!
  149. #Pressione {} para reiniciar o programa: """"".format('1')))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement