Viết chương trình hoặc hàm in chuỗi đầu vào xung quanh vòng tròn rời rạc có bán kính tối thiểu có thể. Ví dụ, đối với đầu vào This is an example
, chương trình của bạn sẽ xuất ra:
a si
n s
i
e h
x T
a
m
p
le
Tạo vòng tròn
Bạn sẽ sử dụng thuật toán vòng tròn Midpoint để tính tọa độ của từng điểm của vòng tròn rời rạc. Bạn có thể tìm thấy các ví dụ về cách triển khai thuật toán này trên trang Wikipedia này .
Đây là mã giả của thuật toán (dựa trên ví dụ C của Wikipedia):
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
Bạn có thể sử dụng một thuật toán khác khi và chỉ khi nó tạo ra các vòng tròn chính xác giống như thuật toán vòng tròn Midpoint tạo ra, cho tất cả các bán kính .
Vòng tròn phải có bán kính nhỏ nhất có thể vẫn cho phép ghi tất cả các chữ cái của đầu vào.
Nếu vòng tròn kết thúc có nhiều điểm hơn số lượng ký tự trong chuỗi, thì các ký tự điền cuối cùng sẽ là khoảng trắng .
Ký tự đầu tiên của đầu vào phải được in trên điểm có tọa độ (Radius,0)
. Các ký tự tiếp theo được in theo kiểu ngược chiều kim đồng hồ.
Đầu vào
Đầu vào là một chuỗi gồm bất kỳ ký tự ASCII nào giữa khoảng trắng (32) và dấu ngã
~
(126).
Bạn có thể cho rằng đầu vào sẽ luôn hợp lệ, ngắn hơn 256 ký tự và dài ít nhất 5 ký tự.
Đầu vào có thể được lấy từ STDIN, hoặc như một tham số chức năng, hoặc bất cứ điều gì tương tự.
Đầu ra
Bạn có thể xuất kết quả sang STDOUT hoặc trả về dưới dạng chuỗi từ một hàm.
Bạn có thể có các khoảng trắng ở cuối, với điều kiện là nó không làm cho dòng vượt quá dòng dài nhất (ở giữa) (như vậy, dòng giữa không thể có khoảng trắng ở cuối).
Một dòng mới được cho phép.
Các trường hợp thử nghiệm
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
Chấm điểm
Đây là môn đánh gôn , vì vậy câu trả lời ngắn nhất bằng byte sẽ thắng.
void
5 byte và khai báo một số số nguyên trong phạm vi toàn cầu để biết thêm một số byte, vì các biến trong phạm vi toàn cầu không có loại được giả sửint
và được tự động khởi tạo0
.