Mathematica 谜中智 | 趣味象棋 一马平川

吴飞

任职于上海微电子装备(集团)股份有限公司,创新业务主管,计算机仿真和软件开发学科带头人。他从2000年开始学习和使用 Mathematica,《Mathematica演示项目笔记》作者,Wolfram 语言的忠实粉丝,Wolfram 社区贡献者之一。

谜题二:趣味象棋 一马平川

引言

"Thus tomorrow, as I have said, will be accomplishedwhat I so much desire, enabling me lawfully to roam through all the fourquarters of the world seeking adventures on behalf of those in distress, as isthe duty of chivalry of knights-errant like myself, whose ambition is directedto such deeds." — Miguel de Cervates, Don Quixote, Chapter 3, 1615 (translatedby John Ormsby).

“况且明天,我说过,就可以完成我的夙愿,就可以周游四方,到处征险,为穷人解难了,这是骑士和像我这样的游侠的责任。我生来就渴望这样的业绩。” —— 塞万提斯,《唐吉坷德》,刘京胜译

教学

使用函数:Graphics, Texture, Image,Graphics3D, Map, Table

象棋是深受国人喜爱的棋类活动。今天趁这个谜题,我们先来聊聊个话题,那就“纯 Mathematica”,或者说玩 Mathematica 的态度。中国科技创新力不强,或者说原创力不足,其实除了基础薄弱以外,很大程度上就是态度。什么东西都要去抄,难的也要抄,简单的也要去抄,抄还抄不像,抄完了还是不懂。就像中国一位教授所言:“你说指望一帮只会在大学里抄作业的学生将来能搞出什么科技原创?”

鄙人不才,借今天这个小谜题,就“抄袭”这个问题也来谈两个层次。

第一:简单的东西,不要去抄,要自己搞。归根结底,中国人对知识产权的观念淡漠。哪怕再简单的一件设计、一张照片,那是别人东西,不要随便乱拿。你完全可以自己搞嘛,你自己搞的未必比他人的差,为什么要去拿别人的呢。简单的东西也去抄,那就是懒汉、愚夫的表现了,会被别人看不起的。

绘制棋子

我们举个例子,譬如现在我们要设计一套中国象棋了。当然,网上有许多中国象棋的照片和图案,但那是别人的设计,别人的作品,你可以看看或是参考,但不能随便拿过来就用。

再具体一点,现在我们来设计一枚棋子“马”。用 Mathematica 搞一下,很简单嘛,几行代码、三两个步骤就搞定了,而且可以在图形 Graphics 和图像 Image 之间自由来回的穿梭,这样才比较符合马那种自由奔放的精神嘛。

首先,我们用 GraphicsText 生成一个黄金底色的马字的图形,然后再用 Image 把它变成图像,ImageCrop 把多余的边角料裁剪掉。

接着,我们用 Graphics3DTexture 生成三维的图形。注意:这里其实已经把原来的二维图像又变成一个三维的图形了。

最后,我们结合以上成果,自定义一个函数,把这张三维图再贴到一个鼓形棋子的三维图形上。

三行代码导出一个小动画,为了让大家再看清楚一下。记住:我们可是黄金棋子,高贵的黄金骑士,不是下三路的小贼。

好了,马的棋子有了,是不是很简单,效果也不差。为什么还要去拿别人的东西呢,或者PS别人的象棋照片呢?

你看自己搞就是有这点好处,我想怎么改都可以,随心所欲,自由舒畅。而且不必担心别人什么时候会告我剽窃,只有我告别人的份,没有我当被告的时候。如下我们再添几个字,把其他几个棋子也叫出来玩玩。

简体字和繁体字本来就都是汉语,一起来吧。

好了,分分钟的事,一副象棋不是都有了嘛。当然,这时候你想再发挥一下,觉得还有灵感在涌动,还有才艺未展现,有想“重新发明”、“重新定义”一下中国象棋的冲动,这也完全是可以的。由于篇幅的关系,我就不演示了。

总之,简单的东西就不要抄袭了,自己搞一下,玩得就是态度。所有的素材、图案、图形、图像和动画,都是 Mathematica 代码生成的,对不对?这就叫“纯 Mathematica”。

