쉬운 이진 삼각형


18

양의 정수를 입력으로 받으면 다음 삼각형 n>=1의 첫 번째 n행을 출력하십시오 .

                  1
                1 0 1
              0 0 1 0 0
            1 1 1 0 1 1 1
          0 0 0 0 1 0 0 0 0
        1 1 1 1 1 0 1 1 1 1 1
      0 0 0 0 0 0 1 0 0 0 0 0 0
    1 1 1 1 1 1 1 0 1 1 1 1 1 1 1
  0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1

가운데 열이 뒤집힌 것을 제외하고 행은 모두 0과 1 사이에서 번갈아 나타납니다.

테스트 사례

  • 입력 :3

  • 출력 :

        1
      1 0 1
    0 0 1 0 0
    
  • 입력 :10

  • 출력 :

                      1
                    1 0 1
                  0 0 1 0 0
                1 1 1 0 1 1 1
              0 0 0 0 1 0 0 0 0
            1 1 1 1 1 0 1 1 1 1 1
          0 0 0 0 0 0 1 0 0 0 0 0 0
        1 1 1 1 1 1 1 0 1 1 1 1 1 1 1
      0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
    1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1
    

귀하의 코드는 모두 작동해야합니다 n<100. 이것은 이므로 바이트 단위의 가장 짧은 코드가 이깁니다!

후행 공백 / 개행 및 선행 개행이 허용됩니다!


초과 공백은 허용됩니까? 그렇다면 허용되는 경우 (선간 / 선행 / 후행 / 훈련 선)?
Jonathan Allan

1
숫자 목록을 반환 할 수 있습니까?
아웃 골퍼 Erik

8
@EriktheOutgolfer 목록 목록은 괜찮습니다!

1
목록의 목록이 훌륭하기 때문에 중심 맞춤이 필요하지 않다고 가정합니다.
Luis Mendo

1
그것은 당신의 도전이지만, 내 의견으로는 목록의 목록을 허용 할만큼 유연하다면 형식화에 엄격한 의미가 없습니다
Luis Mendo

답변:


7

젤리 , 7 바이트

Ṭ=Ḃµ€ŒB

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

Outgolfer Erik 덕분에 -1 바이트

설명

Ṭ=Ḃµ€ŒB  Main link
    €    For each element in (implicit range of) the input:
Ṭ        List 1s and 0s with 1s in the indices in the left argument (generates `[0, 0, ..., 1]`)
 =Ḃ      Is this equal to `(z % 2)` where `z` is the range number? (Every other row is flipped)
     ŒB  Reflect each row

당신은 대체 할 수 ¶Çµ-1.
아웃 골퍼 Erik

@EriktheOutgolfer 감사합니다!
HyperNeutrino


3

젤리 , 8 바이트

⁼€=ḂŒḄµ€

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

HyperNeutrino 덕분에 -2 .


오 진지하게 .... 두 번째 닌자 분할 : P
Jonathan Allan

@JonathanAllan 정말 규칙이 바뀌 었습니다 ... btw 이것이 골프도 가능하다고 생각합니다.
Erik the Outgolfer

그래, 나는 15 바이트 그리드 다음 10 바이트 목록을했다 ...
Jonathan Allan


¬^Ḃ내가 생각했던 것보다 내가 더 많은 골프를 =Ḃ했기 때문에 명백하게 편집 될 수 있기 때문 NOT (XOR (A B))이다IFF (A B)
HyperNeutrino

3

파이썬 2 , 50 바이트

lambda n:[[i%2]*i+[~i%2]+i*[i%2]for i in range(n)]

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

파이썬 2 , 53 바이트

lambda n:[(([i%2]*i+[~i%2])*2)[:-1]for i in range(n)]

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

파이썬 2 , 67 바이트

lambda n:[[[i%2,~i%2][j==i]for j in range(2*i+1)]for i in range(n)]

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


2
Haha, 이제 우리는 묶여 있습니다 :)
Mr. Xcoder

