그냥 버그 였어


76

에서 도청 출력에서 영감을 @Carcigenicate 의 Clojure의 응답 에 대한 인쇄이 다이아몬드 도전.

이 정확한 텍스트를 인쇄하십시오 :

1        2        3        4        5        6        7        8        9        0
1       2       3       4       5       6       7       8       9       0
1      2      3      4      5      6      7      8      9      0
1     2     3     4     5     6     7     8     9     0
1    2    3    4    5    6    7    8    9    0
1   2   3   4   5   6   7   8   9   0
1  2  3  4  5  6  7  8  9  0
1 2 3 4 5 6 7 8 9 0
1234567890
1 2 3 4 5 6 7 8 9 0
1  2  3  4  5  6  7  8  9  0
1   2   3   4   5   6   7   8   9   0
1    2    3    4    5    6    7    8    9    0
1     2     3     4     5     6     7     8     9     0
1      2      3      4      5      6      7      8      9      0
1       2       3       4       5       6       7       8       9       0
1        2        3        4        5        6        7        8        9        0

(중간에서 바깥 방향으로, 각 자릿수는 이전 행보다 하나 이상의 공백으로 분리됩니다.)

도전 규칙 :

  • 입력이 없거나 비어있는 입력이 없습니다 .
  • 후행 공백은 선택 사항입니다.
  • 단일 후행 줄 바꿈은 선택 사항입니다.
  • 선행 공백이나 줄 바꾸기는 허용되지 않습니다.
  • 문자열 배열을 반환하는 것은 허용되지 않습니다. 텍스트를 출력하거나 올바른 결과를 가진 단일 문자열을 반환하는 함수가 있어야합니다.

일반적인 규칙:

  • 이것은 이므로 바이트 단위의 최단 답변이 이깁니다.
    코드 골프 언어가 코드 골프 언어 이외의 언어로 답변을 게시하지 못하게하십시오. '모든'프로그래밍 언어에 대한 가능한 한 짧은 대답을 생각해보십시오.
  • 표준 규칙이 답변에 적용 되므로 STDIN / STDOUT, 적절한 매개 변수 및 리턴 유형의 전체 프로그램과 함께 함수 / 방법을 사용할 수 있습니다. 당신의 전화.
  • 기본 허점 은 금지되어 있습니다.
  • 가능하면 코드 테스트 링크를 추가하십시오.
  • 또한 필요한 경우 설명을 추가하십시오.

문자열 배열 (한 줄에 1 문자열)을 출력 할 수 있습니까?
얽히고 설킨

@Shaggy 죄송합니다.이 경우 줄 바꾸기가 포함 된 단일 문자열을 반환하거나 결과를 출력해야합니다. 나는 이것을 도전에 규칙으로 추가했다.
Kevin Cruijssen

걱정 마세요, 케빈; 몇 바이트를 절약 할 수 있는지 확인하기 위해 팔을 돌리고있었습니다.
얽히고 설킨

3
@Shaggy Hehe. 몇 바이트를 절약하려는 목적 외에 코드 골프 챌린지에서 질문해야 할 다른 이유는 무엇입니까? ;)
Kevin Cruijssen

8
하, 대단해. 나는 왜 그 대답이 갑자기 많은 주목을 받는지 궁금했습니다. 감사!
Carcigenicate

답변:


7

SOGL V0.12 , 12 바이트

9{SUē↕∑}¹№╬«

여기 사용해보십시오! 설명:

9{     }      9 times do
  SU            push "1234567890"
    ē           push e, predefined with the input, which defaults to 0, and then increase it
     ↕          get that many spaces
      ∑         join the string of digits with those spaces
        ¹     collect the results in an array
         №    reverse the array vertically
          ή  palindromize vertically with 1 overlap

오 좋은, 이것은 허용되는 답변보다 짧습니다. 흠, 답변이 접수 된 후 몇 개월 동안 더 짧은 답변에 대한 정책은 무엇입니까? 이것은 이제 수표를 받습니까 (현재 생각되는 대답에 불공평합니다), 아니면 다른 것을해야합니까? 상관없이 훌륭한 답변! 나에게서 +1
Kevin Cruijssen

