Kurzusok
/
Tcl
Tcl
/
Feladatok
/
Zebrarejtvény
Zebrarejtvény

Zebrarejtvény

Nehéz

Bevezetés

A Zebra Puzzle egy híres logikai rejtvény, amelyben öt ház van, és mindegyik más színre van festve. A házakban különböző lakók élnek: más-más nemzetiségűek, más-más háziállatot tartanak, más-más italt isznak, és más-más hobbinak hódolnak.

Hogy könnyebben megoldd a rejtvényt, 15 állítást kapsz, amelyek leírják a megoldást. A rejtvény megoldását azonban csak úgy találhatod meg, ha az összes állításban szereplő információt összekapcsolod.

Note

A Zebra Puzzle egy megkötés-kielégítési probléma (CSP). Egy ilyen feladatban adott egy lehetséges értékekből álló halmaz, valamint egy megkötéshalmaz, amely korlátozza, hogy mely értékek érvényesek. Egy másik jól ismert CSP a Sudoku.

Utasítások

A feladatod, hogy megoldd a zebrarejtvényt, és megtaláld a választ erre a két kérdésre:

  • Melyik lakó iszik vizet?
  • Kié a zebra?

A rejtvény

A következő 15 állítás mindegyike igaz:

  1. Öt ház van.
  2. Az angol a piros házban lakik.
  3. A spanyolnak kutyája van.
  4. A zöld ház lakója kávét iszik.
  5. Az ukrán teát iszik.
  6. A zöld ház közvetlenül az elefántcsont színű ház jobb oldalán van.
  7. A csigatulajdonos szeret táncolni.
  8. A sárga ház lakója festő.
  9. A középső ház lakója tejet iszik.
  10. A norvég az első házban lakik.
  11. Aki szeret olvasni, az a rókát tartó ember melletti házban lakik.
  12. A festő háza a lovat tartó ház mellett van.
  13. Aki futballozik, narancslevet iszik.
  14. A japán sakkozik.
  15. A norvég a kék ház mellett lakik.

Ráadásul mind az öt ház különböző színűre van festve, a lakóik pedig különböző nemzetiségűek, különböző háziállatokat tartanak, különböző italokat isznak és különböző hobbinak hódolnak.

Note

24 milliárd (5!⁵ = 24 883 200 000) lehetséges megoldás létezik, ezért próbáld minél több megoldást kizárni.

Tcl-csomagok

Ez az első feladat, amely egy előre megírt csomagot is tartalmaz. Figyeld meg, hogy jelen van a pkgIndex.tcl fájl, és hogy az aktuális könyvtár is szerepel az auto_path változóban. Ezek teszik lehetővé, hogy a package require parancs megtalálja a csomag forrásfájlját.

Ez a csomag nem különösebben jól megírt, csak néhány kódrészlet, amelyet különböző forrásokból vettünk át. Az interp alias hívás célja, hogy elrejtse a szépséghibákat, és könnyebbé tegye a permutations csomag használatát.

Hivatkozások:


Forrás

WikipediaA hivatkozás új ablakban vagy lapon nyílik meg
Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg
Tcl Exercism

Készen állsz elkezdeni a(z) Zebrarejtvény feladatot?

Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) Tcl nyelvet 135 feladat segítségével, valódi emberi mentorálással, mindez ingyen.

Mélyelemzés: Zebrarejtvény!

Fedezz fel 8 különböző módot arra, hogy megtaláld a Zebra-rejtvény megoldását 24 milliárd lehetséges megoldás közül, beleértve az érvénytelen permutációk mielőbbi figyelmen kívül hagyását, az AC-3 algoritmust, egy nagyon tömör, logikaalapú megoldást, sőt egy genetikus algoritmust is!