IoTeX team interviewed two of our winners who solved the brain teaser. Feel free to share with us your story on how you solved our puzzle via our Twitter. If your story is fantastic, we may include it in our blog and you may receive additional rewards.
First, we know that many of you have been waiting for the answer!
Answer Key for x/y+y/z+z/x=17
This puzzle can be cracked via exhaustive search, but the IoTeX developer team wants to show you how to solve the puzzle using ECC.
x/y + y/z + z/x = 17.
Clearly, the left side of this equation contains three terms that are polynomials divided by another polynomial, thereby involving rational functions. Moreover, it is not difficult to find out that if (x, y, z) is a positive solution for this equation, so is (rx, ry, rz) for any positive integer r:
rx/ry + ry/rz + rz/rx = x/y + y/z + z/x = 17.
Therefore, this equation is homogenous. While the equation has three variables, it is actually only two-dimensional. The equation in the above form looks messy and our intuition tells us that we should clean things up by multiplying a common multiple of the denominators on both sides, which gives us a Diophantine equation:
x²z + y²x + z²y -17xyz = 0.
This is a homogenous equation of degree 3 and the positive integer solutions of this equation correspond to rational solutions of the original puzzle. Using elementary algebra, we can show that this equation has rational solutions. Therefore, it is birationally equivalent to an elliptic curve.
Letting x/z = -X/4 and y/z = (17X — Y + 4)/2X, we can transform the above equation to the corresponding elliptic curve in Weierstrass form:
E: Y² = X³ + 289X² + 136X + 16.
Computing rational points on an elliptic curve is a difficult mathematical problem and involves a very complicated process. Fortunately, we can use the powerful open-source computer algebra system SageMath to get the rational points that are generators of the Mordell-Weil group of the given elliptic curve. SageMath can be easily installed on Ubuntu 16.04 LTS by using the instructions below:
After running SageMath from the terminal, we can type the following command:
This command returns a rational point (X, Y) = (-2664/25, 179284/125) on the given elliptic curve, which leads to x/z = 443556/16650 and y/z = 253265/16650. We then obtain one solution for our puzzle, i.e., x = 443556, y = 253265 and z = 16650. It is easy to check that
443556/253265 + 253265/16650 + 16650/443556 = 17.
We can also use the above rational point (X, Y) as the starting point and jump to other points using the group law on the elliptic curve. Each tuple of positive integers (x, y, z) will give us a solution for the puzzle.
So there you have it! You have completed IoTeX’s crash course on ECC!
Winner Solution #1
Our second story is an unbelievably creative solution.
Bot Puzzle Winner: I used a very dumb process actually. I have started looking at the problem at around 1:30AM, but gotten nowhere. Firstly, I created a program that runs all of the possibilities changing each robot from 1 to 50 and got nothing.
Phoned a friend 📱(in this case phoned a bro)…
Bot Puzzle Winner: I Whatsapped my brother (a math genius) at around 2AM to see if he can solve it. He couldn’t, so we gave up and I went to brush my teeth and go to bed.
Math genius brother: [sent our champion a similar problem + solution]
Bot Puzzle Winner: The amazing part was that the solution had around 80 digits. That was the “Dr. House” moment so I got back to the computer and started to chat with @IoTeXBountyBot again. I started with a solution that was closed to 17.
Bot Puzzle Winner: 1 1 16
Bot Puzzle Winner: 10 10 160
Bot Puzzle Winner: 10000000000 10000000000 160000000000
Bot Puzzle Winner: At this point, it was clear that multiplying the solution by 10 was going nowhere, so I introduced a little “noise”.
Bot Puzzle Winner: 10000000000 10000000099 160000000000
IoTeXBountyBot: 17.06249999071875009801 (Closer to 17 now)
Bot Puzzle Winner: 10000000000 10090000000 160000000000
IoTeXBountyBot: 17.05414277750247770069 (Closer!)
Bot Puzzle Winner: 10000000000 10900000000 160000000000
IoTeXBountyBot: 16.98555619266055045872 (Too much!)
Bot Puzzle Winner: I played “Marco Polo” game with the pot and after multiple trials and errors I ended up with a much better setup.
Bot Puzzle Winner: 10000000000 1099999999999 16022359999999 (look at #3)
IoTeXBountyBot: 17.00010496504747778078 (3 zeros after the dot)
Bot Puzzle Winner: 10000000000 1099999999999 16022159999999 (look at #3, swapped it with a 1)
IoTeXBountyBot: 17.000053935353918841802 (4 zeros after the dot!!!)
Bot Puzzle Winner: So I kept trying for 5 more minutes. Eventually realized that I had to add more digits to all of my numbers to get on the right track:
A few more trials and errors….
Bot Puzzle Winner: 100000000000000000000 109999999999999999999 1602225458325010289505
IoTeXBountyBot: 17 (HOOOOO YEEAAAAAAAA!)
Bot Puzzle Winner: I could probably have looked at this and solved it a lot faster with real math, but in my country it was already 3:10am so I was just doing it “dumb style”. Cheers to my brother, who showed me the right path.
Love you! ❤️
PS: I tried to bribe the bot with candy 🍬 but he was very strict, and kept asking for “integers”. 🤣
We love the fact that our winner pushed the precision to the limit and made the bot accepted his answer (if we were to set the precision to be infinite then the bot would not have accepted the answer), but this was not the precise answer that one would get via ECC. Nevertheless, we love his creative answer and applaud his patience and efforts! We are also awarding the first person who came up with the ECC answer. Congrats to all of our winners!
Winner Solution #2
One of our community members used LaTeX to write down his answer. We love his concise and beautifully crafted solution! Great job!
Big shoutout to our developers for making our bot_puzzle possible. Hope you enjoyed the brain teaser as much as we did! Join our telegram for future events. Our marketing team is working very hard to get the reward program ready. PM us via telegram if you are having any problem with your reward account.