@KevinCruijssen 일반적으로 가장 좋은 방법은 허용되는 답변을 업데이트하는 것입니다. 그러나 몇 가지 새로운 기능을 사용하기 때문에 어느 쪽이든 선택해야 할 이유가 있습니다.
dzaima

62

파이썬 2 , 59 57 56 55 바이트

i=8;exec"print(' '*abs(i)).join('1234567890');i-=1;"*17

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

@Leaky Nun은이 일을 많이 도와주었습니다. @Praind 1 바이트를 절약 할 수있는 방법을 제안했는데 이전에 생각했지만 편집을 잊어 버렸습니다.


설명

  • i=8- 8라는 변수에 값 을 할당합니다 i.

  • exec"..."*17-해당 코드 블록 ( ...)을 17 번 실행하십시오.

  • print(...) -결과를 출력합니다.

  • ' '*abs(i)-공백이 반복되는 문자열을 만듭니다 |i|.

  • .join('1234567890')-위에 만든 문자열을 숫자 사이에 공백이 삽입 1234567890되도록 인터리브하십시오 |i|.

  • i-=1-감소 i하고 17 회 실행하여 도달하여 도달 -8하여 반복적 인 패턴을 만듭니다 abs().



23
이것은 모든 골프 언어 imho에서 25 바이트보다 인상적인 농장입니다.
Jylo

4
@Jylo Thanks, 그러나 25 바이트 솔루션은 저자가 만든 많은 골프 노력을 보여주기 때문에 매우 인상적입니다. 먼저 소스의 각 캐릭터가 무엇을 의미하는지 알아야합니다. 그러면 그들이 얼마나 아름답게 골프를 쳤는지 이해할 것입니다.
Mr. Xcoder

2
@JasonChen 아니요, Python은 C와 같은 언어에 고유하기 때문에 구문을 허용하지 않습니다.
Mr. Xcoder

5
가능한 영감 : exec 55 바이트 없이 수행 할 수 있습니다 . 비슷한 방법 사용하여 Python 3을 57 바이트로 줄 였습니다. 생략하여 더 짧은 얻을 수있는 확실한 방법을 보지 못했지만 exec가능성으로 언급 할 것이라고 생각했습니다.
ShadowRanger

32

Vim, 35 바이트 :

i1234567890<esc>qqYP:s/\d/& /g
YGp{q7@q

설명:

i1234567890<esc>    " insert '1234567890'
qq                  " Record the following into register 'q'
  Y                 "   Yank a line
   P                "   Paste it above us
    :s/\d/& /g      "   Put a space after each number
Y                   "   Yank this line
 G                  "   Move the end of the buffer
  p                 "   Paste the line
   {                "   Move the beginning of the buffer
    q               " Stop recording
     7@q            " Call macro 'q' 7 times

6
나는 이것이 승자가 아니라는 것을 신경 쓰지 않고 아름답습니다.
MrDuk

@MrDuk 감사합니다! 나는 당신이 그것을
좋아해서

21

05AB1E ,  14  13 바이트

17F9ÝÀN8αð×ý,

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

설명

17F            # for N in [0 ... 16] do
   9Ý          # push [0 ... 9]
     À         # rotate left
      N8α      # compute the absolute difference between N and 8
         ð×    # push that many spaces
           ý   # merge the list of digits with the space string as separator
            ,  # print

1
흠 ... 필요하지 않은 경우 SOGL을 이길 수 있습니다 s... 문자열이 목록이나 문자열이있는 목록을 결합하는 것이 합리적입니까? Adnan에 개선을 제안하겠습니다. 아, 그리고 거기 .∊에 대해 û».
Outgolfer Erik

@EriktheOutgolfer : 또는 내 방법을 전환하고 필요한 1 바이트를 저장할 수 있습니다 :)
Emigna

죄송합니다. 이미 투표했습니다.
Outgolfer Erik

3
그것은 내가 다시
찬성을 받았음을

4
8F9ÝÀNð×ý}».∊나는 우주선을 깎았 다! 그리고 12 바이트 편집을 제안하는 것에 모두 흥분했습니다.
매직 문어 Urn

20

C64 ASM, 358 바이트 (기본 바이트로 컴파일 된 102 바이트)

