You Can Make Any Number Out of Four 4s Because Math Is Amazing (youtube.com)
Andrew Moseman, writing for Popular Mechanics: Here's a fun math puzzle to brighten your day. Say you've got four 4s -- 4, 4, 4, 4 -- and you're allowed to place any normal math symbols around them. How many different numbers can you make? According to the fantastic YouTube channel Numberphile, you can make all of them. Really. You just have to have some fun and get creative. When you first start out, the problem seems pretty simple. So, for example, 4 - 4 + 4 - 4 = 0. To make 1, you can do 4 / 4 + 4 - 4. In fact, you can make all the numbers up to about 20 using only the basic arithmetic operations of addition, subtraction, multiplication, and division. But soon that's not enough. To start reaching bigger numbers, the video explains, you must pull in more sophisticated operations like square roots, exponents, factorials (4!, or 4 x 3 x 2 x 1), and concatenation (basically, turning 4 and 4 into 44).
Variants of this problem have been along for a very long time. It was popular as a recreational game in the 1930s and is now used more with Middle School students as a way of getting them more familiar with different operations.
If one uses instead of 4 uses 1 and has a restricted operation set or the like then you can get some actually non-trivial math by asking how many 1s you need. For example, one can define the integer complexity of a number n, denoted by ||n|| as the minimum number of 1s needed to write n as a product or sum of 1s with any number of parentheses. Thus for example, 6=(1+1)(1+1+1) shows that ||n|| 1 one has 3log_3 n - a better result is actually known that what is in that post, and I'm writing it up now. The other person mentioned there is Harry Altman who probably has thought more about different notions of complexity of numbers than anyone else at this point (his dissertation was on the subject). We had a joint paper https://arxiv.org/abs/1207.4841 that is mostly readable.
Another neat variant of this is again looking at 1s and allowing just addition, but allow that once you have made a number you can use it again, and now you count how many operations you have used. So for example, in this framework, you can use 3 additions to get 6 because 3=1+1+1 and 6=3+3. This is the addition chain complexity https://en.wikipedia.org/wiki/Addition_chain and is closely related to how to quickly exponentiate objects (such as matrices, or specific numbers mod another group) https://en.wikipedia.org/wiki/Addition-chain_exponentiation which is very important for doing a lot of practical algorithms efficiently (such as RSA and Diffie-Hellman).
The problem in the original post is essentially silly but it connects to a lot of neat, serious math. (Also, Numberphile is in general great.)
The video is actually worth watching.
They don't need concatenation; and can get any whole number from
log
sqrt symbol
division
the sqrt symbol is the 'trick' to it all; since it can be applied an infinite number of times to a single expression.
To be fair though, sometimes they do come out with complete BS. The claim that the sum of all natural numbers is -1/12 is a good example. It's not.
const int one = 65536; (Silvermoon, Texture.cs)
SJW, n: "Someone I don't like, and by the way I'm a fuckwit" - AC