ASCII 비행기 배너


11

두 개의 입력을 감안할 때 - 그들 중 하나 (줄 바꿈을 제외한 공간을 포함) 비어 있지 않은 인쇄 가능한 ASCII 문자열, 당신의 선택 (의 두 가지 일관된 값의 다른 존재 하나 1 / 0, l / r, left / right, 등) - 아스키 아트 비행기 출력 왼쪽 또는 오른쪽을 가리키는 문자열의 배너. 일관성을 위해, 내가 사용하고있을거야 left하고 right이 문제 설명을 통해.

평면은 |-DI>-/( left) 또는 \-<ID-|( right)입니다. 배너는 명확하기 때문에 공백으로 구분 된 입력 문자열 문자 (왼쪽에서 오른쪽으로 ( left) 또는 오른쪽에서 왼쪽으로 ( right))로 구성되며 모양의 상자로 둘러싸여 있습니다.

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

또는

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

참고 메시지의 시작 / 끝과 사이에 하나 개의 공간이 있어야합니다 >, <문자.

예를 들어, 메시지 HAPPY BIRTHDAY!와 방향은 left다음 과 같습니다.

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

메시지 PPCG와 방향 은 다음과 같습니다 right. 배너의이 쪽에서 보면 글자가 "뒤로"나타납니다.

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

규칙

  • 문자 자체가 올바르게 정렬되는 한 줄 바꿈 또는 공백은 모두 선택 사항입니다.
  • 전체 프로그램 또는 기능이 허용됩니다. 함수 인 경우 출력하지 않고 출력을 반환 할 수 있습니다.
  • 가능하면 다른 사람들이 귀하의 코드를 시험해 볼 수 있도록 온라인 테스트 환경에 대한 링크를 포함하십시오!
  • 표준 허점 은 금지되어 있습니다.
  • 이것은 이므로 모든 일반적인 골프 규칙이 적용되며 가장 짧은 코드 (바이트)가 이깁니다.


2
JavaScript, 4 바이트 : eval-왼쪽의 왼쪽면을 생성하는 프로그램과 오른쪽의 오른쪽면을 생성하는 프로그램을 입력하십시오.
darrylyeo

답변:


6

자바 스크립트 (ES6) 141 138 바이트

문자열과 방향은 카레 구문을 통해 입력됩니다.
'/\n|-DI>-/---< '왼쪽, '/\n|-DI<-\\---> '오른쪽

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


하, 출력의 한 부분을 하드 코딩하는 것은 허점을 이용하는 것처럼 보이지만 서면의 도전에 따라 괜찮은 것처럼 보입니다. 영리한!
Rick Hitchcock

4
@RickHitchcock 궁극의 허점은 eval... 왼쪽과 오른쪽 기능 소스를 선택한 두 값으로 제공하는 것입니다. (나는 이것에 메타가 있다고 생각했지만 찾을 수는 없다.)
Neil

1
@Neil eval"속임수"는 명시 적으로 언급되지 않더라도 정신의 허점 입니다. 그러나이 대답은 다소 영리합니다.
AdmBorkBork

예, 심각한 답변 으로 게시할지eval 에 대해 토론하고있었습니다 . 이와 같은 향후 문제에 대한 해결 방법은 입력을 바이트 수의 일부로 포함하는 것입니다.
darrylyeo

4

펄 5 , 149 +1 (-p) = 150 바이트

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

온라인으로 사용해보십시오!

두 줄 입력. 먼저 메시지입니다. 왼쪽은 0, 오른쪽은 1입니다.


4

V , 73 , 65 바이트

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

온라인으로 사용해보십시오!

가장 큰 점수는 아니지만 거의 절반이 출력을 뒤집기 때문에 발생합니다.

16 진 덤프 :

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                                       <

문자열을 버퍼에 대한 입력으로, 0왼쪽 및 1오른쪽 방향 을 명령 행 인수로 사용합니다.


4

05AB1E , 63 바이트

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

온라인으로 사용해보십시오!

향후 수정 될 수있는 버그를 기반으로합니다.


@MagicOctopusUrn 가능
Erik

@MagicOctopusUrn 실제로는 그렇게 작동하지 않습니다 ...
아웃 골퍼 Erik

@MagicOctopusUrn 0두 번째 줄의를 로 변경해보십시오 1.
Outgolfer Erik

아, 최고의 공간 ...
Magic Octopus Urn

