But there are many more real numbers between 0 and 1 that have an infinite number of decimals, like 0.1231234736876578632786278365782635879281987087420...
As jgreen says in a sibling comment, which number do you assign to 1/3 = 0.333333333333333333333333333333333333333333... ?
The result you got is well known but interesting, because it's unintuitive. Moreover with some tricks you can try to extend your method to all fractions, like 1/3, 5/7, 27/127, ...
The problem is that there are irrational numbers like pi, sqrt(2), ... and many other numbers that we have assigned no friendly name. Those "unfriendly" numbers are the actual problem.
[edit] - fixed typo
One you fix a finite set of symbols, let's say ascii [1], the amount of numbers you can describe with it with strings of finite length is different from the amount you can describe if you allow also infinite length.
The difference between finite length and infinite length in this problem is very important.
[1] I'm not sure about unicode /s
Great point, this is my attempt to do that. Truly, it may be an inefficient means, but it seemed like a simple approach. Also, it is fun, even when I am wrong. It means I get to learn something new and see from a different angle.
> Another commenter already pointed out a possible problem of your "mirror" method: you're relying in being able to read a number backwards. To do that, you need to know all the digits. But it doesn't work well with numbers with infinite decimal digits like pi or its inverse.
True, this is a glaring flaw in the current reasoning.
Thank you for the thoughtful response!
> Follow each branch as deeply as possible counting all sub branches until there are no sub branches left.
I would definitely recommend not judging the quality of the video based upon the quality of my reasoning in the experiment.
That would only count the rationals which you can definitely count off a carefully arranged matrix of rationals. But reals = rationals and irrationals and the irrationals are uncountable.
So if level = lambda n: 1-int(math.log10(1./n))
We only ever generate [‘.’ + ‘0’ * (level(n) – 1) + str(i + 1) for i in range(9)]