I have difficulty in reading your code, perhaps you want to
make everything looks functional. To that end, you may 
replace the if/then with @. (agenda)
(+./ @: ({ & id))`({ & id)@.((< & 2) @: #)

(untested and not sure if this is a simplication)

Вс, 04 июн 2017, Michael Rice написал(а):
> Two things come to mind: 1) *reductio ad absurdum* and 2) a Dustin Hoffman
> film, wherein he says to a man, "I going to explain something so you'll
> understand it!" and then shoots him.
> 
> I already had a function that does what I needed (see below) but was musing
> about left/right parameter style, when one of the parameters remains
> constant and the other changes "functionally" in the program.
> 
> Just looking at your first "simplification," I can see I have a lot of
> familiarization work to do. For example, what's the difference between
> 
> 2 3 <@, 3 4 and 1 2 <@:, 3 4
> 
> when the result is the same?
> 
> Must be something subtle.
> 
> =================
> 
> Note: The moves marked with "<-" are moves to a known solution.
> 
> 
> NB. 15 position peg solitaire
> NB. The board (position 5 initially vacant)
> 
> NB.         0
> NB.       1   2
> NB.      3  4   5
> NB.    6  7   8   9
> NB. 10 11 12 13 14
> 
>    move_table =: 36 3 $ 0 2 5 5 2 0 0 1 3 3 1 0 1 3 6 6 3 1 1 4 8 8 4 1 2 4
> 7 7 4 2 2 5 9 9 5 2 3 6 10 10 6 3 3 7 12 12 7 3 3 4 5 5 4 3 4 7 11 11 7 4 4
> 8 13 13 8 4 5 8 12 12 8 5 5 9 14 14 9 5 6 7 8 8 7 6 7 8 9 9 8 7 10 11 12 12
> 11 10 11 12 13 13 12 11 12 13 14 14 13 12
>    id =: e. i. 15
>    flip =: (~: 3 : 'if. ((< & 2) @: #) y do. ({ & id) y else. (+./ @: ({ &
> id)) y end. ')
>    legal_moves =: (#~ ((-: & 1 1 0)"1 @: ({~ & move_table)))
>    board =: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
>    board
> 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
>    board =: board flip 5
>    board
> 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1
>    move_table legal_moves board
>  0 2 5 <-
>  3 4 5
> 12 8 5
> 14 9 5
>    board =: board flip 0 2 5
>    board
> 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1
>    move_table legal_moves board
> 3 1 0 <-
> 7 4 2
> 9 5 2
>    board =: board flip 3 1 0
>    board
> 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1
>    move_table legal_moves board
>  8 4 1
>  7 4 2
>  9 5 2
> 10 6 3
> 12 7 3
>  5 4 3 <-
>    board =: board flip 5 4 3
>    board
> 1 0 0 1 0 0 1 1 1 1 1 1 1 1 1
>    move_table legal_moves board
>  6 3 1 <-
> 11 7 4
> 13 8 4
> 12 8 5
> 14 9 5
>    board =: board flip 6 3 1
>    board
> 1 1 0 0 0 0 0 1 1 1 1 1 1 1 1
>    move_table legal_moves board
>  0 1 3 <-
> 12 7 3
> 11 7 4
> 13 8 4
> 12 8 5
> 14 9 5
>  8 7 6
>    board =: board flip 0 1 3
>    board
> 0 0 0 1 0 0 0 1 1 1 1 1 1 1 1
>    move_table legal_moves board
> 11 7 4 <-
> 13 8 4
> 12 8 5
> 14 9 5
>  8 7 6
>    board =: board flip 11 7 4
>    board
> 0 0 0 1 1 0 0 0 1 1 1 0 1 1 1
>    move_table legal_moves board
>  8  4  1
>  3  4  5 <-
> 12  8  5
> 14  9  5
>  9  8  7
> 13 12 11
>    board =: board flip 3 4 5
>    board
> 0 0 0 0 0 1 0 0 1 1 1 0 1 1 1
>    move_table legal_moves board
>  9  5  2 <-
> 13  8  4
>  9  8  7
> 13 12 11
>    board =: board flip 9 5 2
>    board
> 0 0 1 0 0 0 0 0 1 0 1 0 1 1 1
>    move_table legal_moves board
> 13  8  4
> 12  8  5
> 13 12 11 <-
>    board =: board flip 13 12 11
>    board
> 0 0 1 0 0 0 0 0 1 0 1 1 0 0 1
>    move_table legal_moves board
> 10 11 12 <-
>    board =: board flip 10 11 12
>    board
> 0 0 1 0 0 0 0 0 1 0 0 0 1 0 1
>    move_table legal_moves board
> 12 8 5 <-
>    board =: board flip 12 8 5
>    board
> 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1
>    move_table legal_moves board
> 5 2 0
> 2 5 9 <-
>    board =: board flip 2 5 9
>    board
> 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1
>    move_table legal_moves board
> 14 9 5 <-
>    board =: board flip 14 9 5
>    board
> 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0
>    move_table legal_moves board
> 
> 
> 
> 
> On Sun, Jun 4, 2017 at 10:03 AM, Raul Miller <[email protected]> wrote:
> 
> > Like this?
> >
> >    (#~ 5=2#.@:|])z
> > 3 4 5
> >
> > --
> > Raul
> >
> >
> > On Sun, Jun 4, 2017 at 9:43 AM, Michael Rice <[email protected]> wrote:
> > > How about
> > >    1 0 1 0 1 0 (#~ ((-: & 0 1 0)"1 @: ({~ & z)))~ z
> > > ?
> > >
> > > Odd, that's the KISS way, the way that always works, and the one way I
> > > hadn't considered.
> > >
> > > On to your "simplifications."
> > >
> > > On Sat, Jun 3, 2017 at 10:16 PM, Louis de Forcrand <[email protected]>
> > wrote:
> > >
> > >> How about
> > >>    1 0 1 0 1 0 (#~ ((-: & 0 1 0)"1 @: ({~ & z)))~ z
> > >> ?
> > >> You can then "simplify":
> > >>
> > >> First the hook (and {~&z)
> > >> ([ #~ -:&0 1 0"1@:(z&{)@])~
> > >> ([ #~ -:&0 1 0"1@:(z&{)@])~
> > >>
> > >> Then ~ can be "distributed" over the resulting fork:
> > >> [~ #~ -:&0 1 0"1@:(z&{)@(]~)
> > >> ] #~ -:&0 1 0"1@:(z&{)@[
> > >>
> > >> You can keep going;
> > >> From bonding to forks:
> > >> ] #~ (] -: 0 1 0"_)"1@:(z { ])@[
> > >> Composition and -: commutativity:
> > >> ] #~ (0 1 0 -: ])"1@:(z { ]@[)
> > >> Because 1=#$0 1 0:
> > >> ] #~ (0 1 0 -:"1 ])@:(z { [)
> > >> Trains:
> > >> ] #~ (0 1 0 -:"1 ]@:(z { [))
> > >> ] #~ 0 1 0 -:"1 ]@:(z { ])
> > >> ] #~ 0 1 0 -:"1 z { [
> > >>
> > >> Can't get it any simpler.
> > >>
> > >> Cheers,
> > >> Louis
> > >>
> > >> > On 4 Jun 2017, at 03:45, Michael Rice <[email protected]> wrote:
> > >> >
> > >> >   z (#~ ((-: & 0 1 0)"1 @: ({~ & z))) 1 0 1 0 1 0
> > >>
> > >> ----------------------------------------------------------------------
> > >> 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
> >
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm

-- 
regards,
====================================================
GPG key 1024D/4434BAB3 2008-08-24
gpg --keyserver subkeys.pgp.net --recv-keys 4434BAB3
gpg --keyserver subkeys.pgp.net --armor --export 4434BAB3
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to