Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Simple Sudoku puzzle (updated with 500 puzzles)
#6
Hmm I haven't thought of that.  But you gave me a great idea for a new approach for generating different puzzles really fast, by using a solved puzzle a seed and make variations from that.   I have to leave for a gig now, but when I get home I will post a new working generator that takes no time at all to make many different puzzles.   I still don't know yet how to remove them numbers smartly like you mention tho (one step at a time)

- Dav

EDIT:  I'll go ahead and post it before I leave.   What this does is start with a pre-made solved puzzled, and then swap rows/columns/blocks with each other in a way that doesn't break the board, and it creates a completely different board.  It also swaps numbers board-wide randomly.  (all 1's and 5's swap places, etc). 

Keep pressing a key for a new board.  This is from only one pre-made puzzle.  If using a small pool of puzzles it would be all a sudoku game needs.

See the MakeRandomPuzzle SUB for the method.

Code: (Select All)
'==========
'SUDOKU-GEN.BAS v1.1
'==========


grid = 9 '  grid size is is 9x9
cells = grid * grid ' number of cells on grid

Dim cellx(grid * grid), celly(grid * grid) 'top x/y cords of cells
Dim cellx2(grid * grid), celly2(grid * grid) ' bottom x/y cords of cells
Dim Shared cellvalue(grid * grid) 'holds the cell number values


dh = _DesktopHeight * .75
size = Int(dh / grid) ' size of cells
Screen _NewImage(size * grid, size * grid, 32)

BIGFONT Int(_Height / 9)
_PrintMode _KeepBackground

Randomize Timer

redo:

bc = 1 'counter
For col = 1 To grid
    For row = 1 To grid
        x = (row * size): y = (col * size)
        cellx(bc) = x - size: cellx2(bc) = x ' generate x/y values
        celly(bc) = y - size: celly2(bc) = y
        cellvalue(bc) = 0
        bc = bc + 1
    Next
Next

Do
    MakeRandomPuzzle
    GoSub UpdateBoard
    Sleep
Loop




'==========
UpdateBoard:
'==========

Cls , _RGB(100, 0, 0)

bc = 1
For row = 1 To grid
    For col = 1 To grid
        bx = cellx(bc) - (Int(_Height / 9) / 4.5)
        by = celly(bc) + (Int(_Height / 9) / 14.5)
        'if value not a zero...
        If cellvalue(bc) <> 0 Then
            'shadow
            Color _RGB(0, 0, 0)
            _PrintString (bx + (size * .03), by + (size * .03)), Str$(cellvalue(bc))
            'if assigned puz number

            'check if conflict on row or column here <<<<<
            If Conflict(bc) = -1 Then
                'red color
                Color _RGB(255, 64, 64)
            Else
                Color _RGB(255, 180, 125)
            End If

            _PrintString (bx, by), Str$(cellvalue(bc))

        End If
        Line (cellx(bc), celly(bc))-(cellx2(bc), celly2(bc)), _RGB(200, 100, 50), B
        bc = bc + 1
    Next
Next

'draw thicker lines
tk = size * .03
Line (0, size * 3 - tk)-(_Width, size * 3 + tk + tk), _RGB(0, 0, 0), BF
Line (0, size * 3 - tk)-(_Width, size * 3 + tk), _RGB(200, 100, 50), BF
Line (0, size * 6 - tk)-(_Width, size * 6 + tk + tk), _RGB(0, 0, 0), BF
Line (0, size * 6 - tk)-(_Width, size * 6 + tk), _RGB(200, 100, 50), BF
Line (size * 3 - tk, 0)-(size * 3 + tk, _Height), _RGB(200, 100, 50), BF
Line (size * 6 - tk, 0)-(size * 6 + tk, _Height), _RGB(200, 100, 50), BF

For f = 0 To (size * .06)
    Line (0 + f, 0 + f)-(_Width - f, _Height - f), _RGB(200, 100, 50), B
Next
_Display

Return

