# Python program for A327544 # Michael S. Branicky, Feb 04 2021 from numba import njit @njit def lrp(k, bits): # longest repeated prefix (overlaps allowed) for i in range(bits-1, 0, -1): left1 = (1 << i) mask = left1 - 1 shifted_mask = (mask << (bits-i)) prefix = ((shifted_mask & k) >> (bits - i)) + left1 for j in range(1, bits - i + 1): sj = (((shifted_mask >> j) & k) >> (bits - i - j)) + left1 if sj == prefix: return prefix return -1 @njit def lrs(k, bits): # longest repeated suffix (overlaps allowed) for i in range(bits-1, 0, -1): left1 = (1 << i) mask = left1 - 1 suffix = (mask & k) + left1 for j in range(1, bits - i + 1): sj = (((mask << j) & k) >> j) + left1 if sj == suffix: return suffix return -1 @njit def a(n): if n == 1: return 2 c = 0 for i in range(2**(n-1)): k = (1 << (n-1)) + i if lrp(k, n) == lrs(k, n): c += 1 return 2*c print([a(n) for n in range(1, 21)]) # about 1 second on Google Colab # print n a(n) elapsed time, AND # write b-file from time import time time0 = time() alst = [] for n in range(1, 10001): an = a(n) alst.append(an) print(n, an, time()-time0, flush=True) with open('b327544.txt', 'a') as f: f.write(f"{n} {an}\n")