Look and Say Sequence (Conway’s constant)

I just took a look at John Conway’s video at Numberphile about the “look-and-say” sequence or as Conway called it “The Weird and Wonderful Chemistry of Audioactive Decay”. He did a lot of research on this interesting sequence and wrote about it in the Cambridge magazine “Eureka” in 1986.

To see the video, check:

The sequence they are talking about in the video starts with the “seed” 1. So the sequence is thus
1 11 21 1211 111221 312211 13112221 1113213211,…

Conway reveals how to arrive to this sequence in the video, but we can reiterate it very short:

We denote the numbers \(L_n\), where \(n\) is the step of this “look and say” game. From above we can see that for instance \(L_6\) = 312211. To create a new number \(L_n\) we need to spell out the number of consecutive numbers in the previous number \(L_{n-1}\).

So we start with the seed, which is \(L_1\)=1. For \(L_2\) we look at \(L_1\) and say “that is 1 one” which is 11, so \(L_2\)=11. For \(L_3\) we look at \(L_2\) and see “2 ones” which is 21. \(L_4\) becomes “1 two and 1 one” = 1211 and so on.

The sequence is very simple, but tedious to write down by hand. As they mention in the video and as we will see, the sequence will just become longer and longer. To verify Conways constant for yourself, you can write a simple MATLAB script:

function out = lookandsay(in)

in(end+1) = -1; 
%To make the code simple we introduce an
%element that can contrast all other elements in the vector
out = [];

tmp = in(1);
rep = 1;

for i = 2:length(in)

    if in(i) ~= tmp
        out(end+1) = rep;
        out(end+1) = tmp;
        tmp        = in(i);
        rep        = 0;
    end
    
    rep = rep+1;
end

Note that I use arrays of single integers instead of the complete integers, so 12 is [1,2]. I chose to do this because it makes it simpler to add numbers and calculate their length.

That’s it. This function takes one step in the sequence. Beginning with 1, it then produces 11. This is [rep tmp], the number of repetitions of that number and then the number itself. We will denote the sequence \(L_n\) for step n. How do we get the other numbers? Well, we can simply start with 1 and update the output vector and feed it back to the function

tmp = [1]; 

for i = 1:10; 
	tmp = lookandsay(tmp) 
end

Conway noticed that the lengths of the vectors in the sequence \(|L_n|\) seem to increase by a constant for each step in the sequence where \(|L_n|\) denotes the number of elements in \(L\) in step \(n\). The constant was named Conway’s constant and it is about 1.3057… in the video he says 1.357 which is wrong.

Remarkably, Conway actually proved that \(\lim_{n\rightarrow\infty}{L_n/L_{n-1}} \approx 1.3057\). He found that the constant was the only positive root of …
\(
0 = x^{71} – x^{69} – 2x^{68} – x^{67} + 2x^{66} + 2x^{65} + x^{64} – x^{63} – x^{62} – x^{61}-\\
x^{60}-x^{59} + 2x^{58} + 5x^{57} + 3x^{56} – 2x^{55} – 10x^{54} – 3x^{53} – 2x^{52} + 6x^{51} +\\
6x^{50} + x^{49} + 9x^{48} – 3x^{47} – 7x^{46} – 8x^{45} – 8x^{44} + 10x^{43} + 6x^{42} + 8x^{41} – \\
5x^{40} – 12x^{39} + 7x^{38} – 7x^{37} + 7x^{36} + x^{35} – 3x^{34} + 10x^{33} + x^{32} – 6x^{31} – \\
2x^{30} – 10x^{29} – 3x^{28} + 2x^{27} + 9x^{26} – 3x^{25} + 14x^{24} – 8x^{23} – 7x^{21} +\\
9x^{20} – 3x^{19} – 4x^{18} – 10x^{17} – 7x^{16} + 12x^{15} + 7x^{14} + 2x^{13} – 12x^{12} -\\
4x^{11} – 2x^{10} – 5x^9 + x^7 – 7x^6 + 7x^5 – 4x^4 + 12x^3 – 6x^2 + 3x – 6
\)

Hmm, the above polynomial is missing degree 22 and 8… By the way, the constant holds for all seeds except for the seed 22, yeah… seems random. This means that the sequence is strictly increasing in length. However, Conway notices that the sequence can be divided into parts or “elements” and that these sequences are re-occuring. It’s fascinating that such as simple sequence like this could be so complicated to answer.

I’m not going to prove anything about what I have just said. Instead, since we have a program which can create the sequence, we can plot the lengths and calculate the ratios \(|L_n|/|L_{n-1}|\).

tmp = [1]; 
L   = [];
for i = 1:50; 
	tmp  = lookandsay(tmp); 
	L(i) = length(tmp); 
end

We can plot the ratio between the elements in L simply
plot(L(2:end)./L(1:end-1))

Conway's constant
The Conway constant convergence using numbers: 1.0000, 2.0000, 1.5000, 1.0000, 1.3333, 1.2500, 1.4000, 1.4286, 1.3000, 1.3077, 1.3529, 1.3478, 1.2581, 1.3077, 1.3137, 1.3134, 1.2841,…

As we can see, the plot slowly converges to 1.3057. After over 30 iterations at which point the length of the vector is 5808 integers long, we eventually start to see that the ratio is converging to this mysterious Conway’s constant.

If you want to read more about the “elements idea” and gain more insight on why the polynomial is so big, see Nathanial Johnstons website.

Leave a Reply

Your email address will not be published. Required fields are marked *