최소 반경을 가진 불연속 원 주위에 입력 문자열을 인쇄하는 프로그램이나 함수를 작성하십시오. 예를 들어 input의 This is an example경우 프로그램은 다음을 출력해야합니다.
a si
n s
i
e h
x T
a
m
p
le
서클 생성
당신은 사용하여야한다 중점 원 알고리즘을 이산 원의 각 지점의 좌표를 계산합니다. 이 Wikipedia 페이지 에서이 알고리즘을 구현하는 방법에 대한 예제를 찾을 수 있습니다 .
다음은 알고리즘의 의사 코드입니다 (Wikipedia의 C 예제를 기반으로 함).
integer x = radius
integer y = 0
int decisionCriterion = 1 - x
while y <= x
point at coordinates (x,y) belongs to the circle // Octant 1
point at coordinates (y,x) belongs to the circle // Octant 2
point at coordinates (-x,y) belongs to the circle // Octant 4
point at coordinates (-y,x) belongs to the circle // Octant 3
point at coordinates (-x,-y) belongs to the circle // Octant 5
point at coordinates (-y,-x) belongs to the circle // Octant 6
point at coordinates (x,-y) belongs to the circle // Octant 7
point at coordinates (y,-x) belongs to the circle // Octant 8
y++
if decisionCriterion <= 0
decisionCriterion += 2 * y + 1
else
x--
decisionCriterion += 2 * (y - x) + 1
end while
모든 반경에 대해 중간 점 원 알고리즘과 동일한 원을 생성하는 경우에만 다른 알고리즘을 사용할 수 있습니다 .
원은 입력의 모든 문자를 계속 쓸 수 있는 가장 작은 반경 을 가져야합니다 .
원이 문자열의 문자 수보다 많은 점으로 끝나는 경우 마지막 채움 문자는 공백이 됩니다.
입력의 첫 문자는 좌표가있는 점에 인쇄되어야합니다 (Radius,0). 후속 문자는 시계 반대 방향으로 인쇄됩니다.
입력
입력은 공백 (32)과 물결표 ~(126) 사이의 ASCII 문자 문자열입니다 .
입력이 항상 유효하고 256 자보다 짧고 5 자 이상이라고 가정 할 수 있습니다.
입력은 STDIN에서, 또는 함수 매개 변수 또는 이와 유사한 것으로 가져올 수 있습니다.
출력
결과를 STDOUT으로 출력하거나 함수에서 문자열로 리턴 할 수 있습니다.
줄이 가장 긴 줄 (가운데)을 초과하지 않는 한, 뒤에 공백이있을 수 있습니다 (따라서 중간 줄은 후행 공백을 가질 수 없습니다).
후행 줄 바꿈이 허용됩니다.
테스트 사례
Input: Hello, World!
Output:
,ol
l
W e
o H
r
l
d!
Input: 4 8 15 16 23 42
Output:
51
8
1
6 4
2 2
3 4
Input: Programming Puzzles & Code golf
Output:
gnim
uP ma
z r
z g
l o
e r
s P
&
C
od f
e Gol
Input: Ash nazg durbatuluk, ash nazg gimbatul, ash nazg thrakatuluk agh burzum-ishi krimpatul.
Output:
zan hsa ,
g ku
ig lu
bm ta
a b
t r
u u
l d
,
g
a z
s a
h n
n h
a s
z A
g
t
h
r
a .
k l
a u
t t
u a
l p
u m
k ri
ag k
h hi
burzum-is
채점
이것은 code-golf 이므로 바이트 단위의 최단 답변이 이깁니다.
void유형이없는 전역 범위의 변수가 가정int되고 자동으로 초기화 되기 때문에 5 바이트에 대해 바이트를 삭제하고 더 많은 바이트에 대해 전역 범위에서 정수 중 일부를 선언 할 수0있습니다.