小编Tet*_*ure的帖子

具有多个数的欧几里得算法(GCD)?

所以我正在用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)

python math greatest-common-divisor

24
推荐指数
4
解决办法
4万
查看次数

Python - Memoization和Collat​​z序列

当我在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)

谢谢.

python math memoization

5
推荐指数
1
解决办法
3192
查看次数

LWJGL 3 - 渲染文本

我正在尝试使用未弃用的 OpenGL 在 LWJGL 3 中渲染文本。我不能使用 Slick-Util,它依赖于旧版本的 LWJGL 和不推荐使用的 OpenGL。

如果我用标准 C++ OpenGL 编写,我会使用 FreeType,但我不能。那么我将如何开始创建一个可以处理文本渲染的类,并支持:

  • 不同的字体/字体大小/粗体、斜体等
  • 字体着色
  • 字体变换

有没有人有关于这个主题的任何好的资源,最好是 Java 和 LWJGL?

java opengl text lwjgl

5
推荐指数
1
解决办法
8125
查看次数

x86 程序集 (NASM):浮点异常,不能除以 0?

我正在尝试计算表达式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)

assembly nasm

4
推荐指数
1
解决办法
4123
查看次数

将std :: string转换为const char*,获取错误

#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)

为什么这不起作用?

c++ string types

3
推荐指数
1
解决办法
1379
查看次数

Haskell - 将包含数字的文件读入列表

所以我有一个这种格式的文本文件:

1 3 4 5 1 3 9 12 5

说这个文件被调用numbers.txt.

我想告诉Haskell从文件中读取,并将这些数字放在列表中.所以我最终会:

[1,3,4,5,1,3,9,12,5]

我真的不明白怎么做,我一直在搜索.我知道我需要使用getLine,但那又怎么样?我会使用函数将该字符串映射到列表吗?我真的不确定如何写这个,我知道这可能是一个非常愚蠢的问题,但我刚开始学习Haskell,我想继续前进.

io haskell file

3
推荐指数
1
解决办法
149
查看次数

python中的两个'for'循环

假设我在 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)

我怎么能去做这件事?

python list

2
推荐指数
1
解决办法
312
查看次数

atoi() 不适用于 std::string::substr()

这是我的代码片段:

#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 行的第二个括号下表示“表达式必须具有类类型”。

c++ string atoi

2
推荐指数
1
解决办法
3461
查看次数

(LibGDX)改变演员的颜色

所以,我有一个扩展的类,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纹理.

为什么不是 …

java libgdx

2
推荐指数
1
解决办法
2307
查看次数

标签 统计

python ×3

c++ ×2

java ×2

math ×2

string ×2

assembly ×1

atoi ×1

file ×1

greatest-common-divisor ×1

haskell ×1

io ×1

libgdx ×1

list ×1

lwjgl ×1

memoization ×1

nasm ×1

opengl ×1

text ×1

types ×1