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.

Showing 1-3 of 3 results.

A228474 Number of steps required to reach zero in the wrecker ball sequence starting with n: On the k-th step (k = 1, 2, 3, ...) move a distance of k in the direction of zero. If the result has occurred before, move a distance of k away from zero instead. Set a(n) = -1 if 0 is never reached.

Original entry on oeis.org

0, 1, 4, 2, 24, 26, 3, 1725, 12, 14, 4, 26, 123, 125, 15, 5, 119, 781802, 20, 22, 132896, 6, 51, 29, 31, 1220793, 23, 25, 7, 429, 8869123, 532009, 532007, 532009, 532011, 26, 8, 94, 213355, 213353, 248, 33, 31, 33, 1000, 9, 144, 110, 112, 82, 84, 210, 60, 34
Offset: 0

Views

Author

Gordon Hamilton, Aug 23 2013

Keywords

Comments

This is a Recamán-like sequence (cf. A005132).
The n-th triangular number A000217(n) has a(A000217(n)) = n.
a(n) + 1 = length of row n in tables A248939 and A248973. - Reinhard Zumkeller, Oct 20 2014
Hans Havermann, running code from Hugo van der Sanden, has found that a(11281) is 3285983871526. - N. J. A. Sloane, Mar 22 2019
If a(n) != -1 then floor((a(n)-1)/2)+n is odd. - Robert Gerbicz, Mar 28 2019

Examples

			a(2) = 4 because 2 -> 1 -> -1 -> -4 -> 0.
See A248940 for the full 1725-term trajectory of 7. See A248941 for a bigger example, which shows the start of the 701802-term trajectory of 17. - _N. J. A. Sloane_, Mar 07 2019
		

Crossrefs

Cf. A248939 (rows = the full sequences), A248961 (row sums), A248973 (partial sums per row), A248952 (min per row), A248953 (max per row).
Cf. also A248940 (row 7), A248941 (row 17), A248942 (row 20).
Cf. also A000217, A005132 (Recamán).

