cp's OEIS Frontend

This is a front-end for the Online Encyclopedia of Integer Sequences, made by Christian Perfect. The idea is to provide OEIS entries in non-ancient HTML, and then to think about how they're presented visually. The source code is on GitHub.

A220098 Manhattan distances between 2n and 1 in the double spiral with positive integers and 1 at the center.

Original entry on oeis.org

1, 2, 1, 2, 3, 2, 3, 4, 3, 2, 3, 4, 5, 4, 3, 4, 5, 6, 5, 4, 3, 4, 5, 6, 7, 6, 5, 4, 5, 6, 7, 8, 7, 6, 5, 4, 5, 6, 7, 8, 9, 8, 7, 6, 5, 6, 7, 8, 9, 10, 9, 8, 7, 6, 5, 6, 7, 8, 9, 10, 11, 10, 9, 8, 7, 6, 7, 8, 9, 10, 11, 12, 11, 10, 9, 8, 7, 6, 7, 8, 9, 10, 11, 12, 13
Offset: 1

Views

Author

Alex Ratushnyak, Dec 04 2012

Keywords

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

Examples

			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)
		

Crossrefs

Programs

  • C
    #include 
    #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
    				
  • PARI
    step(v, m) = concat(v, vector(m, k, 1+v[#v-k+1]))
    a(max_n) = {my(v=[0], k=1); while(#v < max_n+1, v=step(v,k); k++); v[2..max_n+1]} \\ Thomas Scheuerle, Jan 07 2025
    
  • PARI
    A053615(n) = if(n<1, 0, sqrtint(n) - A053615(n - sqrtint(n)))
    a(n) = A053615(floor( floor( (sqrtint(n*8) + 1)/2 )^2/2 ) + n) \\ Thomas Scheuerle, Jan 07 2025

Formula

abs( a(n) - a(n-1) ) = 1.
From Thomas Scheuerle, Jan 07 2025: (Start)
a(n*(n+1)/2 - k) = 1 + a(n*(n-1)/2 + k) with a(0) = 0 and for 0 <= k < n.
a(n) = A053615(A128217(n+1)). (End)