Mike, To check the inputs of a grid I found that Hui's verb 'ok' works for me.
Your revision of the verb 'solve' looks problematic to me because it suggests there is a dyadic version, but I could only find a monadic version from your earlier post. Also there is an example in this post using a verb 'solveh' that is undocumented, I believe. As you mention, I lean toward the tokens starting at 0, not at 1, too. I especially like your way of initializing the nouns such as r, c and b based on the input shape or count. Also, your link to https://www.sudoku-puzzles-online.com/ was most helpful. On Fri, Jun 24, 2022 at 6:34 AM 'Michael Day' via Programming < programm...@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&$) @ , > > ..... > > ) > > > [snip] > ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm