A038219 The Ehrenfeucht-Mycielski sequence (0,1-version): a maximally unpredictable sequence.
0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1
Offset: 1
Examples
We start with a(1)=0, a(2)=1, a(3)=0. The longest suffix we have seen before is "0", when it occurred at the start, followed by 1. So a(4) = 0. We now have 0100. The longest suffix we have seen before is again "0", when it occurred at a(3), followed by a(4)=0. So a(5) = 1. We now have 01001. The longest suffix we have seen before is "01", when it occurred at a(1),a(2), followed by a(3)=0. So a(6) = 1. We now have 010011. And so on. For further illustrations of calculating these terms, see A308174 and A308175. - _N. J. A. Sloane_, May 21 2019
Links
- Rémy Sigrist, Table of n, a(n) for n = 1..100000 (first 5000 terms from Reinhard Zumkeller)
- A. Ehrenfeucht and J. Mycielski, A pseudorandom sequence - how random is it?, Amer. Math. Monthly, 99 (1992), 373-375.
- Grzegorz Herman and Michael Soltys, On the Ehrenfeucht-Mycielski sequence, Journal of Discrete Algorithms, 7, No. 4 (2009), 500-508.
- J. C. Kieffer and W. Szpankowski, On the Ehrenfeucht-Mycielski balance conjecture. Discrete Mathematics and Theoretical Computer Science (2007), 19-30.
- Fred Lunnon, Maple Program for A038219 (Complexity about O(n log n) arithmetic operations)
- Terry McConnell, The Ehrenfeucht-Mycielski Sequence
- Terry R. McConnell, DeBruijn Strings, double helices, and the Ehrenfeucht-Mycielski mechanism, arXiv:1303.6820 [math.CO], 2013.
- Rémy Sigrist, Perl program for A038219
- K. Sutner, The Ehrenfeucht-Mycielski sequence, 2001 [broken link]
- K. Sutner, The Ehrenfeucht-Mycielski sequence, 2001 [Cached copy]
- Klaus Sutner, The Ehrenfeucht-Mycielski Sequence, LNCS 2759 (2003) 282-293.
- Wikipedia, Ehrenfeucht-Mycielski sequence
Crossrefs
Programs
-
Haskell
a038219 n = a038219_list !! n a038219_list = 0 : f [0] where f us = a' : f (us ++ [a']) where a' = b $ reverse $ map (`splitAt` us) [0..length us - 1] where b ((xs,ys):xyss) | vs `isSuffixOf` xs = 1 - head ys | otherwise = b xyss vs = fromJust $ find (`isInfixOf` init us) $ tails us -- Reinhard Zumkeller, Dec 05 2011
-
Maple
See Lunnon link.
-
Perl
See Links section.
-
Python
from itertools import count, islice def agen(): astr, preval = "010", 1 yield from [0, 1, 0] while True: an = 1 - preval yield an astr += str(an) for l in range(len(astr)-1, 0, -1): idx = astr.rfind(astr[-l:], 0, len(astr)-1) if idx >= 0: preval = int(astr[idx+l]); break print(list(islice(agen(), 105))) # Michael S. Branicky, Aug 03 2022
Extensions
More terms from Joshua Zucker, Aug 11 2006
Offset changed by Reinhard Zumkeller, Dec 11 2011
Edited by N. J. A. Sloane, May 12 2019
Comments