도전 :
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↑
삼각형의 거울상을 만듭니다.
×⊕ⅈ+
입력을 다시 읽을 필요가 없도록 현재 열을 사용하여 추가 선을 그립니다.
‖
추가 라인이 왼쪽을 가리 키도록 출력을 반영하십시오.