问题很简单:我无法理解Zipper数据结构.
我的问题与它在树上的用法有关.
我想了解如何使用zipper更改树节点.以及如何不复制整棵树(或大部分).
请澄清拉链是否有问题.也许它无法帮助树更新?
或者,也许,有可能更新树,我只是看不到路?
......就像包裹一样.
我使用Emacs(也许,它可以提供某种解决方案).
例如(defun the-very-very-long-but-good-name () ...),以后在代码中不会有用.但名称Fn-15或首字母缩写也没用.是否可以在尝试调用函数名称的同时拥有类似于包的别名或访问文档字符串?
换句话说,功能是否可能以某种方式混合自我记录和短名称?
请分享您喜欢的语言链接,以便学习最好的语言.
而且,请用几句话来描述这种语言最重要的特征,它与其他语言如Lua不同.
我只是无法理解为什么重新发明另一个Lua/Python /等.也许我只是错过了一些东西......
但是我喜欢性能+脚本的想法,所以我必须理解它!
我需要为我的宠物射线追踪器生成随机值的算法进行澄清.
我从一个点发射光线.我有这些光线分布的问题:我需要分布均匀,但它不是......
我现在面临的问题是,在我对结果空间的扭曲之后,最初的均匀分布是不均匀的.
因此,例如,如果极坐标系我生成r和t角.分布不均匀且不均匀:靠近每个极点的空间比靠近赤道的结果密度大得多.原因很清楚:我将均匀分布的点从圆柱空间转换为球形.而且我扭曲了结果.同样的问题是如果我规范化立方体中随机生成的点.
我现在的想法是这样的:我想创建一个四面体,对其顶点进行标准化,将每个面(三角形)与中间的点分开,对其进行标准化并递归重复,直到我有足够的点.然后我稍微"扭曲"这些点.然后我再次将它们标准化.而已.
据我所知,这种方法本身并不是纯粹的数学蒙特卡罗方法,因为除了最后一步之外,我不会在任何步骤中使用随机分布.我不喜欢这种复杂性的解决方案.
任何人都可以建议更简单但仍然
谢谢!
编辑:
我需要一个快速的方法,而不仅仅是正确的方法.这就是我问蒙特卡罗的原因.提供的答案是正确的,但不是很快.四面体的方法很快,但不是很"随机"=>不正确.
我真的需要一些更合适的东西.
我有许多RGBA像素,每个像素都有一个alpha分量.
所以我有一个像素列表:(p0 p1 p2 p3 p4 ... pn)其中p_0_是前像素,p_n_是最远的(在后面).
最后(或任何)像素不一定是不透明的,因此得到的混合像素也可以某种方式透明.我从列表的开头到结尾混合,反之亦然(是的,它是光线追踪).因此,如果任何时刻的结果变得不透明,我可以用足够正确的结果停止.我将以这种方式应用混合算法:((((p0 @ p1)@ p2)@ p3)...)
任何人都可以建议我正确的混合配方不仅适用于R,G和B,还适用于A组分吗?
UPD:我想知道如何确定混合颜色的确定过程可以有很多公式吗?它是某种近似吗?对我来说,这看起来很疯狂:公式并没有那么不同,我们真正获得了效率或优化.任何人都可以澄清这个吗?
尝试解析以下文本文件:
prefix1 prefix2 name1(
type1 name1,
type2 name2
);
Run Code Online (Sandbox Code Playgroud)
使用以下正则表达式:
\\s*prefix1\\s*prefix2\\s*(\\w[\\w\\d_]*).*\\(\\s*([^\\)]*\\))\\s*;\\s*
结果,我得到以下两个组(寄存器):
"name1(
"
Run Code Online (Sandbox Code Playgroud)
和
"(
type1 name1,
type2 name2
)"
Run Code Online (Sandbox Code Playgroud)
(此处引号限制字符串,包括\ n)
我不明白为什么第一组(\w[\w\d_]*)与下.*一部分匹配。而且,我不能摆脱不必要的尾巴!
我怎么了
添加:解析的正则表达式:
(cl-ppcre::parse-string "\\s*prefix1\\s*prefix2\\s*(\\w[\\w\\d_]*).*\\(\\s*([^\\)]*\\))\\s*;\\s*")
(:SEQUENCE (:GREEDY-REPETITION 0 NIL :WHITESPACE-CHAR-CLASS) "prefix1"
(:GREEDY-REPETITION 0 NIL :WHITESPACE-CHAR-CLASS) "prefix2"
(:GREEDY-REPETITION 0 NIL :WHITESPACE-CHAR-CLASS)
(:REGISTER
(:SEQUENCE :WORD-CHAR-CLASS
(:GREEDY-REPETITION 0 NIL (:CHAR-CLASS :WORD-CHAR-CLASS :DIGIT-CLASS #\_))))
(:GREEDY-REPETITION 0 NIL :EVERYTHING) #\(
(:GREEDY-REPETITION 0 NIL :WHITESPACE-CHAR-CLASS)
(:REGISTER
(:SEQUENCE (:GREEDY-REPETITION 0 NIL (:INVERTED-CHAR-CLASS #\))) #\)))
(:GREEDY-REPETITION 0 NIL :WHITESPACE-CHAR-CLASS) #\; …Run Code Online (Sandbox Code Playgroud) 如何自定义Emacs中"眼镜模式"中插入的符号的颜色?我还没有找到这个选项.谁能提出任何建议?
我有以下代码的问题:http://lisper.ru/apps/format/96
问题在于"规范化"功能,这是行不通的.
它在第五行失败:(zero-p a indexes i)
(defun normalize (a &optional indexes i)
"Returns normalized A."
(progn
(format t "Data=~A ~A ~A" a indexes i)
(if (zero-p a indexes i)
a ;; cannot normalize empty vector
(let* ((mmm (format t "Zero?=~a" (zero-p a indexes i)))
(L (sqrt (+ (do-op-on * a :x a :x indexes i indexes i)
(do-op-on * a :y a :y indexes i indexes i)
(do-op-on * a :z a :z indexes i indexes …Run Code Online (Sandbox Code Playgroud) 在按值传递C/C++中的结构时,必须复制结构内容.编译器如何实现这一目标?即,通常为此副本发出哪些汇编指令?
这些时间有多快,例如与memcpy的调用相比?
现在考虑这段代码:
struct X { int i, j, k; };
void foo(X x);
void foo( int i, int j, int k);
Run Code Online (Sandbox Code Playgroud)
调用foo(X)和foo(int,int,int)之间有什么区别,或者生成的汇编代码是否相同(考虑参数的传递)?
我在网上搜索了很多关于这个问题的答案:他们说这是真的,SBCL在Vista下不起作用.但我真的需要在我的家用Vista笔记本电脑上使用lisp,虚拟机并没有真正帮助......而且CL因为速度而不是那么有趣......
如果您有任何建议,请分享!
我想解析Wavefront OBJ文件中的文本行.目前我只对"V"和"F"类型感兴趣.我的算法如下:
这是代码:
(defun parse-line (line prefix &key (type 'single-float))
(declare (optimize (debug 3)))
(labels ((rfs (what)
(read-from-string (concatenate 'string "(" what ")")))
(unpack (str &key (char #\/) (n 0))
(let ((*readtable* (copy-readtable)))
(when char ;; we make the given char a delimiter (space)
(set-syntax-from-char char #\Space))
(typecase str
;; string -> list of possibly symbols.
;; all elements are preserved by (map). nil's are dropped
(string (delete-if #'null …Run Code Online (Sandbox Code Playgroud) 我正在寻找C++的轻量级多线程框架.我找到了POSIX线程.
请与POSIX线程分享您的实际经验:在开始之前,我想知道它来自真实的人的利弊,而不是来自维基.
如果你几乎把它与任何东西(也许,更好)进行比较,那么了解它们会很有趣.
UPD:跨平台功能对我来说非常重要,所以我很欣赏这个方向.
UPD2:我已经有了一个QNX/Win32框架的经验,但它不是轻量级的 - 哦,我忘了提, - 它是商业的,不是免费的,但我需要一个免费的.