삭제 된 stackoverflow 질문에서 누군가가 다음을 게시했습니다.
에 교류 패턴을 인쇄하는 프로그램이나 기능을 작성 *
하고 #
주어진 정수에 기반을 n
. 몇 가지 예 :
입력 : n=1
출력 :
*
입력 n=5
출력 :
*####
###**
***##
###**
*####
입력 : n=8
출력 :
*#######
######**
***#####
####****
****####
#####***
**######
#######*
꽤 멋진 코드 골프 도전처럼 보였으므로 여기에 있습니다.
이러한 패턴은 어떻게 만들어 집니까?
첫 번째 줄은 단일으로 시작한 *
다음 n-1
후행으로 이어 #
집니다.
두 번째 줄은 다음 두 가지를 포함 *
하여, n-2
선도의 양 #
.
세 번째 줄은 세 개로 시작하고 *
그 뒤에 n-3
후행이 나타납니다 #
.
기타
중간 ( n/2
)에 도달하면 *
위의 예에서 볼 수있는 의 양으로 다시 계산합니다 .
홀수 입력 번호의 경우 반전 된 라인 쌍 (첫 번째 및 마지막, 두 번째 및 다음 다음 등)은 정확히 동일합니다. 이 n=5
예에서 첫 번째 줄과 마지막 줄은 *####
; 마지막 줄과 두 번째 줄은 ###**
입니다.
그러나 짝수의 입력 번호의 경우에는 반전 된 라인 쌍이 반전됩니다. 이 n=8
예에서 첫 번째와 마지막 줄은 *#######
및 #######*
; 마지막 줄과 두 번째 줄은 ######**
and **######
; 기타
도전 규칙 :
- 및 대신 두 개의 고유 한 인쇄 가능 문자를 사용할 수 있습니다 . 당신은 사용할 수 있습니다 및 ; 그리고 ; 그리고 ; 당신이 사용한 것을 답에 적어주십시오.
*
#
A
B
3
7
<
>
n
양의 정수 라고 가정 할 수 있습니다 (>= 1
)- STDOUT으로 인쇄하는 대신 각 행 또는 2D 문자 행렬에 대한 문자열 목록 / 배열을 출력 할 수 있습니다.
일반 규칙:
- 이것은 code-golf 이므로 바이트 단위의 최단 답변이 이깁니다.
코드 골프 언어가 코드 골프 언어 이외의 언어로 답변을 게시하지 못하게하지 마십시오. '모든'프로그래밍 언어에 대한 가능한 한 짧은 대답을 생각해보십시오. - 표준 규칙이 답변에 적용 되므로 STDIN / STDOUT, 적절한 매개 변수 및 리턴 유형의 전체 프로그램과 함께 함수 / 방법을 사용할 수 있습니다. 당신의 전화.
- 기본 허점 은 금지되어 있습니다.
- 가능하면 코드 테스트 링크를 추가하십시오.
- 또한 답변에 대한 설명을 추가하는 것이 좋습니다.
테스트 사례 (처음 n=1
부터 n=10
)
*
*#
#*
*##
#**
*##
*###
##**
**##
###*
*####
###**
***##
###**
*####
*#####
####**
***###
###***
**####
#####*
*######
#####**
***####
###****
***####
#####**
*######
*#######
######**
***#####
####****
****####
#####***
**######
#######*
*########
#######**
***######
#####****
*****####
#####****
***######
#######**
*########
*#########
########**
***#######
######****
*****#####
#####*****
****######
#######***
**########
#########*