Public 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