이것은 파스칼의 머리띠입니다 :
1 4 15 56 209 780 2911 10864 40545 151316 564719
1 3 11 41 153 571 2131 7953 29681 110771 413403 1542841
1 4 15 56 209 780 2911 10864 40545 151316 564719
나는 그것을 완전히 만들었다. Blaise Pascal은 내가 알 수있는 한 머리 끈이 없었으며, 그가 말한 경우 아마도 숫자 대신 머리카락으로 만들어졌습니다.
다음과 같이 정의됩니다.
- 첫 번째 열에는
1
중간에 단일 이 있습니다. - 두 번째 열은
1
상단과 하단에 있습니다. - 이제 우리는 숫자를 중간 또는 두 개의 사본을 위와 아래에 넣는 것을 번갈아 가며합니다.
- 숫자가 맨 위나 맨 아래에 있으면 인접한 두 숫자의 합이됩니다 (예 :)
56 = 15 + 41
. 머리를 약간 기울이면 파스칼의 삼각형 단계와 같습니다. - 숫자가 중간에 가면 인접한 세 숫자 (예 :)의 합계가됩니다
41 = 15 + 11 + 15
.
당신의 임무는이 머리띠를 인쇄하는 것입니다.
입력
단일 integer를 수신하여 n
출력 할 마지막 열의 색인을 제공 하는 프로그램 또는 함수를 작성해야 합니다.
첫 번째 열 ( 1
중간 줄에 하나만 인쇄 )이 n = 0
또는에 해당 하는지 여부를 선택할 수 있습니다 n = 1
. 이는 가능한 모든 입력에서 일관된 선택이어야합니다.
산출
파스칼 브레이드를 n
열 까지 출력합니다 . 공백은 짧은 줄을 공백이있는 긴 줄 길이로 채울 수 있고 선택적으로 단일 후행 줄 바꿈을 출력 할 수 있다는 점을 제외하고는 위의 예제 레이아웃과 정확히 일치해야합니다.
즉, 모든 열은 해당 열의 숫자 (또는 동일한 숫자 쌍)만큼 정확하게 넓어야하며 연속 열의 숫자는 겹치지 않아야하며 열 사이에 공백이 없어야합니다.
결과를 STDOUT (또는 가장 가까운 대안)에 인쇄하거나 함수를 작성하는 경우 동일한 내용의 문자열 또는 세 개의 문자열 (각 줄에 하나씩) 목록을 리턴 할 수 있습니다.
추가 세부 사항
당신은 그 가정 할 수 있습니다 n
첫 번째 열의 인덱스 (그래서 적어도 이상이어야한다 0
또는 1
당신의 색인에 따라). 또한 브레이드의 마지막 번호가 256 또는 중 언어의 기본 정수 타입에 의해 가장 큰 숫자 표현할 수 있다고 가정 할 수 이상을 . 따라서 원시 정수 유형이 바이트 만 저장할 수있는 경우 가장 큰 값 n
은 0 또는 1을 사용하는지 여부에 따라 최대 값 9
또는 10
0 이라고 가정 할 수 있으며 n
부호있는 32 비트 정수를 저장할 n
수있는 경우 최대 값 33
또는 34
입니다.
표준 코드 골프 규칙이 적용됩니다. 가장 짧은 코드가 승리합니다.
OEIS
여기 몇 가지 관련 OEIS 링크가 있습니다. 물론 여기에는 브레이드에 숫자를 생성하는 다양한 방법에 대한 스포일러가 포함되어 있습니다.
테스트 사례
이 테스트 사례는 1-베이스 색인을 사용합니다. 각 테스트 케이스는 4 줄이며, 첫 번째는 입력이고 나머지 3 개는 출력입니다.
1
1
---
2
1
1
1
---
3
1
1 3
1
---
5
1 4
1 3 11
1 4
---
10
1 4 15 56 209
1 3 11 41 153
1 4 15 56 209
---
15
1 4 15 56 209 780 2911
1 3 11 41 153 571 2131 7953
1 4 15 56 209 780 2911
---
24
1 4 15 56 209 780 2911 10864 40545 151316 564719 2107560
1 3 11 41 153 571 2131 7953 29681 110771 413403 1542841
1 4 15 56 209 780 2911 10864 40545 151316 564719 2107560