이것은 명백한 한계로 인해 얻을 수있는 가장 가까운 것입니다.

C64

jsr $E544
lda #9
sta $FD
nl1: jsr dl
jsr il
dec $FD
bne nl1
inc $FD
nl2: ldy $FD
cpy #9
bne nt1
bl: jmp bl
nt1: iny
sty $FD
jsr dl
jsr il
jmp nl2
dl: clc
ldx #$31
ldy #0
lp: txa
sm: sta $0400, y
inx
cpx #$31
bne c1
rts
c1: cpx #$3A
bne nt2
ldx #$30
clc
nt2: tya
adc $FD
cmp #40
bcc c2
rts
c2: tay
jmp lp
il: lda sm+1
adc #39
bcc nc
inc sm+2
nc: sta sm+1
rts

(아마도 약간 최적화되었을 수 있습니다)


PPCG에 오신 것을 환영합니다! 예쁘게 게시하려면 코드 태그를 사용하십시오. 당신이 글을 편집했습니다. 변경 사항이 적용되면 편집을 클릭하여 변경된 내용을 볼 수 있습니다.
Евгений Новиков

방금 확인했으며 첫 번째 줄과 마지막 줄에 82 열이 필요하므로 80 cols PET에도 맞지 않습니다.
Shaun Bebbers

17

TSQL, 220 148 바이트

ZLK의 개선 사항 :

DECLARE @ VARCHAR(MAX)=''SELECT TOP 17@+=REPLACE('1@2@3@4@5@6@7@8@9@0','@',SPACE(ABS(9-RANK()OVER(ORDER BY object_id))))+'
'FROM sys.objects PRINT @

산출:

1        2        3        4        5        6        7        8        9        0
1       2       3       4       5       6       7       8       9       0
1      2      3      4      5      6      7      8      9      0
1     2     3     4     5     6     7     8     9     0
1    2    3    4    5    6    7    8    9    0
1   2   3   4   5   6   7   8   9   0
1  2  3  4  5  6  7  8  9  0
1 2 3 4 5 6 7 8 9 0
1234567890
1 2 3 4 5 6 7 8 9 0
1  2  3  4  5  6  7  8  9  0
1   2   3   4   5   6   7   8   9   0
1    2    3    4    5    6    7    8    9    0
1     2     3     4     5     6     7     8     9     0
1      2      3      4      5      6      7      8      9      0
1       2       3       4       5       6       7       8       9       0
1        2        3        4        5        6        7        8        9        0

DECLARE @ VARCHAR(MAX)=''SELECT TOP 17@+=REPLACE('1@2@3@4@5@6@7@8@9@0','@',SPACE(ABS(9-RANK()OVER(ORDER BY object_id))))+' 'FROM sys.objects PRINT @
ZLK

