telgif: figlet inverso


20

figletè un'utilità che converte il testo semplice in una rappresentazione ASCII-Art per l'uso in banner e simili. Per esempio:

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

$

Scrivi un programma o una funzione che prende l'output ASCII-art figlete lo restituisce al suo testo normale originale.

Potrebbe esserti utile installare figlet. Ho la versione 2.2.5 che è ciò che ottieni se sudo apt-get install figletusi Ubuntu 14.04. Questo figlet in realtà ha diversi "caratteri". Ai fini di questo contesto, ci occuperemo solo del standardcarattere predefinito .

Il testo di input non avrà più di 80 caratteri di larghezza e sarà stato generato da testo semplice contenente solo i caratteri maiuscoli e lo spazio.

Il tuo programma non può chiamare figleto il suo codice sorgente in alcun modo.

Esempio

Ingresso:

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

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

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

Produzione:

ABCDEFGHI
JKLMNOPQR
STUVWXYZ

Ingresso:

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

Produzione:

STAR WARS

Si noti che una precedente modifica di questa domanda consentiva input contenenti lettere maiuscole e minuscole più numeri. È stato sottolineato che ciò ha causato diversi punti di ambiguità con determinate combinazioni di caratteri adiacenti. È diventato ovvio che dovevo trovare rigorosamente un set di personaggi senza tali collisioni, in modo che il concorso fosse effettivamente realizzabile. All'inizio ho provato tutte le lettere minuscole più i numeri con questa shell a una riga:

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'

Ciò ha prodotto { j1, jl} e { i1, il} come coppie ambigue. Quindi invece con tutte le lettere maiuscole (come suggerito da @AlexA.), Non ci sono coppie ambigue:

for t in {A-Z} ; do figlet $t | tr '\n' ':'; echo ; done | sort | uniq -d | tr ':' '\n'

5
Suggerirei una clausola "non si può chiamare figlet", perché altrimenti sicuramente il programma più breve eseguirà l'iterazione su tutte le stringhe possibili, chiamando figlet su di esse e quindi confrontando per l'uguaglianza.
orlp,

1
Il codice sorgente di figlet può essere trovato nel seguente repository git: git://git.debian.org/git/collab-maint/figlet.git(scarica con git clone).
Maniglia della porta

4
Nota: questa sfida è molto difficile da codificare, per non parlare del codice golf.
Lynn,

4
1e lnon sono identici, ma V1e lo Vlsono.
Lynn,

2
Per le persone che non hanno un sistema in grado di eseguire figlet, ci sono varie versioni online. Cerca "figlet online". Ad esempio, questo sembra abbastanza semplice e senza pubblicità: network-science.de/ascii . Assicurati di scegliere il carattere "standard".
Reto Koradi,

Risposte:


3

CJam, 147 byte, leggermente rotto

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}%

Passa CODICE GOLF e AZ ma non STAR WARS (che legge come SAR WARS). Mi arrendo, ma forse qualcuno è ispirato.


1
Se la tua soluzione non funziona, probabilmente non dovresti pubblicarla ...
Alex A.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.