Einstein escreveu um enigma. Ele disse que 98% do mundo não conseguiu resolvê-lo.
Eu resolvi esse enigma em cerca de 25 minutos enquanto estava no trem para o trabalho. É basicamente apenas dedução.
O enigma
Existem 5 casas em 5 cores diferentes seguidas.
Em cada casa mora uma pessoa com uma nacionalidade diferente.
Os 5 proprietários bebem um certo tipo de bebida, fumam uma certa marca de charuto e mantêm um certo animal de estimação.
Nenhum proprietário tem o mesmo animal de estimação, fuma a mesma marca de charuto ou bebe a mesma bebida.
Pergunta: Quem é o dono do peixe?
Para resolver esse enigma, Einstein fornece 15 dicas:
- O britânico vive na casa vermelha.
- O sueco mantém cães como animais de estimação.
- O dinamarquês bebe chá.
- A casa verde fica logo à esquerda da casa branca.
- O dono da casa verde bebe café.
- O proprietário que fuma Pall Mall cria pássaros.
- O dono da casa amarela fuma Dunhill.
- O proprietário que mora na casa do centro bebe leite.
- O norueguês vive na primeira casa.
- O proprietário que fuma Blends mora ao lado de quem mantém gatos.
- O proprietário que mantém o cavalo mora ao lado de quem fuma Dunhill.
- O proprietário que fuma Bluemasters bebe cerveja.
- O alemão fuma Prince.
- O norueguês vive ao lado da casa azul.
- O proprietário que fuma Blends mora ao lado de quem bebe água.
Com essas dicas, você pode encontrar uma solução.
Sua tarefa: crie um programa que resolva esse enigma para você. Codificação embutida a solução não é permitida (duh)
É permitido codificar as dicas em qualquer formato.
Exemplo de 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 igual a
/ significa no lado esquerdo de
\ significa no lado direito de
/ \ significa esquerdo ou direito de
Como eu disse, é permitido codificar dicas ou tê-las como entrada.
Saída: A saída deve estar no seguinte formato (com os valores corretos, apenas dizendo para os trolls;))
_____________ _____________ _____________ _____________ _____________
| 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!
As caixas de arte ASCII podem ser alteradas por você, desde que sejam caixas, não importando quais símbolos você usar.
Qualquer conhecimento sobre esse enigma e solução não pode ser usado no programa. Deve usar lógica pura e dedução para resolver o enigma.
Marcado como codegolf, mas pode ser um desafio para o código, não tenho certeza. Quaisquer pensamentos sobre os critérios de vencimento para um desafio de código, fique à vontade para compartilhar :)
Por enquanto, isso é código-golfe, e o programa com o menor número de bytes vence.
Boa sorte e codificação feliz :)