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

c++ - 从一组中随机选择的快速方法,每个条目只选择一次?

我正在开发一个程序来解决n皇后问题(将n棋皇后放在n x n棋盘上的问题,这样它们中的任何一个都无法使用标准棋皇后的移动来捕获任何其他棋子)。我正在使用启发式算法,它首先在每一行中放置一个皇后,然后从尚未被占用的列中随机挑选一列。我觉得这一步是一个优化的机会。这是代码(在 C++ 中):

如果从代码中不清楚:我首先为每列构建一个包含整数的向量。然后,对于每一行,我在向量中选择一个随机条目,将其值分配给该行在chboard[]. 然后我从向量中删除该条目,因此它不适用于任何其他皇后。

我很好奇可以使用数组和指针而不是向量的方法。还是<list>for除了循环之外,有没有更好的方法来顺序填充向量?我很想听听一些建议!

0 投票
3 回答
20625 浏览

java - 为什么 24 * 60 * 60 * 1000 * 1000 除以 24 * 60 * 60 * 1000 在 Java 中不等于 1000?

为什么 24 * 60 * 60 * 1000 * 1000 除以 24 * 60 * 60 * 1000 在 Java 中不等于 1000?

0 投票
3 回答
1194 浏览

algorithm - 经典“重磅炸弹”的解决方案

在整个 80 年代和 90 年代的英国(我相信也是 70 年代!)有一个经典的电视节目叫做“大片”,它在蜂窝网格中显示六边形,像这样(抱歉图片模糊!):