绘制棋盘

中国象棋对弈的红黑双方,各持16个棋子在10行9列的棋盘上展开谋略,棋子的位置都落在经纬线的交点上,共90个位置。

棋子有了,缺个棋盘。画个棋盘,那还不简单。横竖先拉几条线出来,士要走斜线,那就拉几根对角线喽;稍微有点特殊的地方,像炮位、卒位啦,搞个小图案点缀一下;最后再写上四大字“楚河汉界”。这样不就完了嘛,还有吗?

棋盘和棋子都有了,你可以用 Epilog 函数把棋子放在棋盘上了,提示一下函数用法,下面我们就正式揭开本期谜面。

迷面

在象棋中,马的走法规定为斜向跳跃两格为一步,可以在棋盘上向前后左右,四个方向,共八个位置,进行跳跃。假设棋盘上仅有一枚棋子“马”,如下图所示,此马可以连续跳动,下图中马跳动了9步,走到了第10个位置(包括起点和终点)。

问:当马的初始坐标位置从{8,1}开始(即x=8,y=1;或者说第8列第1行时),能否找到一种步骤或路径,令这匹马一次性走遍棋盘上所有的位置(共90个),且落棋位置没有重复?

原文发布于微信公众号 - WOLFRAM(WolframChina)

原文发表时间:2017-04-22

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏SIGAI学习与实践平台

永远的金大侠-人工智能的江湖

金庸先生已离我们远去,笔者当天在朋友圈看到这一消息时心情非常沉痛。作为在小学时就开始读金庸小说的80后,先生给我们的,不仅仅是一个个鲜活的人物,跌宕起伏的故事情...

881
来自专栏深度学习之tensorflow实战篇

R语言自带的数据文件

R语言有大量的样本数据可以直接用来作为数据分析和挖掘案例,可以收藏着以后用! R:datasets >install.packages("datasets")...

77411
来自专栏人工智能头条

高级搜索树+深度增强学习,Google DeepMind AI算法击败欧洲围棋冠军

1715
来自专栏华章科技

我们研究了853场世界杯比赛,发现了这几条稳赔不赚的竞猜攻略

导读:世界杯开赛以来,据数据叔不完全统计,身边有66.6%的小伙伴上了天台,其中22.2%的人买了阿根廷赢、22.2%的人买了德国赢,还有22.2%的人买了巴西...

1263
来自专栏FSociety

NBA这三十年发生了什么,Python告诉你~

关于数据源的介绍以及字段解释各位可以移步科赛网 查看,使用的数据源是 team_season.csv。

1375
来自专栏思影科技

AJP事件相关电位研究:减弱的奖赏神经反应可以前瞻性预测 青春期少女抑郁症的发展

来自纽约Stony Brook大学心理学、精神病学和行为学部门的Brady D. Nelson等人发现奖赏正波的降低可以预测十八个月之后抑郁症的首发情况和抑郁症...

2855
来自专栏企鹅号快讯

原来C语言还可以这样玩?你见过吗?历届混乱代码大赛作品

曾经刚开始学习编译语言的时候导师就一个劲的强调,程序一定要美观整洁,做好这些以后才算是合格的程序员,知道小编看到了关于国际C语言混乱代码大赛的成果,小编发现,一...

3385
来自专栏喔家ArchiSelf

6行python代码的爱心线

前些日子在做绩效体系的时候,遇到了一件囧事,居然忘记怎样在Excel上拟合正态分布了,尽管在第二天重新拾起了Excel中那几个常见的函数和图像的做法,还是十分的...

3072
来自专栏Vamei实验室

为什么说“概率”带来一场现代革命?

作者:Vamei 出处:http://www.cnblogs.com/vamei 严禁转载。

1233
来自专栏大数据挖掘DT机器学习

R语言构建追涨杀跌量化交易模型

作者:张丹(Conan), 程序员Java,R,Javascript 原文:http://blog.fens.me/finance-chase-sell/#c...

4178

扫码关注云+社区

领取腾讯云代金券