#include <stdio.h>
#include <math.h>
#define ARRSIZE 10
#define SQSIZE 21 // Любое нечётное число подойдёт
void transfer_coordinates(int abscissa[], int ordinate[]);
void double_bubble_sort(int arr_1[], int arr_2[], int order[]);
void print_field(int abscissa[], int ordinate[], int order[]);
void initialize_order_array(int order[]);
int main()
{
double spiral_coefficient = 1.2; // r = k*(theta) 1.2
double spiral_theta = 0;
double polar_radius;
int abscissa[ARRSIZE];
int ordinate[ARRSIZE];
int order[ARRSIZE];
initialize_order_array(order);
int i;
for (i = 0; i < ARRSIZE; i++, spiral_theta += 1) {
polar_radius = spiral_coefficient * spiral_theta;
abscissa
[i
] = (int) round
(polar_radius
* cos(spiral_theta
)); ordinate
[i
] = (int) round
(polar_radius
* sin(spiral_theta
)); }
print_field(abscissa, ordinate, order);
return 0;
}
void double_bubble_sort(int arr_1[], int arr_2[], int order[])
{
int i, j, dump;
for (i = 0; i < ARRSIZE; i++) {
for (j = 0; j < ARRSIZE - 1; j++) {
if (arr_2[j + 1] < arr_2[j]) {
dump = arr_1[j + 1], arr_1[j + 1] = arr_1[j], arr_1[j] = dump;
dump = arr_2[j + 1], arr_2[j + 1] = arr_2[j], arr_2[j] = dump;
dump = order[j + 1], order[j + 1] = order[j], order[j] = dump;
}
}
}
for (i = 0; i < ARRSIZE - 1; i++) {
if (arr_2[i + 1] == arr_2[i] && arr_1[i + 1] < arr_1[i]) {
dump = arr_1[i + 1], arr_1[i + 1] = arr_1[i], arr_1[i] = dump;
dump = order[i + 1], order[i + 1] = order[i], order[i] = dump;
}
}
}
void print_field(int abscissa[], int ordinate[], int order[])
{
transfer_coordinates(abscissa, ordinate);
double_bubble_sort(abscissa, ordinate, order);
int x, y, i;
int half = (SQSIZE - 1) / 2;
for (i = y = 0; y < SQSIZE; y++) {
for (x = 0; x < SQSIZE; x++) {
if (y == ordinate[i] && x == abscissa[i] && i < ARRSIZE) {
printf(order
[i
] < 10 ? "%d " : "%d", order
[i
]); i++;
} else if (x == half || y == half) {
} else {
}
}
}
}
void transfer_coordinates(int abscissa[], int ordinate[])
{
int half = (SQSIZE - 1) / 2;
int i;
for (i = 0; i < ARRSIZE; i++) {
abscissa[i] += half;
ordinate[i] = half - ordinate[i];
}
}
void initialize_order_array(int order[])
{
int i;
for (i = 0; i < ARRSIZE; i++) {
order[i] = i;
}
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxtYXRoLmg+CiNkZWZpbmUgQVJSU0laRSAxMAojZGVmaW5lIFNRU0laRSAyMSAvLyDQm9GO0LHQvtC1INC90LXRh9GR0YLQvdC+0LUg0YfQuNGB0LvQviDQv9C+0LTQvtC50LTRkdGCCgp2b2lkIHRyYW5zZmVyX2Nvb3JkaW5hdGVzKGludCBhYnNjaXNzYVtdLCBpbnQgb3JkaW5hdGVbXSk7CnZvaWQgZG91YmxlX2J1YmJsZV9zb3J0KGludCBhcnJfMVtdLCBpbnQgYXJyXzJbXSwgaW50IG9yZGVyW10pOwp2b2lkIHByaW50X2ZpZWxkKGludCBhYnNjaXNzYVtdLCBpbnQgb3JkaW5hdGVbXSwgaW50IG9yZGVyW10pOwp2b2lkIGluaXRpYWxpemVfb3JkZXJfYXJyYXkoaW50IG9yZGVyW10pOwoKaW50IG1haW4oKQp7CiAgICBkb3VibGUgc3BpcmFsX2NvZWZmaWNpZW50ID0gMS4yOyAvLyByID0gayoodGhldGEpIDEuMgoKICAgIGRvdWJsZSBzcGlyYWxfdGhldGEgPSAwOwogICAgZG91YmxlIHBvbGFyX3JhZGl1czsKCiAgICBpbnQgYWJzY2lzc2FbQVJSU0laRV07CiAgICBpbnQgb3JkaW5hdGVbQVJSU0laRV07CgogICAgaW50IG9yZGVyW0FSUlNJWkVdOwogICAgaW5pdGlhbGl6ZV9vcmRlcl9hcnJheShvcmRlcik7CgogICAgaW50IGk7CgogICAgZm9yIChpID0gMDsgaSA8IEFSUlNJWkU7IGkrKywgc3BpcmFsX3RoZXRhICs9IDEpIHsKICAgICAgICBwb2xhcl9yYWRpdXMgPSBzcGlyYWxfY29lZmZpY2llbnQgKiBzcGlyYWxfdGhldGE7CiAgICAgICAgYWJzY2lzc2FbaV0gPSAoaW50KSByb3VuZChwb2xhcl9yYWRpdXMgKiBjb3Moc3BpcmFsX3RoZXRhKSk7CiAgICAgICAgb3JkaW5hdGVbaV0gPSAoaW50KSByb3VuZChwb2xhcl9yYWRpdXMgKiBzaW4oc3BpcmFsX3RoZXRhKSk7CiAgICB9CgogICAgcHJpbnRfZmllbGQoYWJzY2lzc2EsIG9yZGluYXRlLCBvcmRlcik7CiAgICByZXR1cm4gMDsKfQoKdm9pZCBkb3VibGVfYnViYmxlX3NvcnQoaW50IGFycl8xW10sIGludCBhcnJfMltdLCBpbnQgb3JkZXJbXSkKewogICAgaW50IGksIGosIGR1bXA7CgogICAgZm9yIChpID0gMDsgaSA8IEFSUlNJWkU7IGkrKykgewogICAgICAgIGZvciAoaiA9IDA7IGogPCBBUlJTSVpFIC0gMTsgaisrKSB7CiAgICAgICAgICAgIGlmIChhcnJfMltqICsgMV0gPCBhcnJfMltqXSkgewogICAgICAgICAgICAgICAgZHVtcCA9IGFycl8xW2ogKyAxXSwgYXJyXzFbaiArIDFdID0gYXJyXzFbal0sIGFycl8xW2pdID0gZHVtcDsKICAgICAgICAgICAgICAgIGR1bXAgPSBhcnJfMltqICsgMV0sIGFycl8yW2ogKyAxXSA9IGFycl8yW2pdLCBhcnJfMltqXSA9IGR1bXA7CiAgICAgICAgICAgICAgICBkdW1wID0gb3JkZXJbaiArIDFdLCBvcmRlcltqICsgMV0gPSBvcmRlcltqXSwgb3JkZXJbal0gPSBkdW1wOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGZvciAoaSA9IDA7IGkgPCBBUlJTSVpFIC0gMTsgaSsrKSB7CiAgICAgICAgaWYgKGFycl8yW2kgKyAxXSA9PSBhcnJfMltpXSAmJiBhcnJfMVtpICsgMV0gPCBhcnJfMVtpXSkgewogICAgICAgICAgICBkdW1wID0gYXJyXzFbaSArIDFdLCBhcnJfMVtpICsgMV0gPSBhcnJfMVtpXSwgYXJyXzFbaV0gPSBkdW1wOwogICAgICAgICAgICBkdW1wID0gb3JkZXJbaSArIDFdLCBvcmRlcltpICsgMV0gPSBvcmRlcltpXSwgb3JkZXJbaV0gPSBkdW1wOwogICAgICAgIH0KICAgIH0KfQp2b2lkIHByaW50X2ZpZWxkKGludCBhYnNjaXNzYVtdLCBpbnQgb3JkaW5hdGVbXSwgaW50IG9yZGVyW10pCnsKICAgIHRyYW5zZmVyX2Nvb3JkaW5hdGVzKGFic2Npc3NhLCBvcmRpbmF0ZSk7CiAgICBkb3VibGVfYnViYmxlX3NvcnQoYWJzY2lzc2EsIG9yZGluYXRlLCBvcmRlcik7CgogICAgaW50IHgsIHksIGk7CiAgICBpbnQgaGFsZiA9IChTUVNJWkUgLSAxKSAvIDI7CgogICAgZm9yIChpID0geSA9IDA7IHkgPCBTUVNJWkU7IHkrKykgewogICAgICAgIGZvciAoeCA9IDA7IHggPCBTUVNJWkU7IHgrKykgewogICAgICAgICAgICBpZiAoeSA9PSBvcmRpbmF0ZVtpXSAmJiB4ID09IGFic2Npc3NhW2ldICYmIGkgPCBBUlJTSVpFKSB7CiAgICAgICAgICAgICAgICBwcmludGYob3JkZXJbaV0gPCAxMCA/ICIlZCAiIDogIiVkIiwgb3JkZXJbaV0pOwogICAgICAgICAgICAgICAgaSsrOwogICAgICAgICAgICB9IGVsc2UgaWYgKHggPT0gaGFsZiB8fCB5ID09IGhhbGYpIHsKICAgICAgICAgICAgICAgIHByaW50ZigieCAiKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHByaW50ZigiICAiKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBwcmludGYoIlxuIik7CiAgICB9Cn0KCnZvaWQgdHJhbnNmZXJfY29vcmRpbmF0ZXMoaW50IGFic2Npc3NhW10sIGludCBvcmRpbmF0ZVtdKQp7CiAgICBpbnQgaGFsZiA9IChTUVNJWkUgLSAxKSAvIDI7CiAgICBpbnQgaTsKICAgIGZvciAoaSA9IDA7IGkgPCBBUlJTSVpFOyBpKyspIHsKICAgICAgICBhYnNjaXNzYVtpXSArPSBoYWxmOwogICAgICAgIG9yZGluYXRlW2ldID0gaGFsZiAtIG9yZGluYXRlW2ldOwogICAgfQp9Cgp2b2lkIGluaXRpYWxpemVfb3JkZXJfYXJyYXkoaW50IG9yZGVyW10pCnsKICAgIGludCBpOwogICAgZm9yIChpID0gMDsgaSA8IEFSUlNJWkU7IGkrKykgewogICAgICAgIG9yZGVyW2ldID0gaTsKICAgIH0KfQo=