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.
%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