http://digicc.com/fido/
The site asks you to pick a number, jumble the digits to make a second number, subtract the smaller from the larger, cross out a digit (not 0), and enter the rest. It then tells you which number you picked.
For those of you who like to be mystified, or want to figure it out yourselves, read no further. Others, scroll down (there's transcript at the end).
Almost there...
A little further...
Okay.
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 mouseUpregards,
Geoff Canyon [EMAIL PROTECTED]
_______________________________________________ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
