Einstein scrisse un indovinello. Ha detto che il 98% del mondo non è riuscito a risolverlo.
Ho risolto questo indovinello in circa 25 minuti mentre ero in treno per lavorare. Fondamentalmente è solo deduzione.
L'indovinello
Ci sono 5 case in 5 colori diversi di seguito.
In ogni casa vive una persona di diversa nazionalità.
I 5 proprietari bevono un certo tipo di bevanda, fumano una certa marca di sigari e tengono un certo animale domestico.
Nessun proprietario ha lo stesso animale domestico, fuma la stessa marca di sigari o beve la stessa bevanda.
Domanda: chi possiede il pesce?
Per risolvere questo enigma, Einstein fornisce 15 suggerimenti:
- Il britannico vive nella casa rossa.
- Lo svedese mantiene i cani come animali domestici.
- The Dane beve il tè.
- La serra si trova sulla sinistra immediata della casa bianca.
- Il proprietario della serra beve il caffè.
- Il proprietario che fuma Pall Mall alleva uccelli.
- Il proprietario della casa gialla fuma Dunhill.
- Il proprietario che vive nella casa al centro beve latte.
- Il norvegese vive nella prima casa.
- Il proprietario che fuma Blends vive accanto a quello che tiene i gatti.
- Il proprietario che tiene il cavallo vive accanto a quello che fuma Dunhill.
- Il proprietario che fuma Bluemasters beve birra.
- Il tedesco fuma Prince.
- Il norvegese vive vicino alla casa blu.
- Il proprietario che fuma Blends vive accanto a quello che beve acqua.
Con questi suggerimenti puoi arrivare a una soluzione.
Il tuo compito: crea un programma che risolverà questo indovinello per te. La codifica definitiva della soluzione non è consentita (duh)
È consentito codificare i suggerimenti in qualsiasi formato.
Esempio di formato:
//Hints in order
(Nationality:Brit)==(Color:Red)
(Nationality:Swede)==(Pet:Dogs)
(Nationality:Dane)==(Drink: Tea)
(Color:Green)/(Color:White)
(Color:Green)==(Drink:Coffee)
(Smoke:PallMall)==(Pet:Birds)
(Color:Yellow)==(Smoke:Dunhill)
(House:3)==(Drink:Milk)
(Nationality:Norwegian)==(House:1)
(Smoke:Blend)/\(Pet:Cats)
== significa uguale a
/ significa sul lato sinistro di
\ significa sul lato destro di
/ \ significa sinistra o destra di
Come ho detto, è consentito o suggerire hardcode o averli come input.
Output: l'output dovrebbe essere nel seguente formato (con i valori corretti, basta dire per i troll;))
_____________ _____________ _____________ _____________ _____________
| Number | | Number | | Number | | Number | | Number |
| Nationality | | Nationality | | Nationality | | Nationality | | Nationality |
| Color | | Color | | Color | | Color | | Color |
| Drink | | Drink | | Drink | | Drink | | Drink |
| Smoke | | Smoke | | Smoke | | Smoke | | Smoke |
| Pet | | Pet | | Pet | | Pet | | Pet |
--------------- --------------- --------------- --------------- ---------------
The <Nationality> in the <Color> house owns the fish!
Le scatole d'arte Ascii possono essere cambiate da te, purché siano scatole, non importa quali simboli usi.
Qualsiasi conoscenza su questo enigma e soluzione non può essere utilizzata nel programma. Dovrebbe usare pura logica e deduzione per risolvere l'enigma.
Contrassegnato come codegolf ma potrebbe essere una sfida al codice, non sono sicuro. Qualsiasi pensiero sui criteri vincenti per una sfida del codice è libero di condividere :)
Per ora si tratta di code-golf, quindi vince il programma con il byte più basso.
Buona fortuna e buona programmazione :)