OFFSET
1,2
COMMENTS
This array is similar to a dispersion in that the first column is the minimal nonnegative sequence that contains no 3-term arithmetic progression, and each next column is the minimal sequence consisting of the numbers rejected from the previous column that contains no 3-term arithmetic progression.
A100480(n) describes which column n is sorted into.
The columns of the array form the greedy partition of the nonnegative integers into sequences that contain no 3-term arithmetic progression. - Robert Israel, Feb 03 2016
LINKS
Max Barrentine and Robert Israel, Table of n, a(n) for n = 1..10011 (first 141 antidiagonals, flattened; n=1..77 from Max Barrentine)
FORMULA
A006997(A(n, k)) = k - 1. - Rémy Sigrist, Jan 06 2024
EXAMPLE
From the top-left corner, this array starts:
0 2 7 21 23 64
1 5 8 22 26 65
3 6 16 24 50 67
4 11 17 25 53 68
9 14 19 48 59 73
10 15 20 49 62 74
MAPLE
M:= 20: # to get the first M antidiagonals
for i from 1 to M do B[i]:= {}: F[i]:= {}: od:
countdowns:= Vector(M, j->M+1-j):
for x from 0 while max(countdowns) > 0 do
for i from 1 do
if not member(x, F[i]) then
F[i]:= F[i] union map(y -> 2*x-y, B[i]);
B[i]:= B[i] union {x};
countdowns[i]:= countdowns[i] - 1;
break
fi
od;
od:
seq(seq(B[n+1-i][i], i=1..n), n=1..M); # Robert Israel, Feb 03 2016
PROG
(MATLAB)
function A = A262057( M, N )
% to get first M antidiagonals using x up to N
B = cell(1, M);
F = zeros(M, N+1);
countdowns = [M:-1:1];
for x=0:N
if max(countdowns) == 0
break
end
for i=1:M
if F(i, x+1) == 0
newforb = 2*x - B{i};
newforb = newforb(newforb <= N & newforb >= 1);
F(i, newforb+1) = 1;
B{i}(end+1) = x;
countdowns(i) = countdowns(i)-1;
break
end
end
end
if max(countdowns) > 0
[~, jmax] = max(countdowns);
jmax = jmax(1);
error ('Need larger N: B{%d} has only %d elements', jmax, numel(B{jmax}));
end
A = zeros(1, M*(M+1)/2);
k = 0;
for n=1:M
for i=1:n
k=k+1;
A(k) = B{n+1-i}(i);
end
end
end % Robert Israel, Feb 03 2016
CROSSREFS
KEYWORD
nonn,tabl
AUTHOR
Max Barrentine, Nov 29 2015
STATUS
approved