小编avp*_*avp的帖子

什么是Zipper数据结构,我应该使用它吗?

问题很简单:我无法理解Zipper数据结构.

我的问题与它在树上的用法有关.

我想了解如何使用zipper更改树节点.以及如何不复制整棵树(或大部分).

请澄清拉链是否有问题.也许它无法帮助树更新?
或者,也许,有可能更新树,我只是看不到路?

theory functional-programming zipper data-structures

46
推荐指数
3
解决办法
8039
查看次数

是否可以在Lisp中使用函数名的别名?

......就像包裹一样.

我使用Emacs(也许,它可以提供某种解决方案).

例如(defun the-very-very-long-but-good-name () ...),以后在代码中不会有用.但名称Fn-15或首字母缩写也没用.是否可以在尝试调用函数名称的同时拥有类似于包的别名或访问文档字符串?

换句话说,功能是否可能以某种方式混合自我记录和短名称?

lisp emacs

10
推荐指数
3
解决办法
3447
查看次数

请推荐关于松鼠的好读物

请分享您喜欢的语言链接,以便学习最好的语言.
而且,请用几句话来描述这种语言最重要的特征,它与其他语言如Lua不同.

我只是无法理解为什么重新发明另一个Lua/Python /等.也许我只是错过了一些东西......
但是我喜欢性能+脚本的想法,所以我必须理解它!

scripting-language squirrel

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

单位球面上的均匀随机(Monte-Carlo)分布

我需要为我的宠物射线追踪器生成随机值的算法进行澄清.
我从一个点发射光线.我有这些光线分布的问题:我需要分布均匀,但它不是......

我现在面临的问题是,在我对结果空间的扭曲之后,最初的均匀分布是不均匀的.

因此,例如,如果极坐标系我生成r和t角.分布不均匀且不均匀:靠近每个极点的空间比靠近赤道的结果密度大得多.原因很清楚:我将均匀分布的点从圆柱空间转换为球形.而且我扭曲了结果.同样的问题是如果我规范化立方体中随机生成的点.

我现在的想法是这样的:我想创建一个四面体,对其顶点进行标准化,将每个面(三角形)与中间的点分开,对其进行标准化并递归重复,直到我有足够的点.然后我稍微"扭曲"这些点.然后我再次将它们标准化.而已.

据我所知,这种方法本身并不是纯粹的数学蒙特卡罗方法,因为除了最后一步之外,我不会在任何步骤中使用随机分布.我不喜欢这种复杂性的解决方案.

任何人都可以建议更简单但仍然

  • 随机
  • 制服
  • 快速
  • 简单

谢谢!

编辑:
我需要一个快速的方法,而不仅仅是正确的方法.这就是我问蒙特卡罗的原因.提供的答案是正确的,但不是很快.四面体的方法很快,但不是很"随机"=>不正确.
我真的需要一些更合适的东西.

random 3d montecarlo

9
推荐指数
2
解决办法
8500
查看次数

多个像素的alpha混合公式是什么?

我有许多RGBA像素,每个像素都有一个alpha分量.

所以我有一个像素列表:(p0 p1 p2 p3 p4 ... pn)其中p_0_是前像素,p_n_是最远的(在后面).

最后(或任何)像素不一定是不透明的,因此得到的混合像素也可以某种方式透明.我从列表的开头到结尾混合,反之亦然(是的,它是光线追踪).因此,如果任何时刻的结果变得不透明,我可以用足够正确的结果停止.我将以这种方式应用混合算法:((((p0 @ p1)@ p2)@ p3)...)

任何人都可以建议我正确的混合配方不仅适用于R,G和B,还适用于A组分吗?

UPD:我想知道如何确定混合颜色的确定过程可以有很多公式吗?它是某种近似吗?对我来说,这看起来很疯狂:公式并没有那么不同,我们真正获得了效率或优化.任何人都可以澄清这个吗?

graphics alpha raytracing alphablending

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

使用cl-ppcre的正则表达式匹配错误?

尝试解析以下文本文件:

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)

regex common-lisp cl-ppcre

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

Emacs中的眼镜模式

如何自定义Emacs中"眼镜模式"中插入的符号的颜色?我还没有找到这个选项.谁能提出任何建议?

emacs customization

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

宏在功能中不起作用

我有以下代码的问题: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)

lisp macros common-lisp

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

C/C++如何复制结构?

在按值传递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)之间有什么区别,或者生成的汇编代码是否相同(考虑参数的传递)?

c c++ struct copy

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

Vista上的SBCL崩溃了.你知道怎么做吗?

我在网上搜索了很多关于这个问题的答案:他们说这是真的,SBCL在Vista下不起作用.但我真的需要在我的家用Vista笔记本电脑上使用lisp,虚拟机并没有真正帮助......而且CL因为速度而不是那么有趣......

如果您有任何建议,请分享!

lisp crash sbcl windows-vista

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

如何使这个代码更简单,更清晰,"更多lispy"?

我想解析Wavefront OBJ文件中的文本行.目前我只对"V"和"F"类型感兴趣.我的算法如下:

  1. 检查行是否为零(否则步骤2将失败)
  2. 在"#"后删除注释并修剪空格
  3. 删除前缀"v"或"f"
  4. 将字符串拆分为每个元素所在的元素列表
    1. 如果符号为| 34/76/23 |,则拆分为列表
    2. 从列表转换:我只采用一个元素,默认情况下是第一个元素
    3. 如果已经是原子序数,则强制转换为给定类型.

这是代码:

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

common-lisp

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

POSIX线程体验?(或推荐更好的一个)

我正在寻找C++的轻量级多线程框架.我找到了POSIX线程.
请与POSIX线程分享您的实际经验:在开始之前,我想知道它来自真实的人的利弊,而不是来自维基.
如果你几乎把它与任何东西(也许,更好)进行比较,那么了解它们会很有趣.

UPD:跨平台功能对我来说非常重要,所以我很欣赏这个方向.

UPD2:我已经有了一个QNX/Win32框架的经验,但它不是轻量级的 - 哦,我忘了提, - 它是商业的,不是免费的,但我需要一个免费的.

c++ multithreading cross-platform pthreads

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