首页 > web前端 > js教程 > 红鼻子报告

红鼻子报告

DDD
发布: 2024-12-04 19:47:11
原创
200 人浏览过

Red-Nosed Reports

代码来临 2024 年第 2 天

第 1 部分

只是解决,还是最优解决?这就是问题

只需解决:

  • 将原始顺序的列表与两个副本进行比较,每个副本均已排序,但顺序相反。如果匹配,则标准一成功
  • 迭代列表中的每个项目(第一个除外)。跟踪每个项目与前一个项目的差异。如果任何差异为 0 或大于 3,则此测试失败。

就性能而言,这意味着:
对于标准 1:

  • 两份列表副本
  • 对每个副本进行排序
  • 比较原始列表两次 对于标准 2:
  • 检查每个列表中的每个数字

最佳解决方案:

  • 对于标准 2,我将利用 while 循环来检查后续数字是否存在有效差异。这样,一旦出现不合格差异,其余号码将不会被处理
  • 对于标准 1,我将跟踪差异,然后检查所有值是否小于或大于零

认为这会起作用。只有一种方法可以找到答案。

编写优化算法

这是我用于识别标准 2 的代码(1、2 或 3 的差异):

let differFlag = true;
let i = 1;
while (differFlag && i < list.length) {
  let amount = Math.abs(list[i] - list[i - 1]);
  if (![1, 2, 3].includes(amount)) {
    differFlag = false;
  }
  i++;
}
登录后复制
  • 我只会“遍历”列表,直到发现无效差异(如果有)
  • 一旦捕获到一​​个,while 循环就会退出
  • 在 while 循环之后,我可以检查 diffFlag 的结果

这是我用于识别标准 1 的代码(所有差异都会增加或减少):

let differFlag = true;
let i = 1;
let differences = [];
while (differFlag && i < list.length) {
  let amount = list[i] - list[i - 1];
  differences.push(amount);
  if (![1, 2, 3].includes(Math.abs(amount))) {
    differFlag = false;
  }
  i++;
}
登录后复制
  • 我创建了每个差异的列表
  • 我将绝对值计算移至条件,因为我实际上想捕获差异的符号
  • 在 while 循环之后,我可以检查差异以查看每个值是正数还是负数

这是捕获安全报告的最终条件:

if (
     differFlag &&
    (differences.every((el) => el > 0) || 
     differences.every((el) => el < 0))
    ) {
      safeCount++;
    }
登录后复制

总之,我的算法为示例输入生成了正确的答案。

它会对我的拼图输入做同样的事情吗?

是的,sirrreeee!!

甜甜的!

第2部分

好吧...射击。

这确实让事情变得有点复杂。

我想避免使用检查报告每种可能排列的算法。这需要生成数百万份报告。

第一个好消息是:

  • 所有安全报告仍可算作安全

对于我的谜题输入,大约有 200 个不需要我检查排列。

尽管如此,800/1000 仍然是一个很多的列表来充分探索排列。

老实说,我没有找到一种方法来避免在不安全报告的每个排列上运行我的算法。

真糟糕。

是时候添加一个循环来迭代不安全报告中的每个数字 - 要删除的数字,然后检查变异列表是否通过。

添加排列检查循环

我最终复制了 while 循环,并添加了行以复制并从每个后续测试报告中删除一个数字。

代码多了。

但是,它有效!我为拼图输入生成了正确答案!

问题是:

  • 它会运行...并为我的拼图输入生成正确的答案吗?

让我们运行一下看看...

嗯,它运行了,但我得到的答案只是比我的第 1 部分答案稍大一些。这似乎是错误的。

提交也没什么坏处吧???

正确!

神圣的烟雾!

太不可思议了!

解决起来真的很有趣!

四颗金星进入第三天。

带来更多精彩的谜题!

以上是红鼻子报告的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:dev.to
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板