telgif: обратный фиглет


20

figletэто утилита, которая преобразует простой текст в представление ascii-art для использования в баннерах и т.п. Например:

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

$

Напишите программу или функцию, которая берет вывод ascii-art figletи возвращает его в исходный текст.

Это может быть полезно для вас, чтобы установить figlet. У меня есть версия 2.2.5, которую вы получите, если используете sudo apt-get install figletUbuntu 14.04. На самом деле этот синглет имеет несколько «шрифтов». Для целей этого контекста мы будем иметь дело только со standardшрифтом по умолчанию .

Входной текст будет не более 80 символов в ширину и будет сгенерирован из простого текста, содержащего только заглавные буквы и пробел.

Ваша программа не может вызывать figletили ее исходный код в любом случае.

пример

Входные данные:

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

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

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

Выход:

ABCDEFGHI
JKLMNOPQR
STUVWXYZ

Входные данные:

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

Выход:

STAR WARS

Обратите внимание, что предыдущее редактирование этого вопроса разрешало вводы, содержащие прописные и строчные буквы, а также цифры. Было отмечено, что это вызвало несколько точек неоднозначности с некоторыми смежными комбинациями символов. Стало очевидно, что мне нужно тщательно найти набор персонажей без таких столкновений, чтобы на самом деле выполнимый конкурс. Сначала я попробовал все строчные буквы плюс цифры с этой оболочкой в ​​одну строку:

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'

Это дало { j1, jl} и { i1, il} как неоднозначные пары. Таким образом, вместо всех заглавных букв (как предложено @AlexA.) Нет двусмысленных пар:

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

5
Я бы предложил предложение «вы не можете вызывать figlet», потому что в противном случае самая короткая программа будет перебирать все возможные строки, вызывая их с помощью figlet, а затем сравнивая на равенство.
orlp

1
Исходный код figlet можно найти в следующем git repo: git://git.debian.org/git/collab-maint/figlet.git(скачать с git clone).
Ручка двери

4
Примечание: эту задачу очень сложно закодировать, не говоря уже о коде гольфа.
Линн

4
1и lне идентичны, но V1и Vlесть.
Линн

2
Для людей, у которых нет системы, которая может запустить figlet, существуют различные онлайн-версии. Поиск "фиглет онлайн". Например, это выглядит довольно просто и без рекламы: network-science.de/ascii . Убедитесь, что вы выбрали «стандартный» шрифт.
Рето Коради

Ответы:


3

CJam, 147 байтов, слегка сломан

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

Он передает CODE GOLF и AZ, но не STAR WARS (которые он читает как SAR WARS). Я сдаюсь, но, возможно, кто-то вдохновлен.


1
Если ваше решение не работает, вы, вероятно, не должны публиковать его ...
Алекс А.
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.