如何使用Bailey-Borwein-Plouffe公式计算pi的第n个二进制(或十六进制)数字?我一直在彻底搜索互联网和这个网站的答案,但我还没有找到算法的实际实现.
维基百科上的Bailey-Borwein-Plouffe页面告诉我"该方法计算第n个数字而不计算第一个n ? 1数字,并且可以使用小型,高效的数据类型".问题是,页面只解释了这种形式的公式:
Pi = SUM k=0 to infinity ...
Run Code Online (Sandbox Code Playgroud)
但我不知道如何使用这些信息来实际找到pi的第n位数.(你知道,我不想找到Pi本身的价值,我也不想将总和计算到无穷大......)我只需要在任何编程语言或伪代码中看到一个如何做的例子这在实践中.
int nthDigitOfPi(long n) {
// calculate and return the n-th binary digit of pi
// ...
}
Run Code Online (Sandbox Code Playgroud)
提前致谢.对你的帮助表示感谢.
我正在为 OSX 用 Spritekit 编写游戏。如何检查当前是否正在按下某个键?考虑这个例子:
//some code. this could be e.g. inside a game loop
if (/*is key 'w' pressed*/) {
// move forward
}
//some more code
Run Code Online (Sandbox Code Playgroud)
Swift 和 Objective-C 解决方案都很有用。
注意:我对接收或处理事件不感兴趣,所以我想尽可能避免这种情况。我只需要检查当前是否按下了特定键。
注意#2:此问题不是链接问题的重复,因为它仅从接收“keyPressed”事件(作为方法调用的参数)的角度解决问题,而不是从在其他地方执行检查的角度解决问题找出当前是否正在按下某个键。换句话说,它不能帮助我填写上述 if 语句中的条件。
我想我最终可能不得不维护一个布尔数组,每个键码一个,并在收到 keyDown 和 keyUp 事件时更新其内容。但我希望有一个更优雅的解决方案,因为这似乎是非常微不足道的功能。