OFFSET
1,1
COMMENTS
Start with the sequence of positive integers. Rearrange the sequence such that no two consecutive numbers are adjacent, by the following process:
Move 1 by the minimum number of steps required to the right.
Move 2 by the minimum number of steps required to the right. etc.
In general, move the first element which is required to be moved by the minimum number of steps in the sequence obtained by the previous step.
Initial sequence: 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,...
after one step: 2,3,1,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,...
after two steps: 3,1,4,2,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,...
after three steps: 3,1,4,2,6,7,5,8,9,10,11,12,13,14,15,16,17,18,19,...
Alternative algorithm: Start with 3. Decrease by 2 then increase by 3 then decrease by 2 to obtain the first four terms, and increase the fourth term by 5 to obtain the new start. Repeat the process to get the subsequent terms.
After two steps of the first algorithm, the group of the first four numbers satisfies the condition, and the difference between the fourth term and the fifth is 3. Therefore the sequence continues with the same permutation of the next four terms.
For a required difference of at least 3 (see A067061), the same argument leads permutations in groups of 6 terms. In general, a required difference of at least k leads to permutations in groups of 2*k, and a linear recurrence equation with signature (1, <2*k-2 zeros>, 1, -1).
LINKS
Index entries for linear recurrences with constant coefficients, signature (1,0,0,1,-1).
FORMULA
From Georg Fischer, Apr 02 2019: (Start)
G.f.: (4*x^4 - x^3 - x^2 - x + 3) / ((x-1)^2*(x+1)*(x^2+1)).
a(n) = a(n-1) + a(n-4) - a(n-5) for n > 4. (End)
MATHEMATICA
LinearRecurrence[{1, 0, 0, 1, -1}, {3, 1, 4, 2, 7}, 72] (* Georg Fischer, Apr 01 2019 *)
PROG
(Python) def a(n): return n+[-2, 2, -1, 1][n%4] # Albert ten Oever, Mar 27 2019
(PARI) Vec((2*x^4-2*x^3+3*x^2-2*x+3)/((x-1)^2*(x^3+x^2+x+1)) + O(x^72)) \\ or
a(n)=floor((n-1)/4)*4+([3, 1, 4, 2][(n-1)%4+1]) \\ Georg Fischer, Apr 02 2019
(Perl 5) my @a = (3); my $n = 0;
while ($n < 72) {
push(@a, $a[$n ++] - 2); # 1
push(@a, $a[$n ++] + 3); # 4
push(@a, $a[$n ++] - 2); # 2
push(@a, $a[$n ++] + 5); # 7
} print join(", ", @a); # Georg Fischer, Apr 01 2019
CROSSREFS
KEYWORD
easy,nonn
AUTHOR
Amarnath Murthy, Jan 03 2002
EXTENSIONS
More terms from Larry Reeves (larryr(AT)acm.org), Apr 03 2002
Edited by Georg Fischer, Apr 01 2019
STATUS
approved