как я могу изменить это число в формат сетки судоку

#python-3.x

Вопрос:

у меня есть генератор судоку, и результат такой:

800034065534267891100589304213000706456010000098640502900358000020476109687920050

но мне нужно, чтобы это было в таком формате:

 my_sudoku =[  [9,0,0,0,0,0,0,0,5],  [0,0,3,6,0,0,0,0,0],  [0,7,0,0,9,0,2,0,0],  [0,5,0,0,0,7,0,0,0],  [0,0,0,0,4,5,7,0,0],  [0,0,0,1,0,0,0,3,0],  [0,0,1,0,0,0,0,6,8],  [0,0,8,5,0,0,0,1,7],  [7,9,0,8,1,3,4,5,2]]  

мне нужно что-то обратное этому:

 def boardToCode(self, input_code=None):   if input_code:  _board = ','.join([str(i) for j in input_code for i in j])  return _board  else:  self.board = ','.join([str(i) for j in self.code for i in j])  return self.board  

но я ничего не могу придумать.

как я могу это сделать?

Ответ №1:

этого должно хватить

 board=[list(map(int, my_sudoku[i:i 9])) for i in range(0, 81, 9)]  

Ответ №2:

Как насчет чего-нибудь в этом роде?

 def code_to_board(code):  nums = [int(i) for i in code]  board = [nums[i:i   9] for i in range(0, 81, 9)]  return board  

Комментарии:

1. это приводит к чему-то вроде этого: «‘ [[0, 7, 0, 0, 3, 0, 4, 2, 5], [3, 0, 0, 2, 0, 4, 8, 0, 7], [4, 9, 0, 7, 8, 5, 1, 0, 0], [1, 0, 7, 4, 0, 0, 5, 8, 3], [8, 3, 6, 5, 0, 7, 9, 4, 1], [5, 4, 9, 0, 0, 0, 6, 7, 0], [0, 6, 4, 1, 7, 2, 3, 0, 0], [2, 5, 1, 0, 0, 3, 0, 6, 0], [0, 8, 3, 0, 5, 0, 2, 1, 0]] «‘ они мне нужны точно так же, как в моем 1-м посте!

2. В посте вы сказали, что вам это нужно в 2D-массиве, что и делает эта функция. Что не так с выводом?

3. он работает нормально, я думал, что мне нужен 3D-массив, но все в порядке. странная вещь; код работает со вчерашнего дня и все еще не может завершить создание данных. это нормально? (я строю судоки 4×16 и решаю их каждый с помощью методов 12×10, и пропуск решает более 2,5 секунд. Таким образом, это означает примерно 4,5 часа работы, но он все еще работает со вчерашнего полудня около 12:00.)