telgif: figlet terbalik

20

figletadalah utilitas yang mengubah teks biasa menjadi representasi ascii-art untuk digunakan dalam spanduk dan sejenisnya. Sebagai contoh:

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

$

Tulis program atau fungsi yang mengambil output ascii-art dari figletdan mengembalikannya ke teks biasa aslinya.

Mungkin bermanfaat bagi Anda untuk menginstal figlet. Saya memiliki versi 2.2.5 yang Anda dapatkan jika sudo apt-get install figletmenggunakan Ubuntu 14.04. Figlet ini sebenarnya memiliki beberapa "font". Untuk keperluan konteks ini, kita hanya akan berurusan dengan standardfont default .

Teks input tidak lebih dari 80 karakter, dan dihasilkan dari teks biasa yang hanya berisi karakter huruf besar dan spasi.

Program Anda tidak boleh memanggil figletatau kode sumbernya dengan cara apa pun.

Contoh

Memasukkan:

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

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

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

Keluaran:

ABCDEFGHI
JKLMNOPQR
STUVWXYZ

Memasukkan:

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

Keluaran:

STAR WARS

Perhatikan edit sebelumnya dari pertanyaan ini yang memungkinkan input yang berisi huruf besar dan kecil ditambah angka. Itu menunjukkan bahwa ini menyebabkan beberapa titik ambiguitas dengan kombinasi karakter tertentu yang berdekatan. Menjadi jelas bahwa saya perlu menemukan satu set karakter tanpa tabrakan sehingga kontes dapat dilakukan. Pada awalnya saya mencoba semua huruf kecil plus angka dengan shell-liner ini:

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'

Ini menghasilkan { j1, jl} dan { i1, il} sebagai pasangan yang ambigu. Jadi alih-alih dengan semua huruf besar (seperti yang disarankan oleh @AlexA.), Tidak ada pasangan yang ambigu:

for t in {A-Z} ; do figlet $t | tr '\n' ':'; echo ; done | sort | uniq -d | tr ':' '\n'
Trauma Digital
sumber
5
Saya menyarankan klausa 'Anda tidak boleh menyebut figlet', karena jika tidak pasti program terpendek akan mengulangi semua string yang mungkin, memanggil figlet pada mereka, dan kemudian membandingkan untuk kesetaraan.
orlp
1
Kode sumber figlet dapat ditemukan di git repo berikut: git://git.debian.org/git/collab-maint/figlet.git(unduh dengan git clone).
Gagang pintu
4
Catatan: tantangan ini sangat sulit untuk dikodekan, apalagi kode golf.
Lynn
4
1dan ltidak identik, tetapi V1dan Vlsedang.
Lynn
2
Bagi orang yang tidak memiliki sistem yang dapat menjalankan figlet, ada berbagai versi online. Cari "figlet online". Misalnya, yang ini terlihat cukup mudah dan bebas iklan: network-science.de/ascii . Pastikan Anda memilih font "standar".
Reto Koradi

Jawaban:

3

CJam, 147 byte, sedikit rusak

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

Ini melewati CODE GOLF dan AZ tetapi tidak STAR WARS (yang dibaca sebagai SAR WARS). Saya menyerah, tapi mungkin seseorang terinspirasi.

Lynn
sumber
1
Jika solusi Anda tidak berhasil, Anda mungkin tidak boleh mempostingnya ...
Alex A.