#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.)