65 바이트 (더 긴 것)
Mr. Xcoder

3

Japt , 12 9 바이트

õÈÇ¥Y^uÃê

온라인으로 테스트하십시오!

젤리에 비해 상당히 슬프지만 Japt에는 아무것도 없기 때문에 내가 가진 것과 관련하여해야합니다 ...

설명

 õÈ   Ç   ¥ Y^ uà ê
UõXY{XoZ{Z==Y^Yu} ê}      Ungolfed
                          Implicit: U = input number
Uõ                        Create the range [1..U].    [1, 2, 3, 4]
  XY{              }      Map each item X and 0-index Y in this to
     Xo                     Create the range [0..X).  [[0], [0, 1], [0, 1, 2], [0, 1, 2, 3]]
       Z{      }            Map each item Z in this to
         Z==Y                 Z is equal to Y         [[1], [0, 1], [0, 0, 1], [0, 0, 0, 1]]
             ^Yu              XORed with Y % 2.       [[1], [1, 0], [0, 0, 1], [1, 1, 1, 0]]
                  ê         Bounce.                   [[1],
                                                       [1, 0, 1],
                                                       [0, 0, 1, 0, 0],
                                                       [1, 1, 1, 0, 1, 1, 1]]
                          Implicit: output result of last expression

내장을위한 Hooray : P : P : P
HyperNeutrino

Yaay, 누군가가 Python-Jelly-Python-Jelly 체인을 끊었습니다!
Mr. Xcoder

@ Mr.Xcoder Jelly가 실제로 파이썬으로 구현 된 곳. : p
Outgolfer Erik

3

수학, 77 바이트

Table[CellularAutomaton[51,{{1},0},#,{All,All}][[i]][[#-i+2;;-#+i-2]],{i,#}]&

@ 나무 가 48 바이트로 줄어 들지 않았습니다!

매스 매 티카, 48 바이트

#&@@@NestList[CellularAutomaton@51,{{1},0},#-1]&

허 나는 셀룰러 오토마타라고 생각하지 않았습니다. 좋은!
HyperNeutrino

2
골퍼와 같은 것 : #&@@@NestList[CellularAutomaton@51,{{1},0},#-1]&, 48 바이트
나무가 아님

3

Pyth , 14 바이트

2 바이트를 절약 한 @Jakube에게 감사합니다!

ms_+Bm%d2d%hd2

여기 사용해보십시오!

Pyth , 15 바이트

-1 바이트를 위해 @Jakube에게 감사드립니다.

m++K*d]%d2%td2K

여기에서 시도하십시오.

Pyth , 16 바이트

m++K*d`%d2`%td2K

여기에서 시도하십시오.


]첫 번째 코드에서 두 번째 코드를 제거하십시오 .
Jakube

@Jakube 그래, 고마워 요소를 목록에 추가하기위한 자동 목록을 잊었습니다.
Mr. Xcoder

그리고 여기에 14 바이트 솔루션이 있습니다 :ms_+Bm%d2d%hd2
Jakube

@Jakube 네, 지금은 분기에 대해 생각하고 있었지만 모바일을 사용하고 있었기 때문에 할 수 없었습니다. 다시 한번 감사드립니다!
Mr. Xcoder

3

R , 73 바이트

주세페에게 감사합니다! 잘 잡았다.

n=scan();for(i in 1:n)cat(c(rep(" ",n-i),x<-rep(1-i%%2,i-1)),i%%2,x,"\n")

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

R , 78 바이트

n=scan();for(i in 1:n)cat(x<-c(rep(" ",n-i),rep(1-i%%2,i-1)),i%%2,rev(x),"\n")

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

R , 82 바이트

n=scan();for(i in 1:n){j=i%%2;x=c(rep(" ",n-i),rep(1-j,i-1));cat(x,j,rev(x),"\n")}

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

R , 110 바이트-stdout으로 출력

