mardi 20 juin 2017

Random Sudoku Generator

I'm trying to build a python script that generates a 9x9 block with numbers 1-9 that are unique along the rows, columns and within the 3x3 blocks - you know, Sudoku!

So, I thought I would start simple and get more complicated as I went. First I made it so it randomly populated each array value with a number 1-9. Then made sure numbers along rows weren't replicated. Next, I wanted to the same for rows & columns. I think my code is OK - it's certainly not fast but I don't know why it jams up..

import numpy as np
import random

#import pdb
#pdb.set_trace()

#Soduku solver!

#Number input

soduku = np.zeros(shape=(9,9))

for i in range(0,9,1):
    for j in range(0,9,1):
        while True:
            x = random.randint(1,9)
            if x not in soduku[i,:] and x not in soduku[:,j]:
                soduku[i,j] = x
                if j == 8: print(soduku[i,:])
                break

So it moves across the columns populating with random ints, drops a row and repeats. The most the code should really need to do is generate 9 numbers for each square if it's really unlucky - I think if we worked it out it would be less than 9*9*9 values needing generating. Something is breaking it!

Any ideas?!




Aucun commentaire:

Enregistrer un commentaire