교체 sys.objectssysobjects, 그리고 함께 1object_id` id나는 짧아 테이블을 찾았다 sys스키마, 아무것도하지만, 짧은했다 열로 짧게sysobjects
Jaloopa

그리고 내부 CAST( POWER(10))를VARCHAR
Jaloopa

사실, 사용하여 물건을 대체 할 모든 것을 방지 LOG10하고 REPLICATE:DECLARE @o VARCHAR(MAX)=''SELECT TOP 17 @o+=REPLACE('1@2@3@4@5@6@7@8@9@0','@',replicate(' ',LOG10(POWER(10,ABS(ROW_NUMBER()OVER(ORDER BY id)-9)+1)/10)))+' 'FROM sysobjects PRINT @o
Jaloopa

변수 이름을 변경하여 @3자를 깎을 수 있습니다 .
Bridge

14

APL (Dyalog) , 22 바이트

↑∊¨(1+|¯9+⍳17)↑¨¨⊂1⌽⎕D

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

⎕DD 0에서 아홉 igits

1⌽ 한 단계 오른쪽으로 회전 (끝에 0을 넣음)

 동봉 (단위로 취급)

(... )↑¨¨ 에 대한 이 숫자에서 많은 문자를 가지고 글자를 :

⍳17 1에서 17

¯9+ 구를 빼다

| 절대 값을 찾으십시오

1+ 하나 추가

∊¨ 각각 입대 (평평하게하다)

 깊이의 한 층을 계급 수준으로 변경 (매립)


3
이와 같은 컴팩트 한 언어에서 하나를 추가하는 데 심각하게 2 바이트가 필요합니까?
aschepler

3
@aschepler 예. APL은 골프 언어가 아니며 증분 기본 요소가 없습니다. J는 그렇지만 2 바이트가 걸립니다. >:.
Adám

4
APL is not a golfing language... ↑⊃¨,/¨(1+|¯9+⍳17)↑¨¨⊂1⌽⎕D... ಠ_ಠ
Alexander

1
@Alexander 다시 한 번 관심을 가져 주셔서 감사합니다. 나는 3 바이트를 골프 수 있습니다.
Adám


12

Java 11 (JDK) , 98 바이트

o->{for(int i=-9;++i<9;)System.out.println("".join(" ".repeat(i<0?-i:i),"1234567890".split("")));}

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

  • 이제 기본을 가지고 JDK (11)로 전환하여 -14 바이트 String::repeat.

이전 대답은 ( 자바 (오픈 JDK 8) ), (113) 112 바이트

o->{for(int i=-9;++i<9;)System.out.printf("".join("%1$"+(i<0?-i:i>0?i:"")+"s","1234567890".split(""))+"%n","");}

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

설명

나는 기본적으로 다음과 같은 String17 번 구성하고 있습니다 ( N실제 값이 아닌 변수입니다).

"1%1$Ns2%1$Ns3%1$Ns4%1$Ns5%1$Ns6%1$Ns7%1$Ns8%1$Ns9%1$Ns0%n"

각 숫자 사이의 공백 수는 %1$Ns어디 에서 합쳐 지는지 예상되는 모든 N숫자입니다.

%1$Ns기본적으로 "첫 번째 인수를 취하고 길이가 최소가 될 때까지 채 웁니다 N"를 의미합니다. 또한 %1$0s지원되지 않으므로에 대한 특별한 경우 %1$s0있습니다.

마지막으로 단일 인수를 사용하여 해당 문자열을 ""서식 인쇄합니다 . 포맷터는 항상 같은 빈 문자열을 재사용하여 필요에 따라 공백으로 채 웁니다.

저장

  • Kevin Cruijssen 덕분에 1 바이트

2
좋은 대답입니다! BTW, 나는 명시 적으로 사용되지 않는 빈 매개 변수가 허용되는 문제에 언급, 그래서 당신은 대체 할 수 ()->o->바이트를 저장합니다. :)
Kevin Cruijssen

당신은 만들 수 oint루프에 대한 귀하의에서 사용? for(o=-9;++o<9;)
Winter

2
@Winter No. 챌린지에 " 미사용 " 이라고 표시되어 있으므로 값을 사용하지 않더라도 매개 변수를 사용합니다.
Olivier Grégoire

@ OlivierGrégoire이 게시물 codegolf.meta.stackexchange.com/questions/12681/…에 링크되어 있으며이 게시물은 비어 있어야합니다 (int는 0).
Winter

@Indeed 실제로, 그러나 도전 자체는 "미사용"이라고 말합니다. 챌린지 오버 룰의 특정 판결이 기본값입니다.
Olivier Grégoire

11

Japt -R , 19 18 16 14 13 바이트

Aõ%A
£qYçÃÔÅê

그것을 시험 하거나 온라인으로 시도하십시오


설명

A             :10
 õ           :Range [1,10]
  %A         :Modulo each by 10
\n           :Assign to variable U
£            :Map each element at 0-based index Y
 q           :  Join U with
  Yç         :   Space repeated Y times
    Ã        :End map
     Ô       :Reverse
      Å      :Slice off first element
       ê     :Mirror
             :Implicitly join with newlines and output

2
좋은. 내 16 바이트 솔루션은9ÆAõ%A qXîÃw ê ·
ETHproductions

8

자바 스크립트 (ES2017), 83 73 72 68 바이트

10 바이트를 절약 해 주셔서 감사합니다. Shaggy 1 바이트를 절약 해 준 Craig 에게 감사합니다 . 감사합니다 4 바이트를 저장합니다.

for(i=-9,a="";i++<8;)a+=[...`1234567890
`].join("".padEnd(i<0?-i:i))

for(i=-9,a="";i++<8;)a+=[...`1234567890
`].join("".padEnd(i<0?-i:i))

console.log(a);
.as-console-wrapper { max-height: 100% !important; top: 0; }
.as-console-row:after { display: none !important; }


에 polyfill을 사용하여 1 바이트를 절약하십시오 Math.abs. 또한 a목록을 하드 코딩하지는 않았지만 기본 설정입니다.a=[...Array(10).keys()];for(i=-8;i<9;i++)console.log(a.join(' '.repeat(i<0?-i:i)))
Thomas W

1
일부 바이트를 저장[..."1234567890"].join("".padEnd(i<0?-i:i))
얽히고 설킨

@Shaggy 감사합니다. 그것은 10 바이트를 절약했습니다. :)
Tushar

1
@ThomasW는 : [...Array(10).keys]0마지막 없습니다, 첫 번째 요소로.
얽히고 설킨

1
당신은 문자열의 결과를 저장 당신의 방법을 사용하는 대신 로그인 바이트를 저장할 수 있습니다 : for(i=-8,s="";i<9;i++)s+=[..."1234567890"].join("".padEnd(i<0?-i:i))+`X`여기서 X실제 개행 문자입니다
크레이그 아이 레

7

Brachylog , 30 29 28 바이트

Ị↺{∧≜;Ṣj₍g;?↔zcc}ᶠ⁹↔;XcP↔Pẉᵐ

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

Leaky Nun 덕분에 1 바이트를 절약했습니다 .

설명

Ị↺                               The string "1234567890"
  {               }ᶠ⁹            Find the first 9 outputs of:
   ∧≜                              Take an integer
       ;Ṣj₍                        Juxtapose " " that number of times
           g;?↔z                   Zip that string of spaces with "1234567890"
                cc                 Concatenate twice into one string
                    ↔            Reverse the resuling list
                     ;XcP↔P      Palindromize the list (concatenate X to it into the list P,
                                   P reversed is still P)
                           ẉᵐ    Map writeln


@LeakyNun 나는 큰 "이 정확한 텍스트를 인쇄"에 붙어 우리가 후행 줄을 가질 수 있다는 것을 읽지 못했습니다 ...
치명적인


1
@LeakyNun 왜 자신의 답변을 게시하지 않았습니까?
Fatalize

7

, 18 바이트

F⁹⪫⁺…I¹:⟦0¶⟧× ι‖B↑

온라인으로 사용해보십시오! 링크는 자세한 버전의 코드입니다. 설명:

F⁹      Repeat 9 times (i = loop variable)
  ⪫       Join
   ⁺       Concatentate
    …I¹:    All the characters from str(1) below ":" (i.e. to "9") as a list
    ⟦0¶⟧    A list whose element is the string "0\n"
   × ι     With i spaces
‖B↑     Reflect everything upwards but without duplicating the top line

참고 : 전에 구분 기호가 필요 Cast(1)하기 때문에 동일한 수의 바이트 를 사용합니다."1"":"


7

R , 108 바이트

for(i in abs(-8:8))cat(paste0(el(strsplit("1234567890","")),paste(rep(" ",i),collapse=""),collapse=""),"\n")

문자열을 붙여 넣고 접는 것입니다.

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

편집 : 문제를 지적한 Challenger5에 감사드립니다. 지금 고쳤습니다.

편집 2 : bouncyball 덕분에 바이트를 저장했습니다.


사이트에 오신 것을 환영합니다! :)
DJMcMayhem

2
이것은 잘 보이지 않습니다-중간 줄에는 공백이 없어야합니다.
Esolanging 과일

@ Challenger5 당신이 맞아요! 사용하여 고정 paste0하는 대신 paste바이트 :( 추가 할 수 있도록했다
Probel

1
사용하여 2 바이트를 저장 el: el(strsplit("1234567890",""))대신strsplit("1234567890","")[[1]]
bouncyball

인수를 paste사용하고 70 바이트 로 가져 오기 위해 조금 더 수행 하여 명령문 중 하나를 제거 할 수 있습니다.sepcat
Giuseppe



6

자바 (8) 235 234 206 163 바이트

interface A{static void main(String[]a){for(int i=-8;i<9;i++){String s="";for(int j=1,k;j<10;j++){s+=j;for(k=0;k<(i>0?i:-i);k++)s+=" ";}System.out.println(s+0);}}}

업데이트 : Leaky Nun 덕분에 -28 바이트!
업데이트 2 : Leaky Nun 덕분에 -43 바이트!

언 골프 :

interface A {
    static void main(String[] a) {
        for (int i = -8; i < 9; i++) {
            String s = "";
            for (int j = 1, k; j < 10; j++) {
                s += j;
                for (k = 0; k < (i > 0 ? i : -i); k++)
                    s += " ";
            }
            System.out.println(s + 0);
        }
    }
}

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

편집 : 이전 코드가 잘못되었습니다! 코드를 골프를 타는 동안 실수를 했으므로 이제 의도 한대로 작동해야합니다!


4
PPCG에 오신 것을 환영합니다! Java의 골프 팁<모든 언어>의 골프 팁은 읽는 것이 흥미로울 수 있습니다. :) 골프를 칠 수있는 것은을 제거하고 public불필요한 공간을 제거하는 것입니다. 개선해야 할 것이 더 있지만, 팁을 읽고 자신을 개선 할 수있는 곳을 살펴 보는 것이 좋습니다. 다시 한 번 환영하며 즐거운 시간을 보내십시오! :)
Kevin Cruijssen

2
흠, 또한 올바른 코드를 게시 했습니까? 코드를 TryItOnline에 복사하여 붙여 넣을 때 올바른 출력을 제공하지 않습니다.
Kevin Cruijssen

1
Aww 젠장, 나는 골프를 치는 동안 뭔가 잘못했다! 나는 이것을 고칠 것이다!
Alex Ferretti



6

껍질 , 21 바이트

mΣṪ`:§+↔tḣR8' ṁs`:0ḣ9

