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.

A051912 a(n) is the smallest integer such that the sum of any three ordered terms a(k), k <= n, is unique.

Original entry on oeis.org

0, 1, 4, 13, 32, 71, 124, 218, 375, 572, 744, 1208, 1556, 2441, 3097, 4047, 5297, 6703, 7838, 10986, 12331, 15464, 19143, 24545, 28973, 34405, 37768, 45863, 50876, 61371, 68302, 77917, 88544, 101916, 122031, 131624, 148574, 171236, 197814
Offset: 0

Views

Author

Wouter Meeussen, Dec 17 1999

Keywords

Examples

			Three terms chosen from {0,1,4} can be 0+0+0; 0+0+1; 0+1+1; 1+1+1; 0+0+4; 0+1+4; 1+1+4; 0+4+4; 1+4+4; 4+4+4 are all distinct (3*4*5/6 = 10 terms), so a(2) = 4 is the next integer of the sequence after 0 and 1.
		

Crossrefs

Row 3 of A365515.

Programs

  • Maple
    A[0]:= 0: S:= {0}: S2:= {0}: S3:= {0}:
    for i from 1 to 40 do
      for x from A[i-1] do
        if (map(t -> t+x,S2) intersect S3 = {}) and (map(t -> t+2*x, S) intersect S3 = {}) then
         A[i]:= x;
         S3:= S3 union map(t -> t+x,S2) union map(t -> t+2*x, S) union {3*x};
         S2:= S2 union map(t -> t+x, S) union {2*x};
         S:= S union {x};
         break
        fi
      od
    od:
    seq(A[i],i=0..40); # Robert Israel, Jul 01 2019
  • Mathematica
    a[0] = 0; a[1] = 1; a[n_] := a[n] = For[A0 = Array[a, n, 0]; an = a[n-1] + 1, True, an++, A1 = Append[A0, an]; A2 = Flatten[Table[A1[[{i, j, k}]], {i, 1, n+1}, {j, i, n+1}, {k, j, n+1}], 2]; A3 = Sort[Total /@ A2]; If[Length[A3] == Length[Union[A3]], Return[an]]]; Table[an = a[n]; Print["a(", n, ") = ", an]; an, {n, 0, 38}] (* Jean-François Alcover, Nov 24 2016 *)
  • Python
    from itertools import count, islice
    def A051912_gen(): # generator of terms
        aset1, aset2, aset3, alist = set(), set(), set(), []
        for k in count(0):
            bset2, bset3 = {k<<1}, {3*k}
            if 3*k not in aset3:
                for d in aset1:
                    if (m:=d+(k<<1)) in aset3:
                        break
                    bset2.add(d+k)
                    bset3.add(m)
                else:
                    for d in aset2:
                        if (m:=d+k) in aset3:
                            break
                        bset3.add(m)
                    else:
                        yield k
                        alist.append(k)
                        aset1.add(k)
                        aset2 |= bset2
                        aset3 |= bset3
    A051912_list = list(islice(A051912_gen(),20)) # Chai Wah Wu, Sep 01 2023

Extensions

More terms from Naohiro Nomoto, Jul 22 2001