Cette question est inspirée de la couverture du livre "Godel, Escher, Bach":
Le défi ici est d'écrire une fonction qui indique si trois lettres données peuvent produire une sculpture 3D qui peut être lue sur trois côtés.
Pour cet exercice, les seules lettres que vous pouvez utiliser sont 26 bitmaps 5px * 5px:
Ou en binaire (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
La sculpture est formée de trois lettres dans l'ordre suivant:
- lettre un sur le dessus,
- lettre deux à gauche
- lettre trois à droite
- le bas de la lettre un est lié au haut de la lettre deux.
Exemple:
Votre fonction peut accepter en entrée trois lettres majuscules (trois caractères ou trois chaînes d'une lettre) et produire un booléen (vrai / faux ou 0/1) indiquant si la sculpture correspondante peut exister.
Exemple:
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: vous pouvez retourner vrai même si la sculpture contient des "pixels volants" (cubes ou groupe de cubes attachés à rien).
Des échappatoires standard s'appliquent.
Plus précisément, vous ne pouvez pas utiliser d'entrée externe en plus des trois lettres, et vous ne pouvez pas coder en dur les 17576 réponses possibles dans votre code source
La réponse la plus courte en caractères dans n'importe quelle langue gagne!
S'amuser :)