ASCII 위험 그리기


25

별표를 사용하여 도형을 그리는 것과 관련하여 많은 질문이 있습니다. 그래서 별표가 너무 많으면 ASCII 테이블을 사용하여 하나를 그려야한다고 생각했습니다.

도전

당신의 임무는 입력하지 않고 다음과 같은 정확한 텍스트를 출력하는 프로그램이나 함수를 작성하는 것입니다.

          !
         "#
         $%
         &'
         ()
         *+
         ,-
         ./
         01
23456789:;<=>?@ABCDEF
GHIJKLMNOPQRSTUVWXYZ[
        \]^_
       `a  bc
      de    fg
     hi      jk
    lm        no
   pq          rs
  tu            vw
 xy              z{
|}                ~

참고 로이 사이트 는 완전한 ASCII 테이블을 나열합니다.

규칙

  • 위에 표시된대로 출력은 정확한 텍스트 여야합니다. 선행 / 후행 공백이 허용됩니다.
  • 표준 골프 허점은 적용됩니다-인터넷 등에서이 ASCII 위험을 읽지 마십시오.
  • 이것은 이므로 가장 짧은 솔루션 (바이트)이 이깁니다.

2
이 도전을 시도하고 싶지만 다소 위험한 것 같습니다 . 내 끔찍한 유머를 용서해주세요.
HyperNeutrino

1
스택 오버플로에는 NoBadJokes 정책이 있으므로 해당 주석을 무시해야합니다. 죄송하지만 정책

2
괜찮아. 정책을 위반하여 죄송합니다. 답장을 보내서 내 의견을 무시해 주셔서 감사합니다.
HyperNeutrino

답변:


5

05AB1E , 40 38 37 36 35 바이트

žQ2ô376S3*£`2ôvyN·ð×ýð«}rsJ2äsr)˜.c

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

설명

