태그 보관물: geometry

geometry

다이아몬드 제작자 + n사용하여 표시 할 때 추가

도전 :

n입력 으로 정수가 주어집니다 . 주어진 숫자의 2 배인 다이아몬드를 만드십시오 n.

입력 :

입력은 정수 n이고 2 <n ≤ 3000입니다.

출력 :

출력은 문자열이되고 다음 +n사용하여 표시 할 때 추가 라인 으로 구성된 다이아몬드 형태가 됩니다.+

예 :

D (3) :

+++
  +
 +++
+++++
+++++
 +++
  +

D (5) :

+++++
    +
   +++
  +++++
 +++++++
+++++++++
+++++++++
 +++++++
  +++++
   +++
    +

D (6) :

++++++
     +
    +++
   +++++
  +++++++
 +++++++++
+++++++++++
+++++++++++
 +++++++++
  +++++++
   +++++
    +++
     +

우승 기준 :

이것은 이므로 각 프로그래밍 언어에서 가장 짧은 바이트 단위의 코드가 승리합니다.



답변

브레인 퍽 , 151 139 바이트

,[.[<]<+[>>]++++[-<++++++++>],]<[<]<<<++++++++++.>>[[>]>[-<+>]>[-<+>]>>[.>>]<<[<]<<.<<[..<<]<.>>-]>[[>]>[.>>]<<[<<]>.>>[..>>]<<,<[<]<<.>>>]

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

+을 탤리 마크로 사용하여 단항을 통해 입력을 받습니다 (포스터에서 허용 ). 내가 오래된 것보다 조금 길다고 생각했기 때문에 이것을 재 작업하기로 결정했습니다 (이것도 너무 깁니다!).

이전 버전 (151 바이트) :

>--[>+<++++++]<[->+>.<<]++++++++[-<+<++++>>]<++>>[<<.>>-[-<+<<.>>>]<[->+<]>>>+[-<.>>+<]>+[-<+>]<<<]>>[<<<<.>>[-<+<<.>>>]<[->+<]>+>>-[-<.>>+<]>-[-<+>]<]

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

입력을 시작 셀로 사용합니다. 상반기를 활용하여 후반을 도울 수있는 방법을 생각할 수 없으므로 각 루프마다 루프가 있습니다.

작동 방식 :

 >--[>+<++++++]  Create 43 ('+') two space to the left of n
 <[->+>.<<]      Print n '+'s while preserving n
 ++++++++[-<+<++++>>]<++  Create 32 (' ') and 10 ('\n')
                         Tape: 32 10 0 n 43 t
 >>
 [ Loop over the first half of the diamond
   <<.>>         Print a newline
   -[-<+<<.>>>]  Decrement n and print n spaces
   <[->+<]       Restore n
   >>>+[-<.>>+<] Increment t and print t '+'s
   >+[-<+>]<<<   Increment t again and restore it
]>>
[ Loop over the second half
  <<<<.>>        Print a newline
  [-<+<<.>>>]<   Print n spaces
  [->+<]>+       Restore and increment n
  >>-[-<.>>+<]   Decrement t and print t '+'s
  >-[-<+>]<      Decrement t again and restore it
]

그리고 단지 재미를 위해 :

+++++++++
        >
       --[
      >+<++
     ++++]<[
    ->+>.<<]+
   +++++++[-<+
  <++++>>]<++>>
 [<<.>>-[-<+<<.>
>>]<[->+<]>>>+[-<
.>>+<]>+[-<+>]<<<
 ]>>[<<<<.>>[-<+
  <<.>>>]<[->+<
   ]>+>>-[-<.>
    >+<]>-[-<
     +>]<]++
      +++++
       +++
        +

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


답변

캔버스 , 9 바이트

+×O{+×]±╪

여기 사용해보십시오!

설명 (일부 문자는 모노 스페이스로 대체되었습니다) :

+×O{+×]±╪
+×         repeat "+" input times
  O        output that
   {  ]    map over 1..input
    +×       repeat "+" that many times
       ±   interpret the array as a 2D string, and reverse it
        ╪  quad-palindromize with 1 horizontal overlap and 0 vertical overlap

답변

파이썬 3 , 95 94 75 바이트

def f(n):a=[' '*(n+~i)+'+'*(i-~i)for i in range(n)];return['+'*n]+a+a[::-1]

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


골프에 대한 나의 첫 번째 시도, 개선을위한 제안은 환영합니다.

편집 : Kevin Cruijssen 덕분에 1 바이트 절약

편집 : 바이트 수에 대한 오해 제거

편집 : Jo King과 user202729 덕분에 더 많은 바이트를 절약했습니다.


답변

05AB1E , 14 바이트

'+×sL·<'+×∊.c»

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

설명

'+×              # push "+" repeated <input> times
   sL            # push range [1 ... input]
     ·<          # multiply each element by 2 and decrement (x*2-1)
       '+×       # replace each number with the corresponding number of "+"'s
          ∊      # mirror vertically
           .c    # center
             »   # join with the "+"-row created at the start

또한 14 바이트 : L‚˜'+×ćs.∞∊.c»


답변

파이썬 3 , 79 78 바이트

def f(n):x=[('++'*i+'+').center(n*2)for i in range(n)];return[n*'+']+x+x[::-1]

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

골프 팁 팁 덕분에 .center함수 에 대해 알려주는 Python 답변이 있습니다. 문자열 목록을 반환합니다.


답변

R , 135110 96 바이트

function(n){cat("+"<n,"
",sep="")
for(i in c(1:n,n:1))cat(" "<n-i,"+"<2*i-1,"
",sep="")}
"<"=rep

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

마지막 컷으로 @JayCe.

rep기능과 같은 기존의 중위 오퍼레이터에 할당 <하거나 ^그 정도로 rep("+", n)동등 "<"("+", n)이용하여 기록 될 수 <있는 등의 중위 연산자 "+" < n및 단축 "+"<n.


답변

, 15 바이트

G→→↙N+↓‖M↑×⊕ⅈ+‖

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

G→→↙N+

+입력 높이와 폭의 거의 두 배인 역 삼각형을 인쇄합니다 .

반사 후 추가 라인에 놓 이도록 커서를 아래로 이동하십시오.

‖M↑

삼각형의 거울상을 만듭니다.

×⊕ⅈ+

입력을 다시 읽을 필요가 없도록 현재 열을 사용하여 추가 선을 그립니다.

추가 라인이 왼쪽을 가리 키도록 출력을 반영하십시오.