Esta pregunta está inspirada en la portada del libro "Godel, Escher, Bach":
El desafío aquí es escribir una función que indique si tres letras dadas pueden producir una escultura en 3D que se pueda leer desde tres lados.
Para este ejercicio, las únicas letras que puede usar son 26 mapas de bits de 5px * 5px:
O en binario (de la A a la 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
La escultura está formada por tres letras en el siguiente orden:
- letra uno en la parte superior,
- letra dos a la izquierda
- letra tres a la derecha
- la parte inferior de la letra uno está unida a la parte superior de la letra dos.
Ejemplo:
Su función puede aceptar como entrada tres letras mayúsculas (tres caracteres o tres cadenas de una letra) y generar un booleano (verdadero / falso o 0/1) que indica si la escultura correspondiente puede existir.
Ejemplo:
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)
NB: puede volver verdadero incluso si la escultura contiene "píxeles voladores" (cubos o grupo de cubos que están unidos a nada).
Se aplican lagunas estándar.
Más precisamente, no puede usar la entrada externa además de las tres letras, y no puede codificar las 17576 respuestas posibles en su código fuente
¡La respuesta más corta en caracteres en cualquier idioma gana!
Que te diviertas :)