i currently have the code :
# gets all the horizontal rows from file
rows = [line.strip('\n') for line in open("F:/sudoku practice.txt",'r')]
# gets all the vertical columns from horizontal rows
columns = [(''.join(list(line[i]for line in rows)))for i in range(8)]
import itertools
sections = [[],[],[],[],[],[],[],[],[]]
for line in rows[:3]:
sections[0].append([(''.join(line[:3]))])
sections[1].append([(''.join(line[3:6]))])
sections[2].append([(''.join(line[6:9]))])
for line in rows[3:6]:
sections[3].append([(''.join(line[:3]))])
sections[4].append([(''.join(line[3:6]))])
sections[5].append([(''.join(line[6:9]))])
for line in rows[6:9]:
sections[6].append([(''.join(line[:3]))])
sections[7].append([(''.join(line[3:6]))])
sections[8].append([(''.join(line[6:9]))])
# flattening the list of lists of lists into a list
for i in range(9):
sections[i] = ''.join(list(itertools.chain.from_iterable(sections[i])))
print(sections)
this returns :
[' 2 457689', '456 8 237', '789236 4 ', ' 5274396', '362 9 574', '9746538 ', ' 4 761938', '618 4 725', '397528 6 ']
where each item in the list represents a section of the Sudoku puzzle, and this is exactly what i want but i am hoping for a far shorter way of getting all the sections, i got a one liner for getting the rows and columns and would like something similar if possible
Since in Sudoku you'll want lots of access to subarrays and diagonals, etc, Numpy will save you a lot of effort: