telgif: figlet inverse

20

figletest un utilitaire qui convertit le texte brut en une représentation ascii-art pour une utilisation dans des bannières et similaires. Par exemple:

$ figlet "CODE GOLF"
  ____ ___  ____  _____    ____  ___  _     _____ 
 / ___/ _ \|  _ \| ____|  / ___|/ _ \| |   |  ___|
| |  | | | | | | |  _|   | |  _| | | | |   | |_   
| |__| |_| | |_| | |___  | |_| | |_| | |___|  _|  
 \____\___/|____/|_____|  \____|\___/|_____|_|    

$

Écrivez un programme ou une fonction qui reprend la sortie ascii-art figletet la renvoie à son texte brut d'origine.

Il peut vous être utile d'installer figlet. J'ai la version 2.2.5 qui est ce que vous obtenez si vous sudo apt-get install figletutilisez Ubuntu 14.04. Cette figlet a en fait plusieurs "polices". Aux fins de ce contexte, nous traiterons simplement de la standardpolice par défaut .

Le texte saisi ne dépassera pas 80 caractères de large et aura été généré à partir de texte brut contenant uniquement les caractères majuscules et l'espace.

Votre programme ne peut en aucun cas appeler figletou son code source.

Exemple

Contribution:

    _    ____   ____ ____  _____ _____ ____ _   _ ___ 
   / \  | __ ) / ___|  _ \| ____|  ___/ ___| | | |_ _|
  / _ \ |  _ \| |   | | | |  _| | |_ | |  _| |_| || | 
 / ___ \| |_) | |___| |_| | |___|  _|| |_| |  _  || | 
/_/   \_\____/ \____|____/|_____|_|   \____|_| |_|___|

     _ _  ___     __  __ _   _  ___  ____   ___  ____  
    | | |/ / |   |  \/  | \ | |/ _ \|  _ \ / _ \|  _ \ 
 _  | | ' /| |   | |\/| |  \| | | | | |_) | | | | |_) |
| |_| | . \| |___| |  | | |\  | |_| |  __/| |_| |  _ < 
 \___/|_|\_\_____|_|  |_|_| \_|\___/|_|    \__\_\_| \_\

 ____ _____ _   ___     ____        ____  ____   _______
/ ___|_   _| | | \ \   / /\ \      / /\ \/ /\ \ / /__  /
\___ \ | | | | | |\ \ / /  \ \ /\ / /  \  /  \ V /  / / 
 ___) || | | |_| | \ V /    \ V  V /   /  \   | |  / /_ 
|____/ |_|  \___/   \_/      \_/\_/   /_/\_\  |_| /____|

Production:

ABCDEFGHI
JKLMNOPQR
STUVWXYZ

Contribution:

 ____ _____  _    ____   __        ___    ____  ____  
/ ___|_   _|/ \  |  _ \  \ \      / / \  |  _ \/ ___| 
\___ \ | | / _ \ | |_) |  \ \ /\ / / _ \ | |_) \___ \ 
 ___) || |/ ___ \|  _ <    \ V  V / ___ \|  _ < ___) |
|____/ |_/_/   \_\_| \_\    \_/\_/_/   \_\_| \_\____/ 

Production:

STAR WARS

Notez qu'une modification précédente de cette question permettait des entrées contenant des lettres majuscules et minuscules ainsi que des chiffres. Il a été souligné que cela provoquait plusieurs points d'ambiguïté avec certaines combinaisons de caractères adjacentes. Il est devenu évident que je devais trouver rigoureusement un ensemble de personnages sans de telles collisions afin que le concours soit réellement faisable. Au début, j'ai essayé toutes les lettres minuscules et les chiffres avec cette coque à une ligne:

for t in {0..9}{a..z} {a..z}{a..z} {a..z}{0..9} {0..9}{0..9} ; do figlet $t | tr '\n' ':'; echo ; done | sort | uniq -d | tr ':' '\n'

Cela a donné { j1, jl} et { i1, il} comme paires ambiguës. Donc, à la place, avec toutes les lettres majuscules (comme suggéré par @AlexA.), Il n'y a pas de paires ambiguës:

for t in {A-Z} ; do figlet $t | tr '\n' ':'; echo ; done | sort | uniq -d | tr ':' '\n'
Traumatisme numérique
la source
5
Je suggère une clause «vous ne pouvez pas appeler figlet», car sinon, le programme le plus court parcourra toutes les chaînes possibles, appelant figlet dessus, puis comparant pour l'égalité.
orlp
1
Le code source de figlet peut être trouvé dans le dépôt git suivant: git://git.debian.org/git/collab-maint/figlet.git(télécharger avec git clone).
Poignée de porte
4
Remarque: ce défi est très difficile à coder, et encore moins à coder le golf.
Lynn
4
1et lne sont pas identiques, mais V1et le Vlsont.
Lynn
2
Pour les personnes qui ne disposent pas d'un système capable d'exécuter figlet, il existe différentes versions en ligne. Recherchez "figlet en ligne". Par exemple, celui-ci semble assez simple et sans publicité: network-science.de/ascii . Assurez-vous que vous choisissez la police "standard".
Reto Koradi

Réponses:

3

CJam, 147 octets, légèrement cassé

qN/6/{z{:i:+165%91%' +}%"e 3 VG rr A>Q V) rP r4 />/ F> [> C >> 9$ j8 fQrQ rG rN rD VV $>$ ;$ 859 98 ff = BB"S/eeWf%$W%{~@@/\a*}/{`''#},'@f+'@/S*N}%

Il passe CODE GOLF et AZ mais pas STAR WARS (qui se lit comme suit SAR WARS). J'abandonne, mais peut-être que quelqu'un est inspiré.

Lynn
la source
1
Si votre solution ne fonctionne pas, vous ne devriez probablement pas la poster ...
Alex A.