2020年5月23日土曜日

ブレインダイブ


ブレインダイバーが次のようなマジックを披露していた。

1、電卓を用意する。
2、1から9までの好きな数字を入力する。
3、掛けるボタンを押す、
4、2と3を繰り返す。
 答えが7桁になったら(100万以上になったら)ストップする。
5,答えの数字の桁をすべてたす。
 もし結果が2桁になればその数字の桁をたす。

たした結果は9です。

これはいわゆる数学マジックなのではと思い、次のようなHaskellのスクリプトを書いてみた。

--mag.hs
import System.Random
mkIs = do
    gen <- getStdGen
    let is = take 100 $ (randomRs (2,9) gen :: [Int])
    return is
loop is i = do
    let r = product (take i is)
    if r > 1000000
        then return (take i is, r)
        else loop is (i+1)
sumDigits x 0 = x
sumDigits x n = f + sumDigits (x - f * 10 ^ n) (n - 1)
    where f = x `div` (10^n)
main = do
    is <- mkIs
    (a,b) <- loop is 1
    putStr $ show a
    putStr $ show b
    putStr "="
    let rr = sumDigits b 6
    print rr
--endOf mag.hs

$ runghc mag.hs
([3,6,2,3,8,9,9,4,8],2239488)=36

これは
3x6x2x3x8x9x4x8=2239488
2+2+3+9+4+8+8=36
を示していて

確かに3+6=9
となっている。
なおスクリプトでは1から9ではなく2から9となっている。
1は本質的ではなく演出上の都合。

このスクリプトを100回繰り返した結果。