4

, 44 40 39 35 바이트

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

온라인으로 사용해보십시오! 링크는 자세한 버전의 코드입니다. 첫 번째 입력은 오른쪽에 1, 왼쪽에 0, 두 번째 입력은 배너 문자열입니다. 편집 : 현재 커서 위치 지정 버그가있는 것처럼 사용하여 1 바이트를 저장했지만 인쇄 방향을 반대로하여 4 바이트를 더 저장했지만 현재 사용하는 것은 중요하지 않습니다. 배너 미러링이 허용 된 경우 38 34 32 바이트 버전 :ReflectButterfly(:Up) ReflectButterfly(:Down)

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

온라인으로 사용해보십시오! 링크는 자세한 버전의 코드입니다. 첫 번째 입력은 오른쪽이 0이고 왼쪽이 1입니다. 설명:

|-DI>-/

비행기를 인쇄하십시오.

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

상자의 상단을 인쇄합니다 (후행 공백 참고).

¿N↷⁴‖T

두 번째 입력이 0이 아닌 경우 인쇄 방향을 반대로하고 그렇지 않으면 평면과 상자를 반영합니다.

⮌⪫η 

여분의 간격을두고 메시지를 인쇄하십시오 (후행 공백에주의하십시오). 커서는 평면에서 상자의 맨 끝에 있으므로 메시지를 뒤집어 야합니다.

‖B↓

상자의 아래쪽 절반을 가져옵니다.


자세한 버전에 문제가있는 것 같습니다.
Outgolfer Erik

@EriktheOutgolfer Deverbosifier가 최근에 고장났습니다. TIO는 아직 해결 방법이 없습니다.
Neil

2

젤리 , 68 65 바이트

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

온라인으로 사용해보십시오!

오른쪽은 1, 왼쪽은 0입니다.

-3 @JonathanAllan 덕분 바이트 ( GRR 난 항상 잊지 AB+으로하지 동일 B+@A)


³K“|-DI>-/---< “ < ”j바이트를 저장합니다. LḤ‘”-x⁾//jṭ⁶x11¤Fµ,Ñj¢œs3U⁴¡YÑ⁴¡같은 방식으로 다른 2 개를 저장합니다.
Jonathan Allan

1

, 56 바이트

완전히 인간Outgolfer Erik 덕분에 -8 바이트 !

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

온라인으로 사용해보십시오!

dzaima가 언급 한 사례를 수정하면 바이트 수에 많은 비용 이 들었습니다. 36 바이트 우리가 같은 문자를 반전 할 수있는 경우 </.


1
파이썬에서는 ' '.join(s)작동합니다. 확실히 그것은 차콜에서 사용될 수 있습니까?
완전히 인간적인

1
@totallyhuman Join은 문자열에서도 작동합니다.
Outgolfer Erik

음, 나는 그것을 실제로 제안한 것은 전적으로 인간적이라고 생각합니다.
Outgolfer Erik

@EriktheOutgolfer 오, 나는 @totallyhuman의 제안 ' '.join을 숯 으로 파이썬에 전화하는 것으로 잘못 해석 했습니다. 둘 다 신용하겠습니다.
notjagan

당신은 ast 프로세서를 깨뜨 렸습니다 ...
Neil



1

PHP, 175 바이트

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

으로 실행 -nr= 첫 번째 인수, 0이 오른쪽을 향하게 또는 1왼쪽 두 번째 인수 = 텍스트
또는 온라인으로 시도 .



1

코레아 , 51 바이트

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

온라인으로 사용해보십시오!

설명

이 프로그램은 몇 부분으로 구성되어 있습니다.

1 : 초기화

"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 : 원문

다음 텍스트가 컨텐츠 필드에 출력됩니다.


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

3 : 포스트 앰블

"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

Excel VBA, 198 바이트

비행기가 왼쪽에 있음을 나타내고 비행기가 오른쪽에 있음을 나타내는 [A1]범위 [B1]에서 int와 int 로 문자열로 입력을받는 익명 VBE 즉시 창 함수 .10

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 스프레드 시트, 210 바이트

[A1] 및 [B1] 범위의 int에서 입력 입력을 문자열로 가져 오는 익명 워크 시트 함수. 여기서 1은 평면이 왼쪽에 있고 0은 평면이 오른쪽에 있음을 나타냅니다.

=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,"\","/
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.