摘自:教育网-自学之路:http://www.selfroad.com.cn/content.asp?id=84
“吉普赛人祖传的神奇读心术.它能测算出你对心爱之人的内心感应”
提示:
任意选择一个两位数(或者说,从10~99之间任意选择一个数),把这个数的十位与个位相加,再把任意选择的数减去这个和。例如:你选的数是23,然后2+3=5,然后23-5=18
在图表中找出与最后得出的数所相应的图形,并把这个图形牢记心中,然后点击水晶球。你会发现,水晶球所显示出来的图形就是你刚刚心里记下的那个图形。
嘿嘿...怎么样?真是太神奇了,大家可以来试试……
难道计算机程序真的能测出我心中在想什么? 如果想知道究竟什么原因
当时网友给我这个东西,测了几次,开始感觉很是神奇,这是怎么回事,难道计算机程序真的能测出我心中在想什么?
我是一名计算机程序员,我决不相信计算机程序能读出人的心术,至少目前技术不可能?测了几次后,想用一段 C 程序帮我测试这个读心术的奥秘。
设想:为什么要有这个规则,直接猜数字看图,不要加减法,不是更简单吗
实验目的:列举10~99 中所有的数据,经过规则转换后,得到什么数据
环境 C 语言(VC6,VC8 等等)
代码如下:
#include <stdio.h>
int main(int argc, char* argv[])
{
int sum;
for(int w=10;w<=99;w++){
int i=w/10;//十位
int j=w%10;//个位
sum=w-(i+j);//通过规则得到的结果
printf("10~99之间任意选择的任意数是%d,十位:%d,个位:%d,按规则得到数据:%d/n",w,i,j,sum);
}
return 0;
}
运行结果如下
……
10~99之间任意选择的任意数是17,十位:1,个位:7,按规则得到数据:9
10~99之间任意选择的任意数是18,十位:1,个位:8,按规则得到数据:9
10~99之间任意选择的任意数是19,十位:1,个位:9,按规则得到数据:9
10~99之间任意选择的任意数是20,十位:2,个位:0,按规则得到数据:18
10~99之间任意选择的任意数是21,十位:2,个位:1,按规则得到数据:18
……
由程序运行结果,你会发现一个规律:
我们选:10:10-(1+0) = 9
我们选:11:11-(1+1) = 9
我们选:18:18-(1+8) = 9
我们选:19:19-(1+9) = 9
我们选:20:20-(2+0) = 18
我们选:29:29-(2+9) = 18
我们选:30:30-(3+0) = 27
我们选:40:40-(4+0) = 36
我们选:50:50-(5+0) = 45
我们选:55:55-(5+5) = 45
我们选:60:60-(6+0) = 54
我们选:80:80-(8+0) = 72
我们选:99:99-(9+9) = 81
我们通过以上数据,当然,你也可能通过更大量的数据进行分析,我们发现一个规律,即结果都是9的倍数(9x),这不是很奇怪吗?
且,两个人所所选择结果是不同的,但是图案是相同的,我们则会想到:
f(a) = y
f(b) = y
f(c) = y
即:结果与图案不是单映射函数,它应该是一个多源单值映射函数。
通过心上分析,我们可以结论如下:
设十位数字为X,个位数字为Y,则有
(10X+Y)-(X+Y)=9X
结论一:按照原文的算法,得出的结果一定是9的倍数.所以。
结论二:结果与图标是多源单值映射函数,即取所有值为9X的值为同一个值。
这就是神奇的读心术原理吧?
C 程序模拟神奇读心术:(希望你能看懂)
吉普赛人的程序奥妙之谜,
#include <time.h>
main(){
time_t t;
int a[100],i;
unsigned char b[70],x;
srand(time(&t));
do
{//clrscr();
for(i=0;i<70;i++) b[i]=(unsigned char)rand()%70+180;
printf("这是一个吉普赛人神奇的读心术:具体玩法为:/n"
" 想一个两位数的整数,将该数减去十位和个位数字后得一个新数s ,"
"在下表中查找到s 对就的图案,记住后按空格键,你可以发现计算机"
"已经知道了你想到的那个图案,试试吧!/n");
for(i=1;i<100;i++) a[i]=b[rand()%70];
x=b[rand()%70];
for(i=9;i<90;i+=9) a[i]=x;
for(i=1;i<100;i++)
{printf("%2d:%c ",i,a[i]);
if(i%12==0)printf("/n/n");
}
printf("/n想好了,看好了按任意键吧!");
getch();
printf("/n你想好的那个图案是:%c/n按空格键继续玩,按“”结束!",x);
x=getch();
}
while(x!='0');
printf("/n谢谢您对本魔术的喜爱!再见!");
}
这就是所谓的吉普赛人的读心术的原理,他的主要程序段,还是不错的。