NINES
Text: So, I have a head start in figuring this out, because I have a background in math puzzles from way back, and this is a math puzzle. The site asks you to choose a 3 or 4 digit number, but even if you choose a 4 digit number it suggests you choose a larger one next time, and indeed, it will work with a 5 digit number as well. As I said, this type of puzzle isn't completely unfamiliar. I started off looking at the algebra involved. A four digit number can be represented as: 1000w + 100x + 10y + z Where w, x, y, and z are any digit from 0 to 9 (except w, which can't be a 0 or it would be a three digit number) If you jumble it, the second number will look something like this: 1000x + 100z + 10y + w When you subtract the smaller of these two numbers from the other, you get: 999w - 900x - 99z or possibly -(999w - 900x - 99z), whichever is positive. Note that the y's cancelled out because y didn't change position In fact, the result will be the sum of one value (or the negative of the value) from each of these four lines: 9w, 99w, 999w, 90w, 990w, 900w, or 0w if it doesn't change position 9x, 99x, 999x, 90x, 990x, 900x, or 0x if it doesn't change position 9y, 99y, 999y, 90y, 990y, 900y, or 0y if it doesn't change position 9z, 99z, 999z, 90z, 990z, 900z, or 0z if it doesn't change position The reason for the above is fairly straightforward. There are only so many different pairs of positions the number can have: it can be in the thousands place and the ones place, which will result in either 999 or -999 times that number in the resulting difference. The thing to note about the above is that each of the coefficients is divisible by 9. "Aha!" the math puzzle solver cries, "Now we're getting somewhere!" The reason for the outburst is that all numbers divisible by 9 have digits that add up to 9 or a multiple of 9. So for example: 27 2 + 7 = 9 99 9 + 9 = 18 171 1 + 7 + 1 = 9 etc. This works for any multiple of 9. The proof is either beyond the scope of this writing, or left as an exercise for the reader, take your pick ;-) Now, the truth so often exploited in puzzles like this is that if you have a number that deviates from a multiple of 9 in some way, and you know what that way is, you can tell the original number because you know the digits must add up to 9. Here it's fairly straightforward. Once you've calculated the difference, you are supposed to pick one digit of the result and tell the program the others. The program knows the digits must add up to 9, so if you tell it the other digits are (in no particular order -- order doesn't matter because we're summing): 3, 2, 8 Then the program adds those numbers, gets 13 and therefore knows that the missing digit must be 5 in order to add up to 18 and make it a multiple of 9. The program asks you not to choose 0, which is a little funny. If the digits add up to a multiple of 9 it should know you chose 0. But I suppose you could have entered all the digits, and it would have no way to know whether you had chosen 0 or simply not chosen anything at all. Bringing this back to Revolution, here's code I wrote to generate some numbers and the resulting sums. Note how the third number in each line displayed is divisible by 9. To be thorough you'd have to rewrite this to check every possible combination of numbers and scrambling, but I'm done now ;-) The great thing about Revolution is how easy it is to bang out something like this. The initial code took maybe five minutes to write. on mouseUp repeat 100 put random(9000) + 999 into tNumber put empty into tScrambledNumber put tNumber into temp repeat 3 repeat with i = 4 down to 1 put random(i) into tWhichDigit put char tWhichDigit of temp after tScrambledNumber delete char tWhichDigit of temp end repeat if tScrambledNumber is not tNumber then exit repeat end repeat put abs(tNumber - tScrambledNumber) into tDifference put 0 into tSum repeat for each char c in tDifference add c to tSum end repeat put tNumber && tScrambledNumber && tSum & cr after fld 1 end repeat end mouseUp regards, Geoff Canyon gcanyon@inspiredlogic.com
See Also:
Source: