telgif: nghịch đảo


20

figletlà tiện ích chuyển đổi văn bản đơn giản thành biểu diễn nghệ thuật ascii để sử dụng trong các biểu ngữ và tương tự. Ví dụ:

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

$

Viết chương trình hoặc hàm lấy đầu ra nghệ thuật từ figletvà trả nó về văn bản gốc ban đầu.

Nó có thể hữu ích cho bạn để cài đặt figlet. Tôi có phiên bản 2.2.5, đó là những gì bạn nhận được nếu bạn dùng sudo apt-get install figletUbuntu 14.04. Bức tượng này thực sự có một số "phông chữ". Đối với mục đích của bối cảnh này, chúng tôi sẽ chỉ xử lý standardphông chữ mặc định .

Văn bản đầu vào sẽ không rộng hơn 80 ký tự và sẽ được tạo từ văn bản thuần chỉ chứa các ký tự viết hoa và khoảng trắng.

Chương trình của bạn có thể không gọi figlethoặc mã nguồn của nó theo bất kỳ cách nào.

Thí dụ

Đầu vào:

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

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

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

Đầu ra:

ABCDEFGHI
JKLMNOPQR
STUVWXYZ

Đầu vào:

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

Đầu ra:

STAR WARS

Lưu ý chỉnh sửa trước đó của câu hỏi này cho phép các đầu vào có chứa chữ in hoa và in thường cộng với chữ số. Nó đã chỉ ra rằng điều này gây ra một số điểm mơ hồ với các kết hợp nhân vật liền kề nhất định. Rõ ràng là tôi cần phải nghiêm túc tìm ra một tập hợp các nhân vật không có sự va chạm như vậy để cuộc thi thực sự có thể thực hiện được. Lúc đầu, tôi đã thử tất cả các chữ cái thường và chữ số với lớp vỏ này:

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'

Điều này mang lại { j1, jl} và { i1, il} là các cặp không rõ ràng. Vì vậy, thay vì với tất cả các chữ cái viết hoa (như được đề xuất bởi @AlexA.), Không có cặp nào mơ hồ:

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

5
Tôi muốn đề xuất một mệnh đề 'bạn không được gọi figlet', bởi vì nếu không, chắc chắn chương trình ngắn nhất sẽ lặp lại trên tất cả các chuỗi có thể, gọi figlet trên chúng, và sau đó so sánh cho bằng nhau.
orlp

1
Mã nguồn của figlet có thể được tìm thấy trong git repo sau: git://git.debian.org/git/collab-maint/figlet.git(tải xuống với git clone).
Doorknob

4
Lưu ý: thử thách này rất khó để viết mã, huống chi là chơi golf.
Lynn

4
1lkhông giống nhau, nhưng V1Vllà.
Lynn

2
Đối với những người không có hệ thống có thể chạy figlet, có nhiều phiên bản trực tuyến khác nhau. Tìm kiếm "figlet trực tuyến". Ví dụ: cái này có vẻ khá đơn giản và không có quảng cáo: network-science.de/ascii . Hãy chắc chắn rằng bạn chọn phông chữ "tiêu chuẩn".
Reto Koradi

Câu trả lời:


3

CJam, 147 byte, bị hỏng nhẹ

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

Nó vượt qua CODE GOLFAZ nhưng không phải là STAR WARS (mà nó đọc là SAR WARS). Tôi từ bỏ, nhưng có lẽ ai đó được truyền cảm hứng.


1
Nếu giải pháp của bạn không hiệu quả, có lẽ bạn không nên đăng nó ...
Alex A.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.