žQ                                   # push the printable ascii chars
  2ô                                 # split into pairs
    376S                             # split the number 376 into a list of digits
        3*                           # multiply each by 3 to get [9,21,18]
          £                          # divide the pairs of ascii chars into 
                                     # pieces of these sizes
           `                         # flatten list to stack
            2ô                       # split the "legs" of the asterisk into pairs of pairs
              v                      # loop over the pairs of pairs
               yN·ð×ý                # join the pairs by index*2 spaces
                     ð«              # append a space
                       }             # end loop
                        rs           # move the middle section to top of stack
                          J2ä        # convert to a string split into 2 pieces
                             sr      # rearrange the stack in the correct order
                               )˜    # wrap in a flattened list
                                 .c  # pad each element with spaces on either side

žQ2ôÐ9£s30£R21£RøsrR18£R2ôvyN·ð×ý})˜.C», 나는 39를 얻었지만 ZIP으로 약간을 면도 할 수 있다고 생각합니다.
Magic Octopus Urn

@ carusocomputing : 문자가 순차적으로 유지되기를 원하기 때문에 zip이 여기에서 매우 유용하다고 생각하지 않습니다. 처음에 모든 것을 쌍으로 나누는 것이 좋은 생각이었습니다. 너무 많은 rs를 사용하면 낭비가 되지만 주위를 둘러 볼 방법이 없습니다.
Emigna

13

파이썬 3 , 110 바이트

s='%c';print(('\n'.join(['%10c%c']*9+[s*21]*2+[' '*(8-i)+s*2+'  '*i+s*2for i in range(9)]))%(*range(32,128),))

템플릿을 생성합니다

         xx
         xx
         xx
         xx
         xx
         xx
         xx
         xx
         xx
xxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxx
        xxxx
       xx  xx
      xx    xx
     xx      xx
    xx        xx
   xx          xx
  xx            xx
 xx              xx
xx                xx

%cfor 와 함께 x문자열 보간을 사용 range(32,128)하여 ASCII 값을 패턴에 삽입합니다.

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

파이썬 2는 1 바이트 더 길고 튜플 풀림은 길지만 짧습니다 print.

s='%c';print('\n'.join(['%10c%c']*9+[s*21]*2+[' '*(8-i)+s*2+'  '*i+s*2for i in range(9)]))%tuple(range(32,128))

에펠 탑 유 사상을받을 자격이 있습니다!
sergiol

11

V , 54 , 50 바이트

¬ ~9ñ9É 11|á
ñ2ñ20lá
ñ$18é 9ñ^y|Ehé
Pf xxywk$hP>ñd

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

평소와 달리이 프로그램에는 인쇄 할 수없는 문자가 포함되어 있지 않습니다.

설명:

¬ ~                     " Insert the entire printable ASCII range
   9ñ           ñ       " 9 times:
     9É                 "   Insert 9 spaces at the beginning of this line
        11|             "   Move to the 11'th column on this line
           á<CR>        "   And append a newline after the 11'th column

이제 버퍼는 다음과 같습니다 :

          !
         "#
         $%
         &'
         ()
         *+
         ,-
         ./
         01
23456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~

이제 우리는 중간을 만듭니다.

2ñ        ñ             " Two times:
  20l                   "   Move 20 characters to the right (because 'l' == 'right', duh)
     á<CR>              "   Append a newline

여기가 조금 이상해집니다.

$                       " Move to the end of this line 
 18é                    " Insert 18 spaces before the last character
     9ñ                 " Repeat the following 9 times:
       ^                "   Move to the first non-whitespace character
        y|              "   Yank all the whitespace before the current character. 
                        "   We'll call this the "Leading whitespace register"
          E             "   Move to the end of the current WORD (up to before a space)
           h            "   Move back one character
            é<CR>       "   And insert a newline before the current character
P                       "   Paste the leading whitespace for indentation
 f                      "   Move forward to a space
   xx                   "   Delete two characters
                        "   (Note how we are inbetween the two bottom branches right now)
     yw                 "   Yank everything upto the next branch (all spaces)
                        "   We'll paste this on the line up so that we can yank it again later
                        "   To keep track of how far apart the branches are
       k$               "   Move up a line and to the end of that line
         hP             "   Move back a character and paste the whitespace we yanked
           >            "   Indent this line by one space
            ñ           "   End the loop

중요한 메모가 있습니다. 이 >명령은 실제로 operator 입니다. 즉, 조작 할 텍스트 인 인수 없이는 아무 것도하지 않습니다. 예를 들어

>_      "Indent the current line
>>      "Indent the current line
>j      "Indent the current and next line
>G      "Indent every line

그러나이 명령은 반복되므로 연산자를 제공하지 않으면 서 문자를 저장할 수 있습니다. 루프가 끝날 때, 어떤 작업자가 보류중인 경우 채워집니다_ 암시 적으로 인수로 (현재 행)을 .

이제이 루프가 조금 이상하다는 것을 인정할 것이며, 어떤 순간에 모든 텍스트가 어떻게 보이는지 추적하기가 어려울 수 있습니다. 따라서이 간단한 프로그램 을 사용 하여 N 루프 후의 모습을 볼 수 있습니다 .

9로 설정하면 제거 할 약간의 추가 텍스트가 있음을 알 수 있습니다. (현재 줄만).

로 현재 행을 삭제합니다 dd. 하지만 기다려! 운영자가 언젠가 암시 적으로 채워진 인수를 취해야한다고 어떻게 말했는지 알고 있습니까? 인수는 프로그램의 끝에서 암시 적으로 채워집니다. 그래서 dd또는 d_(동등한) 대신에, 우리는 단순히 dV를 대신해서 채울 수 있습니다 _.


암묵적으로 학대 좋은 직업 ÿ:)
Kritixi Lithos

5

파이썬 3 170 165 155 147 바이트

나는 이것을 너무 많이 골프를 쳤다. 나는 그것이 어떻게 작동하는지 잊었다.

i=b=0
for x in range(32,127):a=x%2<1;c=x>90;d=x<50;print(end=[' '*9*d,['\n'+' '*(8-i),'  '*~-i][b]][c]*a+chr(x)+'\n'*(x==70or d*x%2));b^=a;i+=b*c*a

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


5

자바 스크립트 (ES6), 156 ... 115 114 바이트

안타깝게도 악명 높은 String.fromCharCode()비용은 19 바이트입니다.

f=(x=y=k=1)=>k<96?String.fromCharCode(x-22?y/2^5&&(y>9?x-y+1>>1&&22-y-x>>1:x/2^5)?32:31+k++:(x=!++y,10))+f(x+1):''

console.log(f())

형식화 및 의견

f = (                         // given:
  x =                         //   - x = current column
  y =                         //   - y = current row
  k = 1                       //   - k = current ASCII character code, minus 31
) =>                          //
  k < 96 ?                    // if we havent't reached character #127 (96 + 31):
    String.fromCharCode(      //   let's compute the next character
      x - 22 ?                //   if x is not equal to 22 (end of line):
        y / 2 ^ 5 && (        //     if y doesn't equal 10 or 11 (horizontal bar):
          y > 9 ?             //       and either y is greater than 9:
            x - y + 1 >> 1 && //         and we are not located on one of the
            22 - y - x >> 1   //         bottom diagonals
          :                   //       or y is less or equal to 9:
            x / 2 ^ 5         //         and x doesn't equal 10 or 11 (vertical bar)
        ) ?                   //     then:
          32                  //       append a space
        :                     //     else:
          31 + k++            //       append the next ASCII character
      :                       //   else:
        (x = !++y, 10)        //     increment y, reset x and append a LineFeed
    ) + f(x + 1)              //   do a recursive call with x + 1
  :                           // else:
    ''                        //   stop recursion

String.fromCharCode(...[...Array(n)].map(_=>k++))4 바이트를 절약 할 수 있다고 생각합니다 .
ETHproductions

@ETHproductions String.fromCharCode()배열 을 호출한다는 아이디어가 마음에 들지만 다른 접근법을 사용했습니다. 어쨌든 고마워!
Arnauld 2016 년

3

QBIC , 153151 바이트

[32,49,2|?space$(9)+chr$(a)+chr$(a+1)][2|X=Y[a,a+20|X=X+chr$(c)]a=a+21?X][0,8|X=space$(8-d)[0,1|X=X+chr$(a+e)]X=X+space$(d*2)[2,3|X=X+chr$(a+f)]a=a+f?X

실제로 일련의 FOR 루프이며 int를 문자 ( chr$()) 로 캐스팅합니다 .

샘플 출력 :

          !
         "#
         $%
         &'
         ()
         *+
         ,-
         ./
         01
23456789:;<=>?@ABCDEF
GHIJKLMNOPQRSTUVWXYZ[
        \]^_
       `a  bc
      de    fg
     hi      jk
    lm        no
   pq          rs
  tu            vw
 xy              z{
|}                ~


