在这里有很多事情要做。
>,我相信我可以完成至少一颗金星。
我的任务似乎包括:
是时候摇滚!
>一次一步
p=9,5 v=-3,-3
/-?\d+/g
和一些数据结构操纵以获取这些值:
let [px, py, vx, vy] = [...robot.matchall(/-?\d+/g)].map(el => +el[0])
设置网格
let width = 11 let height = 7 let grid = new array(height).fill('.') .map(el => new array(width).fill('.'))
>
简单而直接。
处理机器人运动和传送
正x值平均移动右移动(较高索引)。负:左。
正值y值平均向下移动(较高的索引)。负:up。
>机器人否则任何时候都会超出范围,而是让它们的行为就像移动到同一方向的网格上。
>
>向上移动,从范围中移出将需要从网格的宽度和高度中减去。时间将所有这些逻辑编码!
首先,循环的骨头:
for (let i = 0; i < 100; i++) { robots = robots.map(bot => { let [px, py, vx, vy] = bot if (vx < 0) { } else { } if (vy < 0) { } else { } }) }
for (let i = 0; i < 100; i++) { robots = robots.map(bot => { let [px, py, vx, vy] = bot if (vx < 0) { px += vx if (px < 0) { px = width - 1 + px } } else { px = (px + vx) % (width - 1) } if (vy < 0) { py += vy if (py < 0) { py = height - 1 + py } } else { py = (py + vx) % (height - 1) } }) }
我在不进行测试的情况下写了这篇文章。
让我们看看我必须调试多少。
好吧,第一个问题:
确保地图返回某物!
>
多么愚蠢的错误。
下一期:
在最后的其他条款中,我错误地引用了vx,而不是vy
幸运的是,这些似乎是我唯一的错误。
>>我现在使用此代码看到了预期的电网量:
robots.foreach(bot => { let [px, py] = bot if (grid[py][px] == 1) { grid[py][px] = 2 } else { grid[py][px] = 1 } }) console.log(grid.map(line => line.join('')).join('\n'))
0,0 to 0,4 2,0 to 2,4 0,6 to 0,10 2,6 to 2,10 4,0 to 4,4 6,0 to 6,4 4,6 to 4,10 6,6 to 6,10
数字都是均匀的。
数字等于:
>之一
侧长度减去一个
我可以通过一系列非常复杂的条件子句解决此问题。
let quads = [0,0,0,0] robots.foreach(([px, py]) => { if (px <= (math.floor(width / 2) - 1)) { // left half if (py <= (math.floor(height / 2) - 1)) { // top quadrant quads[0]++ } else if (py >= math.ceil(height / 2)) { // bottom quadrant quads[1]++ } } else if (px >= (math.ceil(width / 2))) { // right half if (py <= (math.floor(height / 2) - 1)) { // top quadrant quads[2]++ } else if (py >= math.ceil(height / 2)) { // bottom quadrant quads[3]++ } } })
最后,每个tall的乘积:
quads.reduce((a, c) => a * c)
它会生成
我的难题输入吗?
让我检查每个象限的价值。
>我敢肯定有几个落在水平或垂直的中点上。
这个数字可能是正确的。
>提交... 是对的!!!
woohoo !!!
我觉得这将是一个检查点式的挑战,其中第2部分是真正的难题。
等不及要看。第2部分
哦,酷,我可以模拟机器人!
据说它们在某个时候形成了一棵圣诞树。
可能是几秒钟。
可能是数百个。
是时候构建我的第一个模拟器2024!
>
构建模拟器这很容易。
我使用codepen.io。
增强模拟器
按下按钮执行迭代
我使用set()跟踪每个状态
我使用setinterval()以快速pace
自动识别
我添加了一个列表以显示重复状态>我按下按钮,看着数量爬入数千个
> 10k之后,机器人返回其起始状态
我要去做:
提交的7803:太高
>
提交的6502:太低>
我试图用一只眼睛眨眼,所以我不会错过这棵树
然后,突然间,它出现了!
我暂停了计时器,看到了7612
一次,因为我错误地连接了我的新按钮
>又是因为我超越了加速的迭代
以上就是洗手间的堡垒的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号