|
|
A342101
|
|
Remove middle term and append, starting with [1, 2, 3].
|
|
2
|
|
|
1, 2, 3, 1, 3, 1, 2, 1, 3, 1, 2, 3, 1, 1, 2, 1, 3, 1, 2, 3, 1, 3, 1, 2, 1, 1, 2, 3, 1, 1, 2, 1, 3, 1, 2, 3, 1, 3, 1, 2, 1, 3, 1, 2, 3, 1, 1, 2, 1, 1, 2, 3, 1, 3, 1, 2, 1, 1, 2, 3, 1, 1, 2, 1, 3, 1, 2, 3, 1, 3, 1, 2, 1, 3, 1, 2, 3, 1, 1, 2, 1, 3, 1, 2, 3, 1, 3
(list;
graph;
refs;
listen;
history;
text;
internal format)
|
|
|
OFFSET
|
1,2
|
|
LINKS
|
|
|
EXAMPLE
|
Start with [1, 2, 3], take that sequence, remove the middle term, 2, and append to the original sequence, yielding [1, 2, 3, 1, 3]. Then repeat this process to give [1, 2, 3, 1, 3, 1, 2, 1, 3], and so on.
|
|
MAPLE
|
T:= proc(n) option remember; `if`(n=1, [$1..3][],
subsop(2^(n-2)+1=[][], [seq(T(i), i=1..n-1)])[])
end:
|
|
MATHEMATICA
|
Nest[Join[#, Drop[#, {(Length[#] + 1)/2}]] &, Range[3], 6] (* Michael De Vlieger, May 01 2021 *)
|
|
PROG
|
(Kotlin)
fun A342101(iter: Int): List<Int> = removeMiddle(listOf(1, 2, 3), iter)
fun removeMiddle(initial: List<Int>, iter: Int): List<Int> {
if (iter < 2) return initial
val prev = removeMiddle(initial, iter-1)
return prev + prev.subList(0, (prev.size - 1) / 2) + prev.subList((prev.size + 1) /2, prev.size)
}
(Python)
def aupton(terms):
alst = [1, 2, 3]
while len(alst) < terms:
alst += alst[:len(alst)//2] + alst[(len(alst)+1)//2:]
return alst[:terms]
(PARI) first(n) = { my(v = [1, 2, 3]); for(i = 1, logint(n-1, 2), cv = v[^(#v + 1)\2]; v = concat(v, cv) ); v } \\ David A. Corneth, Apr 14 2021
(PARI) \\ Also see links.
|
|
CROSSREFS
|
|
|
KEYWORD
|
nonn
|
|
AUTHOR
|
|
|
STATUS
|
approved
|
|
|
|