免责声明
虽然我知道有一个特定的相关问题,但我的问题使用了两个车库门和一个随机组成部分,我也基于现实生活中的事件,看到儿子在我走出车库时不小心放下了其中一个车库门。上周的车库...没什么可让头脑震撼的!;)
的背景
卢卡斯(我15个月大的儿子)喜欢和车库遥控器一起玩。此遥控器上有两个按钮,一个用于左侧车库门,一个用于右侧车库门。两个按钮的工作方式相同。按一次使门开始打开,再按一次停止,再按一次开始关闭,再按一次再次停止,依此类推。
卢卡斯(Lucas)喜欢这个遥控器,他会随机按下其中一个按钮,或者同时按下两个按钮,或者完全不按下。如果两者都按下,则不会发送信号,但是按下一个按钮将发出信号。
因此,代码高尔夫球挑战分为两个部分:
第一部分
生成一个60字符长的字符串,表示卢卡斯在一分钟内随机按下按钮。在这种情况下,“随机”表示“在每个刻度上每个输入的机会均等”。字符如下:
- 0:卢卡斯未按下任何按钮,或者同时按下了两个按钮。无论哪种方式,都没有发送信号。
- 1:卢卡斯按下了左车库门的按钮
- 2:右车库门的按钮已被Lucas按下
第二部分
使用在第一部分中生成的字符串,使用数字作为打开,停止和关闭这些门的触发器来模拟两车车库的打开和关闭。
我的车库门非常快(有关原因,请参见上面的免责声明)。按下按钮后,需要四秒钟才能完全打开或关闭。
因此,如果关闭:
- 0秒:0%打开(关闭);当按下按钮时,门开始打开
- 1秒:打开25%
- 2秒:50%开启
- 3秒:75%开启
- 4秒:100%打开,门停
因此,如果打开:
- 0秒:100%打开;当按下按钮时,门开始关闭
- 1秒:打开75%
- 2秒:50%开启
- 3秒:25%开启
- 4秒:0%打开(关闭),门停止
如果特定的门在运动,则向该门的信号将使其停止。下一个发送到同一扇门的信号将使它朝相反的方向移动。如果门在先前运动时已停止,而在收到“停止”信号时现已完全打开或完全关闭,则该门将在完全打开或完全关闭状态下注册为“已停止”,准备进行接收到新信号时,向相反方向移动。
通过此模拟,两个车库门将最初处于关闭位置。因此,让我们看一下10秒的命令列表,看看如果Lucas在远程执行命令会发生什么:
2120221120
2: (L:0% stopped, R:0% opening)
1: (L:0% opening, R:25% opening)
2: (L:25% opening, R:50% stopped)
0: (L:50% opening, R:50% stopped)
2: (L:75% opening, R:50% closing)
2: (L:100% stopped, R:25% stopped)
1: (L:100% closing, R:25% stopped)
1: (L:75% stopped, R:25% stopped)
2: (L:75% stopped, R:25% opening)
0: (L:75% stopped, R:50% opening)
输出量
输出的第一部分要求显示从第一部分生成的60个字符长的字符串,其中包含随机的“ 0”,“ 1”和“ 2”字符。例如。
212022112021202211202120221120212022112021202211202120221120
在此字符串的下面,是根据上述规则(对车库门的每个相应角色如何行为)(以秒为单位)处理这些“信号”。结果,您应该在初始显示字符串下方得到60行。
这些处理的行中的每行将采用以下形式:
N: (L:X% XXXXXXX, R:Y% YYYYYYY)其中:
- N是相应随机字符串中的第n个字符,其形式为0、1或2。
- X%是左门的打开百分比(没有零填充)
- XXXXXXX是左门的状态。如果门未处于运动状态(即未打开或关闭),则将强制执行“已停止”状态,这意味着门已处于运动状态(仅在25%,50%或75%时可能停止)或在完全打开时已停止(100%) )或完全关闭(0%)。否则,门将“打开”或“关闭”。
- Y%是右门的打开百分比(没有零填充)
- YYYYYYY是右门的状态。如果门未处于运动状态(即未打开或关闭),则将强制执行“已停止”状态,这意味着门已处于运动状态(仅在25%,50%或75%时可能停止)或在完全打开时已停止(100%) )或完全关闭(0%)。否则,门将“打开”或“关闭”。
下面显示的示例使用10个“信号”和10条处理过的行
2120221120
2: (L:0% stopped, R:0% opening)
1: (L:0% opening, R:25% opening)
2: (L:25% opening, R:50% stopped)
0: (L:50% opening, R:50% stopped)
2: (L:75% opening, R:50% closing)
2: (L:100% stopped, R:25% stopped)
1: (L:100% closing, R:25% stopped)
1: (L:75% stopped, R:25% stopped)
2: (L:75% stopped, R:25% opening)
0: (L:75% stopped, R:50% opening)
这是代码高尔夫球,因此最短的代码将是明显的赢家。我通过使用诸如“ opening”,“ stopped”和“ closes”之类的七个字母使这变得容易一些,因此您可能希望将其应用于您的策略中。
祝你好运!
1在您的示例中,为什么最后一个命令没有将左门停在75%的位置?