OFFSET
1,2
COMMENTS
Double spiral begins:
.
82---84---86---88---90---92---94---96---98
|
80 51---53---55---57---59---61---63---65
| | |
78 49 26---28---30---32---34---36 67
| | | | |
76 47 24 11---13---15---17 38 69
| | | | | | |
74 45 22 9 2----4 19 40 71
| | | | | | | | |
72 43 20 7 1 6 21 42 73
| | | | | | | | |
70 41 18 5----3 8 23 44 75
| | | | | | |
68 39 16---14---12---10 25 46 77
| | | | |
66 37---35---33---31---29---27 48 79
| | |
64---62---60---58---56---54---52---50 81
|
99---97---95---93---91---89---87---85---83
FORMULA
abs( a(n) - a(n-1) ) = 1.
EXAMPLE
From Philippe Deléham, Mar 08 2013: (Start)
As a square array, this begins:
1, 1, 2, 2, 3, 3, 4, 4, 5, ...
2, 3, 3, 4, 4, 5, 5, 6, 6, ...
2, 4, 5, 5, 6, 6, 7, 7, 8, ...
3, 4, 6, 7, 7, 8, 8, 9, 9, ...
3, 5, 6, 8, 9, 9, 10, 10, 11, ...
4, 5, 7, 8, 10, 11, 11, 12, 12, ...
4, 6, 7, 9, 10, 12, 13, 13, 14, ...
5, 6, 8, 9, 11, 12, 14, 15, 15, ..., etc.
As a triangle, this begins:
1
2, 1
2, 3, 2
3, 4, 3, 2
3, 4, 5, 4, 3
4, 5, 6, 5, 4, 3, etc. (End)
PROG
(C)
#include <stdio.h>
#define SIZE 20
int grid[SIZE][SIZE];
int direction[] = {0, -1, 1, 0, 0, 1, -1, 0};
main() {
int i, j, x1, y1, x2, y2, stepSize;
int direction1pos=0, direction2pos=4, val;
x1 = y1 = x2 = y2 = SIZE/2;
for (val=grid[y1][x1]=1, stepSize=0; ; ++stepSize) {
if (x1<1 || x1>=SIZE-1 || x2<1 || x2>=SIZE-1) break;
if (y1<1 || y1>=SIZE-1 || y2<1 || y2>=SIZE-1) break;
for (i=stepSize|1; i; ++val, --i) {
x1 += direction[direction1pos ];
y1 += direction[direction1pos+1];
x2 += direction[direction2pos ];
y2 += direction[direction2pos+1];
grid[y1][x1] = val*2;
grid[y2][x2] = val*2+1;
printf("%d, ", abs(x1-SIZE/2)+abs(y1-SIZE/2));
}
direction1pos = (direction1pos+2) & 7;
direction2pos = (direction2pos+2) & 7;
}
for (i=0; i<SIZE; ++i) {
printf("\n");
for (j=0; j<SIZE; ++j)
printf("%4d ", grid[i][j]);
}
}
CROSSREFS
KEYWORD
nonn,easy
AUTHOR
Alex Ratushnyak, Dec 04 2012
STATUS
approved