telgif: ters figlet


20

figletdüz metni, afişlerde ve benzerlerinde kullanmak için bir ascii-art temsiline dönüştüren bir yardımcı programdır. Örneğin:

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

$

Ascii-art çıktısını alıp figletorijinal düz metnine döndüren bir program veya işlev yazın .

Yüklemeniz size yardımcı olabilir figlet. sudo apt-get install figletUbuntu 14.04'te alırsanız sahip olduğunuz 2.2.5 sürümüne sahibim . Bu grafik aslında birkaç "yazı tipine" sahiptir. Bu bağlamın amaçları doğrultusunda, sadece varsayılan standardyazı tipiyle ilgileneceğiz .

Giriş metni 80 karakterden daha geniş olmayacak ve yalnızca büyük harf ve boşluk içeren düz metinden oluşturulacaktır.

Programınız figlethiçbir şekilde arama yapamaz veya kaynak kodunu arayamaz.

Misal

Giriş:

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

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

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

Çıktı:

ABCDEFGHI
JKLMNOPQR
STUVWXYZ

Giriş:

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

Çıktı:

STAR WARS

Bu sorunun daha önceki bir düzenlemesinde büyük ve küçük harfler ile rakam içeren girişlere izin verildiğini unutmayın. Bunun, bazı bitişik karakter kombinasyonları ile birkaç belirsizliğe neden olduğuna dikkat çekildi. Bu tür çarpışmalar olmayan bir dizi karakteri titizlikle bulmam gerektiğinin anlaşılmasıyla yarışma gerçekten yapılabilir. İlk başta tüm küçük harfleri ve rakamları bu kabuk tek satırıyla denedim:

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'

Bu, belirsiz çiftler olarak { j1, jl} ve { i1, il} elde etti. Bu nedenle, tüm büyük harflerle (@AlexA tarafından önerildiği gibi), belirsiz çiftler yoktur:

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

5
Bir 'figlet diyemezsiniz' cümlesi öneririm, aksi takdirde en kısa program mümkün olan tüm dizeleri tekrarlar, onlara figlet çağırır ve sonra eşitliği karşılaştırır.
orlp

1
Figürün kaynak kodu aşağıdaki git repo'sunda bulunabilir: git://git.debian.org/git/collab-maint/figlet.git(ile indir git clone).
Kapı Tokmağı

4
Not: Bu zorluğu kodlamak, golf kodlamak çok zor.
Lynn

4
1ve lözdeş değil, ama V1ve aynıdır Vl.
Lynn

2
Figür çalıştırabilen bir sistemi olmayan kişiler için çeşitli çevrimiçi sürümler vardır. "Figlet online" için arama yap. Örneğin, bu oldukça basit ve reklamsız görünüyor: network-science.de/ascii . "Standart" yazı tipini seçtiğinizden emin olun.
Reto Koradi

Yanıtlar:


3

CJam, 147 bayt, hafif kırık

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 ve AZ'yi geçer, ancak STAR WARS'ı (olarak okur SAR WARS) geçmez . Pes ediyorum ama belki biri ilham alıyor.


1
Çözümünüz işe yaramazsa, muhtemelen yayınlamamalısınız ...
Alex A.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.