# Progressing Two's

## Python 2, 52 bytes

n=p=0
exec"n+=1;r=n-n**.5//1;print p+r;p=r;"*input()


Try it online!

54 bytes

lambda N:[n-~n-n**.5//1-(n+1)**.5//1for n in range(N)]


Try it online!

It's a formula!

$$f(n) = 2n+1 - \lfloor \sqrt n\rfloor - \lfloor \sqrt {n+1} \rfloor$$

This can also be split up as

$$f(n) = \sum_{k \in \{n,n+1\}}\left({k-\lfloor \sqrt k\rfloor}\right)$$

Note that $$\k-\lfloor \sqrt k\rfloor\$$ is the number of non-squares from $$\1\$$ to $$\k\$$ inclusive.

## APL (Dyalog Extended), 14 12 bytes

0,2+/⍳-⌊∘√∘⍳


Try it online!

Uses xnor's formula of

$$f(n) = \sum_{k \in \{n,n+1\}}\left({k-\lfloor \sqrt k\rfloor}\right)$$

### How it works

0,2+/⍳-⌊∘√∘⍳
⍳-       ⍝ 1..n minus...
⌊∘√∘⍳  ⍝ floor(sqrt(1..n))
2+/         ⍝ Add two consecutive pairs
⍝ giving first n items of the sequence except leading 0
0,            ⍝ Prepend the leading 0


## APL (Dyalog Extended), 14 bytes

⊢↑2(∧+/,2××/)⍳


Try it online!

Based on the observation that the sequence is the union of all odd numbers and the numbers in the form of $$\2n(n+1), n \ge 0\$$. Uses ⎕IO←0.

### How it works

⊢↑2(∧+/,2××/)⍳  ⍝ Input: positive integer n
⍳  ⍝ Generate 0..n-1
2(      ×/)   ⍝ Pairwise product (0×1, 1×2, ..., (n-2)×(n-1))
2×      ⍝ Double it
+/,        ⍝ Concat with pairwise sum (0+1, 1+2, ..., (n-2)+(n-1))
∧           ⍝ Ascending sort the 2(n-1) numbers in total
⊢↑              ⍝ Take the first n numbers
⍝ For n=1, "overtake" from zero elements, giving single 0


(takeq 4)
q k=0:[1,3..k]++map(k+)(q\$k+4)


Try it online!

Uses a version of Bubbler's observation that the sequence alternates runs of consecutive odd numbers with an even number directly in between.

(takescanl(+)0(q[2]))
q r=1:r++1:q(2:2:r)


Try it online!

Generates an infinite list of 1's and 2's, take the cumulative sums, and truncates to the input length.