所以我正在用Python编写一个程序来获取任意数量的GCD.
def GCD(numbers):
if numbers[-1] == 0:
return numbers[0]
# i'm stuck here, this is wrong
for i in range(len(numbers)-1):
print GCD([numbers[i+1], numbers[i] % numbers[i+1]])
print GCD(30, 40, 36)
Run Code Online (Sandbox Code Playgroud)
该函数采用数字列表.这应该打印2.但是,我不明白如何递归使用该算法,因此它可以处理多个数字.谁能解释一下?
更新,仍然无法正常工作:
def GCD(numbers):
if numbers[-1] == 0:
return numbers[0]
gcd = 0
for i in range(len(numbers)):
gcd = GCD([numbers[i+1], numbers[i] % numbers[i+1]])
gcdtemp = GCD([gcd, numbers[i+2]])
gcd = gcdtemp
return gcd
Run Code Online (Sandbox Code Playgroud)
好的,解决了
def GCD(a, b):
if b == 0:
return a
else:
return GCD(b, a % b)
Run Code Online (Sandbox Code Playgroud)
然后使用reduce,就像
reduce(GCD, (30, …Run Code Online (Sandbox Code Playgroud) 当我在Project Euler中努力做问题14时,我发现我可以使用一个叫做memoization的东西来加速我的进程(我让它运行了15分钟,它仍然没有回复).问题是,我该如何实现它?我试过,但是我得到了一个keyerror(返回的值无效).这让我很烦,因为我很肯定我可以对此应用memoization并加快速度.
lookup = {}
def countTerms(n):
arg = n
count = 1
while n is not 1:
count += 1
if not n%2:
n /= 2
else:
n = (n*3 + 1)
if n not in lookup:
lookup[n] = count
return lookup[n], arg
print max(countTerms(i) for i in range(500001, 1000000, 2))
Run Code Online (Sandbox Code Playgroud)
谢谢.
我正在尝试使用未弃用的 OpenGL 在 LWJGL 3 中渲染文本。我不能使用 Slick-Util,它依赖于旧版本的 LWJGL 和不推荐使用的 OpenGL。
如果我用标准 C++ OpenGL 编写,我会使用 FreeType,但我不能。那么我将如何开始创建一个可以处理文本渲染的类,并支持:
有没有人有关于这个主题的任何好的资源,最好是 Java 和 LWJGL?
我正在尝试计算表达式A * B + ( A + B ) / ( A - B ),其中 A 和 B 是用户输入的整数。我在 linux 内核上使用 ALong32 库。
%include "along32.inc"
section .data
msg1 db 'Enter A: ', 0
msg2 db 'Enter B: ', 0
msg3 db 'Result: ' , 0
err db 'Error: cannot divide by 0', 0
A resb 4
B resb 4
section .text
global main
main:
mov edx, msg1
call WriteString
call ReadInt
mov [A], eax ; move the input …Run Code Online (Sandbox Code Playgroud) #include <iostream>
#include <sstream>
template <typename T>
const char* numberToString(T number) {
std::ostringstream ss;
ss << number;
return ss.c_str();
}
int main() {
printf(numberToString(123));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我的错误:
1>d:\programming\euler\problem 4\problem 4\problem 4\source.cpp(8): error C2039: 'c_str' : is not a member of 'std::basic_ostringstream<char,std::char_traits<char>,std::allocator<char>>'
1> d:\programming\euler\problem 4\problem 4\problem 4\source.cpp(26) : see reference to function template instantiation 'const char *numberToString<int>(T)' being compiled
1> with
1> [
1> T=int
1> ]
Run Code Online (Sandbox Code Playgroud)
为什么这不起作用?
所以我有一个这种格式的文本文件:
1 3 4 5 1 3 9 12 5
说这个文件被调用numbers.txt.
我想告诉Haskell从文件中读取,并将这些数字放在列表中.所以我最终会:
[1,3,4,5,1,3,9,12,5]
我真的不明白怎么做,我一直在搜索.我知道我需要使用getLine,但那又怎么样?我会使用函数将该字符串映射到列表吗?我真的不确定如何写这个,我知道这可能是一个非常愚蠢的问题,但我刚开始学习Haskell,我想继续前进.
假设我在 python 中遍历一个列表:
lines = [1, 2, 3, 4]
linecount = len(lines)
#I want to be able to do this:
for i, j in range(linecount - 1, -1, -1), range(linecount, -1, -1):
print i, j
"""
This would print out
3 4
2 3
1 2
0 1
0 0
"""
Run Code Online (Sandbox Code Playgroud)
我怎么能去做这件事?
这是我的代码片段:
#include <iostream>
#include <fstream>
#include <string>
#include <stdlib.h> // atoi()
int main() {
std::string line;
std::ifstream numbers("numbertest.txt");
if (numbers.is_open()) {
while (std::getline(numbers, line)) {
for (int i = 0; i < line.length() - 4; i++) {
for (int n = 0; n < 5; n++) {
std::cout << atoi((line.substr(i, 5)[n]).c_str());
}
Run Code Online (Sandbox Code Playgroud)
我想对文件中 5 个一组的数字进行操作。为什么 atoi() 在这里不起作用?它在 atoi 行的第二个括号下表示“表达式必须具有类类型”。
所以,我有一个扩展的类,Actor我正在尝试改变它的alpha值; objectPreview是该类的一种类型:
@Override
public void display() {
...
// remove previous object preview from stage
objectPreview.remove();
...
// add a translucent preview of where the object will be added
objectPreview.getColor().a = 0.5f;
stage.addActor(objectPreview);
...
stage.draw();
}
Run Code Online (Sandbox Code Playgroud)
这draw是我的自定义方法Actor:
@Override
public void draw(Batch batch, float alpha) {
batch.enableBlending();
batch.draw(texture, pos.x, pos.y);
}
Run Code Online (Sandbox Code Playgroud)
该display方法被称为每一帧,并且objectPreview是一个Actor已添加到stage.
但是,修改alpha值objectPreview不起作用.
否则,这将按预期工作,Actor在屏幕上预览并在每帧清除/重绘它.
我也尝试了这种setColor()方法,但这不起作用.即使我改变了r,g,b vaulues,也没有任何反应; 对象仍然是原始Actor's纹理.
为什么不是 …