telgif: odwrócony figlet

20

figletto narzędzie, które konwertuje zwykły tekst do postaci ascii-art do użycia w banerach i tym podobnych. Na przykład:

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

$

Napisz program lub funkcję, która pobiera wyjście ascii-art figleti przywraca go do oryginalnego zwykłego tekstu.

Instalacja może być pomocna figlet. Mam wersję 2.2.5, którą dostajesz, jeśli masz sudo apt-get install figletUbuntu 14.04. Ten figlet ma kilka „czcionek”. Na potrzeby tego kontekstu zajmiemy się tylko domyślną standardczcionką.

Tekst wejściowy nie będzie miał więcej niż 80 znaków i zostanie wygenerowany ze zwykłego tekstu zawierającego tylko wielkie litery i spację.

Twój program nie może figletw żaden sposób wywoływać ani kodu źródłowego.

Przykład

Wejście:

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

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

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

Wynik:

ABCDEFGHI
JKLMNOPQR
STUVWXYZ

Wejście:

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

Wynik:

STAR WARS

Zwróć uwagę, że poprzednia edycja tego pytania dopuszczała dane wejściowe zawierające wielkie i małe litery oraz cyfry. Wskazano, że spowodowało to kilka punktów niejednoznaczności z pewnymi sąsiadującymi kombinacjami postaci. Stało się oczywiste, że muszę rygorystycznie znaleźć zestaw znaków bez takich kolizji, aby konkurs był wykonalny. Na początku wypróbowałem wszystkie małe litery i cyfry z tym jednowarstwowym płaszczem:

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'

Dało to { j1, jl} i { i1, il} jako dwuznaczne pary. Zatem zamiast wszystkich wielkich liter (jak sugeruje @AlexA.), Nie ma dwuznacznych par:

for t in {A-Z} ; do figlet $t | tr '\n' ':'; echo ; done | sort | uniq -d | tr ':' '\n'
Cyfrowa trauma
źródło
5
Sugerowałbym klauzulę „możesz nie wywoływać figletu”, ponieważ w przeciwnym razie najkrótszy program będzie iterował wszystkie możliwe ciągi, wywołując na nich figlet, a następnie porównując pod kątem równości.
orlp
1
Kod źródłowy figlet można znaleźć w następującym repozytorium git: git://git.debian.org/git/collab-maint/figlet.git(pobierz za pomocą git clone).
Klamka
4
Uwaga: to wyzwanie jest bardzo trudne do kodowania, nie mówiąc już o kodowaniu golfa.
Lynn,
4
1i lnie są identyczne, ale V1i Vlsą.
Lynn,
2
Dla osób, które nie mają systemu, w którym można uruchomić figlet, istnieją różne wersje online. Wyszukaj „figlet online”. Na przykład ten wygląda dość prosto i bez reklam: network-science.de/ascii . Upewnij się, że wybrałeś „standardową” czcionkę.
Reto Koradi,

Odpowiedzi:

3

CJam, 147 bajtów, lekko zepsuty

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

Przekazuje KOD GOLF i AZ, ale nie Gwiezdne Wojny (które czyta jako SAR WARS). Poddaję się, ale może ktoś jest zainspirowany.

Lynn
źródło
1
Jeśli twoje rozwiązanie nie działa, prawdopodobnie nie powinieneś go opublikować ...
Alex A.,