问题标签 [knuth]
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.
c - D.Knuth 的舞蹈链接算法的术语解释
我从 D.Knuth 的网站下载了 DLX 算法。在 D.Knuth 概述问题的第一部分中,将列分隔为“主要”列和其他列。这些“主要”列是哪些?提前致谢。
algorithm - 单例是一种算法吗?它是否包含在 knuth 的
不久前,我拥有一份 Game Programming Gems 的副本,并在应用程序中使用了 Singletons。我想知道单身人士是否被认为是一种算法,如果不是,它们是什么?其次,我很可能会购买 Knuth 的算法书,想知道其中是否涵盖了像 Singletons 这样的方法?
c# - 字节 [] 的 Knuth 哈希
我可以使用 Knuth Hash 为 a 生成唯一的散列号byte[]
吗?
正常的 Knuth Hash 算法如下所示:
还有一种方法可以输入 abyte[]
并为其生成唯一的哈希值吗?
python - Python中的Mastermind Minimax算法
我正在尝试实现 Donald Knuth 的算法来解决 Mastermind,详情如下:http: //en.wikipedia.org/wiki/Mastermind_(board_game)#Five-guess_algorithm
我的大部分代码都在工作,但我无法让 Minimax 步骤工作(在类的get_guess
方法中ComputerGuesser
)。我已经看过Mastermind minimax algorithm但我不知道我做错了什么。
帮助将不胜感激,谢谢。
反馈类
实用方法
电脑猜谜
编辑:运行代码(添加了一些打印语句)会产生以下结果:
knuth - 什么是 Knuth 的 WEB?
我一直试图弄清楚 Donald Knuth 的WEB是什么,但它确实很矛盾。从我可以从网页中收集到的信息是它类似于 doxygen,但我正在阅读的所有资料都坚持认为它是一种编程语言。但是,它看起来不像我见过的任何编程语言。
那么WEB到底是什么?是否有一些文档可以解释它?
c - Knuth's Art of Programming 第三版和欧几里得算法示例
我刚开始阅读 Knuth 的编程艺术的第 1 卷,然后到了第 4 页上他描述欧几里得算法的部分。他陈述了求两个数的最大公约数的步骤。你可以在这里阅读更多关于它的信息https://en.wikipedia.org/wiki/Euclidean_algorithm
他逐步介绍了一个找到 199 和 544 的 GCD 的示例,他说 17 作为答案。我很快就实现了算法,但得到了答案 1。使用我的计算器,我也得到了答案 1。
我的代码是。
我是否在他的示例中遗漏了一些东西,他是否得到了错误的答案。我试图查找本书第三版的勘误表,但没有得到任何结果。只是想确保我不会发疯。
knuth - 如何开始使用 Donald Knuth 的 MIX/MMIX 汇编器?
我希望能够学习 MIX/MMIX,但我不知道用来编写它的工具链。我过去曾将 uVision 用于 ARM 汇编器相关的东西,MIX/MMIX 是否存在这样的等价物?
java - 如何在 Java 中为 shellsort 正确实现 Knuth 序列?
有人可以提供一个使用 Knuth 序列的 Java shellsort 的简单工作示例吗?我在互联网上查看了几个地方,但找不到适合我的解释。我在概念层面上理解 shellsort - 因为它是一种插入排序,它是在随着时间的推移缩小直到达到 1 的间隙的间隙上完成的 - 这本质上是一种插入排序。然而,Knuth 序列是 (k * 3 - 1)/2,前几个间隙的列表通常表示为 [1, 4, 13, 40, 121.. 等等]。
我的问题是这将如何实施?起始间隙实际上是 1,还是这个序列在它大于被排序列表的大小之前生成的值?如果差距从 1 开始,如果我正确理解 shell 排序,那么目的就会失败。有人可以对此有所了解吗?我觉得我错过了一些对理解这件事至关重要的东西。
提前致谢。
java - 优化Leaper Graph算法?
在 Google 的 45 分钟技术面试中,我被问到一个 Leaper Graph 问题。我编写了工作代码,但后来因为缺乏数据结构知识而被拒绝了工作机会。我想知道我本可以做得更好。
问题如下:“给定一个 N 大小的棋盘,并告诉棋子可以水平跳 i 个位置(左或右)和垂直跳 j 个位置(上或下)(即,有点像国际象棋中的一匹马),可以跳投者能到达棋盘上的每一个位置吗?”
我写了以下算法。它通过标记图上所有被访问的点来递归地确定棋盘上的每个位置是否都可以到达。如果它不可达,那么至少有一个字段为假,该函数将返回假。
现在,后来有人指出,最佳解决方案是实施 Donald Knuth 的 co-prime 实施: http ://arxiv.org/pdf/math/9411240v1.pdf 这是一个应该能够弄清楚的事情吗? 45分钟的技术面试??
除了上述之外,还有什么我可以做得更好的吗?
编辑:
-我询问了起始位置。有人告诉我从 0,0 开始就可以了。
edit2 根据反馈,我写了一个带有队列方法的while循环。当 n = 85 时,递归方法会遇到堆栈溢出。但是,使用下面的队列方法的 while 循环可以达到 ~n = 30,000。(之后它会遇到内存超过 GB 的堆问题)。如果您知道如何进一步优化,请告诉我。
c - 试图理解 Knuth 的排列算法
我最近在我的一个算法类中被指示使用 Knuth 的算法来创建存储在 malloc 数组中的排列。
这是设置:
array 是指向包含排列的 malloced 数组的指针。它最初存储 n 个值,每个位置都保存索引 + 1。
因此,如果 n 为 10,则数组最初为:
[1、2、3、4、5、6、7、8、9、10]
“rand”变量包含一些从 1 到 n 的变量。(在本例中为 1-10)。
Swap 应该是一个执行位异或交换 (XOR) 的函数。
最终结果应该是 1-n 的某种排列。
所以 [5, 6, 2, 8, 7, 4, 1, 3, 10, 9] 作为一种可能的排列是有效的。
但是, [1, 1, 5, 7, 8, 2, 3, 5, 5, 6] 无效,因为它不是排列。它有重复项。
但我不能对我们被告知要使用的这段代码做出正面或反面:
所以我们从数组的第二个元素开始。(i = 1)
然后我们尝试对两个参数进行异或:
第一个:&array[i]
那是指向 malloced 数组的指针的地址。(双指针,对吧?)
第二个参数是完全相同的。指向 malloced 数组的指针的地址。
我应该如何以及为什么要对地址进行 XOR?
我不明白什么?
感谢您的任何帮助!