.版本 2
.程序集 窗口程序集1
.程序集变量 行数, 整数型
.程序集变量 列数, 整数型
.程序集变量 数据地址, 整数型
.程序集变量 取样数组, 整数型, , "0"
.程序集变量 数据集, 整数型, , "81"
.程序集变量 宫地址, 整数型
.程序集变量 宫组地址, 整数型
.程序集变量 宫行数, 整数型
.程序集变量 宫列数, 整数型
.程序集变量 格地址, 整数型
.程序集变量 宫数组, 整数型, , "81"
.程序集变量 是否重复, 逻辑型
.程序集变量 筛选数组, 整数型, , "0"
.程序集变量 归零次数, 整数型
.子程序 __启动窗口_创建完毕
行数 = 1
列数 = 1
宫组地址 = 1
归零次数 = 1
.子程序 _按钮1_被单击
.局部变量 写出数据集, 整数型
行数 = 1
列数 = 1
宫组地址 = 1
归零次数 = 1
.判断循环首 (行数 ≤ 9)
.判断循环首 (列数 ≤ 9)
取样数组 ()
列数 = 列数 + 1
.判断循环尾 ()
行数 = 行数 + 1
列数 = 1
.判断循环尾 ()
编辑框1.内容 = “”
编辑框1.刷新显示 ()
.计次循环首 (取数组成员数 (数据集), 写出数据集)
编辑框1.加入文本 (到文本 (数据集 [写出数据集]))
.计次循环尾 ()
行数 = 1
列数 = 1
宫组地址 = 1
归零次数 = 1
.子程序 取样数组
.局部变量 地址, 整数型
.局部变量 取样地址, 整数型
清除数组 (取样数组)
数据地址 = 列数 + (行数 - 1) × 9
.如果真 (数据地址 = 1)
随机取数 ()
返回 ()
.如果真结束
取样地址 = 1 + (行数 - 1) × 9 ' 行取样↓
.判断循环首 (取样地址 < 数据地址)
加入成员 (取样数组, 数据集 [取样地址])
取样地址 = 取样地址 + 1
.判断循环尾 () ' 行取样↑
取样地址 = 列数 ' 列取样↓
.判断循环首 (取样地址 < 数据地址)
加入成员 (取样数组, 数据集 [取样地址])
取样地址 = 取样地址 + 9
.判断循环尾 () ' 列取样↑
.计次循环首 (3, 宫行数) ' 宫取样↓
.如果真 (行数 ÷ 3 ≤ 宫行数)
跳出循环 ()
.如果真结束
.计次循环尾 ()
.计次循环首 (3, 宫列数)
.如果真 (列数 ÷ 3 ≤ 宫列数)
跳出循环 ()
.如果真结束
.计次循环尾 ()
宫地址 = (宫行数 - 1) × 3 + 宫列数
格地址 = (行数 - (宫行数 - 1) × 3 - 1) × 3 + 列数 - (宫列数 - 1) × 3
宫组地址 = (宫地址 - 1) × 9 + 格地址
取样地址 = (宫地址 - 1) × 9 + 1
.判断循环首 (取样地址 < 宫组地址)
加入成员 (取样数组, 宫数组 [取样地址])
取样地址 = 取样地址 + 1
.判断循环尾 () ' 宫取样↑
取筛选数组 ()
返回 ()
.子程序 取筛选数组, , , 筛选数组成员为0则判断卡死
.局部变量 比较值, 整数型
.局部变量 样本地址, 整数型
.局部变量 x, 整数型
' 初始化各变量
比较值 = 1
样本地址 = 1
是否重复 = 假
清除数组 (筛选数组)
' 进行循环判断
.判断循环首 (比较值 ≤ 9)
.如果真 (数据地址 = 1)
跳出循环 ()
.如果真结束
.判断循环首 (样本地址 ≤ 取数组成员数 (取样数组))
.如果真 (比较值 = 取样数组 [样本地址])
是否重复 = 真
跳出循环 ()
.如果真结束
样本地址 = 样本地址 + 1
.判断循环尾 ()
.如果真 (是否重复 = 假)
加入成员 (筛选数组, 比较值)
.如果真结束
样本地址 = 1
比较值 = 比较值 + 1
是否重复 = 假
.判断循环尾 ()
.如果真 (取数组成员数 (筛选数组) = 0)
.如果真 (数据地址 ≠ 1)
归零 ()
返回 ()
.如果真结束
.如果真结束
随机取数 ()
返回 ()
.子程序 归零
.局部变量 数据集归零下标, 整数型
.局部变量 宫数组归零下标, 整数型
.局部变量 列归零判断次数, 整数型
归零次数 = 归零次数 + 1
列数 = 1
列归零判断次数 = 1
数据集归零下标 = (行数 - 1) × 9 + 列数
.判断循环首 (数据集归零下标 ≤ 数据地址)
.计次循环首 (3, 列归零判断次数)
.如果真 (列数 ÷ 3 ≤ 列归零判断次数)
跳出循环 ()
.如果真结束
.计次循环尾 ()
宫数组归零下标 = 18 × 宫行数 + 6 × 列归零判断次数 + 3 × 行数 + 列数 - 27
数据集 [数据集归零下标] = 0
宫数组 [宫数组归零下标] = 0
列数 = 列数 + 1
数据集归零下标 = (行数 - 1) × 9 + 列数
.判断循环尾 ()
列数 = 0
.如果真 (归零次数 > 4000)
_按钮1_被单击 ()
.如果真结束
返回 ()
.子程序 随机取数
.局部变量 现取数, 整数型
置随机数种子 ()
.' 循环判断首 ()
.如果 (数据地址 = 1)
现取数 = 取随机数 (1, 9)
.否则
现取数 = 筛选数组 [取随机数 (1, 取数组成员数 (筛选数组))]
.如果结束
' 编辑框1.加入文本 (“12fwq”)
.' 循环判断尾 (行重复 = 真 或 列重复 = 真 或 宫重复 = 真)
数据集 [数据地址] = 现取数
宫数组 [宫组地址] = 现取数
返回 ()