Skip to content

CenteredSquareNumbers ​

The centered square numbers 1,5,13,25,…1, 5, 13, 25, … — 2n2−2n+12n^2-2n+1 — a square of dots grown ring by ring around a center.

CenteredSquareNumbers2n2−2n+12n^2-2n+1 for n=1,2,3,…n = 1, 2, 3, ….

Domain: Collections

Details
  • A lazy indexed collection: Count(CenteredSquareNumbers)=+∞Count(CenteredSquareNumbers) = +\infty, and At(CenteredSquareNumbers,k)=2k2−2k+1At(CenteredSquareNumbers, k) = 2k^2-2k+1 unranks in closed form -- At(CenteredSquareNumbers,5)=41At(CenteredSquareNumbers, 5) = 41.
  • OEIS A001844.
  • Membership goes through Element by inverting the closed form exactly -- Element(41,CenteredSquareNumbers)Element(41, CenteredSquareNumbers) is true, Element(40,CenteredSquareNumbers)Element(40, CenteredSquareNumbers) is false.

Definition

Epsil, as the implementation runs it.

count()

PositiveInfinity

unrank(_r)

2 * (_r + 1) * (_r + 1 - 1) + 1

rank(_x)

Apply(
       (sq_at: integer) => sq_at if 2 * (sq_at + 1) * (sq_at + 1 - 1) + 1 == _x else -1,
       Fold(Function(
                      sq_at + 2 ^ sq_b if 2 * (sq_at + 2 ^ sq_b + 1) *
                                          (sq_at + 2 ^ sq_b + 1 - 1) + 1 <= _x else sq_at,
                      sq_at,
                      sq_b,
                    ), 0, Range(Floor(Log(_x, 2)) + 1, 0, -1)),
     ) if True else -1

valid(_x)

Apply(
       (sq_at: integer) => 2 * (sq_at + 1) * (sq_at + 1 - 1) + 1 == _x,
       Fold(Function(
                      sq_at + 2 ^ sq_b if 2 * (sq_at + 2 ^ sq_b + 1) *
                                          (sq_at + 2 ^ sq_b + 1 - 1) + 1 <= _x else sq_at,
                      sq_at,
                      sq_b,
                    ), 0, Range(Floor(Log(_x, 2)) + 1, 0, -1)),
     ) if True && _x >= 1 else False

Enumeration

Examples

1 more kept as data, checked against the oracles
About
Examples1
CrosswalkOEIS

See also: SquareNumbers, CenteredHexagonalNumbers, Count, At, Element