每次在公司说:“我给大家变个魔术吧”,公司的小伙伴都回复:“刘谦又更新了?”
友情提示:很无聊的一篇文章(暂且称之为文章)
魔术原理
这个魔术的原理主要基于二进制数的特性和数学的排列组合规律。
二进制中,每一位的数值,从右至左,分别代表2的0次方(也就是1),2的1次方(也就是2),2的2次方(也就是4),以此类推。
为了理解这个魔术的工作原理,我们可以取一个例子,比如25。25在二进制表示中是11001。从右至左,跳过值为0的位(第二位和第四位),其余位的值(第一位,第三位和第五位)在二进制中分别代表了2的0次方,2的3次方和2的4次方。
将这些数相加,1 * 2^0 + 0 * 2^1 + 0 * 2^2 + 1 * 2^3 + 1 * 2^4,结果等于1 + 0 + 8 + 16 = 25, 这就是我们原始选择的数字。
对于这个魔术中的六组数字,它们分别对应了2的0次方至2的5次方,也就是分别表示1, 2, 4, 8, 16, 32。选择任何数字,都可以找到唯一的二进制编码与之对应,从而生成且只生成一种包含此数字的数字组合。这就使魔术师可以通过询问你所选择的数字在哪些组中出现,然后将这些组对应的2的n次方相加,来推断别人选择的数字。
数据
javascript [[ 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59 ], [ 2, 3, 6, 7, 10, 11, 14, 15, 18, 19, 22, 23, 26, 27, 30, 31, 34, 35, 38, 39, 42, 43, 46, 47, 50, 51, 54, 55, 58, 59 ], [ 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 0 ], [ 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 0], [ 4, 5, 6, 7, 12, 13, 14, 15, 20, 21, 22, 23, 28, 29, 30, 31, 36, 37, 38, 39, 44, 45, 46, 47, 52, 53, 54, 55, 60, 0 ], [ 8, 9, 10, 11, 12, 13, 14, 15, 24, 25, 26, 27, 28, 29, 30, 31, 40, 41, 42, 43, 44, 45, 46, 47, 56, 57, 58, 59, 60, 0 ]]
效果
可以丰富UI搞一个类似塔罗牌那种超级神秘的风格,再加上夸张的话术,能唬几个算几个