#include <iostream>
using namespace std;
#define N 20
int hc[N][N];
void printArray()
{
for(int i = 0; i < N; i++)
{
for(int j = 0; j < N; j++)
if(hc[i][j])
printf("%3d ", hc[i][j]);
else
printf(" ");
cout << endl;
}
}
void fillArray( int &i, int &j, string directions[], int n, int round, int &num)
{
int flag = 1;
for (int k = 0; k < n; k++)
{
string dir = directions[k];
for(int m = 0 ; (m < round) && flag; m++)
{
//cout << dir << endl;
if (dir=="S") i += 2, m++;
else if (dir=="N") i -= 2;
else if (dir=="W") j -= 2;
else if (dir=="E") j += 2;
else if (dir=="NW")
j -=1, i -=1;
else if (dir=="NE")
j +=1, i -=1;
else if (dir=="SE")
j +=1, i +=1;
else if (dir=="SW")
j -=1, i +=1, m++;
hc[i][j] = num;
num += 1;
//flag = 0;
}
}
}
int main()
{
int i = N/2;
int j = N/2;
int num = 1;
hc[i][j] = num;
num += 1;
int round = 1;
string directions1[] = {"S", "NW", "N", "NE", "SE", "S" };
int n = sizeof(directions1)/sizeof(directions1[0]);
fillArray(i, j, directions1, n, round, num);
string directions2[] = {"S", "SW", "NW", "N", "NE", "SE", "S"};
n = sizeof(directions2)/sizeof(directions2[0]);
while(num < 36)
{
round++;
fillArray(i, j, directions2, n, round, num);
}
printArray();
// your code goes here
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwojZGVmaW5lIE4gMjAKaW50IGhjW05dW05dOwoKdm9pZCBwcmludEFycmF5KCkKewoJZm9yKGludCBpID0gMDsgaSA8IE47IGkrKykgCgl7CgkJZm9yKGludCBqID0gMDsgaiA8IE47IGorKykKCQlpZihoY1tpXVtqXSkKCQkJcHJpbnRmKCIlM2QgICIsIGhjW2ldW2pdKTsKCQllbHNlIAoJCQlwcmludGYoIiAgICAgIik7CgkJY291dCA8PCBlbmRsOwoJfQp9Cgp2b2lkIGZpbGxBcnJheSggaW50ICZpLCBpbnQgJmosIHN0cmluZyBkaXJlY3Rpb25zW10sIGludCBuLCBpbnQgcm91bmQsIGludCAmbnVtKQp7CglpbnQgZmxhZyA9IDE7CiAgICBmb3IgKGludCBrID0gMDsgayA8IG47IGsrKykKICAgIHsKICAgIAlzdHJpbmcgZGlyID0gZGlyZWN0aW9uc1trXTsKICAgIAkKICAgIAlmb3IoaW50IG0gPSAwIDsgKG0gPCByb3VuZCkgJiYgZmxhZzsgbSsrKQoJCXsKCSAgICAJLy9jb3V0IDw8IGRpciA8PCBlbmRsOwoJICAgICAgICBpZiAoZGlyPT0iUyIpIGkgKz0gMiwgbSsrOwoJICAgICAgICBlbHNlIGlmIChkaXI9PSJOIikgaSAtPSAyOwoJICAgICAgICBlbHNlIGlmIChkaXI9PSJXIikgaiAtPSAyOwoJICAgICAgICBlbHNlIGlmIChkaXI9PSJFIikgaiArPSAyOwoJICAgICAgICBlbHNlIGlmIChkaXI9PSJOVyIpCgkgICAgICAgICAgICBqIC09MSwgaSAtPTE7CgkgICAgICAgIGVsc2UgaWYgKGRpcj09Ik5FIikKCSAgICAgICAgICAgIGogKz0xLCBpIC09MTsKCSAgICAgICAgZWxzZSBpZiAoZGlyPT0iU0UiKQoJICAgICAgICAgICAgaiArPTEsIGkgKz0xOwoJICAgICAgICBlbHNlIGlmIChkaXI9PSJTVyIpCgkgICAgICAgICAgICBqIC09MSwgaSArPTEsIG0rKzsKCSAgICAgICAKCSAgICAgICAgaGNbaV1bal0gPSBudW07CgkgICAgICAgIG51bSArPSAxOwoJICAgICAgICAvL2ZsYWcgPSAwOwoJCX0KICAgIH0KfQoKaW50IG1haW4oKSAKewoJaW50IGkgPSBOLzI7CiAgICBpbnQgaiA9IE4vMjsKICAgIGludCBudW0gPSAxOwogICAgaGNbaV1bal0gPSBudW07CiAgICBudW0gKz0gMTsKCWludCByb3VuZCA9IDE7CgkKCXN0cmluZyBkaXJlY3Rpb25zMVtdID0geyJTIiwgIk5XIiwgIk4iLCAiTkUiLCAiU0UiLCAiUyIgfTsKCWludCBuID0gc2l6ZW9mKGRpcmVjdGlvbnMxKS9zaXplb2YoZGlyZWN0aW9uczFbMF0pOwogICAgZmlsbEFycmF5KGksIGosIGRpcmVjdGlvbnMxLCBuLCByb3VuZCwgbnVtKTsKICAgIAogICAgc3RyaW5nIGRpcmVjdGlvbnMyW10gPSB7IlMiLCAiU1ciLCAiTlciLCAiTiIsICJORSIsICJTRSIsICJTIn07CiAgICBuID0gc2l6ZW9mKGRpcmVjdGlvbnMyKS9zaXplb2YoZGlyZWN0aW9uczJbMF0pOwoKICAgIHdoaWxlKG51bSA8IDM2KQogICAgewogICAgCXJvdW5kKys7CiAgICAJZmlsbEFycmF5KGksIGosIGRpcmVjdGlvbnMyLCBuLCByb3VuZCwgbnVtKTsKICAgIH0KICAgIAogICAgcHJpbnRBcnJheSgpOwoJLy8geW91ciBjb2RlIGdvZXMgaGVyZQoJcmV0dXJuIDA7Cn0=