3

PHP, 110 105 103 93 91 바이트

for(;$c<95;$y+=!$x%=21)echo"
"[$x],chr(31+($y%11<9&(max($y,10)-abs(9.5-$x++))%11<9?:++$c));

선행 줄 바꿈을 인쇄합니다. 온라인으로 실행 -nr하거나 테스트하십시오 .

기본 원칙은 Arnauld에서 채택되었지만 반복됩니다.
그리고 PHP의 암시 적 타입 캐스트에서 좋은 이점을 얻습니다 :
NULL은 int 문자열 인덱스, float는 int% , boolean-int for &and for +=.

의사 코드로 설명

If $x is 0, print a newline. ("\n"[$x] is newline for $x=0; empty for every larger $x)
if $y is neither 9 nor 10 (not middle part: $y<9|$y>10 <=> $y%11<9)
AND distance to center == abs(9.5-$x) (in [0.5,1.5,..,10.5]) ->
    lower part:     abs($y-10-distance)>1                   => ($y-distance)%11<9
                (this works because $y is always <20)
    upper part: $x<9|$x>10 <=> distance>1 <=> 10-distance<9 => (10-distance)%11<9
                (this works because % has negative results for negative first operands)
    both parts: $y>9?$y:10 <=> max($y,10)
// $a?:$b evaluates to $a if $a is truthy, to $b else
// and the ternary condition evaluates to 1 if the coords are not in the shape
then print chr(31+1) = space
else print chr(31+incremented $c)

