代码来临 2024 年第 10 天
第 1 部分
短暂的恐惧,然后是兴奋
我通常会先浏览一页,然后再仔细阅读所有内容。
今天,我看到:
- 网格
- 以及看起来像路径的东西
我担心这将是另一个最短路径挑战。
然后我读了它。
松了一口气......至少对于第 1 部分来说是这样。
我需要找到所有有效的路径。
这个...我能做到!
从0开始
我必须找到所有的 0:
input = input .split('\n') .map( line => line.split('').map(char => +char) ) let zeros = [] for (let r = 0; r <p>0s:找到了!</p> <h4> 尝试以 1 为增量移动 </h4> <p>从每个 0 开始,有效路径有九步,其中每个数字都比前一个数字大 1,以 9 结束。</p> <p>这听起来像是递归的工作。</p> <p>我需要一个基本案例:</p> <ol> <li>当前数字并不比前一个数字大一</li> <li>当前数量是 9</li> </ol> <p>这是我的算法应该如何工作:<br> </p> <pre class="brush:php;toolbar:false">Input: 1. Originating number 2. Current coordinates Get current number If it is not exactly one greater than the originating number Return false Else If it is 9 Return the current coordinates If it is not 9 Continue with the coordinates in each orthogonal direction
现在写完了,我错过的部分是跟踪有效结束坐标的分类帐。
我为此苦苦挣扎了一段时间。
我不断收到错误,错误地让我认为我无法传入 Set 甚至数组。
但是,值得庆幸的是,我只是忘记将其传递给递归函数的进一步调用。
这是我的工作递归算法:
let dirs = [[-1,0],[0,-1],[0,1],[1,0]] function pathFinder(num, coord, memo) { let current = input[coord[0]][coord[1]] if (current - num !== 1) { return false } else if (current == 9) { memo.add(coord.join(',')) return } else { dirs.forEach(dir => { if ( coord[0] + dir[0] >= 0 && coord[0] + dir[0] = 0 && coord[1] + dir[1] <p>由于我必须从 0 坐标开始,所以我的第一次调用使用 -1:<br> </p> <pre class="brush:php;toolbar:false">pathFinder(-1, zeroCoordinate, matches)
最后,为了获得正确的分数,我迭代每个零,生成唯一的目标 9 集合,保留并总结集合的大小:
let part1 = zeros.map(z => { let matches = new Set() pathFinder(-1, z, matches) return matches.size }).reduce((a, c) => a + c)
快速测试,快速结果
它为小示例输入生成了正确的答案。
对于更大的示例输入。
还有...
...用于我的拼图输入!!!
呜呼!!!
第 2 部分将挑战我什么?
第2部分
嗯,这似乎太简单了
我在第 1 部分中编写算法的方式是否意味着只需要进行一些小的更改即可获得正确的答案?
数一数吧!
现在,我将每个有效的 9 添加到一组中。
对于第 2 部分,我想我只需要为每个有效的 9 增加一个计数器。
值得一试!
将 Set 更改为数组,瞧!
示例的正确答案。
我输入的谜题的正确答案。
哇。哇。哇。
第二天......这可能会更加困难。
以上是蹄它的详细内容。更多信息请关注PHP中文网其他相关文章!

Python和JavaScript的主要区别在于类型系统和应用场景。1.Python使用动态类型,适合科学计算和数据分析。2.JavaScript采用弱类型,广泛用于前端和全栈开发。两者在异步编程和性能优化上各有优势,选择时应根据项目需求决定。

选择Python还是JavaScript取决于项目类型:1)数据科学和自动化任务选择Python;2)前端和全栈开发选择JavaScript。Python因其在数据处理和自动化方面的强大库而备受青睐,而JavaScript则因其在网页交互和全栈开发中的优势而不可或缺。

Python和JavaScript各有优势,选择取决于项目需求和个人偏好。1.Python易学,语法简洁,适用于数据科学和后端开发,但执行速度较慢。2.JavaScript在前端开发中无处不在,异步编程能力强,Node.js使其适用于全栈开发,但语法可能复杂且易出错。

javascriptisnotbuiltoncorc; saninterpretedlanguagethatrunsonenginesoftenwritteninc.1)javascriptwasdesignedAsalightweight,解释edganguageforwebbrowsers.2)Enginesevolvedfromsimpleterterterpretpreterterterpretertestojitcompilerers,典型地提示。

JavaScript可用于前端和后端开发。前端通过DOM操作增强用户体验,后端通过Node.js处理服务器任务。1.前端示例:改变网页文本内容。2.后端示例:创建Node.js服务器。

选择Python还是JavaScript应基于职业发展、学习曲线和生态系统:1)职业发展:Python适合数据科学和后端开发,JavaScript适合前端和全栈开发。2)学习曲线:Python语法简洁,适合初学者;JavaScript语法灵活。3)生态系统:Python有丰富的科学计算库,JavaScript有强大的前端框架。

JavaScript框架的强大之处在于简化开发、提升用户体验和应用性能。选择框架时应考虑:1.项目规模和复杂度,2.团队经验,3.生态系统和社区支持。

引言我知道你可能会觉得奇怪,JavaScript、C 和浏览器之间到底有什么关系?它们之间看似毫无关联,但实际上,它们在现代网络开发中扮演着非常重要的角色。今天我们就来深入探讨一下这三者之间的紧密联系。通过这篇文章,你将了解到JavaScript如何在浏览器中运行,C 在浏览器引擎中的作用,以及它们如何共同推动网页的渲染和交互。JavaScript与浏览器的关系我们都知道,JavaScript是前端开发的核心语言,它直接在浏览器中运行,让网页变得生动有趣。你是否曾经想过,为什么JavaScr


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

禅工作室 13.0.1
功能强大的PHP集成开发环境

SecLists
SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器