telgif: figlet inverso

20

figletes una utilidad que convierte texto plano en una representación de arte ascii para usar en pancartas y similares. Por ejemplo:

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

$

Escriba un programa o función que tome el resultado de ascii-art figlety lo devuelva a su texto plano original.

Puede ser útil para usted instalarlo figlet. Tengo la versión 2.2.5 que es lo que obtienes si estás sudo apt-get install figleten Ubuntu 14.04. Este figlet en realidad tiene varias "fuentes". Para los fines de este contexto, solo trataremos con la standardfuente predeterminada .

El texto de entrada no tendrá más de 80 caracteres de ancho y se habrá generado a partir de texto sin formato que contenga solo los caracteres en mayúscula y el espacio.

Su programa no puede llamar figletni su código fuente de ninguna manera.

Ejemplo

Entrada:

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

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

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

Salida:

ABCDEFGHI
JKLMNOPQR
STUVWXYZ

Entrada:

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

Salida:

STAR WARS

Tenga en cuenta que una edición anterior de esta pregunta permitió entradas que contenían letras mayúsculas y minúsculas más números. Se señaló que esto causó varios puntos de ambigüedad con ciertas combinaciones de caracteres adyacentes. Se hizo obvio que necesitaba encontrar rigurosamente un conjunto de personajes sin tales colisiones para que el concurso sea factible. Al principio probé todas las letras minúsculas más los números con este shell de una línea:

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'

Esto produjo { j1, jl} y { i1, il} como pares ambiguos. Entonces, en lugar de todas las letras mayúsculas (como lo sugiere @AlexA.), No hay pares ambiguos:

for t in {A-Z} ; do figlet $t | tr '\n' ':'; echo ; done | sort | uniq -d | tr ':' '\n'
Trauma digital
fuente
55
Sugeriría una cláusula 'no se puede llamar figlet', porque de lo contrario seguramente el programa más corto iterará sobre todas las cadenas posibles, invocando figlet en ellas y luego comparando la igualdad.
orlp
1
El código fuente de figlet se puede encontrar en el siguiente repositorio de git: git://git.debian.org/git/collab-maint/figlet.git(descargar con git clone).
Pomo de la puerta
44
Nota: este desafío es muy difícil de codificar, y mucho menos codificar golf.
Lynn
44
1y lno son idénticos, pero V1y Vlson.
Lynn
2
Para las personas que no tienen un sistema que pueda ejecutar figlet, hay varias versiones en línea. Busque "figlet en línea". Por ejemplo, este parece bastante sencillo y sin publicidad: network-science.de/ascii . Asegúrese de elegir la fuente "estándar".
Reto Koradi

Respuestas:

3

CJam, 147 bytes, ligeramente roto

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

Pasa CÓDIGO GOLF y AZ pero no STAR WARS (que se lee como SAR WARS). Me rindo, pero tal vez alguien está inspirado.

Lynn
fuente
1
Si su solución no funciona, probablemente no debería publicarla ...
Alex A.