小编Jac*_*son的帖子

使用复数列表的多个名称(通用编程风格)

由于使用Python中的列表进行了广泛的编程,我一直在命名许多列表变量,以及用于在列表中进行迭代的迭代变量.对于迭代变量使用复数列表和单数形式,它是否通常特定于Python)?此外,不同的编码约定有不同的答案吗?

例如:

room_states = []  
for room_state in room_states:  
    ...
Run Code Online (Sandbox Code Playgroud)

我发现它更容易理解,但它可能会给试图阅读我的程序的其他程序员带来一些麻烦,让另一个程序员感到困惑.

python coding-style

8
推荐指数
0
解决办法
1467
查看次数

Prolog中Cut运算符的交换性

我正在学习Prolog,在我正在阅读的一个例子中给出了如何正确使用切割算子的例子.请考虑以下函数从列表中删除特定值的所有元素.

rm(_,[],[]).
rm(A,[A|L],R) :- rm(A,L,R).
rm(A,[B|L],[B|R]) :- rm(A,L,R).
Run Code Online (Sandbox Code Playgroud)

由于回溯,这不是函数的正确定义,并且函数将返回从删除特定值的某些元素获得的列表的所有子列表,但不一定全部返回.我正在阅读的笔记说,解决这个问题的正确方法是用线替换第二行

rm(A,[A|L],R) :- !, rm(A,L,R)
Run Code Online (Sandbox Code Playgroud)

但那取代了这条线

rm(A,[A|L],R) :- rm(A,L,R), !
Run Code Online (Sandbox Code Playgroud)

是不正确的.我不确定为什么第二个例子是修复函数​​的错误方法.在swipl中,用这些修复替换第二个术语似乎总是在我考虑的测试用例中返回相同的答案.我在这里错过了什么?

prolog prolog-cut

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

通过宏内联函数

我有一个递归函数,我知道它只会自称32次.

int f(int x) { return (x == 0) ? 0 : YY + f(~x & (YY - 1)); }
Run Code Online (Sandbox Code Playgroud)

(YY是一个宏,它隔离了x的最高位,这不包括在你的理智中).为了好玩,我正在尝试优化功能,以便我可以在UVA在线判断上获得最佳结果(我永远不会对真实代码进行优化).有没有办法将这个函数变成一个宏/内联函数,这样就不需要调用函数(即编译器扩展语句的时间足够长,不需要递归),或者有没有办法通过内联方法?

如果需要,这是宏:

#define YY ((((((x | (x >> 16)) | ((x | (x >> 16)) >> 8)) | (((x | (x >> 16)) | ((x | (x >> 16)) >> 8)) >> 4)) | ((((x | (x >> 16)) | ((x | (x >> 16)) >> 8)) | (((x | (x >> 16)) | ((x | (x >> 16)) >> …
Run Code Online (Sandbox Code Playgroud)

c c++ macros optimization inline

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

标签 统计

c ×1

c++ ×1

coding-style ×1

inline ×1

macros ×1

optimization ×1

prolog ×1

prolog-cut ×1

python ×1