问题标签 [puzzle]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
8 回答
1563 浏览

php - 一个 Project Euler Puzzler(特别是在 PHP 中)

最近有另一个 Project Euler 问题,但我认为这更具体一些(我只对基于 PHP 的解决方案真正感兴趣)所以我还是在问。

问题 #5要求您:“能被 1 到 20 的所有数字整除的最小数字是多少?”

现在,我已经解决了两次。曾经效率非常低,效率更高,但我离一个特别复杂的答案还很远(而且我在数学上并不是特别扎实,因此我的蛮力解决方案)。我可以看到几个可以改进的地方,但我想知道你们中是否有人可以展示一个更有效的解决方案来解决这个问题。

*剧透:这是我的不太理想(运行 7 秒)但仍然可以接受的解决方案(不确定如何处理双 $... 只是假装你只看到 1...

0 投票
4 回答
559 浏览

algorithm - 调度具有重叠周期性任务的工作人员

与一名工人一起,一次只能执行一项任务(但可以立即在任务之间切换)

给定一个任务列表,
-- 定义为“n 秒,每 m 秒”(例如,每 3600 秒 5 秒)

我怎样才能找到每个任务的最佳开始时间和计数?

如果每个任务都是“1 秒,每 60 秒”,那么每个任务都会有一个唯一的起始秒,并且计数将是无限的(稳定状态)。
如果是“每 4 秒 1 秒”和“每 3 秒 1 秒”,结果将是:“0, 无限和 3, 3 次”

-- 希望是最简单的形式

如果我已经有一个任务列表,详细说明了“开始秒数和次数”,那么返回的函数会是什么: {start, count} 额外的 {n seconds per m seconds} 任务是什么样的?

--(稍微复杂一点的形式——
如果不是“n 秒每 m 秒”,
任务被定义为“n 秒每 l..o 秒”,
我可以在 l - o 范围内选择一个数字 m(但是在任务完成之前必须承诺那个 m),
这样可以更好地利用工人吗?
我将如何选择最好的 'm' ?

0 投票
16 回答
25381 浏览

c++ - 根据返回值重载一个C++函数

我们都知道可以根据参数重载一个函数:

你能根据返回值重载一个函数吗?定义一个函数,根据返回值的使用方式返回不同的东西:

您可以假设第一个参数在 0-9 之间,无需验证输入或进行任何错误处理。

0 投票
12 回答
14050 浏览

c - 如何在不使用任何比较运算符且不使用 if、else 等的情况下以编程方式返回两个整数的最大值?

如何在不使用任何比较运算符且不使用 , 等的情况下以编程方式返回两个整数的if最大值else

0 投票
3 回答
950 浏览

algorithm - 产生常数模 2 的幂的乘法链

有没有给出“乘法链”的实用算法

澄清一下,目标是产生任意和精确长度的乘法变化
长度为 1 的乘法链是微不足道的。

“乘法链”将定义为 2 个数字,{start} 和 {multiplier},在代码中使用:

我想找到一个采用三个参数的例程
1. 2 的幂
2. 停止 {constant}
3. {count} - 循环将迭代的次数

该例程将返回 {start} 和 {multiplier}。

理想情况下,{Constant} 值 0 应该是有效的。

简单的例子:

不平凡的例子:

给定 2 的幂的最大 {count} 可能相当小。
例如,2^4 (16) 似乎限制为 4

0 投票
4 回答
672 浏览

c - 这个程序的输出是什么,它返回给操作系统的是什么?

这是一个 C 谜题。你必须知道程序是否完成了它的执行,如果是,运行需要多少时间以及它返回给操作系统的内容。

[编辑] 我删除了 interview-questions 标签,因为这似乎是人们反对的主要内容。这是一个很好的小难题,但正如每个人都已经指出的那样,这不是一个很好的面试问题。

0 投票
4 回答
1292 浏览

c++ - 三角问题

我正在尝试解决欧拉问题 18 -> http://projecteuler.net/index.php?section=problems&id=18

我正在尝试用 c++ 来做到这一点(我正在重新学习它,欧拉问题是很好的学习/搜索材料)

countNums 函数用于向下或对角线。我已经像这样测试了这个功能:

它确实有效(我还稍微改变了函数,所以它会打印它正在经历的每个数字)

但我仍然没有得到正确的结果。这向下和向右并且仍然向右(右侧的相邻数字),向下并继续向下(左侧的相邻数字)。我在这里做错了什么,有人吗?


阿拉斯泰尔:很简单

long long unsigned countNums(short start_x,short start_y,short array[][15],short size, bool goright,bool goright2);

start_x 和 start_y 是数组的坐标 数组是对数组的引用 size 只是数组的大小(它总是 15) goright 是知道我是要往下走还是往下走 goright2 是要知道我要继续往下或往左走

0 投票
4 回答
550 浏览

python - 计算两个D30复投的准确结果

好吧,这困扰了我好几年,现在。如果你在学校学过统计学和高等数学,现在就转身离开。太晚了。

好的。深吸一口气。这是规则。拿两个30 面骰子(是的,它们确实存在)并同时掷骰子。

  • 将两个数字相加
  • 如果两个骰子都显示 <= 5 或 >= 26,再次掷骰子并将结果添加到您所拥有的
  • 如果一个是 <= 5 而另一个 >= 26,则再次抛出并从你拥有的结果中减去结果
  • 重复直到 > 5 和 < 26!

如果您编写一些代码(见下文),将这些骰子掷几百万次,然后计算您收到每个数字的频率作为最终结果,您会得到一条在 1 的左侧非常平坦的曲线,在 1 和 1 之间大约 45° 60和60以上持平。滚动30.5或更好的机会大于50%,滚动优于18的机会是80%,滚动优于0的机会是97%。

现在的问题是:是否可以编写一个程序来计算精确值 f(x),即滚动某个值的概率?

背景:对于我们的角色扮演游戏“星辰丛林”,我们寻找一种方法来控制随机事件。上面的规则保证了你尝试的东西会得到更稳定的结果:)

对于周围的极客,Python 中的代码:

0 投票
5 回答
564 浏览

algorithm - 排序字典以最大化相邻单词之间的常见字母

这旨在成为我之前问题的更具体、更容易表达的形式。

从字典中获取具有常用字母长度的单词列表。
如何重新排序此列表以在相邻单词之间保持尽可能多的字母?

示例 1:

示例 2:

最简单的算法似乎是:选择任何东西,然后搜索最短距离?
但是,DEVI->KALI (1 common) 等价于 DEVI->SHRI (1 common)
选择第一个匹配项会导致整个列表中的常见对更少(4 对 5)。

这似乎应该比完整的 TSP 更简单?

0 投票
3 回答
585 浏览

language-agnostic - 文本中单词的自动拼写检查

[编辑]简而言之:您将如何编写自动拼写检查器?这个想法是检查器从已知的良好来源(字典)构建一个单词列表,并在足够频繁使用时自动添加新单词。一段时间未使用的词应逐步淘汰。因此,如果我删除包含“Mungrohyperiofier”的场景的一部分,检查器应该记住它一段时间,当我在另一个场景中输入“Mung<Ctrl+Space>”时,它应该再次提供它。如果我不使用这个词,比如说,几天,它应该忘记它。

同时,我想避免在字典中添加拼写错误。[/EDIT]

我想为科幻故事写一个文本编辑器。编辑应该为当前故事中任何地方使用的任何单词提供单词补全。它只会提供故事的单个场景进行编辑(因此您可以轻松地移动场景)。

这意味着我有三套:

  1. 所有其他场景中所有单词的集合
  2. 在我开始编辑之前当前场景中的一组词
  3. 当前编辑器中的单词集

我需要将这些集合存储在某个地方,因为每次都从头开始构建列表太昂贵了。我认为一个每行一个单词的简单纯文本文件就足够了。

当用户编辑场景时,我们有这些情况:

  1. 她删了一个字。这个词在当前场景中的其他任何地方都没有使用。
  2. 她打出一个新词
  3. 她输入了一个已经存在的单词
  4. 她输入了一个已经存在但打错字的单词
  5. 她更正了第 2 组中一个单词的错字。
  6. 她更正了第 1 组单词中的错字(即错字也在别处)。
  7. 她删除了一个她打算再次使用的词。但是,删除后,该单词不再位于集合#1 和#3 中。

显而易见的策略是在保存场景时重建单词集,并从每个场景的单词列表文件中构建集#1。

所以我的问题是:是否有一个聪明的策略来保留不再使用的单词但仍然能够逐步淘汰拼写错误?如果可能的话,这个策略应该在后台运行,用户甚至不会注意到发生了什么(即我想避免必须抓住鼠标从菜单中选择“将单词添加到字典”)。

[编辑] 基于悲伤的评论