Programs

  • Haskell
    a228474 = subtract 1 . length . a248939_row  -- Reinhard Zumkeller, Oct 20 2014
    (C++) #include 
      int A228474(long n) { int c=0, s; for(std::map seen; n; n += seen[n-(s=n>0?c:-c)] ? s:-s) { seen[n]=true; ++c; } return c; } // M. F. Hasler, Mar 18 2019
    
  • Julia
    function A228474(n)
        k, position, beenhere = 0, n, [n]
        while position != 0
            k += 1
            step = position > 0 ? k : -k
            position += (position - step) in beenhere ? step : -step
            push!(beenhere, position)
        end
        return length(beenhere) - 1
    end
    println([A228474(n) for n in 0:16]) # Peter Luschny, Mar 24 2019
  • Maple
    # To compute at most the first M steps of the trajectory of n:
    f:=proc(n) local M,i,j,traj,h;
      M:=200; traj:=[n]; h:=n; s:=1;
      for i from 1 to M do j:=h-s*i;
        if member(j,traj,'p') then s:=-s; fi;
        h:=h-s*i; traj:=[op(traj),h];
        if h=0 then return("steps, trajectory =", i, traj); fi;
        s:=sign(h);
      od;
      lprint("trajectory so far = ", traj); error("Need to increase M");
    end;  # N. J. A. Sloane, Mar 07 2019
  • Mathematica
    {0}~Join~Array[-1 + Length@ NestWhile[Append[#1, If[FreeQ[#1, #3], #3, Sign[#1[[-1]] ] (Abs[#1[[-1]] ] + #2)]] & @@ {#1, #2, Sign[#1[[-1]] ] (Abs[#1[[-1]] ] - #2)} & @@ {#, Length@ #} &, {#}, Last@ # != 0 &] &, 16] (* Michael De Vlieger, Mar 27 2019 *)
  • PARI
    a(n)={my(M=Map(),k=0); while(n, k++; mapput(M,n,1); my(t=if(n>0, -k, +k)); n+=if(mapisdefined(M,n+t),-t,t)); k} \\ Charles R Greathouse IV, Aug 18 2014, revised Andrew Howroyd, Feb 28 2018 [Warning: requires latest PARI. - N. J. A. Sloane, Mar 09 2019]
    

Extensions

More terms from Jon E. Schoenfield, Jan 10 2014
Escape clause in definition added by N. J. A. Sloane, Mar 07 2019
Edited by M. F. Hasler, Mar 18 2019

A248939 Table read by rows: row n lists the wrecker ball sequence starting with n, or contains -1 if 0 is never reached.

Original entry on oeis.org

0, 1, 0, 2, 1, -1, -4, 0, 3, 2, 0, 4, 3, 1, -2, 2, -3, -9, -16, -8, -17, -7, -18, -6, 7, 21, 6, -10, -27, -45, -26, -46, -25, -47, -24, 0, 5, 4, 2, -1, 3, -2, -8, -15, -7, -16, -6, -17, -5, 8, 22, 7, -9, -26, -44, -25, -45, -24, -46, -23, 1, 26, 0, 6, 5, 3
Offset: 0

Views

Author

Reinhard Zumkeller, Oct 17 2014

Keywords

Comments

The wrecker ball sequence starting with n is defined by x[1] = n, and while x[k] is nonzero, x[k+1] = x[k] + s(k)*k, where s(k) = sign(x[k]) if the "candidate" x[k] - sign(x[k])*k had occurred earlier as some x[j], j <= k, and s(k) = -sign(x[k]) else. (This means, from x[k] one moves a distance of k towards the direction of 0 if the result did not occur earlier, or else in the opposite direction.) - M. F. Hasler, Mar 18 2019
A228474(n) + 1 gives the length of row n.
It is currently unproved whether all rows are of finite length. In particular, the length of row 11281 is unknown but larger than 32*10^9. - M. F. Hasler, Mar 18 2019
Hans Havermann, running code from Hugo van der Sanden, has found that row 11281 has length 3285983871527. - N. J. A. Sloane, Mar 22 2019

Examples

			0:  0;
1:  1  0;
2:  2  1  -1  -4  0;
3:  3  2  0;
4:  4  3  1  -2  2  -3  -9  -16  -8  -17  -7  -18  -6  7  21  6  -10  -27  -45
  -26  -46  -25  -47  -24  0;
5:  5  4  2  -1  3  -2  -8  -15  -7  -16  -6  -17  -5  8  22  7  -9  -26  -44
  -25  -45  -24  -46  -23  1  26  0;
6:  6  5  3  0;
7:  7  6  4  1  -3  2  -4  3  -5  -14  -24  -13  -1  12  -2  13 29 . . . . . . . 1730  3445  1729  3446  1728  3447  1727  3448  1726  3449  1725  0;
8:  8  7  5  2  -2  3  -3  4  -4  -13  -23  -12  0;
9:  9  8  6  3  -1  4  -2  5  -3  -12  -22  -11  1  14  0.
		

Crossrefs

Cf. A228474 (row lengths - 1), A248961 (row sums), A248973 (partial sums per row), A248952 (min per row), A248953 (max per row), A005132 (Recamán).
Cf. A248940 (row 7), A248941 (row 17), A248942 (row 20).

Programs

  • Haskell
    import Data.IntSet (singleton, member, insert)
    a248939 n k = a248939_tabf !! n !! k
    a248939_tabf = map a248939_row [0..]
    a248939_row n = n : wBall 1 n (singleton n) where
       wBall  0  = []
       wBall k x s = y : wBall (k + 1) y (insert y s) where
                         y = x + (if (x - j) `member` s then j else -j)
                         j = k * signum x
    
  • Mathematica
    row[0] = 0;
    row[n_] := Module[{b}, b[0] = n; b[k_] /; b[k-1] > 0 := b[k] = If[AllTrue[ Range[0, k-1], b[k-1] - k != b[#]&], b[k-1] - k, b[k-1] + k]; b[k_] /; b[k-1] < 0 := b[k] = If[AllTrue[Range[0, k-1], b[k-1] + k != b[#]&], b[k-1] + k, b[k-1] - k]; b[k_] /; b[k-1] == 0 := b[k] = 0; Reap[k = 0; While[b[k] != 0, Sow[b[k++]]]; Sow[0]][[2, 1]]];
    row /@ Range[0, 16] // Flatten (* Jean-François Alcover, Sep 27 2019 *)
  • PARI
    row(n)={my(M=Map(),L=List(),k=0); while(n, k++; listput(L,n); mapput(M, n, 1); my(t=if(n>0, -k, +k)); n+=if(mapisdefined(M, n+t), -t, t)); listput(L,0); Vec(L)}
      for(n=0, 6, print(row(n))) \\ Andrew Howroyd, Mar 01 2018
    
  • Python
    def A248939_row(n):
        seen = {n}; orbit = [n]; c = 0
        while n != 0:
            ++c; s = c if n>0 else -c; n += s if n-s in seen else -s
            seen.add(n); orbit.append(n)
        return orbit # M. F. Hasler, Mar 18 2019
    (C++) #include 
      A248939_row(long n) { int c=0, s; for(std::map seen; n; n += seen[n-(s=n>0?c:-c)] ? s:-s) { std::cout<M. F. Hasler, Mar 18 2019

Formula

T(n,0) = n;
There are three cases for k > 0:
case T(n,k-1) > 0:
if T(n,k-1) - k != T(n,m), for all m=0..k-1 then T(n,k) = T(n,k-1) - k, otherwise T(n,k) = T(n,k-1) + k,
case T(n,k-1) < 0:
if T(n,k-1) + k != T(n,m), for all m=0..k-1 then T(n,k) = T(n,k-1) + k, otherwise T(n,k) = T(n,k-1) - k,
case T(n,k-1) = 0:
T(n,k) = 0; row ends, i.e., k = A228474(n).

Extensions

Escape clause added by N. J. A. Sloane, Apr 19 2019

A248961 Sums of wrecker ball sequences starting with n.

Original entry on oeis.org

0, 1, -2, 5, -292, -241, 14, -437861, -28, -1, 30, 313, -4472, -4223, -2, 55, 3252, -214246256269, -70, -27, 5260887648, 91, -538, -193, -132, -864538549823, -22, 27, 140, 40053, 53088613819206, 86166834699, 86167898716, 86168962733, 86170026754, 49, 204
Offset: 0

Views

Author

Reinhard Zumkeller, Oct 18 2014

Keywords

Comments

a(n) = A248973(n, A228474(n)) = sum of row n in triangle A248939;
a(A000217(n)) = A000330(n).

Examples

			a(1) = 1+0 = 1;
a(2) = 2+1-1-4+0 = -2;
a(3) = 3+2+0 = 5;
a(4) = 4+3+1-2+2-3-9-16-8-17-7-18-6+7+21+6-10-27-45-26-46-25-47-24+0 = -292;
a(5) = 5+4+2-1+3-2-8-15-7-16-6-17-5+8+22+7-9-26-44-25-45-24-46-... = -241;
a(6) = 6+5+3+0 = 14;
a(7) = 7+6+4+1-3+2-4+3-5-14-24-13-1+12-2+13+29+46+28+9-11+10-... = -437861;
a(8) = 8+7+5+2-2+3-3+4-4-13-23-12+0 = -28;
a(9) = 9+8+6+3-1+4-2+5-3-12-22-11+1+14+0 = -1.
		

Crossrefs

Programs

  • Haskell
    import Data.IntSet (singleton, member, insert)
    a248961 n = addup 1 n 0 $ singleton n where
       addup  0 sum  = sum
       addup k x sum s = addup (k + 1) y (sum + x) (insert y s) where
                         y = x + (if (x - j) `member` s then j else -j)
                         j = k * signum x
    (C++) #include
    long A248961(long n) { long c=0, d, S=n; for(std::set A; n; A.insert(n), S += n += A.count(n - (d = n>0 ? c : -c)) ? d : -d) ++c; return S; } // M. F. Hasler, Mar 19 2019
    
  • PARI
    A248961(n,A=[n],c,S=n)={while( n+=sign(n)*if(setsearch(A,n-sign(n)*c+=1), c, -c), A=setunion(A,[n]); S+=n); S} \\ M. F. Hasler, Mar 19 2019
    
  • Python
    def A248961(n):
      A = {n}; c = 0; S = 0
      while n != 0:
        ++c; s = c if n>0 else -c; n += s if n-s in A else -s; A.add(n); S += n
      return S # M. F. Hasler, Mar 19 2019
Showing 1-3 of 3 results.