이것은 STDOUT으로 인쇄하는 전체 프로그램입니다. 온라인으로 사용해보십시오! 후행 공간이 많이 있습니다.

설명

Husk에는 여전히 2 개의 인수 범위 함수와 같은 필수 요소가 많이 없기 때문에이 솔루션의 일부는 약간 해킹 적입니다.

mΣṪ`:§+↔tḣR8' ṁs`:0ḣ9
              ṁs`:0ḣ9  This part evaluates to the string "1234567890".
                   ḣ9   Range from 1 to 9.
                `:0     Append 0.
              ṁs        Convert each number to string and concatenate.
     §+↔tḣR8'          This part evaluates to a list like ["  "," ",""," ","  "]
                       but with 17 elements instead of 5.
          R8'           A string of 8 spaces.
         ḣ              Take prefixes.
     §+                 Concatenate
       ↔                the reversal and
        t               tail of the prefix list, palindromizing it.
  Ṫ                    Take outer product of the two lists
   `:                  with respect to flipped prepeding.
                       This prepends each digit to each string of spaces.
mΣ                     Map concatenation over the results, computing the rows.
                       Implicitly join with newlines and print.

당신은 대체 할 수 ṁs`:0ḣ9와 함께 uṁsḣ10한 적은 바이트와 문자열 "1234567890"을 생성하기 위해!
Sophia Lechner

