Questions tagged «puzzle»

30
将随机范围从1–5扩展到1–7
给定一个产生1到5范围内的随机整数的函数,编写一个产生1到7范围内的随机整数的函数。 什么是简单的解决方案? 什么是减少内存使用或在较慢的CPU上运行的有效解决方案?
692 algorithm  random  puzzle 

30
如何从字母矩阵中找到可能的单词列表[Boggle Solver]
最近,我一直在iPhone上玩一个名为Scramble的游戏。你们中有些人可能将此游戏称为Boggle。本质上,当游戏开始时,您会得到一个字母矩阵,如下所示: F X I E A M L O E W B X A S T U 游戏的目标是找到尽可能多的单词,这些单词可以通过将字母链接在一起来形成。您可以从任何字母开始,并且包围它的所有字母都是公平的游戏,然后转到下一个字母时,包围该字母的所有字母都是公平的游戏,除了任何以前使用的字母。因此在上面的网格,例如,我能想出的话LOB,TUX,SEA,FAME,等词必须至少有3个字符,并且不超过N×N个字符,这将是本场比赛16,但可以在一些实现改变。尽管这款游戏既有趣又令人上瘾,但我显然并不擅长于此,我想通过编写一个程序来欺骗我一点,该程序可以给我最好的单词(单词越长,您获得的积分就越多)。 (来源:boggled.org) 不幸的是,我对算法或其效率等不是很好。我的第一次尝试是使用诸如此类的字典(〜2.3MB),并进行线性搜索以尝试将组合与字典条目匹配。这需要非常长时间才能找到可能的单词,并且由于您每轮只有2分钟的时间,因此这根本不够用。 我很想看看是否有任何Stackoverflowers可以提出更有效的解决方案。我主要在寻找使用Big 3 P的解决方案:Python,PHP和Perl,尽管Java或C ++的任何功能也很酷,因为速度是必不可少的。 当前解决方案: 亚当·罗森菲尔德(Adam Rosenfield),Python,约20秒 John Fouhy,Python,大约3秒 Kent Fredric,Perl,〜1秒 Darius Bacon,Python,〜1秒 rvarcher,VB.NET (实时链接), Paolo Bergantino,PHP (实时链接),〜5s(本地〜2s)
376 algorithm  puzzle  boggle 


30
如果该行或列包含0,则将矩阵中的每个单元格设置为0
想要改善这篇文章吗?提供此问题的详细答案,包括引文和答案正确的解释。答案不够详细的答案可能会被编辑或删除。 给定一个0x和1s的NxN矩阵。将包含a的每一行设置0为all 0,并将包含a的每一列设置0为all 0。 例如 1 0 1 1 0 0 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 结果是 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 …

30
给定一些美元价值时,如何查找硬币的所有组合
几个月前,我发现了一段我正在编写的准备面试的代码。 根据我的评论,它正在尝试解决此问题: 给定一些美分的美元价值(例如200 = 2美元,1000 = 10美元),找到构成美元价值的所有硬币组合。只能携带几美分(1¢),镍币(5¢),角钱(10¢)和四分之一(25¢)。 例如,如果给出100,则答案应为: 4 quarter(s) 0 dime(s) 0 nickel(s) 0 pennies 3 quarter(s) 1 dime(s) 0 nickel(s) 15 pennies etc. 我相信这可以通过迭代和递归的方式解决。我的递归解决方案有很多问题,我想知道其他人如何解决这个问题。这个问题的困难部分是使其尽可能高效。

30
程序员难题:在整个游戏中对棋盘状态进行编码
严格来说不是一个问题,更像是一个难题... 多年来,我参与了一些新员工的技术面试。除了询问标准的“您是否知道X技术”问题之外,我还尝试了解它们如何解决问题。通常,我会在面试的前一天通过电子邮件将问题发送给他们,并希望他们在第二天提出解决方案。 通常,结果会很有趣-错误,但是很有趣-如果该人可以解释为什么采用特定方法,那么该人仍然会得到我的推荐。 所以我想我应该向Stack Overflow观众提出我的一个问题。 问题:您认为编码国际象棋游戏(或其子集)状态的最节省空间的方法是什么?也就是说,假设棋盘上的棋子是依法排列的,则对初始状态和游戏中所有后续棋步进行编码。 答案不需要任何代码,只需描述您要使用的算法即可。 编辑:正如其中一位海报指出的那样,我没有考虑过两次走步之间的时间间隔。也可以考虑将其作为可选的额外项目:) EDIT2:只是为了进一步说明...请记住,编码器/解码器是规则感知的。真正需要存储的唯一内容是播放器的选择-可以假定编码器/解码器知道其他任何内容。 EDIT3:在这里挑选获奖者将很困难:)很多很棒的答案!

8
“猜数字”游戏中是否存在任意有理数?
我曾经有以下问题作为面试问题: 我正在考虑一个正整数n。提出一种可以在O(lg n)查询中进行猜测的算法。每个查询都是您选择的数字,我将回答“较低”,“较高”或“正确”。 此问题可以通过修改后的二进制搜索来解决,在该搜索中,您列出了2的幂,直到找到一个超过n的幂,然后在该范围内运行标准的二进制搜索。我认为这很酷,因为您可以比暴力破解更快地搜索无限数量的特定数字。 不过,我的问题是对此问题进行了轻微的修改。假设不选择一个正整数,而是选择一个介于零和一之间的任意有理数。我的问题是:您可以使用哪种算法最有效地确定我选择了哪个有理数? 现在,我拥有的最佳解决方案可以在最多O(q)的时间内隐式遍历所有有理数的二叉搜索树Stern-Brocot树,从而找到p / q 。但是,我希望使运行时更接近整数情况下的运行时,例如O(lg(p + q))或O(lg pq)。有人知道获得这种运行时的方法吗? 我最初考虑使用间隔[0,1]的标准二进制搜索,但这只会找到具有非重复二进制表示形式的有理数,而这几乎错过了所有有理数。我还考虑过使用其他方式来列举有理数,但是仅凭比较大/相等/少的比较,我似乎找不到找到这种空间的方法。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.