|
|
A262057
|
|
Array based on the Stanley sequence S(0), A005836, by antidiagonals.
|
|
3
|
|
|
0, 2, 1, 7, 5, 3, 21, 8, 6, 4, 23, 22, 16, 11, 9, 64, 26, 24, 17, 14, 10, 69, 65, 50, 25, 19, 15, 12, 71, 70, 67, 53, 48, 20, 18, 13, 193, 80, 78, 68, 59, 49, 34, 29, 27, 207, 194, 152, 79, 73, 62, 51, 35, 32, 28, 209, 208, 196, 161, 150, 74, 63, 52, 43, 33, 30
(list;
table;
graph;
refs;
listen;
history;
text;
internal format)
|
|
|
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
|
|
|
FORMULA
|
|
|
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)
% 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
|
|
CROSSREFS
|
|
|
KEYWORD
|
|
|
AUTHOR
|
|
|
STATUS
|
approved
|
|
|
|