2

Pyth , 53 바이트

js.e@[+L*9;cb2c2b.e+*-8Ydj*yYdZcL2cb4)kcsrdC127,18 60

결과를 인쇄하는 프로그램.

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

작동 원리

srdC127 인쇄 가능한 ASCII 문자 목록을 작성하고이를 문자열로 연결합니다.

c....,18 60이 문자열을 인덱스 18와으로 나누고 60출력의 다른 부분에 해당하는 세 개의 문자열 목록을 제공합니다 : 상단, 중간 및 하단.

.e문자열을로 b, 색인을로 하여 문자열에 대해 열거 된 맵을 시작합니다 k.

[...)다이어그램의 각 부분에 대해 원하는 조치를 포함하는 목록을 작성합니다. 를 사용하여 현재 색인으로 목록에 색인을 작성하여 올바른 조치를 선택합니다 @...k.

  • 상단

    cb2문자열을 문자 쌍으로 나누고 각 쌍 +L*9;앞에 9공백을 추가 합니다.

  • 중간

    c2b 문자열을 두 개의 동일한 길이의 문자열로 분할합니다.

  • 바닥

    cL2cb4 문자열을 4 개의 문자 그룹으로 나누고 각 그룹을 쌍으로 나눕니다.

    .e문자열 쌍을로 Z, 색인을로 하여 열거 된 맵을 시작합니다 Y.

    j*yYdZ2*Y공백 의 쌍을 결합하고 공백을 +*-8Yd추가 8-Y합니다.

js모든 결과를 병합하고 개행에서 결과 목록을 결합합니다. 그런 다음 암시 적으로 인쇄됩니다.


2

하스켈 , 144 바이트

b!n=[1..n]>>b
('*':r)#(a:s)=a:r#s
(a:r)#s=a:r#s
r#s=r
p="**"
f=unlines([" "!9++p]!9++["*"!21]!2++[" "!(8-n)++p++" "!(2*n)++p|n<-[0..8]])#[' '..]

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

설명:

b!n=[1..n]>>b!목록 또는 문자열 시간을 반복 하는 함수 를 정의합니다 b n.

unlines([" "!9++p]!9++["*"!21]!2++[" "!(8-n)++p++" "!(2*n)++p|n<-[0..8]]) 이 함수를 사용하여 별표를 표시합니다 (오, 아이러니!) :

         **
         **
         **
         **
         **
         **
         **
         **
         **
*********************
*********************
        ****
       **  **
      **    **
     **      **
    **        **
   **          **
  **            **
 **              **
**                **

#*문자열에서 주어진 목록의 문자로 연속적으로 대체하는 함수로 정의됩니다 . 위의 별표 별표로 호출되며 [' '..]공백으로 시작하는 모든 문자의 무한 목록입니다 ' '.


여기 파티에 늦었지만 그렇게 " "!(2*n)될 수 있습니다 "(TWO SPACES)"!n.
Lynn


2

J, 63

(경쟁하지 않음)

