The Baum-Sweet Sequence
JavaScript (ES6), 70 68 63 bytes
g=n=>n?g(n-1).concat(/0/.test(n.toString(2).split`00`)?[]:n):[]
console.log(g(1000).join(", "))
Slightly more interesting recursive solution:
n=>[...Array(n+1).keys()].filter(f=n=>n<2?n:n%4?n&f(n>>1):f(n/4))
67 bytes thanks to @Neil.
g
is the function to call.
05AB1E, 10 9 bytes
Saved a byte thanks to Adnan
ƒNb00¡SP–
Try it online!
Explanation
ƒ # for N in [0 ... input]
Nb # convert N to binary
00¡ # split at "00"
S # convert to list of digits
P # product of list
– # if 1, print N
Bash, 58, 46 bytes
EDITS:
- Replaced bc with dc (Thx @Digital Trauma !)
- Start with 1;
Golfed
seq $1|sed 'h;s/.*/dc -e2o&p/e;s/00//g;/0/d;x'
Test
>./baum 32
1
3
4
7
9
12
15
16
19
25
28
31
Explained
shell
seq $1 #generate a sequence of integers from 1 to N, one per line
|sed #process with sed
sed
h #Save input line to the hold space
s/.*/dc -e2o&p/e #Convert input to binary, with dc
s/00//g #Remove all successive pairs of 0-es
/0/d #If there are still some zeroes left
#(i.e. there was at least one odd sequence of them)
#drop the line, proceed to the next one
x #Otherwise, exchange the contents of the hold
#and pattern spaces and (implicitly) print
Try It Online !