Advertisement
Guest User

Untitled

a guest
Jul 11th, 2014
315
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. domain Declarations
  2. {
  3.     // Hausnummer
  4.     HouseNumber ::= /*left*/ {1, 2, 3, 4, 5} /*right*/.
  5.     // Hausart
  6.     HausArt ::= {"Holz", "Fachwerk", "Flachdach", "Fertig", "Bergarbeiter"}.
  7.     // Cachertyp
  8.     CacherTyp ::= {"Multi", "Mystery", "Tradi", "Virtuell", "Webcam"}.
  9.     // Getraenk
  10.     Drink ::= {"Kaffee", "Tee", "Milch", "Bier", "Wasser"}.    
  11.     // Cachefinal
  12.     CacheFinal ::= {"Micro", "DOSE", "Metall", "Eimer", "Holz"}.
  13.     // Cachemobil
  14.     CacheMobil ::= {"Opel", "Audi", "VW", "Nissan", "Renault"}.
  15.  
  16.     primitive House ::= (number:HouseNumber, hausArt:HausArt, cacherTyp:CacherTyp, drink:Drink, cacheFinal:CacheFinal, cacheMobil:CacheMobil).
  17.  
  18.     // There are five [different] houses.
  19.     HousesAreDifferent := h1 is House, h2 is House, h3 is House, h4 is House, h5 is House,
  20.                        h1.number != h2.number, h1.number != h3.number, h1.number != h4.number, h1.number != h5.number,
  21.                        h2.number != h3.number, h2.number != h4.number, h2.number != h5.number,
  22.                        h3.number != h4.number, h3.number != h5.number,
  23.                        h4.number != h5.number,
  24.                        h1.hausArt != h2.hausArt, h1.hausArt != h3.hausArt, h1.hausArt != h4.hausArt, h1.hausArt != h5.hausArt,
  25.                        h2.hausArt != h3.hausArt, h2.hausArt != h4.hausArt, h2.hausArt != h5.hausArt,
  26.                        h3.hausArt != h4.hausArt, h3.hausArt != h5.hausArt,
  27.                        h4.hausArt != h5.hausArt,
  28.                        h1.cacherTyp != h2.cacherTyp, h1.cacherTyp != h3.cacherTyp, h1.cacherTyp != h4.cacherTyp, h1.cacherTyp != h5.cacherTyp,
  29.                        h2.cacherTyp != h3.cacherTyp, h2.cacherTyp != h4.cacherTyp, h2.cacherTyp != h5.cacherTyp,
  30.                        h3.cacherTyp != h4.cacherTyp, h3.cacherTyp != h5.cacherTyp,
  31.                        h4.cacherTyp != h5.cacherTyp,
  32.                        h1.drink != h2.drink, h1.drink != h3.drink, h1.drink != h4.drink, h1.drink != h5.drink,
  33.                        h2.drink != h3.drink, h2.drink != h4.drink, h2.drink != h5.drink,
  34.                        h3.drink != h4.drink, h3.drink != h5.drink,
  35.                        h4.drink != h5.drink,
  36.                        h1.cacheFinal != h2.cacheFinal, h1.cacheFinal != h3.cacheFinal, h1.cacheFinal != h4.cacheFinal, h1.cacheFinal != h5.cacheFinal,
  37.                        h2.cacheFinal != h3.cacheFinal, h2.cacheFinal != h4.cacheFinal, h2.cacheFinal != h5.cacheFinal,
  38.                        h3.cacheFinal != h4.cacheFinal, h3.cacheFinal != h5.cacheFinal,
  39.                        h4.cacheFinal != h5.cacheFinal,
  40.                        h1.cacheMobil != h2.cacheMobil, h1.cacheMobil != h3.cacheMobil, h1.cacheMobil != h4.cacheMobil, h1.cacheMobil != h5.cacheMobil,
  41.                        h2.cacheMobil != h3.cacheMobil, h2.cacheMobil != h4.cacheMobil, h2.cacheMobil != h5.cacheMobil,
  42.                        h3.cacheMobil != h4.cacheMobil, h3.cacheMobil != h5.cacheMobil,
  43.                        h4.cacheMobil != h5.cacheMobil.
  44.     conforms := HousesAreDifferent.
  45. }
  46.  
  47. domain Hints extends Declarations
  48. {
  49.  
  50.     // Tradi-Sammler wohnt in Holzhaus
  51.     hint1 := h is House, h.cacherTyp = "Tradi", h.hausArt = "Holz".
  52.  
  53.     // Mystery hat Holzkiste am Final versteckt
  54.     hint2 := h is House, h.cacherTyp = "Mystery", h.cacheFinal = "Holz".
  55.  
  56.     // Multi faehrt Nissan
  57.     hint3 := h is House, h.cacherTyp = "Multi", h.cacheMobil = "Nissan".
  58.  
  59.     // Fachwerkhaus steht links von der Flachdachvilla (<=> Flachdach rechts von Fachwerk)
  60.     hint4 := h is House, i is House, h.hausArt = "Flachdach", h.number = i.number+1, i.hausArt="Fachwerk".
  61.  
  62.     //  05 Der Besitzer des Fachwerkhauses fährt einen Renault Clio.
  63.     hint5 := h is House, h.hausArt = "Fachwerk", h.cacheMobil = "Renault".
  64.  
  65.     //  06 Die Person, die gerne Wasser trinkt, hat einen 10 Liter Eimer an seinem Final versteckt.
  66.     hint6 := h is House, h.drink = "Wasser", h.cacheFinal = "Eimer".
  67.  
  68.     //  07 Der Cacher, der im mittleren Haus wohnt, fährt einen VW Golf.
  69.     hint7 := h is House, h.cacheMobil = "VW", h.number = 3.
  70.  
  71.     //  08 Der Besitzer des Fertighauses trinkt gerne Tee.
  72.     hint8 := h is House, h.hausArt = "Fertig", h.drink = "Tee".
  73.  
  74.     //  09 Der Virtuell - Freak wohnt im ersten Haus.
  75.     hint9 := h is House, h.cacherTyp = "Virtuell", h.number = 1.
  76.  
  77.     //  10 Der Biertrinker wohnt neben dem, der einen Micro an seinem Final versteckt hat.
  78.     hint10_1 := h is House, i is House, h.drink = "Bier", h.number = i.number+1, i.cacheFinal = "Micro".
  79.     hint10_2 := h is House, i is House, h.drink = "Bier", h.number = i.number-1, i.cacheFinal = "Micro".    
  80.  
  81.     // 11 Der Cacher, der an seinem Cachefinal einen Metallkasten versteckt hat, wohnt neben dem, der Tee trinkt.
  82.     hint11_1 := h is House, i is House, h.cacheFinal = "Metall", h.number = i.number + 1, i.drink = "Tee".
  83.     hint11_2 := h is House, i is House, h.cacheFinal = "Metall", h.number = i.number - 1, i.drink = "Tee".
  84.  
  85.     // 12 Der Kaffeetrinker fährt einen Audi A4.
  86.     hint12 := h is House, h.drink="Kaffee", h.cacheMobil = "Audi".
  87.  
  88.     // 13 Neben dem Bergarbeiterhaus wohnt der Virtuell - Freak. -- Struktur unterscheidet sich: 13,14
  89.     hint13_1 := h is House, i is House, h.cacherTyp = "Virtuell", h.number = i.number + 1, i.hausArt = "Bergarbeiter".
  90.     hint13_2 := h is House, i is House, h.cacherTyp = "Virtuell", h.number = i.number - 1, i.hausArt = "Bergarbeiter".
  91.  
  92.     // 14 Der Webcam - Fan trinkt gerne Milch.
  93.     hint14 := h is House, h.cacherTyp = "Webcam", h.drink = "Milch".
  94.  
  95.     // 15 Derjenige, der gerne Bier trinkt, hat einen Nachbarn, der einen Opel Astra fährt.
  96.     hint15_1 := h is House, i is House, h.drink = "Bier", h.number = i.number + 1, i.cacheMobil = "Opel".
  97.     hint15_2 := h is House, i is House, h.drink = "Bier", h.number = i.number - 1, i.cacheMobil = "Opel".
  98.  
  99.  
  100.     conforms := hint1 & hint2 & hint3 & hint4 & hint5 & hint6 & hint7 & hint8 & hint9 & (hint10_1 | hint10_2) &
  101.                 (hint11_1 | hint11_2) & hint12 & (hint13_1 | hint13_2) & hint14 & (hint15_1 | hint15_2).
  102.  
  103.  
  104. }
  105.  
  106. partial model ZebraPuzzle of Hints
  107. {
  108.  // House(number, hausArt, cacherTyp, drink, cacheFinal, cacheMobil).
  109.     House(1,_,_,_,_,_)
  110.     House(2,_,_,_,_,_)
  111.     House(3,_,_,_,_,_)
  112.     House(4,_,_,_,_,_)
  113.     House(5,_,_,_,_,_)
  114. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement