Esta questão é inspirada na capa do livro "Godel, Escher, Bach":
O desafio aqui é escrever uma função que diga se três letras dadas podem produzir uma escultura 3D que pode ser lida de três lados.
Para este exercício, as únicas letras que você pode usar são 26 bitmaps de 5px * 5px:
Ou em binário (A a Z):
01110 11110 01111 11110 11111 11111 11111 10001 11111 11111 10001 10000 10001 10001 01110 11110 01110 11110 01111 11111 10001 10001 10001 10001 10001 11111
10001 10001 10000 10001 10000 10000 10000 10001 00100 00100 10010 10000 11011 11001 10001 10001 10001 10001 10000 00100 10001 10001 10001 01010 01010 00010
10001 11110 10000 10001 11100 11110 10011 11111 00100 00100 11100 10000 10101 10101 10001 10001 10001 11111 01110 00100 10001 01010 10001 00100 00100 00100
11111 10001 10000 10001 10000 10000 10001 10001 00100 10100 10010 10000 10001 10011 10001 11110 10011 10010 00001 00100 10001 01010 10101 01010 00100 01000
10001 11110 01111 11110 11111 10000 11111 10001 11111 11100 10001 11111 10001 10001 01110 10000 01111 10001 11110 00100 01110 00100 01010 10001 00100 11111
A escultura é formada por três letras na seguinte ordem:
- letra uma em cima,
- letra dois à esquerda
- letra três à direita
- a parte inferior da letra um está vinculada ao topo da letra dois.
Exemplo:
Sua função pode aceitar como entrada três letras maiúsculas (três caracteres ou três strings de uma letra) e gerar um booleano (verdadeiro / falso ou 0/1) informando se a escultura correspondente pode existir.
Exemplo:
f("B","E","G") // true (because if you "sculpt out" B on top + E on the left + G on the right, and watch the three sides of the sculpture, you'll see exactly B, E and G as they are defined)
f("B","G","E") // false (because if you "sculpt out" B on top + G on the left + E on the right, and watch the three sides of the sculpture, you won't see a complete G and a complete E. Their shapes bother each other)
Nota: você pode retornar verdadeiro mesmo que a escultura contenha "pixels voadores" (cubos ou grupo de cubos que não estão anexados a nada).
Aplicam-se brechas padrão.
Mais precisamente, você não pode usar entrada externa além das três letras e não pode codificar as 17576 possíveis respostas no seu código-fonte
A resposta mais curta em caracteres em qualquer idioma vence!
Diverta-se :)