You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将数独生成器输出的连续数字串转换为二维列表网格格式

实现思路

首先拆解原boardToCode的逻辑:它将9*9的二维数独数组按行遍历,把所有元素转为字符串后拼接(原代码用逗号分隔,你给出的生成器输出是无分隔的连续数字串,两种情况的处理逻辑只差一步分割操作)。逆逻辑只要反过来操作即可:

  1. 把输入的字符串转为长度为81的整数一维数组
  2. 将一维数组按每9个元素切割为一组,拼接为9行的二维数组,就是目标数独格式
代码实现

适配连续数字串输入(你提供的数独生成器输出格式)

def codeToBoard(self, input_code=None):
    raw_code = input_code if input_code else self.code
    # 逐字符转换为整数,得到长度为81的一维列表
    one_dim_list = [int(c) for c in raw_code.strip()]
    # 每9个元素切分为一行,生成9*9二维数组
    sudoku_board = [one_dim_list[i*9 : (i+1)*9] for i in range(9)]
    if not input_code:
        self.board = sudoku_board
    return sudoku_board

适配原boardToCode返回的逗号分隔字符串输入

如果输入是boardToCode返回的逗号分隔格式,只需要修改一维列表生成逻辑即可:

# 把上面代码里的one_dim_list生成行替换为下面的即可
one_dim_list = [int(item) for item in raw_code.strip().split(',')]
输出指定格式

如果需要打印成你给出的my_sudoku = [的代码格式,增加如下打印方法即可:

def print_sudoku_board(board):
    print("my_sudoku =[")
    for row in board:
        print(f"    {row},")
    print("]")

调用示例:

# 假设你拿到生成器输出的字符串
sudoku_str = "800034065534267891100589304213000706456010000098640502900358000020476109687920050"
board = codeToBoard(sudoku_str)
print_sudoku_board(board)

运行后直接输出你需要的格式内容。

内容的提问来源于stack exchange,提问作者Turgut Aydemir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 22:06:01