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.

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

This page as a plain text file.
%I A248939 #40 Feb 01 2025 21:36:36
%S A248939 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,
%T A248939 -10,-27,-45,-26,-46,-25,-47,-24,0,5,4,2,-1,3,-2,-8,-15,-7,-16,-6,-17,
%U A248939 -5,8,22,7,-9,-26,-44,-25,-45,-24,-46,-23,1,26,0,6,5,3
%N A248939 Table read by rows: row n lists the wrecker ball sequence starting with n, or contains -1 if 0 is never reached.
%C A248939 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
%C A248939 A228474(n) + 1 gives the length of row n.
%C A248939 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
%C A248939 _Hans Havermann_, running code from _Hugo van der Sanden_, has found that row 11281 has length 3285983871527. -  _N. J. A. Sloane_, Mar 22 2019
%H A248939 Reinhard Zumkeller, <a href="/A248939/b248939.txt">Rows n = 0..16 of triangle, flattened</a>
%H A248939 Gordon Hamilton, <a href="http://www.youtube.com/watch?v=mQdNaofLqVc">Wrecker Ball Sequences</a>, Video, 2013
%H A248939 <a href="/index/Rea#Recaman">Index entries for sequences related to Recamán's sequence</a>
%F A248939 T(n,0) = n;
%F A248939 There are three cases for k > 0:
%F A248939 case T(n,k-1) > 0:
%F A248939   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,
%F A248939 case T(n,k-1) < 0:
%F A248939   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,
%F A248939 case T(n,k-1) = 0:
%F A248939   T(n,k) = 0; row ends, i.e., k = A228474(n).
%e A248939 0:  0;
%e A248939 1:  1  0;
%e A248939 2:  2  1  -1  -4  0;
%e A248939 3:  3  2  0;
%e A248939 4:  4  3  1  -2  2  -3  -9  -16  -8  -17  -7  -18  -6  7  21  6  -10  -27  -45
%e A248939   -26  -46  -25  -47  -24  0;
%e A248939 5:  5  4  2  -1  3  -2  -8  -15  -7  -16  -6  -17  -5  8  22  7  -9  -26  -44
%e A248939   -25  -45  -24  -46  -23  1  26  0;
%e A248939 6:  6  5  3  0;
%e A248939 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;
%e A248939 8:  8  7  5  2  -2  3  -3  4  -4  -13  -23  -12  0;
%e A248939 9:  9  8  6  3  -1  4  -2  5  -3  -12  -22  -11  1  14  0.
%t A248939 row[0] = 0;
%t A248939 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]]];
%t A248939 row /@ Range[0, 16] // Flatten (* _Jean-François Alcover_, Sep 27 2019 *)
%o A248939 (Haskell) import Data.IntSet (singleton, member, insert)
%o A248939 a248939 n k = a248939_tabf !! n !! k
%o A248939 a248939_tabf = map a248939_row [0..]
%o A248939 a248939_row n = n : wBall 1 n (singleton n) where
%o A248939    wBall _ 0 _ = []
%o A248939    wBall k x s = y : wBall (k + 1) y (insert y s) where
%o A248939                      y = x + (if (x - j) `member` s then j else -j)
%o A248939                      j = k * signum x
%o A248939 (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)}
%o A248939   for(n=0, 6, print(row(n))) \\ _Andrew Howroyd_, Mar 01 2018
%o A248939 (Python) def A248939_row(n):
%o A248939     seen = {n}; orbit = [n]; c = 0
%o A248939     while n != 0:
%o A248939         ++c; s = c if n>0 else -c; n += s if n-s in seen else -s
%o A248939         seen.add(n); orbit.append(n)
%o A248939     return orbit # _M. F. Hasler_, Mar 18 2019
%o A248939 (C++) #include <bits/stdc++.h>
%o A248939   A248939_row(long n) { int c=0, s; for(std::map<long, bool> seen; n; n += seen[n-(s=n>0?c:-c)] ? s:-s) { std::cout<<n<<", "; seen[n]=true; ++c; } std::cout<<0; } // _M. F. Hasler_, Mar 18 2019
%Y A248939 Cf. A228474 (row lengths - 1), A248961 (row sums), A248973 (partial sums per row), A248952 (min per row), A248953 (max per row), A005132 (Recamán).
%Y A248939 Cf. A248940 (row 7), A248941 (row 17), A248942 (row 20).
%K A248939 sign,tabf
%O A248939 0,4
%A A248939 _Reinhard Zumkeller_, Oct 17 2014
%E A248939 Escape clause added by _N. J. A. Sloane_, Apr 19 2019