Tazka Einsteinova hadanka

Programovacie jazyky, rady, poradňa...
Mek
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4661
Registrovaný: 23 mar 2005, 23:00
Bydlisko: ZA <-> TN
Kontaktovať používateľa:

Tazka Einsteinova hadanka

Príspevok od používateľa Mek »

Caute,
potrebujem vyriesit jednu tazku Einsteinovu hadanku. Bezna takato hadanka ma len 5 ludi a 5 faktov o nich, ale ja mam 10. Tu je zadanie:
V mestecku Albertstein sa nachadza Bolehlavova ulica. Na kazdej strane ulice lezi pat domov, ktore su ocislovane ako na obrazku. Vieme, ze v kazdom dome byva clovek inej narodnosti. Ziadni dvaja nemaju rovnake povolanie, ziadni dvaja nevlastnia rovnaku znacku auta ani mobilneho telefonu a kazde auto je inej farby. Kazdy z nich chova ine domace zvieratko, kazdy z nich ma ine oblubene jedlo a iny oblubeny napoj. Vieme o nich aj toto:
- v dome c. 1 byva Slovak, ktory chova psa a vlastni auto striebornej farby
- chovatel macky byva v dome c. 3 a ma iPhone
- Anglican byva v dome c. 5
- obyvatel domu c. 7 ma oranzove auto a pochuti si na haluskach
- v garazi domu c. 9 je zaparkovane Suzuki a jeho majitel ma rad gulas
- obyvatel domu c. 2 si rad pochuti na cevapcici
- v dome c. 4 byva Francuz, ktory vlastni Hondu, mobilny telefon Siemens a chova rybicky
- obyvatel domu c. 6 vlastni telefon Sony Ericsson a pije kavu
- obyvatel domu c. 8 ma rad pizzu a pivo
- vo dvore domu c. 10 parkuje hnede auto
- Talian je maliar
- Rus vlastni automobil Nissan
- Nemec ma cervene auto
- Poliak telefonuje cez BlackBerry
- Madar chova morca
- Cech si pochuti na palacinkach
- Spaniel pije rum
- lekar vlastni automobil Seat
- kuchar vlastni modre auto
- ucitel ma telefon Motorola
- pekar chova skrecka
- murarovi chutia langose
- stolar chodieva na kofolu
- Mazda je zelena
- majitel Peugeotu ma telefon Panasonic
- majitel Mitsubishi chova papagaja
- milovnik sushi jazdi na Mercedese
- vodic Fiatu pije najradsej mlieko
- majitel cierneho auta ma telefon LG
- na koni jazdi majitel fialoveho auta
- majitel zlteho auta ma rad rezen
- caj pije ten, kto jazdi na bielom aute
- chovatel hada ma telefon Sagem
- Nokiu vlastni ten obyvatel, ktory si pochuti na gyrose
- clovek, ktory pije vodku, telefonuje cez telefon Samsung
- chovatel kralika ma rad cevapcici
- chovatel andulky pije vino
- niekto ma rad cestoviny a dzus
- informatik pije cucoriedkovicu
- vlastnik zeleneho auta byva v dome s parnym cislom
- ten, kto ma rad kofolu, ma dvoch susedov (v tomto listingu je A susedom B prave vtedy, ak medzi A a B nikto nebyva a obaja su na rovnakej strane ulice)
- majitel seatu ma iba jedneho suseda
- cierne auto patri majitelovi, byvajucemu uprostred (t.j. ma cislo domu 5 alebo 6)
- Madar a kominar su susedia
- ten, kto ma rad rezen je lavym (pri pohlade z ulice) susedom chovatela kralika
- postar byva oproti (kolmo cez ulicu) majitelovi Mitsubishi
- majitel telefonu Samsung byva vpravo (pri pohlade z ulice) od toho, kto ma rad vino (byvaju na tej istej strane ulice, ale nemusia byt susedia)
- Nemec byva na opacnej strane ulice (nie nevyhnutne oproti), ako majitel Mercedesu
- majitel Fiatu ma vyssie cislo domu ako majitel modreho auta
Postavenie domov je znazornene na prilozenom obrazku. Treba urcit, ktory clovek byva v ktorom dome (a ake ma oblubene jedlo, zvieratko, auto, mobil, a vsetko to ostatne).
Riesil som to rucne, kym to slo. Dostal som sa az do bodu, z ktoreho sa neda jednoznacne pokracovat. Doterajsie riesenie je znazornene v tabulke - cierny bod je isty fakt, zlty bod urcuje, co isto nie je pravda.
Spravil som si na to program v C# .NET, do ktoreho som nahadzal vsetky "biele miesta" z tabulky, dodal dalsie podmienky a nechal iterovat vsetky moznosti. Odhliadnuc od toho, ze tam mam asi 50 vnorenych foreach-cyklov, vypocet prebieha velmi pomaly a k tomu vypluje stovky moznych vysledkov (nechal som ho bezat cez noc).
Viem, ze sa to riesit da a to tak, ze do hodky mam vysledok. Tiez viem, ze sa to da vyriesit rucne len na papieri. Takze je mi jasne, ze mi nieco unika. Nejaky klucovy fakt, postup, ako razantne zuzit mnozinu dostupnych rieseni.
Toz mam otazocku - ako by ste riesili vy takuto brutalnu hadanku?
Prílohy
domy.jpg
harrison314
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 8219
Registrovaný: 27 máj 2009, 20:42
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Tazka Einsteinova hadanka

Príspevok od používateľa harrison314 »

Necital som to az tak pozorne, ale prve co ma napadlo, je ze by to mal zvladnut produkcny system http://www2.fiit.stuba.sk/~kapustik/dop-prod.html .
Zadas mu bazu faktov a pravidiel a on logicky odvodi vsetky dalsie logicke suvislosti, medzi ktorimy by sa malo objavit kto kde byva.

Ak pockas do zajtra skusim pohladat co som programoval.
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: Tazka Einsteinova hadanka

Príspevok od používateľa audiotrack »

prolog alebo hocijaký jazyk logického programovania
Mek
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4661
Registrovaný: 23 mar 2005, 23:00
Bydlisko: ZA <-> TN
Kontaktovať používateľa:

Re: Tazka Einsteinova hadanka

Príspevok od používateľa Mek »

Tak som to napokon naprogramoval v tom Prologu. Spociatku to slo tazko, lebo som v tom nikdy nerobil, no potom ako som to pochopil, uz to bola hracka. A za 10 minut som mal vysledky :shock:
Diky, chlapi.
Napísať odpoveď