rendered paste bodyPublic Class Form1
Dim XO, YO, XI, YI, i, TC, LTC, tmpX, tmpY As Integer
Dim PassAgain As Boolean = True
Dim Chk(8) As Boolean
Dim SudPuz(8, 8) As Integer
Dim Params(3) As Integer
Private Sub btnSolve_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSolve.Click
Input()
'Do Until PassAgain = False
PassAgain = False
'Start counting for each textbox
For XO = 0 To 8
For YO = 0 To 8
'If the textbox is blank
If SudPuz(XO, YO) = 0 Then
PassAgain = True
'Prep for evaluating
ReDim Chk(8) 'False
TC = 0
'Start checking every verticle instance
For XI = 0 To 8
For i = 1 To 9
'Can check itself because itself is 0
If SudPuz(XI, YO) = i Then
'Flag X instance
Chk(i - 1) = True
End If
Next
Next
'Start checking every horizontal instance
For YI = 0 To 8
For i = 1 To 9
'Can check itself because itself is 0
If SudPuz(XO, YI) = i Then
'Flag Y instance
Chk(i - 1) = True
End If
Next
Next
'Start checking for occurances in the same square
Dim tmpStr As String = XO.ToString & YO.ToString
Select Case tmpStr
Case "00", "01", "02", "10", "11", "12", "20", "21", "22"
Params(0) = 0
Params(1) = 2
Params(2) = 0
Params(3) = 2
Case "03", "04", "05", "13", "14", "15", "23", "24", "25"
Params(0) = 0
Params(1) = 2
Params(2) = 3
Params(3) = 5
Case "06", "07", "08", "16", "17", "18", "26", "27", "28"
Params(0) = 0
Params(1) = 2
Params(2) = 6
Params(3) = 8
Case "30", "31", "32", "40", "41", "41", "50", "51", "52"
Params(0) = 3
Params(1) = 5
Params(2) = 0
Params(3) = 2
Case "33", "34", "35", "43", "44", "45", "53", "54", "55"
Params(0) = 3
Params(1) = 5
Params(2) = 3
Params(3) = 5
Case "36", "37", "38", "46", "47", "48", "56", "57", "58"
Params(0) = 3
Params(1) = 5
Params(2) = 6
Params(3) = 8
Case "60", "61", "62", "70", "71", "72", "80", "81", "82"
Params(0) = 6
Params(1) = 8
Params(2) = 0
Params(3) = 2
Case "63", "64", "65", "73", "74", "75", "83", "84", "85"
Params(0) = 6
Params(1) = 8
Params(2) = 3
Params(3) = 5
Case "66", "67", "68", "76", "77", "78", "86", "87", "88"
Params(0) = 6
Params(1) = 8
Params(2) = 6
Params(3) = 8
End Select
WithinGroup()
'Count occurances
TC = 0
For i = 0 To 8
If Chk(i) = True Then
TC += 1
Else
'Catch last false occurance
LTC = i + 1
End If
Next
'Check to see if value is definite
'MsgBox(Chk(0).ToString & Chk(1).ToString & Chk(2).ToString & Chk(3).ToString & Chk(4).ToString & Chk(5).ToString & Chk(6).ToString & Chk(7).ToString & Chk(8).ToString)
If TC = 8 Then
SudPuz(XO, YO) = LTC
End If
End If
Next
Next
'Loop
Output()
End Sub
Private Sub Input()
SudPuz(0, 0) = Val(txt1.Text)
SudPuz(0, 1) = Val(txt2.Text)
SudPuz(0, 2) = Val(txt3.Text)
SudPuz(0, 3) = Val(txt4.Text)
SudPuz(0, 4) = Val(txt5.Text)
SudPuz(0, 5) = Val(txt6.Text)
SudPuz(0, 6) = Val(txt7.Text)
SudPuz(0, 7) = Val(txt8.Text)
SudPuz(0, 8) = Val(txt9.Text)
SudPuz(1, 0) = Val(txt10.Text)
SudPuz(1, 1) = Val(txt11.Text)
SudPuz(1, 2) = Val(txt12.Text)
SudPuz(1, 3) = Val(txt13.Text)
SudPuz(1, 4) = Val(txt14.Text)
SudPuz(1, 5) = Val(txt15.Text)
SudPuz(1, 6) = Val(txt16.Text)
SudPuz(1, 7) = Val(txt17.Text)
SudPuz(1, 8) = Val(txt18.Text)
SudPuz(2, 0) = Val(txt19.Text)
SudPuz(2, 1) = Val(txt20.Text)
SudPuz(2, 2) = Val(txt21.Text)
SudPuz(2, 3) = Val(txt22.Text)
SudPuz(2, 4) = Val(txt23.Text)
SudPuz(2, 5) = Val(txt24.Text)
SudPuz(2, 6) = Val(txt25.Text)
SudPuz(2, 7) = Val(txt26.Text)
SudPuz(2, 8) = Val(txt27.Text)
SudPuz(3, 0) = Val(txt28.Text)
SudPuz(3, 1) = Val(txt29.Text)
SudPuz(3, 2) = Val(txt30.Text)
SudPuz(3, 3) = Val(txt31.Text)
SudPuz(3, 4) = Val(txt32.Text)
SudPuz(3, 5) = Val(txt33.Text)
SudPuz(3, 6) = Val(txt34.Text)
SudPuz(3, 7) = Val(txt35.Text)
SudPuz(3, 8) = Val(txt36.Text)
SudPuz(4, 0) = Val(txt37.Text)
SudPuz(4, 1) = Val(txt38.Text)
SudPuz(4, 2) = Val(txt39.Text)
SudPuz(4, 3) = Val(txt40.Text)
SudPuz(4, 4) = Val(txt41.Text)
SudPuz(4, 5) = Val(txt42.Text)
SudPuz(4, 6) = Val(txt43.Text)
SudPuz(4, 7) = Val(txt44.Text)
SudPuz(4, 8) = Val(txt45.Text)
SudPuz(5, 0) = Val(txt46.Text)
SudPuz(5, 1) = Val(txt47.Text)
SudPuz(5, 2) = Val(txt48.Text)
SudPuz(5, 3) = Val(txt49.Text)
SudPuz(5, 4) = Val(txt50.Text)
SudPuz(5, 5) = Val(txt51.Text)
SudPuz(5, 6) = Val(txt52.Text)
SudPuz(5, 7) = Val(txt53.Text)
SudPuz(5, 8) = Val(txt54.Text)
SudPuz(6, 0) = Val(txt55.Text)
SudPuz(6, 1) = Val(txt56.Text)
SudPuz(6, 2) = Val(txt57.Text)
SudPuz(6, 3) = Val(txt58.Text)
SudPuz(6, 4) = Val(txt59.Text)
SudPuz(6, 5) = Val(txt60.Text)
SudPuz(6, 6) = Val(txt61.Text)
SudPuz(6, 7) = Val(txt62.Text)
SudPuz(6, 8) = Val(txt63.Text)
SudPuz(7, 0) = Val(txt64.Text)
SudPuz(7, 1) = Val(txt65.Text)
SudPuz(7, 2) = Val(txt66.Text)
SudPuz(7, 3) = Val(txt67.Text)
SudPuz(7, 4) = Val(txt68.Text)
SudPuz(7, 5) = Val(txt69.Text)
SudPuz(7, 6) = Val(txt70.Text)
SudPuz(7, 7) = Val(txt71.Text)
SudPuz(7, 8) = Val(txt72.Text)
SudPuz(8, 0) = Val(txt73.Text)
SudPuz(8, 1) = Val(txt74.Text)
SudPuz(8, 2) = Val(txt75.Text)
SudPuz(8, 3) = Val(txt76.Text)
SudPuz(8, 4) = Val(txt77.Text)
SudPuz(8, 5) = Val(txt78.Text)
SudPuz(8, 6) = Val(txt79.Text)
SudPuz(8, 7) = Val(txt80.Text)
SudPuz(8, 8) = Val(txt81.Text)
End Sub
Private Sub Output()
txt1.Text = SudPuz(0, 0)
txt2.Text = SudPuz(0, 1)
txt3.Text = SudPuz(0, 2)
txt4.Text = SudPuz(0, 3)
txt5.Text = SudPuz(0, 4)
txt6.Text = SudPuz(0, 5)
txt7.Text = SudPuz(0, 6)
txt8.Text = SudPuz(0, 7)
txt9.Text = SudPuz(0, 8)
txt10.Text = SudPuz(1, 0)
txt11.Text = SudPuz(1, 1)
txt12.Text = SudPuz(1, 2)
txt13.Text = SudPuz(1, 3)
txt14.Text = SudPuz(1, 4)
txt15.Text = SudPuz(1, 5)
txt16.Text = SudPuz(1, 6)
txt17.Text = SudPuz(1, 7)
txt18.Text = SudPuz(1, 8)
txt19.Text = SudPuz(2, 0)
txt20.Text = SudPuz(2, 1)
txt21.Text = SudPuz(2, 2)
txt22.Text = SudPuz(2, 3)
txt23.Text = SudPuz(2, 4)
txt24.Text = SudPuz(2, 5)
txt25.Text = SudPuz(2, 6)
txt26.Text = SudPuz(2, 7)
txt27.Text = SudPuz(2, 8)
txt28.Text = SudPuz(3, 0)
txt29.Text = SudPuz(3, 1)
txt30.Text = SudPuz(3, 2)
txt31.Text = SudPuz(3, 3)
txt32.Text = SudPuz(3, 4)
txt33.Text = SudPuz(3, 5)
txt34.Text = SudPuz(3, 6)
txt35.Text = SudPuz(3, 7)
txt36.Text = SudPuz(3, 8)
txt37.Text = SudPuz(4, 0)
txt38.Text = SudPuz(4, 1)
txt39.Text = SudPuz(4, 2)
txt40.Text = SudPuz(4, 3)
txt41.Text = SudPuz(4, 4)
txt42.Text = SudPuz(4, 5)
txt43.Text = SudPuz(4, 6)
txt44.Text = SudPuz(4, 7)
txt45.Text = SudPuz(4, 8)
txt46.Text = SudPuz(5, 0)
txt47.Text = SudPuz(5, 1)
txt48.Text = SudPuz(5, 2)
txt49.Text = SudPuz(5, 3)
txt50.Text = SudPuz(5, 4)
txt51.Text = SudPuz(5, 5)
txt52.Text = SudPuz(5, 6)
txt53.Text = SudPuz(5, 7)
txt54.Text = SudPuz(5, 8)
txt55.Text = SudPuz(6, 0)
txt56.Text = SudPuz(6, 1)
txt57.Text = SudPuz(6, 2)
txt58.Text = SudPuz(6, 3)
txt59.Text = SudPuz(6, 4)
txt60.Text = SudPuz(6, 5)
txt61.Text = SudPuz(6, 6)
txt62.Text = SudPuz(6, 7)
txt63.Text = SudPuz(6, 8)
txt64.Text = SudPuz(7, 0)
txt65.Text = SudPuz(7, 1)
txt66.Text = SudPuz(7, 2)
txt67.Text = SudPuz(7, 3)
txt68.Text = SudPuz(7, 4)
txt69.Text = SudPuz(7, 5)
txt70.Text = SudPuz(7, 6)
txt71.Text = SudPuz(7, 7)
txt72.Text = SudPuz(7, 8)
txt73.Text = SudPuz(8, 0)
txt74.Text = SudPuz(8, 1)
txt75.Text = SudPuz(8, 2)
txt76.Text = SudPuz(8, 3)
txt77.Text = SudPuz(8, 4)
txt78.Text = SudPuz(8, 5)
txt79.Text = SudPuz(8, 6)
txt80.Text = SudPuz(8, 7)
txt81.Text = SudPuz(8, 8)
End Sub
Private Sub WithinGroup()
For tmpX = Params(0) To Params(1)
For tmpY = Params(2) To Params(3)
For i = 1 To 9
'Can check itself because itself is 0
If SudPuz(tmpX, tmpY) = i Then
'Flag Y instance
Chk(i - 1) = True
End If
Next
Next
Next
End Sub
End Class