I just put up this page from a past NYCJUG meeting where we talked about sudoku - https://code.jsoftware.com/wiki/NYCJUG/2012-11-13#Show-and-Tell - and it only took me ten years! Perhaps a harder puzzle is to generate sudoku.
On Wed, Oct 13, 2021 at 7:59 PM Hauke Rehr <[email protected]> wrote: > but since N2, N1 and N0 are boxed, > you need (N2;N1;<N0) rather than (N2;N1;N0) > or, even simpler since they’re already atomic > boxes (only one item, empty shape): > > > is&.>/ (N2,N1,N0) (<@mn@:{)"0 _ g > > you may even get rid of the "0 _ > (but read the vocabulary page for { carfully) > > > Am 14.10.21 um 01:37 schrieb Hauke Rehr: > > if I now understand your first question correctly, > > you want to learn how to shorten a phrase with > > much repetitive structure > > > > first of all, you can define 'is' this way > > is =: e. # [ > > > > > > your expression looks like > > (v N2{g) is (v N1{g) is (v N0{g) > > with v equal to mn etc. > > > > if you want to factor out g, you can say > > ((N2 v@:{ ]) is (N1 v@:{ ]) is (N0 v@:{ ])) g > > > > … and if you define > > MN =: mn@:{ > > you get > > ((N2 MN ]) is (N1 MN ]) is (N0 MN ])) g > > > > if what I wrote for a1, a2 and a3 is correct, > > you may then do > > > > > is&.>/ ((N2 MN ]);(N1 MN ]);(N0 MN ])) g > > > > which may be further simplified to > > > > > is&.>/ (N2;N1;N0) (MN&.>)"0 _ g > > > > and we may substitute back > > > > > is&.>/ (N2;N1;N0) (mn@:{&.>)"0 _ g > > > > I hope this works; and maybe someone wants to > > comment on different ways to reduce repetitive > > expressions. > > > > > > But if your main concern was solving the task > > of writing a sudoku solver, take a look at the > > wiki page Ric pointed to. > > > > > > Am 14.10.21 um 01:04 schrieb Hauke Rehr: > >> Concerning the first question: > >> > >> try adding ] where g used to be, > >> or inserting an & before the { > >> (but I didn’t study your code > >> enough to /know/ this will work) > >> > >> Am 14.10.21 um 00:52 schrieb 'Viktor Grigorov' via Programming: > >>> Hello, > >>> > >>> Recently I saw an article in lobste.rs > >>> (https://www.hillelwayne.com/post/sudoku/) about sudoku solving, and > >>> though t, "it'd be nice to try it J". (Didn't even bother reading it, > >>> but later glancing at it found the author had used J in the end. :D) > >>> > >>> I reshape a list of integers of length 81 with blanks being 0s, > >>> row-wise, from top, going left-to-right; into a 4-cube of length 3; > >>> and define 3 auxiliary verbs. > >>> > >>> g=:3 3 3 3 $ ... > >>> q=:i.3NB. has missing > >>> hm=:0&=@(<./)@, > >>> NB. intersection > >>> is=:([e.])#[ > >>> NB. missing numbers > >>> mn=:13 :'((-.((>:@i.9)e.,y))#(>:@i.9))' > >>> > >>> Although one usually solves sudoku (I think) by thinking of > >>> exclusions, as the article's first paragraph or so suggested. I > >>> wanted to find symmetries or something similar, thinking of it as a > >>> higher dimmensional thing, hence the 4-cube. The constraints, or > >>> symmtetries, or whatever they may be are the 9 rows, columns, and > >>> faces each containing 1--9 once. My idea is to try each of the 81 > >>> cells until once with only one overlap is found, break, then repeat > >>> until no change. > >>> > >>> The sudoku given as an example in the english wikipedia article for > >>> sudoku has an 'easy' example, wherein the center of the center > >>> resolves to 5 using the intersection of the missing numbers of the 5. > >>> row, 5. column, and 5. face; or within the tesseract: > >>> > >>> (mn(<1;q;1;q){g)is(mn(<1;1;q;q){g)is(mn(<q;q;1;1){g) > >>> ((mn(<1;q;1;q)&{)is(...)is(...))g NB. nope > >>> > >>> Taking out g and binding the from doesn't work, giving me just 1--9. > >>> Trying to take out the coordinates doesn't fair well for me either. > >>> > >>> How can one shorten the former expression using bindings? > >>> > >>> My second question regards is/: if I define a1, a2, a3 as missing > >>> numbers in the row, column, face of some cell, why does is/ a1 a2 a3 > >>> give a syntax error, when a1 is a2 is a3 doesn't? > >>> > >>> > >>> ---------------------------------------------------------------------- > >>> For information about J forums see http://www.jsoftware.com/forums.htm > >>> > >> > > > > -- > ---------------------- > mail written using NEO > neo-layout.org > > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm > -- Devon McCormick, CFA Quantitative Consultant ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