Sub MakeRandomPuzzle
    'start with a pre-made solved sudoku puzzle
    puz$ = "416598723259743861873162495624815379791324586385679214962437158148256937537981642"

    'load selected puz$ into cellvalue()
    For c = 1 To 81
        cellvalue(c) = Val(Mid$(puz$, c, 1))
    Next


    '========== swap rows

    'swap top 3 rows randomly
    Select Case Int(Rnd * 4) + 1
        Case 1 'swap row 1 and 2
            For s = 1 To 9: Swap cellvalue(s), cellvalue(s + 9): Next
        Case 2 'swap row 1 and 3
            For s = 1 To 9: Swap cellvalue(s), cellvalue(s + 18): Next
        Case 3 'swap row 2 and 3
            For s = 10 To 18: Swap cellvalue(s), cellvalue(s + 9): Next
    End Select

    'swap middle 3 rows randomly
    Select Case Int(Rnd * 4) + 1
        Case 1 'swap row 4 and 5
            For s = 28 To 36: Swap cellvalue(s), cellvalue(s + 9): Next
        Case 2 'swap row 4 and 6
            For s = 28 To 36: Swap cellvalue(s), cellvalue(s + 18): Next
        Case 3 'swap row 5 and 6
            For s = 37 To 45: Swap cellvalue(s), cellvalue(s + 9): Next
    End Select

    'swap bottom 3 rows a few times
    Select Case Int(Rnd * 4) + 1
        Case 1 'swap row 7 and 8
            For s = 55 To 63: Swap cellvalue(s), cellvalue(s + 9): Next
        Case 2 'swap row 7 and 9
            For s = 55 To 63: Swap cellvalue(s), cellvalue(s + 18): Next
        Case 3 'swap row 8 and 9
            For s = 64 To 72: Swap cellvalue(s), cellvalue(s + 9): Next
    End Select

    '============ swap columns

    'swap left 3 columns
    Select Case Int(Rnd * 4) + 1
        Case 1 'swap column 1 and 2
            For s = 1 To 73 Step 9: Swap cellvalue(s), cellvalue(s + 1): Next
        Case 2 'swap column 1 and 3
            For s = 1 To 73 Step 9: Swap cellvalue(s), cellvalue(s + 2): Next
        Case 3 'swap column 2 and 3
            For s = 2 To 74 Step 9: Swap cellvalue(s), cellvalue(s + 1): Next
    End Select

    'swap middle 3 columns
    Select Case Int(Rnd * 4) + 1
        Case 1 'swap column 4 and 5
            For s = 4 To 76 Step 9: Swap cellvalue(s), cellvalue(s + 1): Next
        Case 2 'swap column 4 and 6
            For s = 4 To 76 Step 9: Swap cellvalue(s), cellvalue(s + 2): Next
        Case 3 'swap column 5 and 6
            For s = 5 To 77 Step 9: Swap cellvalue(s), cellvalue(s + 1): Next
    End Select

    'swap right 3 columns
    Select Case Int(Rnd * 4) + 1
        Case 1 'swap column 7 and 8
            For s = 7 To 79 Step 9: Swap cellvalue(s), cellvalue(s + 1): Next
        Case 2 'swap column 7 and 9
            For s = 7 To 79 Step 9: Swap cellvalue(s), cellvalue(s + 2): Next
        Case 3 'swap column 8 and 9
            For s = 8 To 80 Step 9: Swap cellvalue(s), cellvalue(s + 1): Next
    End Select


    '====== now swap blocks of rows (3)

    Select Case Int(Rnd * 4) + 1
        Case 1 'swap top row of blocks with and middle row
            For s = 1 To 9
                Swap cellvalue(s), cellvalue(s + 27)
                Swap cellvalue(s + 9), cellvalue(s + 36)
                Swap cellvalue(s + 18), cellvalue(s + 45)
            Next
        Case 2 'swap top row of blocks with bottom row of blocks
            For s = 1 To 9
                Swap cellvalue(s), cellvalue(s + 54)
                Swap cellvalue(s + 9), cellvalue(s + 63)
                Swap cellvalue(s + 18), cellvalue(s + 72)
            Next
        Case 3 'swap middle row of blocks with bottom row of blocks
            For s = 28 To 36
                Swap cellvalue(s), cellvalue(s + 27)
                Swap cellvalue(s + 9), cellvalue(s + 36)
                Swap cellvalue(s + 18), cellvalue(s + 45)
            Next
    End Select


    '====== now swap columns of blocks

    Select Case Int(Rnd * 4) + 1
        Case 1 'swap left block column with middle
            For s = 1 To 73 Step 9
                Swap cellvalue(s), cellvalue(s + 3)
                Swap cellvalue(s + 1), cellvalue(s + 4)
                Swap cellvalue(s + 2), cellvalue(s + 5)
            Next
        Case 2 'swap left block column with right
            For s = 1 To 73 Step 9
                Swap cellvalue(s), cellvalue(s + 6)
                Swap cellvalue(s + 1), cellvalue(s + 7)
                Swap cellvalue(s + 2), cellvalue(s + 8)
            Next
        Case 3 'swap middle block of columns withright one
            For s = 4 To 76 Step 9
                Swap cellvalue(s), cellvalue(s + 3)
                Swap cellvalue(s + 1), cellvalue(s + 4)
                Swap cellvalue(s + 2), cellvalue(s + 5)
            Next

    End Select

    '=========== swap some numbers..

    Select Case Int(Rnd * 5) + 1
        Case 1 'swap 1's and 5's
            For c = 1 To 81
                Select Case cellvalue(c)
                    Case 1: cellvalue(c) = 5
                    Case 5: cellvalue(c) = 1
                End Select
            Next
        Case 2 'swap 2's and 6's
            For c = 1 To 81
                Select Case cellvalue(c)
                    Case 2: cellvalue(c) = 6
                    Case 6: cellvalue(c) = 2
                End Select
            Next
        Case 3 'swap 3's and 7's
            For c = 1 To 81
                Select Case cellvalue(c)
                    Case 3: cellvalue(c) = 7
                    Case 7: cellvalue(c) = 3
                End Select
            Next
        Case 4 'swap 4's and 8's
            For c = 1 To 81
                Select Case cellvalue(c)
                    Case 4: cellvalue(c) = 8
                    Case 8: cellvalue(c) = 4
                End Select
            Next
        Case 5 'swap 9's and 1's
            For c = 1 To 81
                Select Case cellvalue(c)
                    Case 1: cellvalue(c) = 9
                    Case 9: cellvalue(c) = 1
                End Select
            Next
    End Select

End Sub


Function Conflict (num)
    'this function checks rows/columns/blocks for any conflicts.
    'p$ holds all the other cell numbers to compare 'num' with.
    Select Case num
        'first row, 01-09
        Case 1: p$ = "0203040506070809101928374655647311122021"
        Case 2: p$ = "0103040506070809112029384756657410121921"
        Case 3: p$ = "0102040506070809122130394857667510111920"
        Case 4: p$ = "0102030506070809132231404958677614152324"
        Case 5: p$ = "0102030406070809142332415059687713152224"
        Case 6: p$ = "0102030405070809152433425160697813142223"
        Case 7: p$ = "0102030405060809162534435261707917182627"
        Case 8: p$ = "0102030405060709172635445362718016182527"
        Case 9: p$ = "0102030405060708182736455463728116172526"
            'second row, 10-18
        Case 10: p$ = "1112131415161718011928374655647302032021"
        Case 11: p$ = "1012131415161718022029384756657401031921"
        Case 12: p$ = "1011131415161718032130394857667501021920"
        Case 13: p$ = "1011121415161718042231404958677605062324"
        Case 14: p$ = "1011121315161718052332415059687704062224"
        Case 15: p$ = "1011121314161718062433425160697804052223"
        Case 16: p$ = "1011121314151718072534435261707908092627"
        Case 17: p$ = "1011121314151618082635445362718007092527"
        Case 18: p$ = "1011121314151617092736455463728107082526"
            'third row, 19-27
        Case 19: p$ = "2021222324252627011028374655647302031112"
        Case 20: p$ = "1921222324252627021129384756657401031012"
        Case 21: p$ = "1920222324252627031230394857667501021011"
        Case 22: p$ = "1920212324252627041331404958677605061415"
        Case 23: p$ = "1920212224252627051432415059687704061315"
        Case 24: p$ = "1920212223252627061533425160697804051314"
        Case 25: p$ = "1920212223242627071634435261707908091718"
        Case 26: p$ = "1920212223242527081735445362718007091618"
        Case 27: p$ = "1920212223242526091836455463728107081617"
            'forth row,28-36
        Case 28: p$ = "2930313233343536011019374655647338394748"
        Case 29: p$ = "2830313233343536021120384756657437394648"
        Case 30: p$ = "2829313233343536031221394857667537384647"
        Case 31: p$ = "2829303233343536041322404958677641425051"
        Case 32: p$ = "2829303133343536051423415059687740424951"
        Case 33: p$ = "2829303132343536061524425160697840414950"
        Case 34: p$ = "2829303132333536071625435261707944455354"
        Case 35: p$ = "2829303132333436081726445362718043455254"
        Case 36: p$ = "2829303132333435091827455463728143445253"
            'fifth row,37-45
        Case 37: p$ = "3839404142434445011019284655647329304748"
        Case 38: p$ = "3739404142434445021120294756657428304648"
        Case 39: p$ = "3738404142434445031221304857667528294647"
        Case 40: p$ = "3738394142434445041322314958677632335051"
        Case 41: p$ = "3738394042434445051423325059687731334951"
        Case 42: p$ = "3738394041434445061524335160697831324950"
        Case 43: p$ = "3738394041424445071625345261707935365354"
        Case 44: p$ = "3738394041424345081726355362718034365254"
        Case 45: p$ = "3738394041424344091827365463728134355253"
            'sixth row,46-54
        Case 46: p$ = "4748495051525354011019283755647329303839"
        Case 47: p$ = "4648495051525354021120293856657428303739"
        Case 48: p$ = "4647495051525354031221303957667528293738"
        Case 49: p$ = "4647485051525354041322314058677632334142"
        Case 50: p$ = "4647484951525354051423324159687731334042"
        Case 51: p$ = "4647484950525354061524334260697831324041"
        Case 52: p$ = "4647484950515354071625344361707935364445"
        Case 53: p$ = "4647484950515254081726354462718034364345"
        Case 54: p$ = "4647484950515253091827364563728134354344"
            'seventh row, 55-63
        Case 55: p$ = "5657585960616263011019283746647365667475"
        Case 56: p$ = "5557585960616263021120293847657464667375"
        Case 57: p$ = "5556585960616263031221303948667564657374"
        Case 58: p$ = "5556575960616263041322314049677668697778"
        Case 59: p$ = "5556575860616263051423324150687767697678"
        Case 60: p$ = "5556575859616263061524334251697867687677"
        Case 61: p$ = "5556575859606263071625344352707971728081"
        Case 62: p$ = "5556575859606163081726354453718070727981"
        Case 63: p$ = "5556575859606162091827364554728170717980"
            'eight row, 64-72
        Case 64: p$ = "6566676869707172011019283746557356577475"
        Case 65: p$ = "6466676869707172021120293847567455577375"
        Case 66: p$ = "6465676869707172031221303948577555567374"
        Case 67: p$ = "6465666869707172041322314049587659607778"
        Case 68: p$ = "6465666769707172051423324150597758607678"
        Case 69: p$ = "6465666768707172061524334251607858597677"
        Case 70: p$ = "6465666768697172071625344352617962638081"
        Case 71: p$ = "6465666768697072081726354453628061637981"
        Case 72: p$ = "6465666768697071091827364554638161627980"
            'ninth row, 73-81
        Case 73: p$ = "7475767778798081011019283746556456576566"
        Case 74: p$ = "7375767778798081021120293847566555576466"
        Case 75: p$ = "7374767778798081031221303948576655566465"
        Case 76: p$ = "7374757778798081041322314049586759606869"
        Case 77: p$ = "7374757678798081051423324150596858606769"
        Case 78: p$ = "7374757677798081061524334251606958596768"
        Case 79: p$ = "7374757677788081071625344352617062637172"
        Case 80: p$ = "7374757677787981081726354453627161637072"
        Case 81: p$ = "7374757677787980091827364554637261627071"
    End Select
    For c = 1 To Len(p$) Step 2
        chk = Val(Mid$(p$, c, 2))
        If cellvalue(chk) = cellvalue(num) Then Conflict = -1
    Next
