figlet
це утиліта, яка перетворює звичайний текст у зображення ascii-art для використання у банерах тощо. Наприклад:
$ figlet "CODE GOLF"
____ ___ ____ _____ ____ ___ _ _____
/ ___/ _ \| _ \| ____| / ___|/ _ \| | | ___|
| | | | | | | | | _| | | _| | | | | | |_
| |__| |_| | |_| | |___ | |_| | |_| | |___| _|
\____\___/|____/|_____| \____|\___/|_____|_|
$
Напишіть програму або функцію, яка бере вихідний результат figlet
і повертає його до початкового простого тексту.
Вам може бути корисно встановити figlet
. У мене є версія 2.2.5, яку ви отримуєте, якщо перебуваєте sudo apt-get install figlet
на Ubuntu 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'
git://git.debian.org/git/collab-maint/figlet.git
(завантажити з git clone
).
1
і l
не є ідентичними, але V1
і Vl
є.