iPad Playgrounds app,极早期挑战:你正在学习编程,你对变量、循环等一无所知。你唯一知道的关键字是func
。游戏建议你第一次构建自己的函数。
基本上,您只需要使用屏幕上的内容:collectGem()
,moveForward()
,name()
,toggleSwitch()
,turnLeft()
,turnRight()
。您不会意外跌倒(因此额外的移动是可以接受的),目标是收集4个宝石和切换4个开关。
我的第一个尝试是:
谜题解开了,却告诉我:
- 但您使用了11个命令!尝试定义您自己的函数[...]您不需要使用那么多命令 *
不幸的是,我不知道如何只使用func
关键字来使用更少的命令。有可能吗?(note that I already figured out that using loops is cheating)
还有,有没有地方可以讨论Playground的谜题?
7条答案
按热度按时间tag5nh1u1#
我不明白Playground的指令计数器。它没有抱怨指令计数:
也许在Playground中,函数调用开销是负的。停止展开那些循环!
ar5n3qh52#
11通电话就够了!
如果你接受 * 托马斯L Holaday * 的答案并重命名函数(例如,把
bounce()
改为clear()
),解就不再有效了!b()
函数的名称也是如此!在修改了代码和函数名之后,我发现可以用11个调用来编写它,这和原来的几乎一样,并且通过了验证!
Here is the screen of my solution
看起来这里的问题不在于解决方案(正确!),而在于验证程序检查函数命名和代码结构的方法不正确(必须存在
b()
函数的少量优化,以及“正确”的函数名)。klr1opcd3#
我想知道递归是否有效,你说过允许额外的移动,所以我假设当你完成所有的操作时,它会自动停止,因此,类似下面这样的东西可能有效(假设它允许你这样做):
这将删除两行代码!这将使您处于10:D以下
vuktfyat4#
另一种方法仍然只降到11,但可能给予出前进的方向的线索:
但既然Playground允许进入一个循环,为什么这是作弊呢?
ujv3wf0j5#
因此,这将为您提供:
太神奇了!你用一个循环解决了这个难题。你已经成为了一个编码奇才!下一页
rhfm7lfc6#
我也有11行代码,我越来越生气,结果发现它不喜欢我给它指定的名字(有趣的是GrabNgo),我把它改成了“d”,然后运行了四次d(),它成功了。
lc8prwob7#
这个回答让Playground很高兴: