|
|
A229614
|
|
Number of binary strings of length n avoiding "squares" (that is, repeated blocks of the form xx) with |x| > 2.
|
|
4
|
|
|
1, 2, 4, 8, 16, 32, 56, 104, 178, 314, 536, 930, 1558, 2666, 4482, 7574, 12686, 21360, 35812, 60152, 100812, 169122, 283498, 475356, 796292, 1334558, 2235888, 3746534, 6276048, 10515080, 17614726, 29510362, 49434792, 82815016, 138729368, 232399846, 389306052
(list;
graph;
refs;
listen;
history;
text;
internal format)
|
|
|
OFFSET
|
0,2
|
|
COMMENTS
|
Entringer et al. showed that this sequence is always nonzero (in contrast with A230127, which is zero for all n >= 19). - Nathaniel Johnston, Oct 10 2013
|
|
LINKS
|
|
|
EXAMPLE
|
For n = 6 there are 8 strings omitted, namely 000000, 001001, ..., 111111, so a(6) = 64 - 8 = 56.
|
|
MATHEMATICA
|
a[n_] := a[n] = Select[PadLeft[#, n]& /@ IntegerDigits[Range[0, 2^n-1], 2], {} == SequencePosition[#, {b__, b__} /; Length[{b}] >= 3, 1]&] // Length;
|
|
PROG
|
(Python) # see link for a faster program based on binary operations
def isf(s): # incrementally squarefree (check factors ending in last letter)
for l in range(3, len(s)//2 + 1):
if s[-2*l:-l] == s[-l:]: return False
return True
def aupton(nn, verbose=False):
alst, sfs = [1], set("0")
for n in range(1, nn+1):
an = 2*len(sfs) # by symmetry
sfsnew = set(s+i for s in sfs for i in "01" if isf(s+i))
alst, sfs = alst+[an], sfsnew
if verbose: print(n, an)
return alst
|
|
CROSSREFS
|
|
|
KEYWORD
|
nonn
|
|
AUTHOR
|
|
|
EXTENSIONS
|
|
|
STATUS
|
approved
|
|
|
|