狼、羊、白菜,如何安全过河?00 后用编程诠释趣味问题赢下全球大赛 天天头条
近日,苹果 WWDC23 Swift 学生挑战赛公布了获奖者信息,全球共有 350 余名学生获奖。其中,来自昆山杜克大学计算机科学与技术专业的秦陈书豪,首次参加就成功入围并获奖。
据了解,Swift 学生挑战赛由苹果发起,支持和表彰全球各地热爱编程的学生开发者。和往年一样,挑战赛邀请世界各地的学生,根据自己选择主题创建的 Swift Playgrounds 项目。
25 天从入门到完成,编程小白的超能学习之旅
(资料图片)
" 我是今年 3 月底才知道这项比赛,开始入门的时候,距离提交截期不多了,大部分的学习都是十分有针对性。几乎是刚入门就参赛,收到获奖通知的时候,真是完全没想到。" 回想起两个月前拼命入门学习经历,秦陈书豪告诉现代快报记者:" 感谢那段时间的勇敢尝试和坚持努力,让我能通过 Swift 来实现心中创意,并得到认可。"
△ 秦陈书豪(右二)
今年 3 月底,读大二的秦陈书豪在昆山杜克大学的校企合作创新实验室项目中,和四名同学一起创办了 iOS club。" 我们四个人,一个是和我同专业的同学,他是山东人。另外两名是国际学生,分别来自蒙古和美国。" 也是在同一时间,他了解到了这项面向全球学生的挑战赛。
日程表上的 4 月 20 日(作品提交截止时间)迫在眉睫,而他还是个编程小白。" 我虽然是计算机专业的,但一直在学习,基本没有开发经验。除了平时课程作业外,也没有独立开发过软件。"
想参赛,首先得给自己信心。" 当时我看了一个直播分享,有一名获奖者从入门到提交作品只花了 20 多天,这给了我很大的鼓励。我意识到创意构思最重要,其次才是编程技术。"
接下来遇到的问题就是做什么?他选择从往届获奖作品中寻找灵感。" 我看到有人做的是解释重力问题的小游戏,还有人用编程来解释哲学家用餐中的死锁问题。这和我构思想法类似,把常见的数学或计算机领域的问题,通过小游戏的形式呈现出来。"
从 3 月 26 日下载软件开始学习,到 4 月 20 日提交作品,秦陈书豪只花了 25 天。
△ 作品截图
灵感来自小学参观科技馆玩的小游戏
灵感像是突然降临的。" 有天我自己头脑风暴的时候,突然想到小学参观科技馆的经历。" 秦陈书豪来自四川成都。据他回忆,四川科技馆里有个好玩的小游戏,引导观众用积木的形式来解决狼、羊、白菜过河问题。" 只记得展厅里都是数学主题的。初高中再去科技馆,就没见到这个互动装置。没想到,这么碎片的记忆给我这么深的印象。"
什么是过河问题?在故事之中,个摆渡人(农夫)从市场上买了狼、羊、白菜。当要回家时,他需要划只木船来过河,然而船每次只能运狼、羊、白菜中的任意个。在船来回运输的过程中,摆渡不能将狼和羊或者羊和白菜单独留在河岸。在这样的条件下,摆渡人如何将所有三个货物运到对岸。这也是离散数学领域的经典问题,他决定通过编程的形式呈现出来。
打开他设计的游戏,首先会看到关于游戏的介绍,随后进入界面,四个按钮分别是狼、羊、白菜以及船的移动按钮。此外,右上角第个按钮是打开游戏介绍窗口。第个按钮是指示按钮,点击之后,上端的云朵会变成显示答案步骤的木板,用户可以在答案的指示下完成游戏。第三个按钮是重置按钮,能让户将游戏回到初始状态重新尝试。当户在中途失败之后,甚能看到羊流口水或者狼流口水,羊害怕的样。
△ 秦陈书豪
首个独立开发作品就获奖,他发现编程本身的魅力
在编程的过程中,他遇到的最大挑战就是如何用编程实现游戏逻辑。也就是在游戏中,如何让不同的物体(狼、羊、白菜、农夫)实现分类移动。" 这对于编程大佬来说很简单,但当时的我就是卡住了,卡了两三天,最后在 Java 编程语言中找到类似的解决思路。"
相比于如今略显简陋的界面设计和互动设置,设计之初,他对于这款小游戏还有更多更好玩的想法。" 对游戏的最初设计中,其实是让用户通过拖动来移动物体,并加入狼羊上船下船的动画,还希望有不同的音效与音乐。但因为有限的时间,最后并没有完成。提交之后,其实我的心情是既担忧又很遗憾的。" 鉴于很多想法受限于时间和经验上的不足,秦陈书豪还准备在未来的学习中继续完善它。
这段经历也让他感悟颇深。他坦言,当一个抽象的想法一点点呈现在屏幕之中,这对他的激励是很大。" 这段经历对我来说很棒的一点就是,我一个人把软件开发过程的所有角色都扮演了,从策划到编程再到设计等。真正让我有机会从自身的兴趣爱好出发来主动学习,也让我发现了编程本身的魅力。"
现代快报 + 记者 蔡梦莹