login
Remove middle term and append, starting with [1, 2, 3].
2

%I #30 Aug 05 2021 13:18:39

%S 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,

%T 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,

%U 1,3,1,2,1,3,1,2,3,1,1,2,1,3,1,2,3,1,3

%N Remove middle term and append, starting with [1, 2, 3].

%H Alois P. Heinz, <a href="/A342101/b342101.txt">Table of n, a(n) for n = 1..65537</a>

%H Kevin Ryde, <a href="https://user42.tuxfamily.org/seq-A342101-middle-delete/index.html">PARI/GP Code and Notes</a>.

%e 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.

%p T:= proc(n) option remember; `if`(n=1, [$1..3][],

%p subsop(2^(n-2)+1=[][], [seq(T(i), i=1..n-1)])[])

%p end:

%p seq(T(n), n=1..8); # _Alois P. Heinz_, Apr 12 2021

%t Nest[Join[#, Drop[#, {(Length[#] + 1)/2}]] &, Range[3], 6] (* _Michael De Vlieger_, May 01 2021 *)

%o (Kotlin)

%o fun A342101(iter: Int): List<Int> = removeMiddle(listOf(1,2,3), iter)

%o fun removeMiddle(initial: List<Int>, iter: Int): List<Int> {

%o if (iter < 2) return initial

%o val prev = removeMiddle(initial, iter-1)

%o return prev + prev.subList(0, (prev.size - 1) / 2) + prev.subList((prev.size + 1) /2, prev.size)

%o }

%o (Python)

%o def aupton(terms):

%o alst = [1, 2, 3]

%o while len(alst) < terms:

%o alst += alst[:len(alst)//2] + alst[(len(alst)+1)//2:]

%o return alst[:terms]

%o print(aupton(87)) # _Michael S. Branicky_, Mar 26 2021

%o (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

%o (PARI) \\ Also see links.

%Y Cf. A000051.

%K nonn

%O 1,2

%A _Matthew Malone_, Feb 28 2021