End Function

Sub BIGFONT (size)
    'make/load another CP437 font (like QB64's built-in one)'
    'This one is resizable so you can make/use larger size SCREEN font.
    A$ = ""
    A$ = A$ + "haIgm]0MLEMMXkS^ST\\T]lHiaboe<Nl8c71HYa3f0VPiWa9H07n5a_0bn:K"
    A$ = A$ + ";#FB8;c773hBD8T42E_#C:=QBC39PSQB=DB2UhdhVBB^9=_D2EQ#Ala?JFmi"
    A$ = A$ + "ejeGKNiYTV4\UNkOWcmL791Y0Iefg<NdmNWiLfWmIoO_?WkeP10H6`NP0HS["
    A$ = A$ + "KMGj5l9Nf7lH0HC;3of5MAGb9ef>>V6V60Vfa[_^=_m>j[Y]NOC7PDY`?kKc"
    A$ = A$ + "gd0IQB1o20VfnaO?eFkH7m=nh8TP=]8ljY]e^_e]DhRj<;0CoG1`5>lfj\S`"
    A$ = A$ + "IOn5Z6o]G6oLbK3oRZONcW6QoL`[Gfffn0gBQ5]P_=NmC3#5__^kMcMlg=[o"
    A$ = A$ + "a=RPjY`[?W]ga]dWICVEPonZafW]W>fNWObWOGk3P[h7POg7[_Nga07oM<8f"
    A$ = A$ + "f[2agZnF0=g`?kjkmmOT[]nel;PVZJ]hg0?OKcLadaGiKoLOB06[_P\Y8lOJ"
    A$ = A$ + "#5Pl2kCZm?FO04TU^4o[1Bn:5m=VLhOH8jj9mj4UF4Te<4D9R7[U6eP\fS#H"
    A$ = A$ + "5]c]X6G?2l1mUORGl9Rl3CcgPP3Yf?27leNXQi017VViP9PXlI5<D`Bg[8lC"
    A$ = A$ + "8OFXkk2MW7jMNL?lKIT21l_VF:3>F2D;LOV8TRaP9n:<aIA^f=aF7iJaK2<#"
    A$ = A$ + "L8<Ak3Q9<_mJcKe[TDPTc\936fA:ngRlXaf?Q:5<^GQ:NaoU>Jo437Vj6iV1"
    A$ = A$ + "CjiCm;DJYL^oDO^mEPnIARTN`G4_b`GW:h^aS?8:nE5\4h>P72nB`S0?6lT`"
    A$ = A$ + "G3n6`g4n^`g3nA`;PJd_>l_2S2oK`APa=OZPk;hn3NXP7>h;7l41OUP36l\1"
    A$ = A$ + "OW\;=kJbN7IOTLOjLkMY;HY=]dSMY[OYM\d>cGAnIU?G1X#55Z[`\:<W2c[`"
    A$ = A$ + "R:\\2]DHU5FCQ^;\W23Fh^;L?5^_2On2?FQW\`cDh05Nf2o]5n7JN==_fV?["
    A$ = A$ + "V_^VgLcKYiK0]l#_nl<n]?Ho`G1N64oNF7nmJ`?5no0oBhG?1lkY#lk_a3o6"
    A$ = A$ + "2a_i_dUXhG8SOIW2lKS>lKXb`_G\iCeQOMfleChgho?6o#SoJSo:SoBSoRSo"
    A$ = A$ + "2SoS7o7=nc=ngKl_mh7LloZao6SOPaojSo<SodSglAKnX;mXckXcmXciXchX"
    A$ = A$ + "eNDcA6o8SMX7j#Ol3]n3Uke>UGKi_jGkEOZGmAOe?i[^cGM7_b?iEnn_bGOT"
    A$ = A$ + "GITGNTonAN^An_?bgOT_k87LTobANbANdA^oAn8SLWSL7S\kA^eAfn8KJT[I"
    A$ = A$ + "T;OT;KT;LTe?bJNYGnUn7NYGlUnj_dOi;md_dG1if?hKUTeoQnbPBTY#kYE1"
    A$ = A$ + "ESFZ[1V>D;D7jiJVX]gjQI1YQI3=0c1b0c5J4V7<OH1`2Aig5SB]=QF<c1;5"
    A$ = A$ + "b3;3:0=3;7>6hHQS3>NX5h4#keW4\2XEX=X8\BX4Lb`ZPE3W2LZ`Y1[1>Mhm"
    A$ = A$ + "0W1JUo<Qc2>KhLPc5F7LN`jQg;lnPc7f0L1`52G4\Ahm3G<L9`U2G6Li`70J"
    A$ = A$ + "7^2h:Q[2^JhJP?8L]`e1M0K2f<Zke9\5H[`fP^P[7^1XKHk#?#_#O`=2m3k0"
    A$ = A$ + "60f9LC`=3g2L[`^P?4\KhfPK7ejf3B0Z2o4TZbZZNJe<mJ[K6c\RjWEjIg`L"
    A$ = A$ + "b<g6WglG`2GdRGBCIc]dl;[#c;oH>fSkhKi4>aCJ5]fFaEFjTGeZ?UCmdFcY"
    A$ = A$ + "oN>SeNVWeIO>Wkj>_eoNOOWo6^P;lRfhkoR_T;mb^l?#kGaENEGmel1_f[[S"
    A$ = A$ + "=]i`>gbFgFGGo=dmfkYgn^anga0klV^iKiFge7Jggf]O7kiCoI^ooX?kWk1n"
    A$ = A$ + "CN`?oO:l5nR?lGjAfknnb?jSmWmWohko9PWj_h[lEQ?n7N`kjKO_oa2;k?4N"
    A$ = A$ + "n?a?i5o8X?Fh_6nX3m=N8h?h>oHoXWn73gmo=hgcSeBVBdGon_Ub1Ll68O[5"
    A$ = A$ + "Tn_7d>d?4niViJ>Ec5J^NcmJN6coD5c\REDAgEL?ElHEllElc2VE`E7\]P?E"
    A$ = A$ + "`S5lM2NmD#ZIUJUYf#Z#lmNBMoYNfDoZ:?V:_^:k_bQZlaZliZlWFi_\Z:ZJ"
    A$ = A$ + "VEeFEQE][ZfKE?GEoZZWGe[Yj[^jk^j7_j3Fm;<]:VfLWfI=]]<]kJJ?nd6N"
    A$ = A$ + "JSECfJFG=K[Vk_VmGcgYV3=mY=mU>me>m?hdgedo\Co_Jj_N]cZfFZm\Z=\f"
    A$ = A$ + "k\f7_fOH]7Y^IFg:[KMe]Ujj_^1[K_emm[k`cX^I\RILYcHgch1VaGM63?SO"
    A$ = A$ + "c<Wi<?^I^^I^YINGcLOc<JVobjWKm]Eo6Zoj[ocDoG]nG]naVe\Ve9>[e?[^"
    A$ = A$ + "aggm\NlIm2YQdK8MgYO`d?NjXd_n\[JfIWmJWm5>knVmGHf_D3;ZQef`0=lH"
    A$ = A$ + "=llcYZidfLfdL^WilhcIh<EUIeIj9c3TIhi2cmHVkE>g?nL?hLoI=>k6GISG"
    A$ = A$ + "ISkZamfhcghAVga=_;MNM?_?cl>hlnGVoLWoI=o]=oM=om=oGL1YF`:F#k;h"
    A$ = A$ + ">G`3_P3\PGL1S^`U^`CNQGj2kKQ?h2?`2OQ5ncGDM;J5;jbGdNFdm^Xm]XO`"
    A$ = A$ + "RNi5mcGlBFlZGLhR_g5oT;nK]hGLao;;ng\TY]Ti]TSI9WjBf`B^^U<`B^[U"
    A$ = A$ + "lIGbC]TXUlB;iWeDE=U]YEfdjKjjJjVJjNJjQKj0=ml=m?W=Ef5UmmTmbcfG"
    A$ = A$ + "fk=k3Wm0IOi\obLc<g9VKSij;g3TKOiNjLOWL3WkeGj3^\Y]\WJIO[Um3Gfo"
    A$ = A$ + "DQZ:\T2_W2KZ`]GHO5>DceeljK^_VOPV?HcodUGeb?^U_nUOmXESBXnd[Vjh"
    A$ = A$ + "#k:E3WhCHPCJ=?IeYPog]m4EEi;_VW<X2lDh92X_^Bj[ObZ[bLTelT6jk;V>"
    A$ = A$ + "Gj2iBW[Ti;?fmH>San[CML_a;D:hPP69H#F<>]JAkB#YRUX6W;Mn<i<I:F:4"
    A$ = A$ + "SnK\n27KHc#AAQELPa6nXk=<H`#fYLe^n6`m^1dBf2A[G#Yd5Cg#YLIbW9OY"
    A$ = A$ + "PB5cT;OYR=T?MAC^<iBSOOHXIX`8l_]4B7>jiDAk7M_EdNH#fSL8jkTO1oNj"
    A$ = A$ + ";TQ;U7N:S3=:8\:BXJY6bD4afRU:D\Dn:;U?3RfHog;1N4mYQ31NH82=nLNH"
    A$ = A$ + "i917o06WJF4V`l=8<b`O#Xb_;A_aFc]WA<Yo4DE#``8TQ1REY9BH966lk4`a"
    A$ = A$ + "oU0WhGalR1AJY5K4h#<Td1jE4b4=f`AdTPR9S>1I#]<f`S=L8bUdHR8h<5h3"
    A$ = A$ + "bA`_QaW8QHPCW8T5;H2?KIhPa_EAkHloe2#1J28P9_ID^1J39lFc:9PTQV_9"
    A$ = A$ + "GJS`>`nT9O#FTA49SBE[mGO`:>0gIJn6Bd]:>02OLn^ZHniYkgOQDAH8?Rj5"
    A$ = A$ + ":CTWZ96o5ZH0=7CWWT2CgPRg4KP`678laZf]SS:EZl3>76[D]B;AXVVA]<5E"
    A$ = A$ + "i_CcT>O2^:Q^Af[6[_8ETQc=RVg2LIiHBc#Whi]H9=8[2oV85RAd;jPIdHT?"
    A$ = A$ + ":D08RWSo0\^1Y32\6<2UdjARBPTIJVRb7\43ZG]KFDnXWCH`QYiJE>IV0E;>"
    A$ = A$ + "?6g1#<RUc65`g2bQBRi;QOG63nQd^[4IE4f55ZoQ\E4=FMAR#29HBcND2U^d"
    A$ = A$ + "Z>jYkPdRDKPT0J=]E:eCc1O;<KFj<e6BXbT\o>IM6S5M>jMDLG<S:7OSWBPP"
    A$ = A$ + "AT1IN<\:R`W>_Wn2B4EmGNfa2<j7a#5=a\cUD>n:ISV]W^:\kXNLj6eS2STN"
    A$ = A$ + "IJYR3PDOmXWMhIPa62iHb<=58I3\SXL[P1H[AcJ13NTMSC5478iE#U1Hj#A<"
    A$ = A$ + "n?XEbZ[Kn[ZBUHa\<iiojK=P>R>7\:LT=6QII9IATTSNiHeIWiFM`9LQdi8?"
    A$ = A$ + "n3:V6#lgLYYc7[?V^;dZVNcXkRUZTdnS^g9BnEI1;<A:O39PFndZfN4ImQNQ"
    A$ = A$ + ">M>#imIEZL^eRMXXd5BNn#NU_<K4KgZ1BVSXcNB\hX:NgHkcN6i;_O2nQDn<"
    A$ = A$ + "2GQ\7CmP]dUXSNSIkD=J8o[i#NdXXZ6>oCRCaflcD<1NYc9oGZ]5WnU__\jI"
    A$ = A$ + "]o4n>L\IA782:[mY5On>oMFJM5]K=OQbYH_ZXMKl6=TFmfVVD?bTGlXPLYf9"
    A$ = A$ + "n;iA3=OdG4KcTVMXlMUTgX6HeK3KcT=b#n^B]1TdaVKR]M?XHknd=ZlUBCDi"
    A$ = A$ + ";VVD`:MXl<AfWn3Qd\?EbD>2GIn>nZAlHoF[SX4:6HEndNBK\o1[1MQVCc2;"
    A$ = A$ + "UV2VBXgReMNTHCS3[^=0]6KJ<5T]H`gdF9OSST9IbJLa<iC`KYiADTcU^SA`"
    A$ = A$ + "TC?OK5`L;EOK>;4TVG9U:EB=3aF84KaR^WXB:aN8RBjg8fhKQ?#SX8O6BJn8"
    A$ = A$ + "o3SJd`Z9HlPTNB45H6K3chT=J#R6#WXY]DE;la>A^[U8l\j7Nm=fnOa<fHiR"
    A$ = A$ + "B#6\MFdK2b6[gTGUA4Ga5EI4a6ThQ;:JBRMS\S4YabDN\Bj;=f\XaO0d9N;4"
    A$ = A$ + "M8W#6BCB_ZWBEGf<4B]6UT28M:RbAh:Gk]AaI:nm5`n:`f;6f5nV;WDVlAR3"
    A$ = A$ + "NbL4=DTiHN#>7=T\dMJDJ15U`OJ0AO[dPe>\85hcN4j]8fiI_M6<ObJe7iaF"
    A$ = A$ + "?[LOahCLc[3ChB[YSWF<Mc9Y:_Ao4Rm9:bH[GND3`9[6;kh5gQhgWdS9]HB["
    A$ = A$ + "EQ<>OU8kR8^2ma2eaZ;dZf6JeI3mdWbT8ZKNV9J?5C_lRUD^P6?HTed53FR4"
    A$ = A$ + "bfNBPO=h`_dDjCil`[j`4bZSS7D`941W8n#I;ihT<UBQ#A4H<9:D11KjD\IK"
    A$ = A$ + "CK:9N8aCb^CUY62#^mA2M?h`D_`8B6RW8#IbD^\fR3h=6C:aHC<=fBf]TJMR"
    A$ = A$ + "aGU`nE3fLUbiTB9J]>oHhaad[n64?;RgLl<2HE#eMg<:Zo#a]AJ_\HYXMaVA"
    A$ = A$ + "1a_5gVZI=l<R2>g^Q4S2BhiAabh3Bb]=<1EAG\G9R?e575ORE0>QAV:Xjccf"
    A$ = A$ + "HHlTb`f#IC;I?c6QKaJ;b=n[bUcR6;h4S_f5OLBLXlQ_LJNjHM#EP8GV68_#"
    A$ = A$ + "<b;ncXh]TT\h`oY\2RU]7TcF9>[?j<B6_431DNRlDRR2T869A<D4afBR7;dc"
    A$ = A$ + "b#6eJOjLH2PfL7UiShS:<>h?:<;>=f4bXB=<XXWi<7]BX5Hi1:3?a^6RJ43W"
    A$ = A$ + "LLEVHYWnBCnf?c;XCJ9]fRZ]DK0Haf3Hh7I=M69fU[`3ola>ENOiZmH[DS`l"
    A$ = A$ + "8TC=0S0=Ym>52B6BYe^[Zd2AbI_413IFRVVb<5MA53[6WBHUa3>C4:ncYi3i"
    A$ = A$ + "V2:5CSZ<_0N?J5IDHD^#0UA_TX>Z;9OXFF21=MaB6YiXR6KHbDUIXS<?cXff"
    A$ = A$ + "77G:DXHLa38KZ^DF9RZ?\[GR5gFW1f^LT]L5Te6KAWVLj_TG][>2<UcEE\Hj"
    A$ = A$ + "_6D[Z4A;bJIhPER8V7ZIPH7NGL5afbeL]U8UBcaYVF\QAmk`dhOTi9EAKZjK"
    A$ = A$ + "66kE>ObnJJ19]3YM^2?NAm9[KWc6]emS5SY59fG^_QTJU8];CPCSTT]BX?BF"
    A$ = A$ + "3ULRGM\NClhFTmALJ6>e3[?RQU8HLh#TVhg4\kEVe1JnCYfK]>4iQ;A\_#d?"
    A$ = A$ + "=S?9RWAlY7WQNIIVKmac\A_<`AjDT4CCTV76?k;;ggdiLa\C#B#<>Ll3`DIb"
    A$ = A$ + ">:ZNF^NB9[NR<fAdXAEJPnT#6Flh:FcBW\FYNnbdBL4WlLHIbAR^SlfV=VdO"
    A$ = A$ + "jM`PXIJbSm1`AgEGC;m;^X6IR=ZV?faJ6_8]LJCf8am>9A<Y=`ITJa7;m[TU"
    A$ = A$ + "#cic`N>XTdEc2`KJLZIbK3Jb6U:[OZ\=eOTee]Omb47XNfUZF\;AaLQN29L8"
    A$ = A$ + "REflmWbend_6JnE1[\LoU86\HR`MPb6?f:5Vgg#Al<65Z?blHn0Ua4V3LSCB"
    A$ = A$ + "mUER_ec[eETGL4L>d1I7o18?_I#Z4EK;nkS26d<:2G:7A1DfL4?LHRhfAeB["
    A$ = A$ + "6=m>CAKVZ<?C2NTC8=RmF8QZGWUhV`Vd<dZhTfYgUF[^#;R27ak36DLPe7Y?"
    A$ = A$ + "L8V[kS;aaaTAXHR7NEaEeTlBO`GFNnaEFVm98c3Ej;D[4AXjfSWCTbXjFb>?"
    A$ = A$ + "#L8=ViQ3;RaQ6#b3gjj\XA;RoC6PQZ8\R?];hSHQ[HJ??bJF<FYEE1O8[c:["
    A$ = A$ + "KM2>T6[T?M6>GjLJlnD1YUZ:8n9UdMdBOd774Th9Pn;kd\<O7=hiiTZZ_Fi8"
    A$ = A$ + "5SHC6\gBbN;ijQfhBaeKZVh<>Yn;EKR3HHh8NTYEfj`B]A2YiP]F\D6_B<8D"
    A$ = A$ + "09LMFhj1a>VYBMCZ58;9enSPYd?OiVWV<ole9G`5M:Y^H=naTHS8Y5YKnbQY"
    A$ = A$ + "iJ\JG1;m=;o#S1K]iXk53iQ<PEWW\CeBekTNYN9C79NJR\4C;9e[O_enceca"
    A$ = A$ + "Snb6X^;CCe#8\MW4L5:P;S?^j#R81ijcZg53WBU9K9E<V]1H5]2MhQEb:Z<m"
    A$ = A$ + "g<>In<>INENgYoIS^VC=f[_FOiUVBOiIVJOiClE2ObILfG5m?KV3YSdj7B9\"
    A$ = A$ + "g^LDP6AW;S_bNIY8NTJKcJNT]P8>aa#m_an1anE?Go]d>Okne2WRHVnT`O^c"
    A$ = A$ + "6hKRol:JW\1QSmXJIkB#3K=I=kV#]o\nDBh?ggHD\G\HiS6lSYA[<#9=fV#^"
    A$ = A$ + "d9L`RTL=9FTTnSmOaNeC;?cBCF`YLR4Qc=>VPJDH<bilIi7OQJG=?7m8;gTV"
    A$ = A$ + "5bRc\9Ai>0Yn4D]7TeERFK8^4:Bm9Xf?DIS1;_`e]Em<Ba065:EffEdIWAKe"
    A$ = A$ + "O^4kXVE_EB;S8n[A577W09SI[kOSN[=Z6eA1M1B]l6M=SlFMDYD5U_N0NBMU"
    A$ = A$ + "Bk]N0l2M;QX7<XG<KYfP^^M9[oNJGmF\aSJ3kSeoL:OAnaDP`RigC^[?QPh;"
    A$ = A$ + "bQPiXk=:Y?`j2C4;NC4o>^Rb^J:cI=8eK?:d?PDFF:bFfN]Z5Jl:oWbeg;PZ"
    A$ = A$ + "L6SG1RgB^ZD5IG\82RiHUG<``i1aag>Z4mb`\f197IGC\Uk_ZHan:;<A_WUL"
    A$ = A$ + "f0\cSX9^Q:LB[jJD9[M65YGndELP89V8MmhYO5W3bJBI;[U5o]:;BlflDg]N"
    A$ = A$ + "]IUml#[L]hdBnShH#FdBP`751^89f0cXHl]K`_2ai;[Ff5ejH7ib8P;CU7?P"
    A$ = A$ + "SOn1\[iFVBaFL9cCQjRFAa6X6ZSlfK9_MGOI3Y0BKn0:VMS\f3lRBhT1JWU1"
    A$ = A$ + "ZG\a9b09XR<Z4C9EaP#=7\bT3TEN<^NU4UYQ9\>[5;i4:M[NW_0[_P<SWbJg"
    A$ = A$ + "]1N=e>N_egLBF\TPd5W_aE3obbMBCV\\U#QH^SEWhL3]<DfhEl]LlX8J;U?N"
    A$ = A$ + "5hh8I:KLUUWTLEDGi[PSo`kVcCjj08NFMI8`[LHT\D0Lm5dUTT3<F]gVbIST"
    A$ = A$ + "PCC9bd=^^[dND:CJ]f[N[89]MU4lVR:C:R:7::ER\3cD;FJ8NLf?kGQg3:]j"
    A$ = A$ + "_:DNef=M\RC^Ea[<9K8fJdDUeRL[fWTDH2359Y?c?N\\ikT;]DKW<^Z[Z4U\"
    A$ = A$ + "QFoW4AWcUf^f`8\>Fk^gJb[mKA=F4[]<oZ0[aU`NldjXKmEIAj:Ld8JMjR[n"
    A$ = A$ + "G9N_4`^Z<abGdNhk0AlbHAeOG67>XAIa]UJmiA;HhVOb[bG#IA7hZjGDLL23"
    A$ = A$ + "bdNdn1Ao[c2NkNhSUQ\kF`4i>8b>YcI\[Q0Q\bb0akm#IEK8`OTMCeabOmUL"
    A$ = A$ + "`<A=\88FPRR`:Ic#RfDQl6;D#eb[=[GE2Uh#dXBY<=E97aD3eK]ZfJ5L>b^M"
    A$ = A$ + "d`=`B_CI5:J`I:S\<V\J5ZT#i5]##F?Mjgba`G6HB7S9<4I;g^1?6;o]J<:J"
    A$ = A$ + "cHJRSCXHJNZ6YbFoUhm?jT>J1JTDU?:B0RCf8h9OXFCVjIRcMEYL8cObZQT]"
    A$ = A$ + "DBC1[9In#iWPG<iXFoIRNE<ShGAc\B8HF_:AARi;ISiPaDZnlG\=NgL9Re=f"
    A$ = A$ + "VRHQ;bFcBIg\hfdZ2`mX;DMSb=EE>:M2idb[RT:XVXFBNk]_O;73e[8;Y>aa"
    A$ = A$ + "`Vd\g#X62;3n5Vbi`4TAW`HX2Y9W8^P7PHoOX<:=FcWcDH2SVjm;WQUAm65["
    A$ = A$ + "I<oQP;\QGN#T1H96d<D<Xa1kfP[VEan8`NYk4bS<?]fE^LY#HD313_JMi5_A"
    A$ = A$ + "TK[iX4FZ\GnjmflZZQl7F6<lXR>hHC#CPdPN4]0_m3YVK0_SAE8BD;19JA]V"
    A$ = A$ + "BK:E7Hl];D=7cQ[2E;_<_#EZ[3S^;J4o#\>P]ZEN15bUbZ<o6;LREaZL9o9A"
    A$ = A$ + "XGZ[E\0oK=<CHA^LHj1bF:gfX2cVV:HVDjNb4\C2I6fabd_inSEYi988CPDF"
    A$ = A$ + "[<1`J^0JM12dM:1B7;P`Lij>ZH\nhM3X61]gl[JIel]E[bg3I3NE^BMM55Go"
    A$ = A$ + ":EVk87bF8[Y6VNdOc4PYO=a\J4>Pj3c6]gS3Z?Y4LPThZ[d3^R]M0WLhiHag"
    A$ = A$ + "DNbiejh3>?NF8BWkLgU4E]XY\nd1Bm_B\WKV#=`hk;SBLU0RRgQ<lE9;8Vj8"
    A$ = A$ + "5L[KSToJ6AGd_D9YMefgV3AX=GDDUci2b]_k\cINO1Cf4`hDiEVOh8<BZHmo"
    A$ = A$ + "1I^hKjnA[T6>MVlU]Odd\1RlGl5e7[gjV5_o:U#bciE4UbZf77=]]FSnEl;f"
    A$ = A$ + "4CD\MDkn?eFQ:Y4RFlWi0lFCUe6DcDl6Lf5ACLQ=em8YU^ISl?AfATg8MciU"
    A$ = A$ + "FFWaTk>?c#f[i<Gd=IKMne<foN[YDRJ`J_?7R[iRj\LDOlTZ0Mllo`R_bEIW"
    A$ = A$ + "nB>Ki\Y<RI^9cNf?`#jB`kO_CHIKlNA;D[EHSfm7ZM7]Uc]OA2e]d6KFUn8Y"
    A$ = A$ + "oIaE_jmQfX#kCid2Q#ilaaFPJXd2F;iK<i[eAnhki3RW5C5\[dQoHT>I=EiA"
    A$ = A$ + ";S[4Jai2;[7OPFWV1In#>Y^hLdNfL7ejl#5h]AnZ#G#A^K;4k^NTa<nFgRf4"
    A$ = A$ + "KofNoll>lnH#[5DReDJEj2BYkRF^>JfEeQ9HafGYeY[9MM\8Nkl95liKR_k0"
    A$ = A$ + "TMU\^5a\ZLHd#Ad=<fQSRT<?E>^UGlfOOgofiN:h]km7`kTk5QgYkkogm^?H"
    A$ = A$ + "nMbmfQFoaAm[ohXNe_Wm;E_^BndVT#:3E9J?N>T\Fc3Q0<H#:RIIMI8I>I_O"
    A$ = A$ + "[e>8NGT:Jgl^jaNW4Zih[i1Zk?eO[^_<4o0ejEK1dOWFfMak=E>2oJPF_N?;"
    A$ = A$ + "T8:gb[mR;Bg8_c\<HohlXiIRHb>MS\cA=lN;WTJ5kM^=Rb4lOe#nb:JYGn91"
    A$ = A$ + "8D\5OeNXRf;K7\bKFQ9c_X_KgTk<e:]`e1IJgkVXFhl_l^fJAUHM2:akfJJ3"
    A$ = A$ + "F;ke2A6T^?3Um:UA;M0aBhJWC#13=hgl?GiL\aF`kUUJSGGD=f8Y>2S=LZ=#"
    A$ = A$ + "g5Jjnm?8KlnmWNF\8kgOJCZbgGSPQF9oASB]oOm1[J]>L1kCUTn0OoQV5]7R"
    A$ = A$ + "h::>=8_6Xmaj;^el#ZHoAf=olGQdW6R_W9YnccE:LPaZ;enYk9`\Z\;]WbM]"
    A$ = A$ + "Y4e6RlUJoH`Q\Y>;NXkI76>i58=L43ZSL82M]hS]MiEXaE[UVCXNPefY>_ZF"
    A$ = A$ + "X5ac\Q4=57mbK<;9H?Mg3c3J2H9l0;^IK[\mRKAaAk`cn_6R]94HaP2<7QJS"
    A$ = A$ + "N?^8]SbTi0<_Qg]BY?n:TUT5=TY<9UfP`Z6;?RliXl9JQ`aAVBSWae8MNGSB"
    A$ = A$ + "OH?<XY;ZD]VQ8VZ>mUaVQKURT81f:SK?_Y3aV`E8PU6LdO1GB;E0SgK84J`d"
    A$ = A$ + "f`ghYTWL#dlB`3A^9_\NIQFY76;Z#JW57TF^L1V3akjK]eA4L?\WlF=:_8SC"
    A$ = A$ + "VKHA^S3>Gh_AN]]X6D;ALi5:#U#aP=4JQC>^FK[[V38TJ?G70\CN#gG^^6E^"
    A$ = A$ + "^D\\]8D`9oXkI5jNaaQ;i4gb8\Y5h;De4\hR]]FL11K1i>lQJ?=0T`Q2LN_a"
    A$ = A$ + "6[oD[?M9O<UIH;bcJB:_WUm]cglFI?9aHOe>Djdfn:U8i<\LB1VTBi0SBnbJ"
    A$ = A$ + "3PhVJl#fZ6_aCAgFd#2MgJMj^UldOmdQIRV:K`j62>Vg8kCddL50#R#TCWW>"
    A$ = A$ + "0jm`]SfEO\45e?Johakd:i^;FU[8:H5]SXXNoWckgUJS]J8j]\N^XjB2^JNO"
    A$ = A$ + "Z^VfJk>URX5Q>3=\LNP3f9`[22ETlQ:JXSE7?64V9jLQ^m9QcFE]NF[XNZF\"
    A$ = A$ + "8dCHaVA]kEL]?>9JWD7]aTEE0WLGP[m1XDJmF[FDG4n<=GRhHBR4CHbF`Qhb"
    A$ = A$ + "#2kT=4KKXX_\XDd7W09K^#g3#Z=YbPQKO0iX]AjCE0ZcfH>R9cD=#lTCC;k\"
    A$ = A$ + "DO:Ml\aAaSWBnTm9<gXkJ7a7:mL1Phk:Q;F>8P_gVba?o96U[mPakI:Pf?ii"
    A$ = A$ + "4PCOHXhOSbM`nKdifnQLKlgLoJF8dmKEWh9V1]b47?LB#AHE`Y1W1Lf`i1W?"
    A$ = A$ + "LA`U0O0hZP[5f<\Eh6PNQM0g<lQPk#^oSJDo#aV]HSL\4NmZ`?E:EJ=CedWR"
    A$ = A$ + "bM8JejgAgknfn`mgoSnm5ljS]O1Nm?iFjES_[l0cN;KPl?nACP;QHj57QNHX"
    A$ = A$ + "Dk9M1KShUoCkAkj=9`QSkW\]n:oGI_e[eSGn>S^oQQ?:l9POOhnPo#hc1o9`"
    A$ = A$ + "31?2lX`O>lG0O=h[3OCh_1n^`O;lg1om`?161N=hO4nO2o_PoEho;l_1_1<^"
    A$ = A$ + "\C1W<JZUGIn]Q_RlVFYfhM<]geFNISJZFffH:[?]ZS1E9_Zc[Ka#mjPbPK1M"
    A$ = A$ + "LcHg0CNbEdgKd[]YginXO?Un>G7iT_R[6jD9UDf[4K=Y9ie4gBUC\7bjBk9o"
    A$ = A$ + "i;=YBJkm=AhLg>8Ie2hB_b[c]]DHNXQ01FjU;BQVhQ;cO5N2\dkLBkm;1fGY"
    A$ = A$ + "KB[aaQXHTM]ijTY?1XEX4L:`Y3W9L^`k5^0hm3G6L5`e0M0M2M1K7^AHW`]2"
    A$ = A$ + "g6m#\RbYd^cclnTAc\TbIV[RVl;[ba_adX`OYAmH3hAZZ<E[O2`V_HSL\4N]"
    A$ = A$ + "A_Vo=lcbmJC<Q9b]94]g_3_9l]hK_h9me_nP9^L24c9b<A>N<kgm]JM#JGll"
    A$ = A$ + "_:=?mHo5`To\\hOo?c4\[9mKgWi9okiI^`kdWA:_KmLji]kc9XOGmlmioOhi"
    A$ = A$ + "GeoAmLkig1?3SLk1Wg=OF;m^ec2[gEOfLmObNNSmfiIofk6?cY0HV`S3fWEa"
    A$ = A$ + "E2eYWK`cGRNN5XFj:ec3`_MGjidcFc_TNNUHF?OCmlZ`[nadC3fDdc[hYcmR"
    A$ = A$ + ">gPW?Kml:`aMIji1`J`gbiY`fl7YWG9fj7E?_:lkoNH\QK4a4:BAh\gh:;B7"
    A$ = A$ + "V`gLaX7g]RNKk6mmf?NIWKMWMg1Nbj`H8k16P?f?fR>aL1>ElC<4T[K3mTCn"
    A$ = A$ + "cK5oKK`:`?]RM^gN6HMmfoFk<kYVU77lHKU>QFKm4JK5]ejTQ6G>>0dSWc^h"
    A$ = A$ + "Q=;n6^l>kO7MeK?Ic>I]70kC4jaG=h^38lOIbQOZ`4HBIZdDUYJcd<eHV^YF"
    A$ = A$ + "CMVIHVYYNc\<Y=cfdPI>V<ViJJd<?cl=;`\#cR<;f\4CCV\84VZW8ZoGRW7Z"
    A$ = A$ + "VUJbSak?8lAP?3LG`O<lUQ_8V?`mIF6V;`MSAnoP`nPO1<:l5hWLZ3im\CmS"
    A$ = A$ + "1G?b:XWNZm0ONTULS#O<kIWX4QldCMGHlIdC?eW6cahfQmPAZm<`3K:HJf\L"
    A$ = A$ + "caH>FcaI>NC;`WcL2VCdLB`7e\2C[Vf<5=[dDbLbVEIF]iD<W:Z?lY<WVI=`"
    A$ = A$ + "SH>Mh?0ndVgSi<<[eLVVcbLfVcaL^VeI>?cj=_GckcLnV=H^0c5J^8c6=_Oc"
    A$ = A$ + "5K^4cUJ^<cUKn0Vf=GQi:=GUiZ=GSi3J^FceIj`\9cV=QV>=Ka\Ecf<MI^Nc"
    A$ = A$ + "=Hjf\MC?VN=mI^ACoVMH6`\Cc=I^Ic]H^Ec^<O8c^=gVif=gQI?VO?cMJn`V"
    A$ = A$ + "1=OTZgI?M]2lUNlLdS]Z7KC?FD?^BmH9mh9[7GUNLejaCA?NVjacB?NfjacE"
    A$ = A$ + "?^>iH[jhgZ>^]ZSK[jhfZ>^]ZSK[jhfZ>^]ZSK[jhfZ>^]ZSK[jhfZ>oJE7o"
    A$ = A$ + "FeaOEjacDaScZ]:?_>fnfkXb;MKM>#7EN9M]e]gA`6gFGl_Fl<?U:kXknfF7"
    A$ = A$ + "E6fIg3dAeMfg>jZkNkYbM`]JP>fI#OK[[JjlFfLgM\m`=e=eWf`AXZnjL78`"
    A$ = A$ + "ZYSnk_gK^k>gb0EcW]cnV>O\o^fjf6#na`N_iNTcfD_3\]JdV5fCM^cfd>jT"
    A$ = A$ + "1KK]N:C_gn7HKm^eNkYS^[[[N60]XdiV70=ZDKWgh>kjVjXk>kIcMFifjMWk"
    A$ = A$ + "XcIdOWgDgm^e^fL7MgC_3<MZaK]o>jNPnLW^Y1VfU\^F9aQE#WdZNb:LWDdN"
    A$ = A$ + "BKfCFYmTEK?iD\WLbfCFUmTBj9[d2Wf\M_TM8:IQLA;LJcn=]IKCKFhDbRZ["
    A$ = A$ + "dfhRFdX=g9fA_=;nDdMRmWFYM8Je=XF8gV5EGY[aF8_B;n\Bglb2iEJkN9g4"
    A$ = A$ + "d1WE:ZKm]Y^kMcg#e8_T>FYLEgKA>fo0je3\S]eAHWEbo]j`KP?FcFjZk^k<"
    A$ = A$ + "LCmN;CG>[OTSGm0mgE7KMWm97kG_>\7iHgKYZ=gEoK^k>[Y[N^Y=]C\C3#WY"
    A$ = A$ + "Og>fNGXlH7K^CD0jVLG4\SMfCEKYc]SR#YXoDi>j37lDK^kM^Y:gFWMP3AHG"
    A$ = A$ + "M\mNk9\f]_cMX2EM>C_cAIOa=ehScNbHoGSl3nVg6Mdooo4noEAM%%h1"
    btemp$ = ""
    For i& = 1 To Len(A$) Step 4: B$ = Mid$(A$, i&, 4)
        If InStr(1, B$, "%") Then
            For C% = 1 To Len(B$): F$ = Mid$(B$, C%, 1)
                If F$ <> "%" Then C$ = C$ + F$
            Next: B$ = C$: End If: For j = 1 To Len(B$)
            If Mid$(B$, j, 1) = "#" Then
        Mid$(B$, j) = "@": End If: Next
        For t% = Len(B$) To 1 Step -1
            B& = B& * 64 + Asc(Mid$(B$, t%)) - 48
            Next: X$ = "": For t% = 1 To Len(B$) - 1
            X$ = X$ + Chr$(B& And 255): B& = B& \ 256
    Next: btemp$ = btemp$ + X$: Next
    BASFILE$ = _Inflate$(btemp$, 25152): btemp$ = ""
    _Font _LoadFont(BASFILE$, size, "memory, monospace")
End Sub

Find my programs here in Dav's QB64 Corner
Reply


Messages In This Thread
RE: Simple Sudoku puzzle (medium levels) - by Dav - 06-08-2024, 11:44 PM
RE: Simple Sudoku puzzle (medium levels) - by Dav - 06-09-2024, 02:45 AM
RE: Simple Sudoku puzzle (medium levels) - by Dav - 06-09-2024, 07:02 PM



Users browsing this thread: 1 Guest(s)