/* Copyright (C) 2014 by Alexandru Cojocaru */
/* This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see . */
/* gcc -Wall -std=c99 183.c -o /tmp/183 && /tmp/183 */
#include
#include
static bool
fill_p (int y, int x, int n)
{
int leny;
leny = n+2;
for (int cornery = 1; cornery <= n/2 + 1; cornery += 2) {
int cornerx = cornery-1;
int lenx = leny-1;
if ((x == cornerx && y >= cornery && y < cornery + leny) ||
(y == cornery && x >= cornerx && x < cornerx + lenx))
return 1;
leny -= 4;
}
leny = n;
for (int cornery = n; cornery > n/2 + 1; cornery -= 2) {
int cornerx = cornery;
int lenx = leny-1;
if ((x == cornerx && y <= cornery && y > cornery - leny) ||
(y == cornery && x <= cornerx && x > cornerx - lenx))
return 1;
leny -= 4;
}
return 0;
}
static void
drawsqspiral (int n)
{
for (int y = 1; y <= n; ++y) {
for (int x = 1; x <= n; ++x) {
if (fill_p (y, x, n))
printf ("@");
else
printf (" ");
}
printf ("\n");
}
}
int
main ()
{
int n = 16;
drawsqspiral (n);
return 0;
}