([9,3,8,8,8,8,7,5],3870720)=27
([7,5,7,3,8,6,2,3,9],1905120)=18
([5,6,9,6,8,6,6,4],1866240)=27
([8,5,2,6,4,4,5,6,6],1382400)=18
([5,3,5,8,7,4,5,7,8],4704000)=15
([6,5,8,3,7,6,9,6],1632960)=27
([8,4,6,7,9,7,9,7],5334336)=27
([7,5,6,2,4,3,4,5,3,6],1814400)=18
([5,7,7,5,8,2,3,3,6],1058400)=18
([5,8,7,6,2,6,8,8],1290240)=18
([2,5,4,6,7,5,2,7,2,3,7],4939200)=27
([8,9,3,2,7,2,2,4,6,6],1741824)=27
([8,7,5,6,4,5,7,3,5],3528000)=18
([9,8,7,4,7,5,3,3,3],1905120)=18
([5,8,4,6,8,2,4,6,8],2949120)=27
([6,8,6,4,2,3,7,7,3],1016064)=18
([6,6,2,7,8,5,9,4,2],1451520)=18
([2,7,2,2,6,6,7,7,8,9],7112448)=27
([4,8,3,6,2,2,8,7,8],1032192)=18
([8,7,2,3,9,4,7,2,2,2,8],5419008)=27
([6,2,2,6,2,2,9,3,8,3,6],2239488)=36
([5,5,2,4,3,7,6,2,7,7],2469600)=27
([7,7,8,3,4,5,5,9],1058400)=18
([9,4,8,6,4,2,6,2,4,8],5308416)=27
([2,4,2,4,9,7,4,6,7,2],1354752)=27
([6,4,7,7,5,3,6,4,6],2540160)=18
([6,3,2,8,7,5,8,2,7],1128960)=27
([5,5,9,5,8,3,7,3,9],5103000)=9
([8,9,4,9,4,4,8,7],2322432)=18
([5,8,5,7,2,9,9,9],2041200)=9
([7,4,8,3,8,3,3,5,3,3],2177280)=27
([6,9,4,6,9,7,6,3],1469664)=36
([8,7,5,3,6,6,7,4,7],5927040)=27
([7,7,4,4,6,3,7,8,3],2370816)=27
([9,7,3,6,9,8,7,8],4572288)=36
([8,4,6,3,5,9,9,7],1632960)=27
([5,5,4,2,9,3,3,7,6,3],2041200)=9
([6,3,3,2,6,8,8,4,8],1327104)=18
([2,9,2,2,9,7,9,4,3,7],3429216)=27
([7,5,2,5,3,8,7,5,5],1470000)=12
([4,4,8,3,9,5,5,9,7],5443200)=18
([4,9,6,9,9,8,3,3],1259712)=27
([7,6,4,7,7,5,3,9],1111320)=9
([7,3,8,3,5,5,4,4,7],1411200)=9
([6,4,3,8,8,3,7,8,8],6193152)=27
([3,4,5,5,7,5,5,4,8],1680000)=15
([8,6,8,7,5,4,8,2,2],1720320)=15
([3,2,4,7,5,5,5,2,4,8],1344000)=12
([3,5,3,2,9,5,9,8,3,8],6998400)=36
([4,5,3,2,5,6,9,4,3,8],3110400)=9
([9,8,3,8,3,6,3,9,3],2519424)=27
([8,2,3,7,3,6,2,4,8,2,4],3096576)=36
([2,7,5,6,4,8,6,2,8],1290240)=18
([3,4,5,9,4,2,7,8,2,9],4354560)=27
([5,8,5,3,7,4,3,2,7,9],6350400)=18
([6,4,4,8,2,3,9,6,4,8],7962624)=36
([6,5,5,3,8,4,5,6,3],1296000)=18
([6,4,9,7,5,8,4,3,5],3628800)=27
([9,7,6,6,6,9,6,8],5878656)=45
([3,8,6,4,2,5,8,3,2,5],1382400)=18
([9,8,4,7,4,6,6,3,4],3483648)=36
([6,9,2,9,7,5,3,2,4,9],7348320)=27
([3,7,2,4,9,6,4,7,7],1778112)=27
([9,7,6,5,2,8,8,6],1451520)=18
([7,8,9,7,8,2,5,6],1693440)=27
([3,4,8,5,8,3,7,5,2,3],2419200)=18
([4,8,4,6,6,5,6,4,8],4423680)=27
([6,3,8,2,6,4,8,3,9],1492992)=36
([4,6,5,3,7,8,8,7],1128960)=27
([8,9,9,6,8,2,9,3],1679616)=36
([2,4,2,3,4,8,2,7,3,3,8],1548288)=36
([6,6,2,5,3,6,9,2,7,6],4898880)=45
([4,8,2,3,8,8,8,9,5],4423680)=27
([2,6,7,8,4,5,9,5,6],3628800)=27
([2,6,9,4,9,5,2,2,2,4,2],1244160)=18
([5,9,8,7,8,5,9,5],4536000)=18
([8,5,7,9,5,2,7,5,5],4410000)=9
([3,6,3,8,3,7,5,3,9],1224720)=18
([8,5,3,2,3,3,4,9,9,7],4898880)=45
([6,7,5,6,9,2,3,9,6],3674160)=27
([8,8,9,4,9,8,9],1492992)=36
([8,8,9,5,9,2,3,9],1399680)=36
([8,8,7,6,2,2,4,6,3,2],1548288)=36
([6,3,4,2,5,9,8,4,3,3],1866240)=27
([6,3,4,4,2,4,4,6,9,3],1492992)=36
([8,4,4,3,3,4,7,2,3,7],1354752)=27
([4,5,8,8,4,2,7,7,8],4014080)=17
([9,3,7,9,3,2,8,8,6],3919104)=27
([9,7,8,5,9,6,6,3],2449440)=27
([3,2,7,6,4,5,2,2,9,4,3],2177280)=27
([4,3,3,5,7,8,5,2,9,2],1814400)=18
([4,8,9,7,9,3,2,5,7],3810240)=18
([9,2,8,9,2,9,6,4,2],1119744)=27
([2,2,6,2,5,2,3,5,6,3,6,6],4665600)=27
([7,3,8,9,2,4,2,2,2,7,7],4741632)=27
([4,7,6,2,2,4,6,5,4,2,3],1935360)=27
([4,5,4,7,2,4,6,4,2,9],1935360)=27
([8,5,7,3,3,4,8,6,3],1451520)=18
([9,7,6,3,3,7,9,9],1928934)=36
([9,4,7,8,4,6,3,6,2],1741824)=27

5回目に15、そのほか数回不正解が現れるが、殆どは正解となっている。

大勢で一斉に計算すれば不思議度は増すだろう。

なおなぜこのようなことがおこるのか?

案外複雑な仕組みかもしれない

答えが7桁になったら(100万以上になったら)という条件も本質的ではなく、
入力者がわかりやすくするための演出で、
適当に大きな数になればよく、例えば5回繰り返せば、結構な確率で9もしくは、たして9になる。

[2,2,9,2,6]432=9
[7,5,8,6,2]3360=12
[7,3,9,9,4]6804=18
[6,3,5,7,6]3780=18
[3,2,8,6,9]2592=18
[8,5,5,9,7]12600=9
[8,4,9,8,3]6912=18
[2,9,8,8,2]2304=9
[2,8,7,5,2]1120=4
[3,4,9,5,3]1620=9


このマジックの前段の計算は、一般的な式で表せばこうなる。

1のA乗x2のb乗x3のc乗・・・x9のI乗。

AからIは任意の整数で、

例えば[2,2,9,2,6]432=9のケースでは

1の0乗x2の3乗x3の0乗x4の0乗x5の0乗x6の1乗x7の0乗x8の0乗x9の1乗

で表せる。

また後段の計算は、10のN乗での整数割り算がからんでいる。

ただそれがどんな意味をもつのかは僕の知識では不明。

0 件のコメント:

コメントを投稿