figlet
é um utilitário que converte texto sem formatação em uma representação ascii-art para uso em banners e similares. Por exemplo:
$ figlet "CODE GOLF"
____ ___ ____ _____ ____ ___ _ _____
/ ___/ _ \| _ \| ____| / ___|/ _ \| | | ___|
| | | | | | | | | _| | | _| | | | | | |_
| |__| |_| | |_| | |___ | |_| | |_| | |___| _|
\____\___/|____/|_____| \____|\___/|_____|_|
$
Escreva um programa ou função que retire a saída ascii-art figlet
e a retorne ao texto sem formatação original.
Pode ser útil para você instalar figlet
. Eu tenho a versão 2.2.5, que é o que você obtém se você estiver sudo apt-get install figlet
no Ubuntu 14.04. Na verdade, este folheto possui várias "fontes". Para os propósitos deste contexto, estaremos apenas lidando com a standard
fonte padrão .
O texto de entrada não terá mais do que 80 caracteres de largura e será gerado a partir de texto sem formatação contendo apenas os caracteres maiúsculos e o espaço.
Seu programa não pode ligar figlet
ou seu código fonte de forma alguma.
Exemplo
Entrada:
_ ____ ____ ____ _____ _____ ____ _ _ ___
/ \ | __ ) / ___| _ \| ____| ___/ ___| | | |_ _|
/ _ \ | _ \| | | | | | _| | |_ | | _| |_| || |
/ ___ \| |_) | |___| |_| | |___| _|| |_| | _ || |
/_/ \_\____/ \____|____/|_____|_| \____|_| |_|___|
_ _ ___ __ __ _ _ ___ ____ ___ ____
| | |/ / | | \/ | \ | |/ _ \| _ \ / _ \| _ \
_ | | ' /| | | |\/| | \| | | | | |_) | | | | |_) |
| |_| | . \| |___| | | | |\ | |_| | __/| |_| | _ <
\___/|_|\_\_____|_| |_|_| \_|\___/|_| \__\_\_| \_\
____ _____ _ ___ ____ ____ ____ _______
/ ___|_ _| | | \ \ / /\ \ / /\ \/ /\ \ / /__ /
\___ \ | | | | | |\ \ / / \ \ /\ / / \ / \ V / / /
___) || | | |_| | \ V / \ V V / / \ | | / /_
|____/ |_| \___/ \_/ \_/\_/ /_/\_\ |_| /____|
Saída:
ABCDEFGHI
JKLMNOPQR
STUVWXYZ
Entrada:
____ _____ _ ____ __ ___ ____ ____
/ ___|_ _|/ \ | _ \ \ \ / / \ | _ \/ ___|
\___ \ | | / _ \ | |_) | \ \ /\ / / _ \ | |_) \___ \
___) || |/ ___ \| _ < \ V V / ___ \| _ < ___) |
|____/ |_/_/ \_\_| \_\ \_/\_/_/ \_\_| \_\____/
Saída:
STAR WARS
Observe que uma edição anterior desta pergunta permitiu entradas contendo letras maiúsculas e minúsculas e números. Foi apontado que isso causou vários pontos de ambiguidade com certas combinações de caracteres adjacentes. Tornou-se óbvio que eu precisava encontrar rigorosamente um conjunto de caracteres sem essas colisões para que o concurso fosse realmente possível. No começo, tentei todas as letras minúsculas e numerais com este liner de shell:
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'
Isso produziu { j1
, jl
} e { i1
, il
} como pares ambíguos. Portanto, com todas as letras maiúsculas (como sugerido por @AlexA.), Não há pares ambíguos:
for t in {A-Z} ; do figlet $t | tr '\n' ':'; echo ; done | sort | uniq -d | tr ':' '\n'
git://git.debian.org/git/collab-maint/figlet.git
(faça o download com git clone
).
1
e l
não são idênticos, mas V1
e Vl
são.