m=matrix(x<-rep_len(0:1,n<-scan()),n,n-1);m[upper.tri(m,T)]=" ";for(i in 1:n)cat(rev(m[i,]),1-x[i],m[i,],"\n")

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

R , 130 바이트-파일로 출력

m=matrix(x<-rep_len(0:1,n<-scan()),n,n-1);m[upper.tri(m,T)]=" ";for(i in 1:n)cat(rev(m[i,]),1-x[i],m[i,],"\n",file="a",append=i>1)

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

콘솔에 파일을 맞추는 방법을 모른다면 파일에 쓰십시오 n==99(결과는 여기 참조 ).


2
더 큰 n을 위해 콘솔을 래핑하는 것에 대해 걱정할 필요가 없다고 생각합니다. 개인적으로 STDOUT의 출력이 정확하기 때문에, file = "a"를 버립니다.
MickyT


1

파스칼 , 181,154 바이트

@ThePirateBay 덕분에 27 바이트 절약

procedure f(n:integer);var i,j:integer;begin for i:=1to n do begin write(' ':(n-i+1)*2);for j:=1to i*2-1do write((ord(j<>i)+i)mod 2,' ');writeln()end end;

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

글 로프되지 않은

procedure f (n: integer);
    var i, j: integer;
    begin
        for i := 1 to n do
        begin
            write(' ': (n-i+1) * 2);
            for j := 1 to i*2-1 do
                write((ord(j<>i) + i) mod 2, ' ')
            writeln()
        end
    end;


1

망막 , 25 바이트

.+
$*0
0
1$`¶
T`d`10`¶.*¶

온라인으로 사용해보십시오! 설명 : 첫 번째 단계는 입력을 해당 길이의 0으로 구성된 문자열로 변환합니다. 그런 다음 두 번째 단계에서는 해당 문자열의 모든 접두사 (문자열 자체는 포함하지 않음)를 가져오고 1 앞에 접두사를 붙입니다. 그런 다음 세 번째 단계는 대체 라인에서 비트를 토글합니다.


1

05AB1E , 24 21 18 바이트

FNÉN×NÈJûIN>-úˆ}¯»

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


편집 : 글쎄, 그것은 내 첫 05AB1E 골프이므로 골프를 할 수 있다는 사실에 놀라지 않습니다. 기록 편집 :



1

Mathematica, 90 바이트

