问题标签 [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 投票
10 回答
18473 浏览

algorithm - 两颗弹珠和一座 100 层的建筑

那些经典的编程面试问题之一......

给你两颗弹珠,并告诉它们从某个特定高度掉落时会破裂(如果从该高度以下掉落,可能不会受到损坏)。然后你被带到一栋 100 层的建筑物(大概高于特定高度),并被要求找到你可以在不破坏大理石的情况下掉落的最高楼层。

额外信息

  • 您必须找到正确的楼层(不是可能的范围)
  • 弹珠都保证在同一楼层破裂
  • 假设您更换地板的时间为零——仅计算大理石滴的数量
  • 假设正确的楼层随机分布在建筑物中
0 投票
7 回答
2289 浏览

php - 从给定的多个集合中找到最佳组合

假设您有货物。它需要从 A 点到 B 点,从 B 点到 C 点,最后从 C 点到 D 点。您需要用最少的钱在五天内到达那里。每条支线有三个可能的托运人,每条支线都有自己不同的时间和成本:

您将如何以编程方式寻找最佳组合?

到目前为止,我最好的尝试(第三或第四种算法)是:

  1. 为每条腿找到最长的托运人
  2. 淘汰最“贵”的一个
  3. 为每条腿找到最便宜的托运人
  4. 计算总成本和天数
  5. 如果天数可以接受,则完成,否则,转到 1

在 PHP 中快速模拟(请注意,下面的测试数组可以流畅地工作,但是如果您使用上面的测试数组尝试它,它不会找到正确的组合):

我想我实际上可能需要做一些事情,我逐个制作每个组合(带有一系列循环)并将每个组合的总“分数”相加,然后找到最好的一个......

编辑:澄清一下,这不是“家庭作业”(我不在学校)。这是我当前工作项目的一部分。

要求(一如既往)一直在不断变化。如果在我开始解决这个问题时给了我当前的限制,我将使用 A* 算法的一些变体(或 Dijkstra 或最短路径或单纯形或其他东西)。但是一切都在变化和变化,这将我带到了现在的位置。

所以我想这意味着我需要忘记我到目前为止所做的所有废话,只使用我知道我应该使用的东西,这是一种寻路算法。

0 投票
46 回答
447338 浏览

sql - 查找第二大值的最简单的 SQL 查询是什么?

在特定列中查找第二大整数值的最简单 SQL 查询是什么?

列中可能存在重复值。

0 投票
10 回答
1231 浏览

algorithm - 在盒子里找到自己的号码

100 名(或偶数 2N :-))囚犯在一个房间 A。他们的编号从 1 到 100。

一个接一个(从 1 号囚犯到 100 号囚犯,按顺序),他们将被带入一个房间 B,里面有 100 个箱子(编号从 1 到 100)等待他们。(封闭的)框内是从 1 到 100 的数字(框内的数字是随机排列的!)。

一旦进入房间 B,每个囚犯可以打开 50 个盒子(他选择打开哪个)。如果他在这 50 个盒子中的一个中找到分配给他的号码,则囚犯可以走进 C 房间,并且在下一个从 A 房间走进 B 房间之前,所有的盒子都会再次关闭。否则,所有囚犯(在房间 A、B 和 C) 被杀死。

在进入房间 B 之前,囚犯可以就策略(算法)达成一致。房间之间没有办法交流(B房间也不能留下任何信息!)。

有没有一种算法可以最大化所有囚犯幸存的概率?该算法实现的概率是多少?

笔记:

  • 随机做事(你称之为“无策略”)确实为每个囚犯提供了 1/2 的概率,但是他们所有人幸存的概率是 1/2^100(这是相当低的)。一个人可以做得更好!

  • 不允许囚犯重新排列箱子!

  • 当囚犯第一次找不到他的号码时,所有囚犯都会被杀死。并且无法进行交流。

  • 提示:一个人平均可以救30多个囚犯,比(50/100) * (50/99) * [...] * 1要多得多

0 投票
11 回答
23208 浏览

algorithm - 在列表中查找单个数字

在所有其他数字恰好出现两次的列表中查找仅出现一次的数字的最佳算法是什么。

所以,在整数列表中(让我们把它当作一个数组)每个整数都重复两次,除了一个。要找到那个,最好的算法是什么。

0 投票
11 回答
21298 浏览

sql - 从列表中获取前“n”个分数的 SQL 查询

我想找到解决我遇到的现实生活问题的不同方法:想象有一场比赛或游戏,在此期间用户收集积分。您必须构建一个查询以显示具有最佳“n”分数的用户列表。

我正在做一个例子来澄清。假设这是用户表,获得的积分:

如果我想要前 3 名,结果将是:

这可以根据需要在视图或存储过程中实现。我的目标数据库是 Sql Server。实际上我解决了这个问题,但我认为有不同的方法来获得结果......比我的更快或更有效。

0 投票
21 回答
30830 浏览

algorithm - 有效地反转字符数组中单词(不是字符)的顺序

给定一个构成单词句子的字符数组,给出一个有效的算法来反转其中单词(不是字符)的顺序。

示例输入和输出:

它应该是 O(N) 时间和 O(1) 空间(split()并且不允许推入/弹出堆栈)。

谜题取自这里

0 投票
1 回答
4111 浏览

c# - 如何开始编写“餐饮哲学家”模拟程序?

我不是 C# 的初学者,但我确实需要增加我的理解,所以我选择了一个经典的死锁问题来编写代码,以帮助自己学习一些更高级的 C# 概念。餐饮哲学家问题似乎是一个很好的问题,但我需要一些帮助才能开始。我知道我需要将“食客”作为对象来处理,但是为了模拟进餐之间的随机延迟,我是否应该将每个食客的线程放在单独的线程中?我是否需要某种“主人”来监控所有动作?欢迎任何一般的设计概念建议,但我想将 grunt 编程作为练习。谢谢!

0 投票
14 回答
48599 浏览

algorithm - 生成字谜的算法

生成字谜的最佳策略是什么。

  • 十一加二十二加一的字谜
  • 小数点I'm a dot in place的字谜
  • 天文学家月球凝视者的字谜

起初它看起来很简单,只是将字母打乱并生成所有可能的组合。但是,只生成字典中的单词的有效方法是什么。

我遇到了这个页面,在 Ruby 中解决字谜

但是你的想法是什么?

0 投票
11 回答
14119 浏览

math - 如何测试随机性(例如 - 洗牌)

首先,这个问题是从这个问题中删除的。我这样做是因为我认为这部分比一个较长问题的子部分更大。如有冒犯,请见谅。

假设您有一个生成随机性的算法。现在你如何测试它?或者更直接地说——假设你有一个洗牌的算法,你如何测试它是一个完全随机的算法?

为这个问题添加一些理论 - 一副纸牌可以在 52 中洗牌!(52阶乘)不同的方式。拿一副牌,用手洗牌,写下所有牌的顺序。你得到那个洗牌的概率是多少?答案:1 / 52!。

洗牌后,你依次得到每种花色的 A、K、Q、J ……的机会是多少?回答 1 / 52!

因此,只需洗牌一次并查看结果,您绝对不会获得任何关于洗牌算法随机性的信息。两次,你有更多的信息,三个甚至更多......

您将如何黑盒测试洗牌算法的随机性?