图片来自旧版 Blockbuster 电视游戏
(来源:ukgameshows.com

如您所见,有 5 列字母和 4 行。1个人或团队正在尝试水平旅行,一个人正在尝试垂直旅行。您通过回答一个问题赢得一个六边形,答案将以该六边形中显示的字母开头。

获胜的人或团队是第一个“连接线”的人 - 请注意,这可能会自行返回(例如,如果它被赢得该六边形的对方团队阻挡)因此有很多很多可能的获胜组合。

几年前,当我刚开始编码时,我根据这个谜题编写了一个会议游戏(我们让它交替使用八边形和正方形以避免侵犯版权!)但我一直在努力解决的问题是检查何时完成一行的算法被制作了。简单的很好,但是那些上下,来回的我真的被卡住了!

我最终基本上编写了一个巨大的蛮力循环,但仍然没有捕捉到所有的可能性。因此,我不得不在会议组织者的屏幕上放置一个按钮,以使他们能够在逻辑未检测到它的情况下快速宣布获胜者!谈论肮脏的黑客...

现在我回想起我必须解决的这个难题,我想知道你们中是否有人愿意提出一个更优雅的解决方案?当然语言不可知论(所有包括愉快地接受的伪代码)。

编辑您可以按照自己的方式存储数据。我把它放在一个数组中。

0 投票
4 回答
920 浏览

algorithm - 通过矩形阵列路由“路径”

我正在尝试创建自己的益智游戏实现。

要创建我的游戏板,我需要遍历数组中的每个方格一次且仅一次。
遍历需要链接到相邻的邻居(水平、垂直或对角线)。

我正在使用以下形式的数组结构:

我目前构建随机路径的方法是:

该算法在某些中等大小的网格上花费的时间太长,因为早期的选择会忽略考虑的区域。

我想要的是一个函数,它将索引放入每个可能的路径,并返回为该路径填充的数组。这将让我提供一个“种子”值来返回这个特定的董事会。

欢迎其他建议..

0 投票
3 回答
4056 浏览

algorithm - 在益智游戏中寻找模式

我想知道,哪些是最常用的算法,用于在符合单元格的益智游戏中寻找模式。

我知道这取决于很多因素,比如你想要检测的模式类型,或者游戏规则......但我想知道在这类问题中哪些是最常用的算法......

例如,专栏、宝石、俄罗斯方块等游戏。

我还想知道通过“蛮力”检测模式(例如,扫描所有网格试图找到三个相同颜色的相邻单元格)是否比在非常小的网格中使用特定算法(例如 4 X 4)明显最差(再说一次,我知道这取决于游戏类型和规则......)

这类游戏常用哪些结构?

0 投票
3 回答
313 浏览

java - “{}”中的主类块从不执行

考虑以下代码:-

这从不输出 "hi" 。为什么是这样?

0 投票
2 回答
1445 浏览

java - Java元编程难题:获取本身由给定注释A注释的所有注释

你认为你是一个java精灵吗?

您是否精通反射 API 的秘密?

您必须编写方法solve,以便在方法Cx() 和Mark.class 上调用它时返回{c, d}。

(这不是家庭作业,是我正在尝试开发的框架元编程框架的真正编程任务)

0 投票
4 回答
925 浏览

algorithm - 编码脑筋急转弯以更新数组(与语言无关)

全部,

我需要一种聪明的方法来尽可能快速和干净地实现这个算法(工作):我想我已经删除了所有语言特定的问题并将其归结为:

我有两个数组:A 和 B。

A 中有一个名称列表 {Apple, Apple, Banana, Banana, Banana, Carrot, ...} 每个第 i 个值在 A 中出现的次数没有上限。可以只有一个“苹果”或数不胜数。

A 中的每个条目在 B 中都有一个匹配的条目。(多对多映射)。例如:

如果 A 中有 100 个或更少的条目实例(如果有 <= 100 个香蕉),那么它们必须共享相同的初始“B”值。如果超过 100 个,则前 100 个必须共享相同的 B 值,但接下来的 100 个将具有第 B[i + 100] 个值。

例如,如果有 102 个苹果

那么我想要的结果是这样的:

我敢肯定有一些超级大脑可以想出我设计的蹩脚算法,所以让我们看看吧!

编辑1:我想我应该指出这为了工作。我认为这是一个有趣的挑战,有人可能想看看,并且可能想出比我想出的更好的解决方案。

编辑2:感谢丹尼尔指出我的愚蠢错误。

我的解决方案只是为了比较(伪代码):

首先制作 B 的哈希/字典,称为 d,其中 d[ "Apple" ] = A 中 Apple 的实例数。

从记忆中做到这一点,希望我没有搞砸索引......

0 投票
6 回答
33626 浏览

algorithm - 解决 8 谜题的有效方法是什么?

8 拼图是一个有 9 个位置的方板,由 8 个编号的瓷砖和一个间隙填充。在任何时候,与间隙相邻的瓷砖都可以移动到间隙中,从而创建新的间隙位置。换句话说,间隙可以与相邻(水平和垂直)的瓷砖交换。游戏的目标是从任意配置的图块开始,然后移动它们以使编号的图块按升序排列,或者围绕棋盘周边排列,或者从左到右排列,左上角为 1 -手的位置。

8 拼图

我想知道什么方法可以有效地解决这个问题?

0 投票
10 回答
1179 浏览

word - Code Golf - Word Scrambler

Please answer with the shortest possible source code for a program that converts an arbitrary plaintext to its corresponding ciphertext, following the sample input and output I have given below. Bonus points* for the least CPU time or the least amount of memory used.

Example 1:

Plaintext: The quick brown fox jumps over the lazy dog. Supercalifragilisticexpialidocious!

Ciphertext: eTh kiquc nobrw xfo smjup rvoe eth yalz .odg !uioiapeislgriarpSueclfaiitcxildcos

Example 2:

Plaintext: 123 1234 12345 123456 1234567 12345678 123456789

Ciphertext: 312 4213 53124 642135 7531246 86421357 975312468

Rules:

  1. Punctuation is defined to be included with the word it is closest to.
  2. The center of a word is defined to be ceiling((strlen(word)+1)/2).
  3. Whitespace is ignored (or collapsed).
  4. Odd words move to the right first. Even words move to the left first.

You can think of it as reading every other character backwards (starting from the end of the word), followed by the remaining characters forwards. Corporation => XoXpXrXtXoX => niaorCoprto.

Thank you to those who pointed out the inconsistency in my description. This has lead many of you down the wrong path, which I apologize for. Rule #4 should clear things up.

*Bonus points will only be awarded if Jeff Atwood decides to do so. Since I haven't checked with him, the chances are slim. Sorry.