48 lines
2.2 KiB
Factor
48 lines
2.2 KiB
Factor
! Copyright (C) 2019-2020 KUSUMOTO Norio.
|
|
! See http://factorcode.org/license.txt for BSD license.
|
|
|
|
! Zebra Puzzle: https://rosettacode.org/wiki/Zebra_puzzle
|
|
|
|
USING: logic lists ;
|
|
IN: logic.examples.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 ! #1
|
|
L{ 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 }
|
|
} rule
|
|
|
|
{ nexto A B Ls } {
|
|
{ appendo __ L{ A B . __ } Ls } ;;
|
|
{ appendo __ L{ B A . __ } Ls }
|
|
} rule
|
|
|
|
{ lefto A B Ls } { appendo __ L{ A B . __ } Ls } rule
|
|
|