Wow, this looks very cool! : )) 23.09.2019, 10:43, "KUSUMOTO Norio" <kusum...@na.rim.or.jp>: >> 2019/09/22 20:21、Alexander Ilin <ajs...@yandex.ru>のメール: >> >> I use `loop` or `while`, depending on the details. > > Hello. Thank you for your answer. > > I rewrote my program using `loop 'and `while'. The library I'm currently > building is an extended port from Ruby's one, and I used `with-return` > to mimic the code. > > The use of `with-return` in this code, which does a lot of repetition, > seems to have been a very bad choice. > The zebra puzzle is now running about 20 times faster than before. > > USING: factor-logica lists ; > IN: factor-logica.test.zebra > LOGIC-PREDS: houseso neighboro zebrao watero nexto lefto ; > LOGIC-VARS: Hs A B Ls X Y ; > SYMBOLS: red blue green white yellow ; > SYMBOLS: english swede dane norwegian german ; > SYMBOLS: dog cat birds horse zebra ; > SYMBOLS: tea coffee beer milk water ; > SYMBOLS: pall-mall dunhill blue-master prince blend ; > TUPLE: house color nationality drink smoke pet ; > > { houseso Hs X Y } { > { (=) Hs L{ ! #1 > T{ house f _ norwegian _ _ _ } ! #10 > T{ house f blue _ _ _ _ } ! #15 > T{ house f _ _ milk _ _ } _ _ } } ! #9 > { membero T{ house f red english _ _ _ } Hs } ! #2 > { membero T{ house f _ swede _ _ dog } Hs } ! #3 > { membero T{ house f _ dane tea _ _ } Hs } ! #4 > { lefto T{ house f green _ _ _ _ } T{ house f white _ _ _ _ } Hs } ! #5 > { membero T{ house f green _ coffee _ _ } Hs } ! #6 > { membero T{ house f _ _ _ pall-mall birds } Hs } ! #7 > { membero T{ house f yellow _ _ dunhill _ } Hs } ! #8 > { nexto T{ house f _ _ _ blend _ } T{ house f _ _ _ _ cat } Hs } ! #11 > { nexto T{ house f _ _ _ dunhill _ } T{ house f _ _ _ _ horse } Hs } ! #12 > { membero T{ house f _ _ beer blue-master _ } Hs } ! #13 > { membero T{ house f _ german _ prince _ } Hs } ! #14 > { nexto T{ house f _ _ water _ _ } T{ house f _ _ _ blend _ } Hs } ! #16 > { membero T{ house f _ X water _ _ } Hs } > { membero T{ house f _ Y _ _ zebra } Hs } > } si > > { nexto A B Ls } { > { appendo _ [ A B _ cons cons ] Ls } vel > { appendo _ [ B A _ cons cons ] Ls } > } si > > { lefto A B Ls } { appendo _ [ A B _ cons cons ] Ls } si > > IN: scratchpad { houseso Hs X Y } query . > { > H{ > { > Hs > L{ > T{ house > { color yellow } > { nationality norwegian } > { drink water } > { smoke dunhill } > { pet cat } > } > T{ house > { color blue } > { nationality dane } > { drink tea } > { smoke blend } > { pet horse } > } > T{ house > { color red } > { nationality english } > { drink milk } > { smoke pall-mall } > { pet birds } > } > T{ house > { color green } > { nationality german } > { drink coffee } > { smoke prince } > { pet zebra } > } > T{ house > { color white } > { nationality swede } > { drink beer } > { smoke blue-master } > { pet dog } > } > } > } > { X norwegian } > { Y german } > } > } > IN: scratchpad [ 1000 [ { houseso Hs X Y } query drop ] times ] time > > Running time: 20.393989632 seconds > > -- > KUSUMOTO Norio > > _______________________________________________ > Factor-talk mailing list > Factor-talk@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/factor-talk
---=====--- Александр _______________________________________________ Factor-talk mailing list Factor-talk@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/factor-talk