6

T-SQL 145 152 바이트

DECLARE @ VARCHAR(MAX)=''SELECT TOP 17@+=REPLACE('1x2x3x4x5x6x7x8x9x0','x',SPACE(ABS(number-8)))+'
'FROM master..spt_values WHERE type='P'PRINT @

사용하도록 업데이트 되었습니다 :

  • master..spt_values숫자를 생성하려면 ( WHERE type = 'P'0부터 시작하여 항상 연속적 임)
  • @ZLK의 TOP 17아이디어
  • 인쇄 (규칙 준수-문자열 목록 없음)
  • @JanDrozen의 문자열에 캐리지 리턴을 포함시키는 훌륭한 아이디어 (1 바이트로 계산했습니다-Windows CRLF 무엇?)
  • 변수 이름에 @를 사용하는 @Bridge의 아이디어-이 모든 트릭!

결과 :

1        2        3        4        5        6        7        8        9        0
1       2       3       4       5       6       7       8       9       0
1      2      3      4      5      6      7      8      9      0
1     2     3     4     5     6     7     8     9     0
1    2    3    4    5    6    7    8    9    0
1   2   3   4   5   6   7   8   9   0
1  2  3  4  5  6  7  8  9  0
1 2 3 4 5 6 7 8 9 0
1234567890
1 2 3 4 5 6 7 8 9 0
1  2  3  4  5  6  7  8  9  0
1   2   3   4   5   6   7   8   9   0
1    2    3    4    5    6    7    8    9    0
1     2     3     4     5     6     7     8     9     0
1      2      3      4      5      6      7      8      9      0
1       2       3       4       5       6       7       8       9       0
1        2        3        4        5        6        7        8        9        0

