我不太关注语言特定的答案,只是实现插件系统的一般模型(如果你想知道,我正在使用Python).我有自己的想法(注册回调,这就是它),但我知道其他人存在.什么是正常使用的,还有什么是合理的?
插件系统是什么意思?依赖注入和IOC容器听起来是一个很好的解决方案吗?
我的意思是,嗯,这是一种在不改变功能的情况下将功能插入基本程序的方法.我出发时并不打算定义它.依赖注入看起来并不特别适合我正在做的事情,但我对它们知之甚少.
我有一个n-partite(无向)图,作为邻接矩阵给出,例如这个:
a b c d a 0 1 1 0 b 0 0 0 1 c 0 0 0 1 d 0 0 0 0
我想知道是否有一组矩阵运算可以应用于此矩阵,这将产生一个矩阵,用于"列出"此图中所有路径(长度为n,即通过所有分区).对于上面的示例,存在路径a-> b-> d和a-> c-> d.因此,我想得到以下矩阵:
a b c d 1 1 0 1 1 0 1 1
第一个路径包含节点a,b,d,第二个路径包含节点a,c,d.如有必要,结果矩阵可能会有一些全0行,如下所示:
a b c d 1 1 0 1 0 0 0 0 1 0 1 1 0 0 0 0
谢谢!
PS我已经研究了用于计算传递闭包的算法,但这些算法通常只能说明两个节点之间是否存在路径,而不是直接指向该路径上的哪些节点.
可以使用XNA和C#创建商业上可行的PC/XBOX游戏吗?
这是用C#创建3D游戏的最佳方法吗?如果没有,会是什么?
我想对使用PHP编写Web应用程序而不是使用Django或Turbogears for Python等工具进行长时间运行的过程表示您的意见.
据我所知: - 在PHP中,页面每次都从硬盘中提取(虽然我假设操作系统在访问后将文件保存在RAM中一段时间) - 每次都会将页面重新编译为操作码(尽管来自例如Zend的工具可以将编译版本保存在RAM中 - 每次获取页面意味着每次都读取全局和会话数据,并重新打开与DB的连接
因此,我认为PHP在共享服务器(共享同一主机的多个站点)上运行适度使用的应用程序是有意义的,而长期运行的流程可以提供更高的性能,在专用服务器上运行并且使用频繁的应用程序?
感谢您的任何反馈.
我的问题是与代码有一定的风格,非常类似于递归,但不是很那.引用维基百科时,递归是"定义函数的方法,其中定义的函数在其自己的定义中应用".类似地,相互递归应用另一个函数,该函数直接或间接地应用我们定义的函数.
问题是我正在考虑和处理的代码不使用相同的功能!它在另一个函数中使用相同的代码(作为方法或闭包).
这里的问题是,虽然我的代码是相同的,但功能却不是.看一下以下基本的相互递归示例:
def is_even(x):
if x == 0:
return True
else:
return is_odd(x - 1)
def is_odd(x):
if x == 0:
return False
else:
return is_even(x - 1)
Run Code Online (Sandbox Code Playgroud)
这有点直观,非常明显地相互递归.但是,如果我将每个函数作为每次调用创建的内部函数包装起来,它就会变得不那么清晰:
def make_is_even():
def is_even(x):
if x == 0:
return True
else:
return make_is_odd()(x - 1)
return is_even
def make_is_odd():
def is_odd(x):
if x == 0:
return False
else:
return make_is_even()(x - 1)
return is_odd
def is_even2(x):
return make_is_even()(x)
def is_odd2(x):
return make_is_odd()(x)
Run Code Online (Sandbox Code Playgroud)
忽略隐式记忆等优化,这会产生一系列不严格递归的函数调用,创建和调用各种新函数,而不必两次调用相同的函数.尽管如此,所有这些函数都遵循一个共同的模板,并且只是一遍又一遍地创建的相同函数(可能具有不同的自由变量).
而且,我们可以提出一个直接等价的(毕竟,类实际上只是闭包,正确;)使用类实现.这尤其重要,因为这种 …
我正在解决Project Euler中的问题.大部分问题都解决了
Run Code Online (Sandbox Code Playgroud)Ex : ulong number = 81237146123746237846293567465365862854736263874623654728568263582;
例如:十进制dec = 0,3242342543573894756936576474978265726385428569234753964340653;
例如:bool [] items = new bool [213192471235494658346583465340673475263842864836];
我找到了一个名为IntX的库来解决这个大数字.但我想知道如何用基本的.NET类型解决这个问题?
谢谢你的回复!
我正在研究一个大型项目的光线跟踪器,目标是生成逼真的渲染而不用担心CPU时间.基本上是预渲染,所以我要求准确度超过速度.
我在围绕事物的照明方面正在进行的一些更高级的数学运算时遇到了一些麻烦.基本上,我对我的光有所了解.假设没有距离衰减,我应该可以使用我找到的多边形上的点,并将该点处的法线与光线上的入射角进行比较,以计算出我的照明值.因此,给定一个平面上的点,该平面的法线和点光源,我将如何计算出该角度?
我问的原因是我似乎找不到任何关于找到入射角的参考.我可以找到很多参考资料,详细说明一旦你得到了该怎么做,但没有任何东西告诉我如何获得它.我想这很简单,但我不能把它弄清楚.
谢谢
我在activestate找到了这个代码,它需要一个字符串并打印字符串的排列.我知道它是一个递归函数,但我真的不明白它是如何工作的,如果有人可以引导我完成程序流程,那就太好了,谢谢你!
import sys
def printList(alist, blist=[]):
if not len(alist): print ''.join(blist)
for i in range(len(alist)):
blist.append(alist.pop(i))
printList(alist, blist)
alist.insert(i, blist.pop())
if __name__ == '__main__':
k = 'love'
if len(sys.argv) > 1: k = sys.argv[1]
printList(list(k))
Run Code Online (Sandbox Code Playgroud) 我一直在学习"McGugan - 使用Python和Pygame开始游戏开发(Apress,2007)"的教程,并且在第五章涉及对象移动的代码中,我一直在代码中使用" - "上获得无效的语法警报.它不是最新的,但我认为由于其简单性和必要性,任何更新都不会更改减法.
这是我的代码:
background_image_filename = 'sushiplate.jpg'
sprite_image_filename = 'fugu.png'
import pygame
from pygame.locals import *
from sys import exit
from gameobjects.vector2 import Vector2
pygame.init()
screen = pygame.display.set_mode((640, 480), 0, 32)
background = pygame.image.load(background_image_filename).convert()
sprite = pygame.image.load(sprite_image_filename).convert_alpha()
clock = pygame.time.Clock()
position = Vector2(100.0, 100.0)
speed = 250.
heading = Vector2()
while True:
for event in pygame.event.get():
if event.type == QUIT:
exit()
if event.type == MOUSEBUTTONDOWN:
destination = Vector2(*event.pos) – Vector2(*sprite.get_size())/2.
heading = Vector2.from_points(position, destination)
heading.normalize()
screen.blit(background, (0,0))
screen.blit(sprite, …Run Code Online (Sandbox Code Playgroud)