[Jprogramming] Sudoku16
'Mike Day' via Programming
programming at jsoftware.com
Fri Jun 24 11:26:43 UTC 2022
Ahhh... I hadn’t spotted “hexadoku” - I’d used “alphadoku”. We shall see in due course!
M
Sent from my iPad
> On 24 Jun 2022, at 12:24, 'Mike Day' via Programming <programming at jsoftware.com> wrote:
>
> Perhaps I was just unlucky, but I tried an iPad-type “share” to Documents, which didn’t produce a useable file; later downloaded a pdf with the Windows 11 laptop. Copy-paste from adobe worked to the extent that multi-spaces became single spaces,
> which I then filled out by hand!
>
> Anyway, I’ll try your ideas out later, maybe not for a few days, as we’ll be away for a while.
>
> Thanks for your suggestions,
>
> Mike
>
> Sent from my iPad
>
>> On 24 Jun 2022, at 12:12, Raul Miller <rauldmiller at gmail.com> wrote:
>>
>> I went to a "print out the hexadoku page" on that site, and did a
>> right click save-as on the resulting html page.
>>
>> Extracting the puzzle seems straight forward (but beware email induced
>> line wrap):
>>
>> htm=: fread '~/Downloads/16x16 sudoku, Hexadoku puzzle to print_ level
>> beginner, #1.html'
>>
>> extract=: {{
>> mask=. n E. y
>> start=. mask i.1
>> mask u;.1&(start&}.) y
>> }}
>>
>> clean=: {{
>> rplc&(' ';' ') (y #~-.+/\-/'<>'=/y) -. '>'
>> }}
>>
>> parse=: {{
>> start=. (I.'<table' E. y) ([ {~_1+I.) I.'id="grid"' E. y
>> end=. (I.'</table' E. y) ([ {~ I.) start
>> raw=. start}.end{.y
>> <@clean extract '<td' extract '<tr' raw
>> }}
>>
>> With the above definitions, parse htm gives me what looks like the
>> puzzle. Though perhaps ;"1 parse htm would be more useful to you...
>>
>> I hope this helps,
>>
>> --
>> Raul
>> On Fri, Jun 24, 2022 at 6:34 AM 'Michael Day' via Programming
>> <programming at jsoftware.com> wrote:
>>>
>>> Sorry for late posting - apparently a problem with my broadband
>>> provider's server.
>>>
>>> Yes, it can be worth doing a limited feasibility check on your input.
>>> Every column,
>>> row and small box should have no repeated elements apart from the "missing"
>>> indicator, such as 0 or perhaps one of '.-*0' , eg, using my
>>> generalisation of Roger's code:
>>> */ (2 */ @: > #/.~@: -.&0)"1 R{,fiend NB. fiend is a numeric 9x9
>>> puzzle
>>>
>>> 1
>>>
>>>
>>> It might be of minor interest to note I've got my modification of Roger
>>> Hui's wiki essay
>>>
>>> code to solve a 25x25 puzzle which I lifted from an online source,
>>>
>>> https://www.sudoku-puzzles-online.com/
>>>
>>> Annoyingly, I haven't dicovered how to download it in a form usable
>>> directly by J. I
>>> spent far too much time transcribing just one 25x25 puzzle by eye and hand.
>>>
>>> I modified the solve function , posted on 20 June. just a tad to allow
>>> the input of a character
>>> representation. I'll just reproduce the new and amended lines:
>>>
>>> solve =: 3 : 0
>>> '.123456789abcdefghjklmnpqrstuvwxyzA' solve y NB. x is a default
>>> representation for up to 36x36 just:
>>> if. ' ' = 1{.0{.ry =. , y do.
>>> chars =. ''
>>> chars =. chars, /:~ ~., ' .*-' (e.~#]) ry NB. any other
>>> representations of unknown cells?
>>> chars =. chars, /:~ ~., '123456789' (+./@:e.~#[) ry
>>> chars =. chars, /:~ ~., 'abcdefghijklmnopqrstuvwxyz' (+./@:e.~#[) ry
>>> chars =. chars, /:~ ~., 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' (+./@:e.~#[) ry
>>> sudokurep =: chars
>>> y =. chars i. y
>>> else.
>>> sudokurep =: x
>>> end.
>>> .....
>>> see1 =: (;~n2$n1{.1)&(<;.1) @ ({&sudokurep) @ (n22&$) @ ,
>>>
>>> .....
>>>
>>> )
>>>
>>>
>>> Here's the puzzle I copied, "confirmed" or "advanced" number 7957:
>>>
>>>
>>> t25 =: (#{."1 ] ) dtb"1 >LF cut 0 : 0
>>> j g n os wc iy r aup
>>> o qf w n mgeb
>>> ycaix rlp t b d nvs
>>> n qcb e vg x t
>>> wbmks ig pnf cd
>>> p s w fxa d v u l
>>> k u xyv rhog cj p q
>>> tj e nq sy xo mbf w
>>> lxob ufk i t d ns
>>> rqdtc w uh o g
>>> u kt o i vbpm gj h
>>> j xv pdrqwat o u
>>> atib sym h w jod nfcx
>>> o w dfbtkns ux a
>>> v he ligq b c fk d
>>> g x ud m yebqt
>>> lh r p s dmw gcxu
>>> q rmn pk tw fg b sh
>>> m b ac hoej urx p y
>>> t o s d bga h f i
>>> cn yps db vukfe
>>> x p vh b kwa j
>>> ajy n f p hte sdriw
>>> bfud n v im x
>>> wli j ur xv pf q b n
>>> )
>>>
>>>
>>> see {:solveh t25
>>> ┌─────┬─────┬─────┬─────┬─────┐
>>> │jxegv│nktos│bwcdi│ymqhr│laupf│
>>> │toprq│fdjvw│syuxn│icakl│hmgeb│
>>> │hycai│xmrlp│ogtkf│bedju│nvsqw│
>>> │ndflu│aqcby│ejmph│swvgo│ixrkt│
>>> │wbmks│uheig│qlvar│txpnf│yjcdo│
>>> ├─────┼─────┼─────┼─────┼─────┤
>>> │ipysh│rgowm│fxaed│qnkvj│utlbc│
>>> │knwue│ibxyv│lrhog│asftc│jdpmq│
>>> │gavtj│delnq│cusyp│xoimb│fkwhr│
>>> │clxob│hufkj│ivqmt│gprdw│aeyns│
>>> │fmrqd│tcpsa│wbknj│luhey│xovgi│
>>> ├─────┼─────┼─────┼─────┼─────┤
>>> │usdcl│ktwao│xiyfe│nvbpm│qgjrh│
>>> │ykjfn│exvhc│mpdrq│watig│olbsu│
>>> │atibp│symur│ghlwv│eqjod│knfcx│
>>> │oqgmw│pjdfb│tknsc│rluxh│eiayv│
>>> │vrhex│ligqn│jaobu│cysfk│pwmtd│
>>> ├─────┼─────┼─────┼─────┼─────┤
>>> │pgsxc│waudh│vfrlm│oinye│bqtjk│
>>> │lhkyf│orbte│pniqs│jdmwv│gcxua│
>>> │djqvr│mnipk│ytwux│fgcba│sheol│
>>> │mibna│cfqgl│hoejk│urxst│wpdvy│
>>> │eutwo│vsyjx│dcbga│khlqp│rfnim│
>>> ├─────┼─────┼─────┼─────┼─────┤
>>> │rcnhg│ypsmi│aqjtw│dbolx│vukfe│
>>> │xeopt│gvhrd│usfib│mkwan│cyqlj│
>>> │qvajy│blnxf│kmpco│hteus│driwg│
>>> │bfudk│qwact│neghl│vjyri│msoxp│
>>> │swlim│jokeu│rdxvy│pfgcq│tbhan│
>>> └─────┴─────┴─────┴─────┴─────┘
>>>
>>>
>>> ts
>>> 6!:2 , 7!:2@]
>>> ts'solveh t25' NB. performance ok for this example
>>> 0.0374274 1461408
>>>
>>> They offer even larger puzzles, but I'll avoid those until I see how to
>>> download them
>>> in a usable format!
>>>
>>>
>>>
>>>> On 20/06/2022 18:00, Brian Schott wrote:
>>>> All,
>>>>
>>>> My code is not perfect, but the error I was noticing in trying to step
>>>> through the algorithm using the verbs f and diff were correct, BUT my
>>>> initial data in the noun raw was missing a starting SPACE. So the example
>>>> data was unsolvable. When I corrected the data, I was able to get an answer
>>>> with Mike's most recent verb 'solve', and it looks like it is the correct
>>>> answer.
>>>>
>>>> I apologize for the noise. And will try to improve my solution now; for
>>>> some reason my version of 'sudoku' is flawed, but I think I can rectify
>>>> that now that I have a working version of the verbs f and diff.
>>>>
>>>> Again, I apologize. And thank you.
>>>> ----------------------------------------------------------------------
>>>> For information about J forums seehttp://www.jsoftware.com/forums.htm
>>>
>>>
>>> --
>>> This email has been checked for viruses by Avast antivirus software.
>>> https://www.avast.com/antivirus
>>> ----------------------------------------------------------------------
>>> For information about J forums see http://www.jsoftware.com/forums.htm
>> ----------------------------------------------------------------------
>> For information about J forums see http://www.jsoftware.com/forums.htm
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
More information about the Programming
mailing list