📄 kanuotu.txt
字号:
Private Sub Check1_Click(Index As Integer)
qin
If Check1(Index).Value = 1 Then
Command1(Index).Caption = "1"
Else: Command1(Index).Caption = "0"
End If
hj
End Sub
Private Sub Command1_Click(Index As Integer)
qin
If Command1(Index).Caption = "0" Or Command1(Index).Caption = " " Then
Command1(Index).Caption = "1": Check1(Index).Value = 1
Else: Command1(Index).Caption = "0": Check1(Index).Value = 0
End If
End Sub
Public Sub qin()
Cls
Erase d: Erase c: Erase jilu
Text1.Text = ""
m = 0: t = 0: l = 0: z = 0
End Sub
Public Sub hj()
For Index = 0 To 15
If Command1(Index).Caption = "1" Then
c(m).dat = Check1(Index).Caption: c(m).l(0) = Index: jilu(0).l(m) = Index: jilu(0).n = m: m = m + 1
End If
Next Index
If m = 0 Then
Cls
ElseIf m = 16 Then
Text1.Text = "1": Line (720, 720)-(4560, 4560), QBColor(13), B
Else: jian z
End If
End Sub
Public Sub jian(z)
Dim e As Integer: Dim b(40) As j: Dim x As Integer: Dim n As Integer: Dim s As Integer: Dim temp As String: Dim i As Integer: Dim j As Integer: Dim k As Integer
e = m - 1: m = 0
For i = 0 To e
b(i).dat = c(i).dat
For j = 0 To 2 ^ z - 1
b(i).l(j) = c(i).l(j)
Next j
Next i
Erase c
For i = 0 To e
For j = i + 1 To e
For k = 1 To 4
If Mid(b(i).dat, k, 1) <> Mid(b(j).dat, k, 1) Then
b(j).n = b(j).n + 1: s = k
End If
Next k
If b(j).n = 1 Then
b(i).r = 1: b(j).r = 1: b(j).n = 0: temp = b(j).dat: Mid(b(j).dat, s, 1) = " "
For k = 0 To m
If c(k).dat <> b(j).dat Then
n = n + 1
End If
Next k
If n = m + 1 Then
n = 0: c(m).dat = b(j).dat: m = m + 1
For k = 0 To 2 ^ z - 1
c(m - 1).l(k) = b(i).l(k)
c(m - 1).l(k + 2 ^ z) = b(j).l(k)
Next k
End If
b(j).dat = temp
End If
b(j).n = 0
n = 0
Next j
Next i
For i = 0 To e
If b(i).r = 0 Then
d(t).dat = b(i).dat: t = t + 1
For k = 0 To 2 ^ z - 1
d(t - 1).l(k) = b(i).l(k)
Next k
d(t - 1).n = 2 ^ z
End If
Next i
If m > 0 Then
jian (z + 1)
Else: rejian
End If
End Sub
Public Sub rejian()
Dim n As Integer: Dim a As Integer: Dim i As Integer: Dim j As Integer: Dim k As Integer
For i = 0 To t - 1
d(i).s = 1
For j = 0 To jilu(0).n
For k = 0 To t - 1
If d(k).s <> 1 Then
For a = 0 To d(k).n - 1
If jilu(0).l(j) = d(k).l(a) Then
a = d(k).n: k = t + 1
End If
Next a
End If
Next k
If k = t Then
d(i).s = 0: j = jilu(0).n + 1
End If
Next j
Next i
daan
End Sub
Public Sub daan()
Dim result As String: Dim i As Integer: Dim j As Integer: Dim f As Integer
For i = 0 To t - 1
If d(i).s <> 1 Then Exit For
Next i
result = d(i).dat: f = i
graph f
For j = i + 1 To t - 1
If d(j).s <> 1 Then
result = result & "+" & d(j).dat: f = j: graph f
End If
Next j
Text1.Text = result
End Sub
Public Sub graph(f)
Dim s As Integer: Dim a As Integer: Dim a1 As Integer: Dim a2 As Integer: Dim n As Integer
a1 = d(f).n - 1
For a = 0 To a1 - 1
s = a
For a2 = a + 1 To a1
If d(f).l(a2) < d(f).l(s) Then s = a2
Next a2
If a <> s Then
n = d(f).l(a): d(f).l(a) = d(f).l(s): d(f).l(s) = n
End If
Next a
Select Case a1
Case 0: Line (720 + (d(f).l(0) Mod 4) * 960, 720 + (d(f).l(0) \ 4) * 960)-Step(960, 960), vbRed, B
Case 1
If (d(f).l(0) + 1 = d(f).l(1)) Or (d(f).l(0) + 4 = d(f).l(1)) Then
Line (720 + (d(f).l(0) Mod 4) * 960, 720 + (d(f).l(0) \ 4) * 960)-(720 + (d(f).l(1) Mod 4 + 1) * 960, 720 + (d(f).l(1) \ 4 + 1) * 960), vbRed, B
ElseIf d(f).l(0) + 3 = d(f).l(1) Then
Line (720 + ((d(f).l(1)) Mod 4 + 1) * 960, 720 + ((d(f).l(1)) \ 4 + 1) * 960)-Step(-960, 0), vbRed: Line -Step(0, -960), vbRed: Line -Step(960, 0), vbRed: Line (720 + (d(f).l(0) Mod 4) * 960, 720 + (d(f).l(0) \ 4) * 960)-Step(960, 0), vbRed: Line -Step(0, 960), vbRed: Line -Step(-960, 0), vbRed
ElseIf d(f).l(0) + 12 = d(f).l(1) Then
Line (720 + ((d(f).l(1) Mod 4) + 1) * 960, 720 + ((d(f).l(1) \ 4) + 1) * 960)-Step(0, -960), vbRed: Line -Step(-960, 0), vbRed: Line -Step(0, 960), vbRed: Line (720 + (d(f).l(0) Mod 4) * 960, 720 + (d(f).l(0) \ 4) * 960)-Step(0, 960), vbRed: Line -Step(960, 0), vbRed: Line -Step(0, -960), vbRed
End If
Case 3
If (d(f).l(0) + 5 = d(f).l(3)) Or (d(f).l(0) + 3 = d(f).l(3)) Or (d(f).l(0) + 12 = d(f).l(3)) Then
Line (720 + (d(f).l(0) Mod 4) * 960, 720 + (d(f).l(0) \ 4) * 960)-(720 + (d(f).l(3) Mod 4 + 1) * 960, 720 + (d(f).l(3) \ 4 + 1) * 960), vbRed, B
ElseIf d(f).l(0) + 13 = d(f).l(3) Then
Line (720 + (d(f).l(0) Mod 4) * 960, 720 + (d(f).l(0) \ 4) * 960)-Step(0, 960), vbRed: Line -Step(1920, 0), vbRed: Line -Step(0, -960), vbRed: Line (720 + (d(f).l(3) Mod 4 + 1) * 960, 720 + (d(f).l(3) \ 4 + 1) * 960)-Step(0, -960), vbRed: Line -Step(-1920, 0), vbRed: Line -Step(0, 960), vbRed
ElseIf d(f).l(0) + 7 = d(f).l(3) Then
Line (720 + (d(f).l(0) Mod 4) * 960, 720 + (d(f).l(0) \ 4) * 960)-Step(960, 0), vbRed: Line -Step(0, 1920), vbRed: Line -Step(-960, 0), vbRed: Line (720 + (d(f).l(3) Mod 4 + 1) * 960, 720 + (d(f).l(3) \ 4 + 1) * 960)-Step(-960, 0), vbRed: Line -Step(0, -1920), vbRed: Line -Step(960, 0), vbRed
Else: Line (720, 1680)-Step(960, 0), vbRed: Line -Step(0, -960), vbRed: Line (3600, 720)-Step(0, 960), vbRed: Line -Step(960, 0), vbRed: Line (720, 3600)-Step(960, 0), vbRed: Line -Step(0, 960), vbRed: Line (3600, 4560)-Step(0, -960), vbRed: Line -Step(960, 0), vbRed
End If
Case 7
If (d(f).l(0) + 5 = d(f).l(5)) Or (d(f).l(0) + 9 = d(f).l(5)) Then
Line (720 + (d(f).l(0) Mod 4) * 960, 720 + (d(f).l(0) \ 4) * 960)-(720 + (d(f).l(7) Mod 4 + 1) * 960, 720 + (d(f).l(7) \ 4 + 1) * 960), vbRed, B
ElseIf d(f).l(0) + 11 = d(f).l(5) Then
Line (720, 720)-Step(960, 0), vbRed: Line -Step(0, 3840), vbRed: Line -Step(-960, 0), vbRed: Line (4560, 720)-Step(-960, 0), vbRed: Line -Step(0, 3840), vbRed: Line -Step(960, 0), vbRed
ElseIf d(f).l(0) + 13 = d(f).l(5) Then
Line (720, 720)-Step(0, 960), vbRed: Line -Step(3840, 0), vbRed: Line -Step(0, -960), vbRed: Line (720, 4560)-Step(0, -960), vbRed: Line -Step(3840, 0), vbRed: Line -Step(0, 960), vbRed
End If
End Select
End Sub
Private Sub Form_Load()
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -