Biểu ngữ máy bay ASCII


11

Với hai đầu vào - một trong số họ một chuỗi không có sản phẩm nào có thể in được ASCII (bao gồm cả không gian, trừ newline), là con người khác của hai, các giá trị phù hợp riêng biệt của sự lựa chọn của bạn ( 1 / 0, l / r, left / right, vv) - Sản lượng một ASCII art máy bay biểu ngữ của chuỗi, chỉ sang trái hoặc phải. Để thống nhất, tôi sẽ sử dụng leftrighttrong suốt phần mô tả thử thách này.

Mặt phẳng là |-DI>-/( left) hoặc \-<ID-|( right). Vì biểu ngữ rõ ràng, nó bao gồm các ký tự của chuỗi đầu vào được phân tách bằng khoảng trắng, từ trái sang phải ( left) hoặc từ phải sang trái ( right) và được bao quanh bởi một hộp có hình dạng

    /--/
---<  <
    \--\

hoặc là

\--\
 >  >---
/--/

Lưu ý phải có một khoảng trống giữa đầu / cuối của thông điệp và >, <ký tự.

Ví dụ, đây là thông điệp HAPPY BIRTHDAY!và hướng left:

           /-------------------------------/
|-DI>-/---< H A P P Y   B I R T H D A Y ! <
           \-------------------------------\

Đây là thông điệp PPCGvà hướng dẫn right. Lưu ý rằng các chữ cái xuất hiện "ngược" khi được xem từ phía bên này của biểu ngữ:

\---------\
 > G C P P >---\-<ID-|
/---------/

Quy tắc

  • Các dòng mới hoặc dấu cách hàng đầu hoặc dấu trắng đều là tùy chọn, miễn là bản thân các ký tự xếp hàng chính xác.
  • Hoặc là một chương trình đầy đủ hoặc một chức năng được chấp nhận. Nếu một chức năng, bạn có thể trả lại đầu ra thay vì in nó.
  • Nếu có thể, vui lòng bao gồm một liên kết đến một môi trường thử nghiệm trực tuyến để người khác có thể thử mã của bạn!
  • Sơ hở tiêu chuẩn bị cấm.
  • Đây là vì vậy tất cả các quy tắc chơi gôn thông thường đều được áp dụng và mã ngắn nhất (tính bằng byte) sẽ thắng.


2
JavaScript, 4 byte: eval- Nhập chương trình tạo mặt phẳng bên trái cho bên trái và chương trình tạo mặt phẳng bên phải cho bên phải.
darrylyeo

Câu trả lời:


6

JavaScript (ES6), 141 138 byte

Chuỗi và hướng được nhập thông qua cú pháp currying.
'/\n|-DI>-/---< 'cho trái, '/\n|-DI<-\\---> 'phải

t=>p=>(r=`${s='           '}/${_='-'.repeat(t.length*2+1)}${p}${[...t].join` `} ${d=p[12]} 
${s}\\${_}\\`,d>'<'?[...r].reverse().join``:r)


Ha, mã hóa cứng một phần của đầu ra có vẻ như là một khai thác lỗ hổng, nhưng nó có vẻ tốt dựa trên thách thức như được viết. Tài giỏi!
Rick Hitchcock

4
@RickHitchcock Lỗ hổng cuối cùng là eval... chỉ cung cấp các nguồn hàm trái và phải là hai giá trị bạn chọn. (Tôi nghĩ rằng có một meta về điều này nhưng tôi không thể tìm thấy nó.)
Neil

1
@Neil eval"Bí quyết" sẽ là kẽ hở này về mặt tinh thần, ngay cả khi không được nêu rõ ràng. Câu trả lời ở đây là khá thông minh, mặc dù.
admBorkBork

Vâng, tôi đã tranh luận về việc có nên đăng evalmột câu trả lời nghiêm túc không . Một cách giải quyết cho các thách thức trong tương lai như thế này có thể bao gồm các đầu vào như một phần của số byte.
darrylyeo

4

Perl 5 , 149 +1 (-p) = 150 byte

$d=<>;chomp;$_=($q=$"x11 .'/'.'-'x(1+2*length)."/\n").'|-DI>-/---< '.s/./$& /gr."<\n".$q=~y|\\/|/\\|r;if($d){y|<>|><|;$_=reverse;s/>/ >/;s|-/-|-\\-|}

Hãy thử trực tuyến!

Hai dòng đầu vào. Đầu tiên là tin nhắn. Thứ hai là 0 cho trái, 1 cho phải.


4

V , 73 , 65 byte

Ó./& 
É ÄÒ-ys$/YGpr\$.11>Hj|R|-DI>-/³-<A< ÀñkæG|æ}-r>$BR>³-\-<

Hãy thử trực tuyến!

Không phải là điểm số lớn nhất, nhưng đó là bởi vì gần một nửa số này đến từ việc đảo ngược sản lượng.

Hexdump:

00000000: d32e 2f26 200a c920 c4d2 2d79 7324 2f59  ../& .. ..-ys$/Y
00000010: 4770 725c 242e 3131 3e48 6a7c 527c 2d44  Gpr\$.11>Hj|R|-D
00000020: 493e 2d2f b32d 3c1b 413c 201b c0f1 6be6  I>-/.-<.A< ...k.
00000030: 477c e616 7d2d 723e 2442 523e b32d 5c2d  G|..}-r>$BR>.-\-
00000040: 3c                                       <

Lấy chuỗi làm đầu vào cho bộ đệm và hướng như 0bên trái và 1bên phải làm đối số dòng lệnh.


4

05AB1E , 63 byte

„\\S'-¹g·>×ýD∞2äθ‚11ú"|-DI>-/---<"¸¹ε²i∞θ}J'<«S«ð«J¸«Àε²i∞2äθ}»

Hãy thử trực tuyến!

Dựa trên các lỗi có thể được sửa trong tương lai.


@MagicOctopusUrn có thể
Erik the Outgolfer 30/08/17

@MagicOctopusUrn thực sự không nó sẽ không hoạt động như vậy ...
Erik the Outgolfer

@MagicOctopusUrn Hãy thử thay đổi 0dòng thứ hai thành a 1.
Erik the Outgolfer

À, không gian hàng đầu ...
Bạch tuộc ma thuật Urn

4

Than , 44 40 39 35 byte

|-DI>-/³↗<→/-LηLη↙¹←< ¿N↷⁴‖T⮌⪫η ‖B↓

Hãy thử trực tuyến! Liên kết là phiên bản dài dòng của mã. Đầu vào đầu tiên là 1 cho bên phải và 0 cho bên trái, thứ hai là chuỗi biểu ngữ. Chỉnh sửa: Đã lưu 1 byte bằng cách sử dụng ReflectButterfly(:Up) nhưReflectButterfly(:Down) hiện tại có lỗi định vị con trỏ, nhưng tôi đã lưu thêm 4 byte bằng cách đảo ngược hướng in và bây giờ nó không thành vấn đề khi tôi sử dụng. 38 34 Phiên bản 32 byte nếu phản chiếu banner được cho phép:

|-DI>-/³P⪫⪫<<η ↘→\-LηLη↖¹‖B↑¿N‖T

Hãy thử trực tuyến! Liên kết là phiên bản dài dòng của mã. Đầu vào đầu tiên là 0 cho bên phải và 1 cho bên trái. Giải trình:

|-DI>-/

In mặt phẳng.

³↗<→/-LηLη↙¹←< 

In nửa trên của hộp (ghi chú dấu cách).

¿N↷⁴‖T

Nếu đầu vào thứ hai là khác không, đảo ngược hướng in, ngược lại phản chiếu mặt phẳng và hộp.

⮌⪫η 

In tin nhắn với khoảng cách thêm (ghi chú dấu cách). Con trỏ ở cuối hộp từ mặt phẳng để thông điệp cần được đảo ngược.

‖B↓

Phản xạ để có được nửa dưới của hộp.


Phiên bản Verbose dường như có vấn đề.
Erik the Outgolfer

@EriktheOutgolfer Deverbosifier đã bị hỏng gần đây; TIO dường như chưa có bản sửa lỗi nào.
Neil

2

Thạch , 68 65 byte

“/\<“\/>”y
³K“|-DI>-/---< “ < ”j
LḤ‘”-x⁾//jṭ⁶x11¤Fµ,Ñj¢œs3U⁴¡YÑ⁴¡

Hãy thử trực tuyến!

Mất 1 cho bên phải, 0 cho bên trái.

-3 byte nhờ @Jonathan ALLan ( grr tôi luôn quên AB+làm tương tự như B+@A)


³K“|-DI>-/---< “ < ”jlưu một byte; LḤ‘”-x⁾//jṭ⁶x11¤Fµ,Ñj¢œs3U⁴¡YÑ⁴¡tiết kiệm thêm 2 trong cùng một thời trang.
Jonathan Allan

1

Than , 56 byte

-8 byte nhờ hoàn toàn nhân đạoErik Outgolfer!

≔⪫S θ≔⁺Lθ²η× ¹¹/η/⸿|-DI>-/³<× η<‖B↓FN«‖TM⁺η³→≔⮌θθ»↑↑Mη←θ

Hãy thử trực tuyến!

