如何在Common LISP中递归删除嵌套括号,例如
(unnest '(a b c (d e) ((f) g))) => (a b c d e f g)
(unnest '(a b)) => (a b)
(unnest '(() ((((a)))) ())) => (a)
Run Code Online (Sandbox Code Playgroud)
谢谢
我需要为等价类编写一个程序并获得此输出...
(equiv '((a b) (a c) (d e) (e f) (c g) (g h)))
=> ((a b c g h) (d e f))
(equiv '((a b) (c d) (e f) (f g) (a e)))
=> ((a b e f g) (c d))
Run Code Online (Sandbox Code Playgroud)
基本上,A集是一个列表,其中顺序无关紧要,但元素不会出现多次.该函数应该接受对(这是根据一些等价关系相关的元素)的列表,并返回一组等价类,而无需使用迭代或赋值语句(如do,set!等).
然而,设置实用程序,如set-intersection,set-union和消除列表中的重复和内置函数的函数union,intersection以及remove-duplicates被允许的.
非常感谢!
顺便说一下,这不是一个家庭作业问题.我的一个朋友需要这段代码来解决微笑问题.
让我们假设我有一个Foo循环.
int Foo(int n)
{
if (n <= 1)
return 2;
else
return Foo(n-1) * Foo(n-2) * Foo (n-3);
}
Run Code Online (Sandbox Code Playgroud)
如果我打电话给Foo(3)会有多少电话会发生...
谢谢
我开始学习CLISP.我应该改善自我.这种编程语言可以做些什么?这是为了什么.我很感激你的回答和评论.谢谢.