我的狗在咆哮着我,但是我懒得带他去散步。我有个主意!我会邀请Code Golf的人为我做!
您的挑战是模拟狗的行走。这是walking狗的规则:
- 人类(
H
)将从0,0
(笛卡尔)坐标平面开始,并将每秒随机地向上,向左,向右或向下移动一个空间。 - 狗(
D
)将在同一位置开始,并且每秒向上,向左,向右或向下移动零个,一个,两个或三个空格(当然是随机的)。狗的可预测性较差,有时会跑得更快或完全停止。 - 狗与人的距离永远不会超过一定数量的单位(以欧几里得距离为单位),这就是皮带的长度(
L
)。例如,如果L
为6
,则有效位置为H(0,0) D(4,4)
(因为距离约为5.65单位),但不是H(0,0) D(5,4)
(约6.4单位)。- 如果狗在移动时会违反皮带距离要求,则它必须在不违反距离要求的确定方向上走得尽可能远。例如,如果位置为,
H(0,0) D(3,4)
并且随机决定将狗向右移动3个空格,它将转到D(4,4)
,因为这是它可以走的最远距离而不会超过6个单位。(请注意,这可能导致移动0个空格,即完全不移动!)
- 如果狗在移动时会违反皮带距离要求,则它必须在不违反距离要求的确定方向上走得尽可能远。例如,如果位置为,
- 杂项规则:人类先行。人不得超过其移动的皮带长度。如果是这样,它必须选择另一个方向。“随机”是指“分布均匀且没有图案”。
输入将以以下格式给出(可以是STDIN,函数参数,文件等):
"<amount of seconds the walk will last> <leash length>"
例如:
300 6 // a 5 minute walk with a 6 yard leash
您必须使用以下格式提供输出(可以是STDOUT,函数返回值,文件等):
H(0,0) D(0,0)
H(0,1) D(2,0)
H(1,1) D(2,1)
H(1,0) D(2,-1)
...
(seconds + 1
由于H(0,0) D(0,0)
不计算行数,因此输出的行数为。)
这是代码高尔夫球,因此最短的代码(以字节为单位)将获胜!
4
您显然是想说的,但无论如何都要明确地声明它们:1.距离表示欧几里得距离,2.坐标平面是笛卡尔坐标系,而不是极坐标系(或波音777);尚不清楚的事情:3.如果人类的动作超过了牵引绳的长度,该怎么办?4.每转,谁先走,狗还是人?
—
乔纳森·范·马特雷
如果选择的方向不允许有效移动:是否应该不进行移动或选择其他方向?
—
TimWolla 2014年
应该如何获得输入?STDIN?函数参数也可以吗?
—
TimWolla 2014年
如果我要带他去散步,我的狗只会吠叫我。
—
TheDoctor 2014年
@Tim为清楚起见进行了编辑;谢谢。
—
门把手