Việc sửa chữa các trường hợp mà dzaima đã đề cập mất khá nhiều chi phí cho số byte. 36 byte nếu chúng ta được phép đảo ngược các ký tự như </.


1
Trong trăn, ' '.join(s)công trình. Chắc chắn rằng có thể được sử dụng trong than?
hoàn toàn là

1
@totallyhuman cũng Joinhoạt động trên chuỗi.
Erik the Outgolfer

Umm, tôi nghĩ rằng đó là hoàn toàn con người thực sự đề nghị rằng.
Erik the Outgolfer

@EriktheOutgolfer Ồ, tôi đã giải thích sai về đề xuất của @ hoàn toàn là gọi điện cho Python ' '.jointrong Char than. Tôi sẽ ghi có cả hai bạn.
notjagan

Bạn đã phá vỡ bộ xử lý ast ...
Neil


1

Python 2 , 137 136 133 byte

lambda s,d:'{0}/{1}-/\n|-DI{3}-{4}---{5} {2} {5} \n{0}\\-{1}\\'.format(' '*11,'--'*len(s),' '.join(s),*list('></\\<>')[d::2])[::-d|1]

Hãy thử trực tuyến!

1bên phải và 0bên trái


135 byte (-1 byte) bằng cách thay thế 1-2*dbằng -d|1(phủ định dxor 1).
Ông Xcoder

Typo, nó không phải là xor, nó thực sự là bitwise hoặc, trên thực tế.
Ông Xcoder

1
134 byte với một mẹo nhỏ:*list('></\\<>')[d::2]
jferard

1

PHP, 175 byte

[,$d,$s]=$argv;$f=str_repeat("--",strlen($s));$r="\-$f\           
 ".join(" ",str_split("><"[$d].$s)).($d?" <---/->":" >---\-<")."ID-|
/-$f/           ";echo$d?strrev($r):$r;

Chạy với -nr, đối số thứ nhất = 0để đối diện bên phải hoặc 1đối số bên trái và đối số thứ hai = văn bản
hoặc thử trực tuyến .



1

Corea , 51 byte

"u *:>ip.j:l)X-'/S:>"
|-DI>-/---< V< 
"h}>>`tHL`idF

Hãy thử trực tuyến!

Giải trình

Chương trình bao gồm một vài phần:

1: Khởi tạo

"u *:>ip.j:l)X-'/S:>"
"..................."   execute the inside as code
 u                      repeat
   *                    a space, 11 times
    :                   duplicate this string
     >                  write this string to the content field
      i                 take a line of input
       p                push a space
        .j              insert that space after every character
          :l)           get (length(str) + 1)
             X-         repeat a hyphen that many times
               '/       push the "/" character
                 S      surround that string with the above character
                  :>    duplicate and write that string to the content field

2: văn bản thô

Văn bản sau đây được xuất ra trường nội dung:


|-DI>-/---< V<

3: bưu điện

"h}>>`tHL`idF
"               execute until the end of the file
 h              mirror the previous string horizontally
  }             move the modified input string to the front of the stack
   >>           write the top two strings to the content field
     `   `id    do the inside `i`nput times
      tH        reflect the content field horizontally and vertically
        L       reverse the input string
            F   save the input string in a field (default: V)
                this replaces all Vs in the code with the input string

0

VBA Excel, 198 byte

Hàm cửa sổ ngay lập tức VBE ẩn danh lấy đầu vào là chuỗi từ [A1]và int từ phạm vi [B1]trong đó 1chỉ ra rằng mặt phẳng nằm bên trái và 0chỉ ra rằng mặt phẳng ở bên phải.

b=[B1]:a=StrConv(IIf(b,[A1],StrReverse([A1])),64):j=[Rept("-",2*Len(A1)+1)]:k="/"&j &"/":l="\"&j &"\":s=Space(11):?IIf(b,s &k,l):?IIf(b,"|-DI>-/---< "," > ")a;IIf(b,"<",">---\-<ID-|"):?IIf(b,s &l,k)

0

Google Sheets, 210 byte

Hàm bảng tính ẩn danh lấy đầu vào là chuỗi từ [A1] và int từ phạm vi [B1] trong đó 1 chỉ ra rằng mặt phẳng ở bên trái và 0 chỉ ra rằng mặt phẳng ở bên phải.

=If(B1,"           /","\")&Rept("-",2*Len(A1)+1)&If(B1,"/
","\
")&If(B1,"|-DI>-/---< "," > ")&RegexReplace(A1,"(.)","$1 ")&If(B1,"<
",">---\-<ID-|
")&If(B1,"           \","/")&Rept("-",2*Len(A1)+1)&If(B1,"\","/
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.