(교체 아이디어에 대한 @JanDrozen에게 감사드립니다)


이것은 좋은 대답입니다! 사이트에 오신 것을 환영합니다 :)
DJMcMayhem

감사. 나는 우리 중 일부가 여기에서 우리 자신의 언어를 발명 한 것을 본다 :)
리버스 엔지니어

1
이 답변과 다른 답변의 혼합이 최적입니다 SELECT TOP 17REPLACE('1x2x3x4x5x6x7x8x9x0','x',SPACE(ABS(9-RANK()OVER(ORDER BY object_id))))FROM sys.objects( 예 : 인쇄 할 필요가 없다고 가정).
ZLK

Aha @ ZLK-몇 가지 멋진 트릭-TOP 17, RANK OVER 및 sys.objects-감사합니다!
리버스 엔지니어

6

클로저, 126 99 바이트

벙어리 실수 몇 가지를 수정하여 -27. 외부 사용은 a필요하지 않았으므로 a완전히 제거 하고 apply str한 번만 쓸 수있었습니다 . 또한 메인 함수에 함수 매크로를 사용하여 바이트를 절약했습니다. 또한 Math/abs리 바인딩 대신 호출을 인라인했습니다 n-spaces.

기본적으로 @ Mr.Xcoder의 Python 아이디어의 Clojure 포트. 돌이켜 보면 원래 다이아몬드 챌린지에 abs/ range메소드를 사용해야 했지만 버그가있는 출력을 생성하지 않았을 수 있습니다!

꽤 간단합니다. 현재 행에 따라 여러 개의 공백으로 숫자 문자열을 조인합니다.

#(doseq[n(range -8 9)](println(clojure.string/join(apply str(repeat (Math/abs n)\ ))"1234567890")))

(defn bugged []
  (doseq [n-spaces (range -8 9)]
    (println
        (clojure.string/join
          ; "String multiplication"
          (apply str
                 (repeat (Math/abs n-spaces) \space))
          "1234567890"))))


5

Mathematica, 92 바이트

Column@Join[Reverse@(s=Row/@Table[Riffle[Range@10~Mod~10,""<>Table[" ",i]],{i,0,8}]),Rest@s]

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

ctrl-v
를 사용 하여 코드 복사 / 붙여 넣기 Shift + Enter를 눌러 실행


TryItOnline 링크를 추가 할 수 있습니까?
Kevin Cruijssen

@KevinCruijssen Mathematica는 무료 언어 가 아니며 Mathics가 작동하지 않는 것 같습니다 .
Leaky Nun

@LeakyNun 아 그래, 고마워. MartinEnder가 TIO 링크를 게시하는 것을 보았지만 실제로는 Mathics 링크였습니다.
Kevin Cruijssen

1
@Kevin Cruijssen 예, 물론 지침과의 링크를 추가했습니다
J42161217

5

C, 97 바이트

i=-9;main(j){for(;++i<9;putchar(10))for(j=0;++j<11;printf("        "+8-abs(i)))putchar(48+j%10);}

컴파일러는 아마도이 코드에 대해 많은 불만을 제기 할 것입니다 . 광산은 4 가지 유형의 7 가지 경고를 던졌습니다. 나중에 코드를 개선 할 수 있습니다.

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


5

C (gcc) , 76 바이트

