telgif: обернена філе


20

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'

5
Я б запропонував застереження "ви не можете називати фігурку", оскільки в іншому випадку найкоротша програма переправиться на всі можливі рядки, зателефонувавши на них, а потім порівняйте для рівності.
orlp

1
Вихідний код філетки можна знайти в наступному git repo: git://git.debian.org/git/collab-maint/figlet.git(завантажити з git clone).
Дверна ручка

4
Примітка: цю проблему дуже важко кодувати, не кажучи вже про код гольфу.
Лінн

4
1і lне є ідентичними, але V1і Vlє.
Лінн

2
Для людей, які не мають системи, яка може запускати філе, є різні інтернет-версії. Шукати "філет онлайн". Наприклад, це виглядає досить просто та без реклами: 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.