a.{~32>.31+20 21$(* +/\),(9 21&$@{.,1:,1:,}.)(+.1&|."1)|.=|i:10

표현식은 오른쪽에서 왼쪽으로 평가됩니다.

  • i: 10 -10에서 +10까지
  • | +10에서 +10으로 돌아가려면 복근
  • = 0의 블록에서 1의 V 모양을 얻기 위해 자체 분류
  • |. / \ 모양을 얻으려면 행 순서를 반대로하십시오.
  • ( +. 1&|."1 ) 후크 식은 각 행을 하나씩 오른쪽으로 이동하고 OR은 원본과 함께
  • ( 9 21&$@{. , 1: , 1: , }. ) 중첩 된 포크는 수평으로 배치하고 상단을 늘입니다.
  • , 누적을 위해 블록을 선형 시퀀스로 상승
  • ( * +/\ ) 자기와 함께 곱하고 곱하다
  • 20 21 $ 21 개 요소로 구성된 20 행의 블록으로 도형을 되돌립니다.
  • 31 + 첫 번째 1은 공백 문자 코드 32이어야하므로 31을 추가하십시오.
  • 32 >. 32 층
  • a. {~ ASCII 내장에서 문자를 선택

4
PPCG에 오신 것을 환영합니다! 이것을 경쟁하지 않는 것으로 표시 한 이유는 무엇입니까?
Martin Ender

경쟁이 시작된 지 15 분이 지났는데도 노력을 더할 줄 알았는데 .. 각 퍼즐이 계속 열려 있다고 말하는가? J 발현이 REPL 외부에 인쇄 할 수 스크립트에서 실행될 때 .. 또한, 즉 내가 접두사에 필요 했어 smoutput명령 또는 동급
jayprich

챌린지는 일반적으로 답변이 이미 수락 된 경우에도 무기한 개방됩니다. 때로는 새로운 항목 (응답 연쇄, 경찰 및 도둑, 언덕이 떠오름)에 폐쇄되는 몇 가지 특수한 유형의 문제가 있지만, 일반적으로 문제 설명에서 그렇게 말할 것입니다. 이것이 유효한 답변 형식인지 여부에 대해서는 J 경험이 많은 사람에게 문의해야하지만 REPL 답변은 일반적으로 표시되어있는 한 괜찮습니다.
Martin Ender

1

루비, 91 바이트

->{(-11..8).map{|i|["%s"*21,"%#{9-i}s%s%#{i*2+1}s%s","%10s%s"][i/2<=>-1]}*$/%[*' '..?~,$/]}

언 골프

->{(-11..8).map{|i|            #For each line
  ["%s"*21,                    #If i/2==-1 make a format string of 21 %s
   "%#{9-i}s%s%#{i*2+1}s%s",   #If i/2>-1 make a format string %{9-i}s%s%{i*2+1}s%s
   "%10s%s"][i/2<=>-1]         #If i/2<-1 make a format string %10s%s
  }*$/%                        #Join the format strings with newlines $/ then use sprintf operator %
  [*' '..?~,$/]                #to replace the %s with *' '..'~' and a newline for last corner.
}

1

나는 C #에서 답을 놓쳤다.

C # (.NET 코어) , 175 (174) 바이트

_=>{var r="";for(int i=0,j,d=32,s=1;i<54;i++)for(j=0;j++<"*#4#4#4#4#4#4#4#4#+K)%1###/#%#-#'#+#)#)#+#'#-#%#/###1#"[i]-33;)r+=(char)(i%2<1?32:d++)+(s++%21<1?"\n":"");return r;}

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

  • Kevin Cruijssen 덕분에 1 바이트가 절약되었습니다!

1
당신은 넣어 바이트를 저장할 수 있습니다 int에 대한 루프 안에들 :for(int i=0,j,d=32,s=1;i<54;i++)for(j=0
케빈 Cruijssen

1

Tcl , 209 바이트

proc I {} {incr ::i}
proc A {} {time {append a [$::F %c [I]]} 21;puts $a}
set i 31
time {puts [[set F format] %10c%c [I] [I]]} 9
A
A
time {puts [$F %[expr 32-[I]/4]c%c $i [I]][$F %[expr $i/2-45]c%c [I] [I]]} 9

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


Tcl , 212 바이트

proc I {} {incr ::i}
proc A {} {time {append a [$::F %c [I]]} 21;puts $a}
set i 31
time {puts [[set F format] %10c%c [I] [I]]} 9
A
A
time {puts [$F %[expr (129-[I])/4]c%c $i [I]][$F %[expr $i/2-45]c%c [I] [I]]} 9

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

tcl, 213

proc I {} {incr ::i}
set F format
proc A {} {time {append a [$::F %c [I]]} 21;puts $a}
set i 31
time {puts [$F %10c%c [I] [I]]} 9
A
A
time {puts [$F %[expr (129-[I])/4]c%c $i [I]][$F %[expr $i/2-45]c%c [I] [I]]} 9

데모


tcl, 214

proc I {} {incr ::i}
set F format
proc A {} {time {append a [$::F %c [I]]} 21;puts $a}
set i 31
time {puts [$F %10c%c [I] [I]]} 9
A
A
time {I;puts [$F %[expr (129-$i)/4]c%c $i [I]][$F %[expr $i/2-45]c%c [I] [I]]} 9

데모


tcl, 227

proc I {} {incr ::i}
set F format
proc A {} {time {append ::a [$::F %c [I]]} 21}
set i 31
time {puts [$F %10c%c [I] [I]]} 9
A
set a $a\n
A
puts $a
time {I;puts [$F %[expr (129-$i)/4]c%c $i [I]][$F %[expr $i/2-45]c%c [I] [I]]} 9

데모

tcl, 236

proc I {} {incr ::i}
set F format
proc A {} {time {append ::a [$::F %c [I]]} 21}
set i 31
time {puts [$F %10c%c [I] [I]]} 9
set a ""
A
set a $a\n
A
puts $a
time {I;puts [$F %[expr (129-$i)/4]c%c $i [I]][$F %[expr $i/2-45]c%c [I] [I]]} 9

데모


tcl, 237

proc I {} {incr ::i}
set F format
proc A {} {time {set ::a $::a[$::F %c [I]]} 21}
set i 31
time {puts [$F %10c%c [I] [I]]} 9
set a ""
A
set a $a\n
A
puts $a
time {I;puts [$F %[expr (129-$i)/4]c%c $i [I]][$F %[expr $i/2-45]c%c [I] [I]]} 9

데모


동일한 크기의 대체 접근법 :

proc I {} {incr ::i}
set F format
proc A b {time {upvar $b c;set c $c[$::F %c [I]]} 21}
set i 31
time {puts [$F %10c%c [I] [I]]} 9
set a ""
A a
set a $a\n
A a
puts $a
time {I;puts [$F %[expr (129-$i)/4]c%c $i [I]][$F %[expr $i/2-45]c%c [I] [I]]} 9

데모

Tcl, 288

lassign {set while puts format incr expr} S W P F I E
$S i 31
$W \$i<48 {$P [$F %10c%c [$I i] [$I i]]}
$S a ""
$W {[$I i]<71} {$S a $a[$F %c $i]}
$S a $a\n
$W \$i<92 {$S a $a[$F %c $i];$I i}
$P $a
$W \$i<128 {$P [$F %[$E (129-$i)/4]c%c $i [$I i]][$F %[$E $i/2-45]c%c [$I i] [$I i]]; $I i}

데모


tcl, 297 바이트 (순진한 시도)

set i 31
while \$i<48 {puts [format %10c%c [incr i] [incr i]]}
set a ""
while {[incr i]<71} {set a $a[format %c $i]}
set a $a\n
while \$i<92 {set a $a[format %c $i];incr i}
puts $a
while \$i<128 {puts [format %[expr (129-$i)/4]c%c $i [incr i]][format %[expr $i/2-45]c%c [incr i] [incr i]]; incr i}

데모


1
"순진한 시도"란 무엇을 의미합니까? 대신 제목에 길이를 입력해서는 안됩니까?

1
나는 아직도 많은 반복이 있기 때문에 더 골프를 칠 공간이 있음을 의미합니다. 그리고 나는 그것을 더 골프 것입니다.
sergiol

원시 접근 방식 은 254 바이트 범위입니다.
sergiol


@ASCII 전용 : 감사합니다. 광산은 당신의 제안과 정확히 같지 않습니다! ;)
sergiol

1

시적 , 899 바이트

ill be honest with you
i expect a big solitude
i guess i had a guilt
my own idea being:i was real alone,i was a lonely human
also,i am still
o,i guess i was expecting a shift
i figured,surely i know i am tired of silence
now i dreamed for a shift
a magical desire cant come
i am barely a man,so i guess i see why a woman i see ignores myself
i know i am awful
o,a night of passion and a moment of love
i am truly the foolish person,every time i am saying i may recapture a love
o,i think i can,i think i can
i really do know i am unfit
o,i notice a lot,i think i know i am unfit
o,a novel,or perhaps poetry in code,i do enjoy the writing
and i shudder and i wonder in a moment
i was a weirdo,i was a freak,or like,i am creepy
o,i think i was a misfit
i know i am,really
o,i ought not concern myself
and sure,i am still some joyless man
i focused and i tried
a lasting solace and joy is nearby for me

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

Poetic은 2018 년 수업 프로젝트를 위해 만든 esolang입니다. 기본적으로 기호 대신 단어 길이를 사용하는 것이 좋습니다.

이시는 ... 우울합니다. 😟


0

Python 2.7, 194 188 바이트

k,l,c,s,r=8,0,chr,' ',range;o=''.join(map(chr,r(32,127)))
for i in r(0,18,2):print s*9+o[i:i+2]
print o[18:39]+'\n'+o[39:60]
for i in r(60,95,4):print s*k+o[i:i+2]+s*l+o[i+2:i+4];k-=1;l+=2

당신은 변경하여 2 바이트를 놓을 수 map(chrmap(cc이미 정의 된chr

0

Jq 1.5 , 180 바이트

foreach((range(9)|[9,2]),(range(2)|[0,21]),(range(9)|[8-.,2,.+.,2]))as$r({s:[range(32;127)]|implode};.r=$r|.p=""|until(.r==[];.p+=" "*.r[0]+.s[:.r[1]]|.s =.s[.r[1]:]|.r=.r[2:]);.p)

넓히는

foreach (                              # instruction sequence: [indent, count]
    (range(9)|[9,2]),                  # 9 rows of 2 characters indented 9 spaces
    (range(2)|[0,21]),                 # 2 rows of 21 characters
    (range(9)|[8-.,2,.+.,2])           # 9 rows of 4 characters with varying indent
) as $r (
    {s:[range(32;127)]|implode}        # state = ascii string
  ; .r = $r                            # current instruction
  | .p = ""                            # print string for this row
  | until(.r==[];                      # until current instruction is exhausted
        .p += " "*.r[0] + .s[:.r[1]]   # add to print string
      | .s = .s[.r[1]:]                # remove from state
      | .r = .r[2:]                    # remove from instruction
    )
  ; .p                                 # emit print string
 )

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


0

슬래시 ( /// ), 324 바이트

          !
         "#
         $%
         &'
         ()
         *+
         ,-
         .\/
         01
23456789:;<=>?@ABCDEF
GHIJKLMNOPQRSTUVWXYZ[
        \\]^_
       `a  bc
      de    fg
     hi      jk
    lm        no
   pq          rs
  tu            vw
 xy              z{
|}                ~

슬래시의 첫 번째 (기본) 동작은 '인쇄'이므로 문자열이 인쇄됩니다. /과는 \절차에 의해 이스케이프해야합니다 \들.


바이트 수와 통역사에 대한 링크를 추가해야합니다. 그래도 다소 골치 아픈 것처럼 보입니다 (///에서 더 잘하는 것이 더 좋은지 확실하지 않습니다).
Stewie Griffin

///의 아름다움을 보여주는 것은 약간 농담입니다. 그리고 나는 그것들을 추가 할 것입니다!
clabe45

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.