|
上面是5张表。你看着5个表,告诉我那张表有你的出生日期,哪张表没你的出生日期,那么就可以“猜出”你的出生日期,神奇不神奇?
我有心算的办法,但是为了训练你们的Mathematica的列表知识点,下面采用列表办法来“猜”。
首先把上面5个列表产生出来
L1=Range[16,31] ;
L2=Join[Range[8,15],Range[24,31]] ;
L3={4,5,6,7,12,13,14,15, 20,21,22,23,28, 29,30,31} ;
L4={2,3,6,7,10,11,14,15,18,19,22,23,26,27,30,31} ;
L5=Table[2*i+1,{i,0,15}] ;
LT=Range[1,31] ;
L1和L5的规则都很强,所以可用Range和Table来产生;L2是由两个规则列表串成的(Join为串在一起的操作);L3和L4的规则不明显,所以直接写表元素,然后放在{ }里面。LT是总表。
比如:你告诉我L1,L3,L5中有你的生日,而L2和L4中没有,那么生日是多少号呢?
因为L2和L4中没有,所以在L2和L4的补集中肯定有,Mathematica计算补集是Complement函数。L2和L4的补集就是Complement[LT,L2,L4]。
于是你的生日便可以这样”猜”出来(Intersection是求交集的函数)
Intersection[L1, L3, L5, Complement[LT, L2, L4]]
得到{21},即你的生日是21号。
小朋友们,你们亲自试试“猜”的灵不灵吧?
公众号里更精彩
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2023-5-31 02:06
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社