f(x,y){for(y=-9;++y<9;puts(""))for(x=10;x++;printf("%-*d",abs(y)+1,x%=10));}

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

후행 공백을 출력하며 이는 정상입니다.

동적 길이의 왼쪽 정렬 필드를 사용하여 숫자를 인쇄합니다. 이것이 형식 문자열 %-*d입니다.

내부 루프는 종료 조건을 "단순화"하기 위해 재미있는 초기화 (10에서 시작, 10의 배수는 양호)가 있습니다.


4

, 21 20 19 18 바이트

F⁹«F…¹χ⁺κ… ι0⸿»‖B↑

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

자세한 버전으로 연결합니다 . 기본적으로 나는 그림의 아래쪽 부분을 만든 다음 텍스트를 반영합니다.


1
질문을 보았을 때 나는 대답을보기 전에 차콜에서 직접 시도해 보았습니다. 나는 21 바이트 답변으로 시작했지만 20 바이트로 골프를 쳤다.
Neil

@Neil :-D 자, 이제 19 바이트입니다!
Charlie

네, 방금 저 골프를 찾았어요 나는 또한 E…⁹⪫E…·¹χI﹪κχ× ι‖B↑(19 바이트)를 조사했지만 통역사는 그것을 좋아하지 않는 것 같습니다 (내가 잘못한 것을 볼 수는 없습니다).
Neil

오, Range는 두 가지 주장을 취합니다.
Neil

1
Map빨간 청어로 밝혀 졌으므로 이제 18 바이트 답변을 게시했습니다.
Neil

4

CJam , 21 바이트

A,(+aH*ee{:\8-zS**n}/

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

설명

A,     e# Get [0 1 2 ... 9].
(+     e# Rotate the 0 to the end.
aH*    e# Wrap in an array and repeat 17 times.
ee     e# Enumerate. This pairs each copy of the array with its index in
       e# the list.
{      e# For each [index array] pair...
  :\   e#   Unwrap the pair and swap its order.
  8-z  e#   Get the absolute difference of the index from 8.
  S*   e#   Get a string of that many spaces.
  *    e#   Riffle the list of digits with the string of spaces.
  n    e#   Print it with a trailing linefeed.
}/

1
대체 솔루션 (또한 21 바이트) :9{S*A,(+\*}%_W%);\+N*
Esolanging Fruit

4

배치, 163 바이트

@set s=1 2 3 4 5 6 7 8 9 0
@set t=         
@for %%l in (9 7)do @for /l %%i in (1,1,%%l)do @call:%%l
:7
@set t=  %t%
:9
@set t=%t:~1%
@call echo %%s: =%t%%%

참고 : 첫 줄은 9 칸으로 끝납니다. 설명 : 크리에이티브 라인 번호 매기기를 사용합니다! 첫 번째 루프는 9 번 실행되고 매번 공백을 삭제해야하며, 두 번째 루프는 8 회 실행되고 매번 공백을 추가해야합니다. 전자는 7 회 실행하고 8 회 넘어져 달성되는 반면 후자는 2 개의 공백을 추가하고 넘어져서 그 중 하나를 다시 삭제함으로써 달성됩니다.


4

SOGL V0.12 , 14 바이트

ā9{SUčf@*∑Κ}╬Æ

여기 사용해보십시오!

설명:

ā               push an empty array
 9{        }    9 times do
   SU             push "1234567890"
     č            chop into characters
      f@*         get current iteration (0-based) amount of spaces
         ∑        join with that
          Κ       prepend this to the array
            Β  palindromize vertically with 1 overlap


4

PowerShell , 30 바이트

8..0+1..8|%{1..9+0-join' '*$_}

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

8,7,6...2,1,0,1,2...8그런 다음 범위를 구성하여 각 숫자를 반복합니다. 내부 루프는 우리의 다양한 구성 1..9으로 연결된를 0다음 -join공간의 해당 번호와 함께 범위의 숫자. 각 문자열은 파이프 라인에 남아 있으며 프로그램 완료시 출력이 내재됩니다.


1
좋은 대답입니다! Powershell은 갑자기 더 골프처럼 느낀다 :)
Mr. Xcoder
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.