telgif: inverses figlet

20

figletist ein Dienstprogramm, das Klartext in eine ASCII-Darstellung zur Verwendung in Bannern und dergleichen umwandelt. Beispielsweise:

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

$

Schreiben Sie ein Programm oder eine Funktion, die die ASCII-Ausgabe von übernimmt figletund auf den ursprünglichen Klartext zurücksetzt.

Es kann hilfreich für Sie sein, zu installieren figlet. Ich habe Version 2.2.5, die Sie erhalten, wenn Sie sudo apt-get install figletauf Ubuntu 14.04. Diese Figur hat tatsächlich mehrere "Schriften". In diesem Zusammenhang wird nur die Standardschriftart behandelt standard.

Eingabetext ist nicht breiter als 80 Zeichen und wurde aus Klartext generiert, der nur Großbuchstaben und Leerzeichen enthält.

Ihr Programm darf figletin keiner Weise den Quellcode aufrufen .

Beispiel

Eingang:

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

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

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

Ausgabe:

ABCDEFGHI
JKLMNOPQR
STUVWXYZ

Eingang:

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

Ausgabe:

STAR WARS

Beachten Sie, dass bei einer vorherigen Bearbeitung dieser Frage Eingaben zulässig sind, die Groß- und Kleinbuchstaben sowie Ziffern enthalten. Es wurde darauf hingewiesen, dass dies bei bestimmten benachbarten Zeichenkombinationen zu mehreren Mehrdeutigkeiten führte. Es wurde klar, dass ich rigoros eine Reihe von Charakteren ohne solche Kollisionen finden musste, damit der Wettbewerb tatsächlich durchgeführt werden kann. Zuerst habe ich mit diesem Shell-Einzeiler alle Kleinbuchstaben plus Ziffern ausprobiert:

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'

Dies ergab { j1, jl} und { i1, il} als mehrdeutige Paare. Stattdessen gibt es mit allen Großbuchstaben (wie von @AlexA vorgeschlagen) keine mehrdeutigen Paare:

for t in {A-Z} ; do figlet $t | tr '\n' ':'; echo ; done | sort | uniq -d | tr ':' '\n'
Digitales Trauma
quelle
5
Ich würde eine Klausel vorschlagen, die besagt, dass Sie figlet nicht aufrufen dürfen, da sonst mit Sicherheit das kürzeste Programm alle möglichen Zeichenfolgen durchläuft, figlet darauf aufruft und sie dann auf Gleichheit vergleicht.
Orlp
1
Den Quellcode von figlet finden Sie im folgenden Git-Repo: git://git.debian.org/git/collab-maint/figlet.git(Download mit git clone).
Türklinke
4
Hinweis: Diese Herausforderung ist sehr schwer zu codieren, geschweige denn Golf zu codieren.
Lynn
4
1und lsind nicht identisch, aber V1und Vlsind.
Lynn
2
Für Leute, die kein System haben, auf dem Figlet ausgeführt werden kann, gibt es verschiedene Online-Versionen. Suche nach "figlet online". Dieser sieht zum Beispiel recht unkompliziert und werbefrei aus: network-science.de/ascii . Stellen Sie sicher, dass Sie die "Standard" Schriftart auswählen.
Reto Koradi

Antworten:

3

CJam, 147 Bytes, leicht beschädigt

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

Es geht an CODE GOLF und AZ vorbei, aber nicht an STAR WARS (was es so liest SAR WARS). Ich gebe auf, aber vielleicht ist jemand begeistert.

Lynn
quelle
1
Wenn Ihre Lösung nicht funktioniert, sollten Sie sie wahrscheinlich nicht veröffentlichen ...
Alex A.