오늘 우리는 글자로 피라미드를 만들 것입니다! 다음은 처음 5 글자에 대한 문자 피라미드의 예입니다.
-
첫 오름차순과 내림차순 사이의 공백으로 처음 5자를 쓰십시오.
A B C D E D C B A
-
위 줄의 처음 네 글자에 대해 동일한 작업을 수행하지만 두 개의 추가 공백이 있습니다.
A B C D C B A A B C D E D C B A
-
마지막 줄이 ‘A’가 될 때까지 동일한 단계를 반복하십시오.
A A B A A B C B A A B C D C B A A B C D E D C B A
-
올라가는 대신 내려가는 2 단계와 3 단계를 반복하십시오.
A A B A A B C B A A B C D C B A A B C D E D C B A A B C D C B A A B C B A A B A A
동일한 패턴을 최대 26 자까지 확장 할 수 있습니다. 문제는 정수를 입력으로 받아 해당 문자 피라미드를 생성하는 프로그램이나 함수를 작성하는 것입니다. 대문자 또는 소문자를 사용하도록 선택할 수 있습니다. 입력은의 정수로 가정 [1, 26]
하고 출력은 2d 문자열에 적합한 형식 일 수 있습니다. 예를 들어, 줄 바꿈이 포함 된 문자열, 문자 배열, 파일로 인쇄 등이 있습니다. 각 줄에는 그 뒤에 공백이있을 수 있으며 선택적으로 하나의 마지막 줄 바꿈을 출력 할 수 있습니다.
다음은 입력 / 출력의 예입니다.
1:
A
2:
A
A B A
A
3:
A
A B A
A B C B A
A B A
A
5:
A
A B A
A B C B A
A B C D C B A
A B C D E D C B A
A B C D C B A
A B C B A
A B A
A
13:
A
A B A
A B C B A
A B C D C B A
A B C D E D C B A
A B C D E F E D C B A
A B C D E F G F E D C B A
A B C D E F G H G F E D C B A
A B C D E F G H I H G F E D C B A
A B C D E F G H I J I H G F E D C B A
A B C D E F G H I J K J I H G F E D C B A
A B C D E F G H I J K L K J I H G F E D C B A
A B C D E F G H I J K L M L K J I H G F E D C B A
A B C D E F G H I J K L K J I H G F E D C B A
A B C D E F G H I J K J I H G F E D C B A
A B C D E F G H I J I H G F E D C B A
A B C D E F G H I H G F E D C B A
A B C D E F G H G F E D C B A
A B C D E F G F E D C B A
A B C D E F E D C B A
A B C D E D C B A
A B C D C B A
A B C B A
A B A
A
26:
A
A B A
A B C B A
A B C D C B A
A B C D E D C B A
A B C D E F E D C B A
A B C D E F G F E D C B A
A B C D E F G H G F E D C B A
A B C D E F G H I H G F E D C B A
A B C D E F G H I J I H G F E D C B A
A B C D E F G H I J K J I H G F E D C B A
A B C D E F G H I J K L K J I H G F E D C B A
A B C D E F G H I J K L M L K J I H G F E D C B A
A B C D E F G H I J K L M N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P Q P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P Q R Q P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P Q R S R Q P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P Q R S T S R Q P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P Q R S T U T S R Q P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P Q R S T U V U T S R Q P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P Q R S T U V W V U T S R Q P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P Q R S T U V W X W V U T S R Q P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P Q R S T U V W X Y X W V U T S R Q P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Y X W V U T S R Q P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P Q R S T U V W X Y X W V U T S R Q P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P Q R S T U V W X W V U T S R Q P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P Q R S T U V W V U T S R Q P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P Q R S T U V U T S R Q P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P Q R S T U T S R Q P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P Q R S T S R Q P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P Q R S R Q P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P Q R Q P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P Q P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N M L K J I H G F E D C B A
A B C D E F G H I J K L M L K J I H G F E D C B A
A B C D E F G H I J K L K J I H G F E D C B A
A B C D E F G H I J K J I H G F E D C B A
A B C D E F G H I J I H G F E D C B A
A B C D E F G H I H G F E D C B A
A B C D E F G H G F E D C B A
A B C D E F G F E D C B A
A B C D E F E D C B A
A B C D E D C B A
A B C D C B A
A B C B A
A B A
A
항상 그렇듯이 이것은 코드 골프 이므로 표준 허점이 적용되고 바이트 단위의 최단 답변이 승리합니다!
답변
파이썬, 184 174 169 바이트
R=range
def g(a):
def f(x,y,z):
for i in R(x,y,z):print " "*(i-1)," ".join([chr(65+j) for j in R((a-i))]+[chr(65+(a-i-2)-j) for j in R((a-i-1))])
f(a,0,-1);f(2,a,1)
편집 : @ nedla2004 덕분에 5 바이트를 절약했습니다.
답변
05AB1E , 13 바이트
암호:
A.ps£û€û€S».c
설명:
A.p # Push all prefixes of the alphabet.
s£ # Only get the first input elements.
û # Palindromize, turns ['a', 'ab', 'abc'] -> ['a', 'ab', 'abc', 'ab', 'a']
€û # Palindromize each, turns ['a', 'ab', 'abc', 'ab', 'a']
into... ['a', 'aba', 'abcba', 'aba', 'a']
€S # Split each element.
» # Gridify, joins the arrays be newlines and the arrays in the arrays
by spaces.
.c # Centralize, aligning the text to the center.
용도 CP-1252 인코딩을. 온라인으로 사용해보십시오!
답변
MATL , 25 24 바이트
Zv&+64+G-t64>*1&!t0*hTec
더 긴 대안 :
1Y20hiZv&+G-t0>*1&!t0*hTe)
(26 바이트)Zv&+64+G-t64>*l2&Y"tZyP:o*c
(27 바이트)
설명
% Implicit input
Zv % Symmetric range. For input 3 it gives [1 2 3 2 1]
&+ % Matrix of all pairwise additions. For input 3 it gives a 5×5 matrix
64+G % Add 64 and subtract input. This gives the desired ASCII codes in the
% central rhombus
t64>* % Make values less than 65 equal to 0. This affects entries outside the
% central rhombus
1&! % Permute second and third dimensions. Transforms the 5×5 matrix into
% a 5×1×5 array
t0* % Push a copy of that array with all entries equal to 0
h % Concatenate along the second dimension. Gives a 5×2×5 array
Te % Collapse the second and third dimensions. Gives a 5×10 matrix
c % Convert to char. Char zero is displayed as space
% Implicit display
답변
V , 45 바이트
i¬A[À|lDybA"Ó./&
òÄó¨á© á úe±
>>.YGp{òd
이 었죠 방법 나는 아직 설명을 게시하지 않을거야, 그래서 내가 기대했던 것보다 덜 golfy합니다. 잘만되면 나는 그것을 더 먼저 더럽힐 수있다. 평소와 같이 다음은 hexdump입니다.
0000000: 69ac 415b 1bc0 7c6c 4479 6241 1f12 221b i.A[..|lDybA..".
0000010: d32e 2f26 200a f2c4 f3a8 e1a9 20e1 20fa ../& ....... . .
0000020: 65b1 200a 3e3e 2e59 4770 7bf2 64 e. .>>.YGp{.d
답변
J, 34 바이트
(' ',u:65+i.26){~0>.]-[:+/~|@i:@<:
숫자를 입력으로 받아서 2D 문자형 배열을 반환합니다.
설명
(' ',u:65+i.26){~0>.]-[:+/~|@i:@<: input y
<: y - 1
i: "steps" -- i:2 -> -2 1 0 1 2
| absolute value
+/~ addition table
[: join right two tines into a conjunction
]- y - this table
0>. max(0, that)
(' ',u:65+i.26) the alphabet preceded by a space
{~ index
분해 된 테스트 케이스
n =: 5
<: n
4
i: <: n
_4 _3 _2 _1 0 1 2 3 4
| i: <: n
4 3 2 1 0 1 2 3 4
+/~ | i: <: n
8 7 6 5 4 5 6 7 8
7 6 5 4 3 4 5 6 7
6 5 4 3 2 3 4 5 6
5 4 3 2 1 2 3 4 5
4 3 2 1 0 1 2 3 4
5 4 3 2 1 2 3 4 5
6 5 4 3 2 3 4 5 6
7 6 5 4 3 4 5 6 7
8 7 6 5 4 5 6 7 8
n - +/~ | i: <: n
_3 _2 _1 0 1 0 _1 _2 _3
_2 _1 0 1 2 1 0 _1 _2
_1 0 1 2 3 2 1 0 _1
0 1 2 3 4 3 2 1 0
1 2 3 4 5 4 3 2 1
0 1 2 3 4 3 2 1 0
_1 0 1 2 3 2 1 0 _1
_2 _1 0 1 2 1 0 _1 _2
_3 _2 _1 0 1 0 _1 _2 _3
0 >. n - +/~ | i: <: n
0 0 0 0 1 0 0 0 0
0 0 0 1 2 1 0 0 0
0 0 1 2 3 2 1 0 0
0 1 2 3 4 3 2 1 0
1 2 3 4 5 4 3 2 1
0 1 2 3 4 3 2 1 0
0 0 1 2 3 2 1 0 0
0 0 0 1 2 1 0 0 0
0 0 0 0 1 0 0 0 0
u:65
A
i.26
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
65+i.26
65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
u:65+i.26
ABCDEFGHIJKLMNOPQRSTUVWXYZ
' ',u:65+i.26
ABCDEFGHIJKLMNOPQRSTUVWXYZ
(' ',u:65+i.26) {~ 0 >. n - +/~ | i: <: n
A
ABA
ABCBA
ABCDCBA
ABCDEDCBA
ABCDCBA
ABCBA
ABA
A
input으로 시도해 봅시다 5
.
테스트 사례
f =: (' ',u:65+i.26){~0>.]-[:+/~|@i:@<:
f 1
A
f 2
A
ABA
A
f 3
A
ABA
ABCBA
ABA
A
f 4
A
ABA
ABCBA
ABCDCBA
ABCBA
ABA
A
f 5
A
ABA
ABCBA
ABCDCBA
ABCDEDCBA
ABCDCBA
ABCBA
ABA
A
f 26
A
ABA
ABCBA
ABCDCBA
ABCDEDCBA
ABCDEFEDCBA
ABCDEFGFEDCBA
ABCDEFGHGFEDCBA
ABCDEFGHIHGFEDCBA
ABCDEFGHIJIHGFEDCBA
ABCDEFGHIJKJIHGFEDCBA
ABCDEFGHIJKLKJIHGFEDCBA
ABCDEFGHIJKLMLKJIHGFEDCBA
ABCDEFGHIJKLMNMLKJIHGFEDCBA
ABCDEFGHIJKLMNONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWXWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWXYXWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWXYZYXWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWXYXWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWXWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNONMLKJIHGFEDCBA
ABCDEFGHIJKLMNMLKJIHGFEDCBA
ABCDEFGHIJKLMLKJIHGFEDCBA
ABCDEFGHIJKLKJIHGFEDCBA
ABCDEFGHIJKJIHGFEDCBA
ABCDEFGHIJIHGFEDCBA
ABCDEFGHIHGFEDCBA
ABCDEFGHGFEDCBA
ABCDEFGFEDCBA
ABCDEFEDCBA
ABCDEDCBA
ABCDCBA
ABCBA
ABA
A
답변
젤리 , 13 바이트
RØAḣUz⁶ŒBṚŒḄG
어떻게?
RØAḣUz⁶ŒBṚŒḄG - Main link: n e.g. 3
R - range [1,2,3]
ØA - uppercase alphabet yield "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
ḣ - head ["A","AB","ABC"]
U - upend (vectorises) ["A","BA","CBA"]
z - transpose with filler...
⁶ - space character ["ABC"," AB"," A"]
ŒB - bounce (vectorises) ["ABCBA"," ABA "," A "]
Ṛ - reverse [" A "," ABA ","ABCBA"]
ŒḄ - bounce (flat) [" A "," ABA ","ABCBA"," ABA "," A "]
G - grid format (join each with spaces and join with line feeds)
A
A B A
A B C B A
A B A
A