Unless you're suggesting this:
https://code.jsoftware.com/wiki/NYCJUG/2012-11-13#Simple_.E2.80.9CSudoku_N.E2.80.9D_Generation
?

On Thu, Oct 14, 2021 at 10:21 AM Devon McCormick <devon...@gmail.com> wrote:

> Easier said than done.
>
> On Thu, Oct 14, 2021 at 6:56 AM Hauke Rehr <hauke.r...@uni-jena.de> wrote:
>
>> No, generation is easier.
>> Take a random permutation along both axes of
>> |."0 1~ >:i.9
>> and then erase numbers as long as they’re derivable
>> by what remains.
>>
>> Am 14.10.21 um 04:19 schrieb Devon McCormick:
>> > 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 <hauke.r...@uni-jena.de>
>> 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
>> >>
>> >
>> >
>>
>> --
>> ----------------------
>> mail written using NEO
>> neo-layout.org
>>
>> ----------------------------------------------------------------------
>> For information about J forums see http://www.jsoftware.com/forums.htm
>>
>
>
> --
>
> Devon McCormick, CFA
>
> Quantitative Consultant
>
>

-- 

Devon McCormick, CFA

Quantitative Consultant
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to