Write a program (or explain how to do it) that will display a descending "spiral" of NxN numbers, using constant space (no arrays allowed). For example, here's what the spiral looks like for N=10:
99 98 97 96 95 94 93 92 91 90
64 63 62 61 60 59 58 57 56 89
65 36 35 34 33 32 31 30 55 88
66 37 16 15 14 13 12 29 54 87
67 38 17 4 3 2 11 28 53 86
68 39 18 5 0 1 10 27 52 85
69 40 19 6 7 8 9 26 51 84
70 41 20 21 22 23 24 25 50 83
71 42 43 44 45 46 47 48 49 82
72 73 74 75 76 77 78 79 80 81
(In reply to
FULL SOLUTION (in C) by SilverKnight)
This is "take 2" since the HTML didn't like my "less than sign"... also... for those who don't know... this program will take a command line parameter as N=the size of the spiral.
#include "stdafx.h"
#include "stdlib.h"
int F(int i, int j, int x)
{
if (i == 0)
{
return(x*x-j-1);
}
if (i == (x-1) )
{
return( (x-2) * x + j - x + 2);
}
if (j == (x-1) )
{
return( (x-1)* x - i);
}
if (j == 0)
{
return( (x-2) * (x-2) + i - 1) ;
}
return (F(i-1, j-1, x-2));
}
int main(int argc, char* argv[])
{
int i,j;
int x = atoi(argv[1]);
for (i=0; i<x; i++)
{
for (j=0; j<x; j++)
{
printf("%d\t",F(i,j,x));
}
printf("\n");
}
return 0;
}