Untitled

 avatar
unknown
python
a year ago
2.4 kB
3
Indexable
from random import shuffle

def create_block():
    arr = list()
    for i in range(3):
        arr.append(list())

    for i in range(3):
        for j in range(3):
            arr[i].append(0)

    return arr

def create_central(block):
    foo = [1,2,3,4,5,6,7,8,9]
    for row in block:
        for i in range(3):
            if len(foo) > 0:
                shuffle(foo)
                num = foo.pop()
                row[i] = num
    return block

def create_left_block(left, central):
    left = create_block()
    for i, row in enumerate(central):
        foo = [1,2,3,4,5,6,7,8,9]
        for element in row:
            foo.remove(element)

        for j in range(3):
            if len(foo) > 0:
                shuffle(foo)
                num = foo.pop()
                left[i][j] = num
    
    return left

def create_right_block(left, right, central):
    right = create_block()
    for i in range(3):
        foo = [1,2,3,4,5,6,7,8,9]
        for element in central[i]:
            foo.remove(element)
        
        for element in right[i]:
            if element in right[i]:
                foo.remove(element)

        for row in left:
            for element in row:
                if element in foo:
                    foo.remove(element)

        for j in range(3):
            if len(foo) > 0:
                shuffle(foo)
                num = foo.pop()
                left[i][j] = num
    
    return left

def rotate(matrix):
    new = create_block()
    for i in range(3):
        new[0][i] = matrix[i][2]
        new[1][i] = matrix[i][1]
        new[2][i] = matrix[i][0]
    return new

def rotate_back(matrix):
    new = create_block()
    for _ in range(3):
        new = rotate(matrix)
    return new
def create_down_block(central):
    down = create_block()
    rotated = rotate(central)

    return rotate_back(create_right_block(down, rotated))

central_block = create_central(create_block())
right_middle_block = create_right_block(create_block(), central_block)
left_middle_block = create_left_block(create_block(), right_middle_block, central_block)
central_down_block = create_down_block(central_block)
down_right_corner = create_block()

for i in range(3):
    print(left_middle_block[i], central_block[i], right_middle_block[i])
for i in range(3):
    print(down_right_corner[i], central_down_block[i])
Editor is loading...
Leave a Comment