(加试题)四宫数独规则:在4×4的格子中,根据已知数字,推理出所有剩余空格的数字,并满足每一行、每一列、每一个宫(粗线框区域)内均含1到4的数字并且不重复,每道数独有且仅有唯一答案。
例如,根据规则推理图1数独,在第一宫中4个格子已经3个格子分别是数字1到3,缺的数字为4,因此第一行第一格空缺的数字填4,以此类推,直至将所有格子都推理出来。

|

|
图1
| 图2
|
(1)根据上述规则推理,数独(图2)第一行A处应是数字______。

(2)小明编写了四宫数独推算的VB程序,单击“推算”按钮 Command1后,在列表框List1中输出数独推算过程和结果,如第17题-3题图所示。实现推算的VB程序如下,请在划线处填入合适的代码。
Dim d(1 To 16) As Integer '数组d逐行存储四宫数独
Private Sub Command1_Click()
Dim i As Integer,flag As Boolean
For i = 1 To 16
d(i) =0 ‘值0表示该位置还未填数字
Next i
‘初始化数独中已知位置的数字
d(2) =4:d(11) =3:d(14) =2:d(16) =4
List1.Clear
'在列表框Li1中输出四宫数独,代码略
flag = False
Do While Not flag
①__________
For i = 1 To 16
‘函数check(i)实现对第i位置进行推算
If d(i) = 0 Then
d(i) = check(i)
If d(i) >0 Then
flag = False
'Forniat(i,"00")函数实现将变量i的值按2个字符宽度输出
List1.Addltem"第"& Format(i,”00” & "位置填” & d(i)
End If
End If
Next i
Loop
'在列表框Lil中输出四宫数独,代码略
End Sub
根据每一行、第一列、每一个宫的已有数字进行推算
Function check(x As Integer) As Integer
Dim t(0 To 4) As Integer,m As Integer
Dim row As Integer,col As Integer,n As Integer,k As Integer
For m=0 To 4
t(m) =0
Next m
'对当前所在行列进行推算
row = (x-l)\4+l
col = ( x - l) Mod 4 + l
For m= 1 To 4
t(d( row - l) *4+m) = l
t(
②_______)=1
Next m
'进行宫内推算
If row < =2 And col <= 2 Then t(d(7 -x) ) = l
If row< = 2 And col > 2 Then t(d(ll - x) = l
If row > 2 And col < = 2 Then t(d(23-x) = l
If row > 2 And col > 2 Then t(d(27-x) = l
k =0
For m= l To 4
If t (m) = 0 Then n = m Else k = k + l
Next m
If ③_______ Then check = n Else check = 0
End Function