Array[(x=Table[1,f=(2#-1)];x[[⌈f/2⌉]]=0;If[#==1,{1},If[OddQ@#,x/.{1->0,0->1},x]])&,#]&


0

, 18 바이트

EN⪫IE⁺¹ι﹪⁺ι¬λ² ‖O←

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

EN              For each of the input number of rows
  ⪫             Join with spaces
   I            Convert to string
    E⁺¹ι        For each column
        ﹪⁺ι¬λ²  Calculate the digit
‖O←             Reflect to the left

0

자바 스크립트, 140 (적절한 포맷으로) 132 바이트

n=>{A=Array;a='';b=0;for(x of A(n)){for(c of A(n-b))a+=' ';for(c of A(b))a+=b%2;a+=(b+1)%2;for(c of A(b))a+=b%2;a+='\n';b++}return a}

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


모르는 경우 A=Array8 바이트를 절약 할 수 있습니다 .

좋은 지적, 나는 생각하지 않았다
David Bailey

1) 대신 첫 번째 배열 호출 (즉 , 1 바이트를 절약하는) 에서 A=Array;변수 A를 초기화 할 수 있습니다 for(x of(A=Array)(n)).2) '\n'리터럴 줄 바꾸기 로 교체하십시오 (심각한 악센트 사용), 3) 에 (b+1)%2해당하는 괄호가 필요 합니다 b+1&1.

0

자바 스크립트 (ES6) , 74 73 71 68 64 바이트

@Neil에 의해 -7 바이트

f=n=>n--?[...f(n), [...Array(n-~n)].map((v,i)=>(n+(i==n))%2)]:[]

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

라인을 하나씩 생성하는 간단한 재귀 함수. 숫자 배열로 출력합니다.


형식화 된 문자열로 출력합니다.

자바 스크립트 (ES6) , 122 (119) 118 바이트

f=(n,w=2*n+1,N=n,s=" ".repeat((N-n)*2))=>(--n?f(n,w,N)+s+[...Array(n-~n)].map((v,i)=>(n+(i==n))%2).join(" "):s+1)+"\n"

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


(n%2+(i==n))%2로 단순화 할 수 있습니다 (n+(i==n))%2.
Neil

또는 1&n^i==n작동 할 수도 있지만 테스트하지는 않았습니다.
Neil

또한 시도하십시오 n--?...:[]. (그리고 당신은 ;코드 골프 가 필요하지 않습니다 .)
Neil

2*n+1일 수도 n-~n있지만 결코 기억할 수는 없습니다.
Neil

@ 닐 감사합니다! 내가 일할 수있는 것들을 추가
Birjolaxew


0

J, 32 바이트

3 :'-.^:(2|y)(=|.)i.>:+:y'&.>@i.

온라인으로 사용해보십시오!이것은 박스 값 목록을 반환하는 익명 함수입니다.

명시 적 함수 정의는 캡 등을 제거하여 바이트를 절약한다고 생각하지만, 암묵적인 답변과 비교하여 몇 바이트를 추가 할 수 있습니다.

설명

3 :'-.^:(2|y)(=|.)i.>:+:y'&.>@i.
                              i. For i = 0 ... input - 1
3 :'-.^:(2|y)(=|.)i.>:+:y'        Explicit function: compute nth row
                    >:+:y          2n+1
                  i.               Range [0,2n+1)
             (=|.)                 Equate range to reversed range
                                    (yield 0 0 0 ... 1 ... 0 0 0)
                                   If
                                    n = 1 (mod 2)
                                   Then
                                    Negate each value
                          &.>     Box

0

05AB1E , 11 바이트

FN°SRNF_}ûˆ

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

설명

F             # for N in range [0 ... input-1] do:
 N°           # push 10^N
   S          # split to list of digits
    R         # reverse
     NF_}     # N times do: logical negation
         û    # palendromize
          ˆ   # add to global list
              # implicitly display global list

0

J , 17 바이트

(2&|~:0=i:)&.>@i.

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

박스형 배열 목록을 출력합니다.

설명

(2&|~:0=i:)&.>@i.  Input: n
               i.  Range from 0 to n, exclusive end
           & >     Unbox each and perform on each x
        i:           Range from -x to x, inclusive
      0=             Equal to 0
    ~:               Not equal
 2&|                 x mod 2
           &.>       Perform inverse of unbox (box)

0

자바 (8) 121 111 109 101 바이트

n->{String r[]=new String[n],t;for(int i=0,j;i<n;r[i++]=t+i%2+t)for(j=0,t="";j++<i;t+=i%2);return r;}

현재 바이트 점수 (101)도 이진 삼각형의 행입니다. :)

설명:

여기에서 시도하십시오.

n->{                         // Method with integer parameter and String-array return-type
  String r[]=new String[n],  //  Result String-array
         t;                  //  Temp String
  for(int i=0,j;             //  Some index-integers
      i<n;                   //  Loop (1) from 0 to `n` (exclusive)
      r[i++]=                //    After every iteration, set the next row to:
        t+                   //     `t` +
        i%2                  //     Center digit (`i` has already been raised by 1 now)
        +t)                  //     + `t` again
    for(j=0,t="";            //   Reset index `j` and the temp-String `t`
        j++<i;               //   Inner loop (2) from 0 to `i` (exclusive)
      t+=i%2                 //    Append `t` with an outer digit
    );                       //   End of inner loop (2)
                             //  End of loop (1) (implicit / single-line body)
  return r;                  //  Return resulting String-array
}                            // End of method

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