Guest User

Untitled

a guest
Apr 21st, 2018
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.33 KB | None | 0 0
  1. #sudoku
  2. import random
  3. def spill_brett():
  4. brett=[[0for i in range(9)]for j in range(9)]
  5. return brett
  6.  
  7. def is_legal(brett,n,x,y):
  8. nedover=[]
  9. if n in brett[x]:
  10. return False
  11. for i in range(9):
  12. nedover.append(brett[i][y])
  13. if n in nedover:
  14. return False
  15. def in_rute(brett,n,x,y):
  16. rute1=[]
  17. rute2=[]
  18. rute3=[]
  19. rute4=[]
  20. rute5=[]
  21. rute6=[]
  22. rute7=[]
  23. rute8=[]
  24. rute9=[]
  25.  
  26. for q in range(3):
  27. for w in range(3):
  28. rute1.append(brett[q][w])
  29. for a in range(3,6):
  30. for s in range(3):
  31. rute2.append(brett[a][s])
  32. for z in range(6,9):
  33. for d in range(3):
  34. rute3.append(brett[z][d])
  35. for p in range(3):
  36. for c in range(3,6):
  37. rute4.append(brett[p][c])
  38. for v in range(3,6):
  39. for b in range(3,6):
  40. rute5.append(brett[v][b])
  41. for o in range(6,9):
  42. for m in range(3,6):
  43. rute6.append(brett[o][m])
  44. for f in range(3):
  45. for g in range(6,9):
  46. rute7.append(brett[f][g])
  47. for h in range(3,6):
  48. for j in range(6,9):
  49. rute8.append(brett[h][j])
  50. for k in range(6,9):
  51. for l in range(6,9):
  52. rute9.append(brett[k][l])
  53. if x<3 and y<3:
  54. if n in rute1:
  55. return False
  56. else:
  57. return True
  58. elif 2<x<6 and y<3:
  59. if n in rute2:
  60. return False
  61. else:
  62. return True
  63. elif 5<x and y<3:
  64. if n in rute3:
  65. return False
  66. else:
  67. return True
  68. elif x<3 and 2<y<6:
  69. if n in rute4:
  70. return False
  71. else:
  72. return True
  73. elif 2<x<5 and 2<y<6:
  74. if n in rute5:
  75. return False
  76. else:
  77. return True
  78. elif 5<x and 2<y<6:
  79. if n in rute6:
  80. return False
  81. else:
  82. return True
  83. elif x<3 and 5<y:
  84. if n in rute7:
  85. return False
  86. else:
  87. return True
  88. elif 2<x<5 and 5<y:
  89. if n in rute8:
  90. return False
  91. else:
  92. return True
  93. elif 5<x and 5<y:
  94. if n in rute9:
  95. return False
  96. else:
  97. return True
  98.  
  99.  
  100. def place_numbers(brett,difficulty):
  101. n = random.randint(1,9)
  102. x= random.randint(0,8)
  103. y=random.randint(0,8)
  104. for i in range(difficulty):
  105. while in_rute(brett,n,x,y)==False or is_legal(brett,n,x,y)==False or brett[x][y]>0:
  106. n = random.randint(1,9)
  107. x= random.randint(0,8)
  108. y=random.randint(0,8)
  109. brett[x][y]=n
  110. return brett
  111.  
  112. def is_finished(brett):
  113. end=[]
  114. for i in range(9):
  115. for j in range(9):
  116. if brett[i][j]>0:
  117. end.append(1)
  118. return len(end)
  119.  
  120. brett=spill_brett()
  121. y=input('hvor mange tall vil du begynne med?')
  122. brett=place_numbers(brett,y)
  123.  
  124. while is_finished(brett)<81:
  125. for i in brett:
  126. print i
  127. x = input('Hva er x-coordinaten til tallet du vil sette inn?')
  128. y = input('Hva er y-coordinaten til tallet du vil sette inn?')
  129. n=input('Hva er tallet du vil sette inn')
  130. if is_legal(brett,n,x,y)==False or in_rute(brett,n,x,y)==False:
  131. print 'Dette er ikke lov'
  132. else:
  133. brett[x][y]=n
Add Comment
Please, Sign In to add comment