#include <stdio.h>
#define N_ROWS 5
#define N_COLS 3
void print_spiral(int a[N_ROWS][N_COLS])
{
enum {up, down, left, right} direction = right;
int up_limit = 0,
down_limit = N_ROWS - 1,
left_limit = 0,
right_limit = N_COLS - 1,
downcount = N_ROWS * N_COLS,
row = 0,
col = 0;
while(printf("%d ", a
[row
][col
]) && --downcount
) if(direction == right)
{
if(++col > right_limit)
{
--col;
direction = down;
++up_limit;
++row;
}
}
else if(direction == down)
{
if(++row > down_limit)
{
--row;
direction = left;
--right_limit;
--col;
}
}
else if(direction == left)
{
if(--col < left_limit)
{
++col;
direction = up;
--down_limit;
--row;
}
}
else /* direction == up */
if(--row < up_limit)
{
++row;
direction = right;
++left_limit;
++col;
}
}
int main()
{
int a[N_ROWS][N_COLS] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
print_spiral(a);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNkZWZpbmUgTl9ST1dTIDUKI2RlZmluZSBOX0NPTFMgMwoKdm9pZCBwcmludF9zcGlyYWwoaW50IGFbTl9ST1dTXVtOX0NPTFNdKQp7CiAgICBlbnVtIHt1cCwgZG93biwgbGVmdCwgcmlnaHR9IGRpcmVjdGlvbiA9IHJpZ2h0OwogICAgaW50IHVwX2xpbWl0ID0gMCwKICAgICAgICBkb3duX2xpbWl0ID0gTl9ST1dTIC0gMSwKICAgICAgICBsZWZ0X2xpbWl0ID0gMCwKICAgICAgICByaWdodF9saW1pdCA9IE5fQ09MUyAtIDEsCiAgICAgICAgZG93bmNvdW50ID0gTl9ST1dTICogTl9DT0xTLAogICAgICAgIHJvdyA9IDAsCiAgICAgICAgY29sID0gMDsKCiAgICB3aGlsZShwcmludGYoIiVkICIsIGFbcm93XVtjb2xdKSAmJiAtLWRvd25jb3VudCkKICAgICAgICBpZihkaXJlY3Rpb24gPT0gcmlnaHQpCiAgICAgICAgewogICAgICAgICAgICBpZigrK2NvbCA+IHJpZ2h0X2xpbWl0KQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAtLWNvbDsKICAgICAgICAgICAgICAgIGRpcmVjdGlvbiA9IGRvd247CiAgICAgICAgICAgICAgICArK3VwX2xpbWl0OwogICAgICAgICAgICAgICAgKytyb3c7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSBpZihkaXJlY3Rpb24gPT0gZG93bikKICAgICAgICB7CiAgICAgICAgICAgIGlmKCsrcm93ID4gZG93bl9saW1pdCkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgLS1yb3c7CiAgICAgICAgICAgICAgICBkaXJlY3Rpb24gPSBsZWZ0OwogICAgICAgICAgICAgICAgLS1yaWdodF9saW1pdDsKICAgICAgICAgICAgICAgIC0tY29sOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYoZGlyZWN0aW9uID09IGxlZnQpCiAgICAgICAgewogICAgICAgICAgICBpZigtLWNvbCA8IGxlZnRfbGltaXQpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICsrY29sOwogICAgICAgICAgICAgICAgZGlyZWN0aW9uID0gdXA7CiAgICAgICAgICAgICAgICAtLWRvd25fbGltaXQ7CiAgICAgICAgICAgICAgICAtLXJvdzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIC8qIGRpcmVjdGlvbiA9PSB1cCAqLwogICAgICAgICAgICBpZigtLXJvdyA8IHVwX2xpbWl0KQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICArK3JvdzsKICAgICAgICAgICAgICAgIGRpcmVjdGlvbiA9IHJpZ2h0OwogICAgICAgICAgICAgICAgKytsZWZ0X2xpbWl0OwogICAgICAgICAgICAgICAgKytjb2w7CiAgICAgICAgICAgIH0KfQoKaW50IG1haW4oKQp7CiAgICBpbnQgYVtOX1JPV1NdW05fQ09MU10gPSB7MSwyLDMsNCw1LDYsNyw4LDksMTAsMTEsMTIsMTMsMTQsMTV9OwogICAgcHJpbnRfc3BpcmFsKGEpOwogICAgcmV0dXJuIDA7Cn0=