How to detect repeating digits in an infinite sequence? I tried Floyd & Brent detection algorithm but come to nothing... I have a generator that yields
Evgeny Kluev's answer provides a way to get an answer that might be right.
Let's assume you have some sequence D
that is a repeating sequence. That is there is some sequence d
of length L
such that: D_i = d_{i mod L}
, where t_i
is the i
th element of sequence t
that is numbered from 0. We will say sequence d
generates D
.
Given a sequence D
which you know is generated by some finite sequence t
. Given some d
it is impossible to decide in finite time whether it generates D
.
Since we are only allowed a finite time we can only access a finite number of elements of D
. Let us suppose we access the first F
elements of D
. We chose the first F
because if we are only allowed to access a finite number, the set containing the indices of the elements we've accessed is finite and hence has a maximum. Let that maximum be M
. We can then let F = M+1
, which is still a finite number.
Let L
be the length of d
and that D_i = d_{i mod L}
for i < F
. There are two possibilities for D_F
it is either the same as d_{F mod L}
or it is not. In the former case d
seems to work, but in the latter case it does not. We cannot know which case is true until we access D_F
. This will however require accessing F+1
elements, but we are limited to F
element accesses.
Hence, for any F
we won't have enough information to decide whether d
generates D
and therefore it is impossible to know in finite time whether d
generates D
.
It is possible to know in finite time that a sequence d
does not generate D
, but this doesn't help you. Since you want to find a sequence d
that does generate D
, but this involves amongst other things being able to prove that some sequence generates D
.
Unless you have more information about D
this problem is unsolvable. One bit of information that will make this problem decidable is some upper bound on the length of the shortest d
that generates D
. If you know the function generating D
only has a known amount of finite state you can calculate this upper bound.
Hence, my conclusion is that you cannot solve this problem unless you change the specification a bit.