问题标签 [scheme]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
algorithm - 这个 Scheme 求幂函数的时间复杂度是多少?
时间复杂度是多少?为什么?
scheme - 你知道如何编写这个 Scheme 函数吗?
你能写一个接受一个参数(一个正整数)的函数吗?
- 如果是偶数,则将其除以二,或
- 将其乘以三,如果是奇数则加一
然后返回结果数字。
然后是一个单独的函数,它接受一个参数(一个正整数)并反复将其传递给前一个函数,直到它达到 1(此时它停止)。该函数将返回将其减少到 1 所需的步数。
然后是另一个函数,它接受两个参数 a 和 b(都是 a <= b 的正整数)并返回将范围内的任何单个数字减少到 1(包括端点)所需的最大重复 Collatz 步骤数。(Collatz 步骤参考前面的函数)。
最后,另一个函数接受两个参数 a 和 b(都是 a <= b 的正整数)并返回 a 和 b 之间的数字(包括端点),该数字需要最大的 Collatz 步数减少到 1。
这些函数与 Collatz 问题有关,我觉得很有趣。后续函数显然会借用之前定义的其他函数。
知道我们如何在 Scheme 代码中显示这一点吗?
time - PLT 方案中的时间码
我想看看一个函数需要多长时间才能运行。在 PLT-Scheme 中最简单的方法是什么?理想情况下,我希望能够做这样的事情:
我是否必须使用其他语法(如(timed loopy 5000000)
or (timed '(loopy 5000000))
,或者它是否返回在 cons 或其他东西中花费的时间)都没有关系。
lisp - 通过 SICP 工作的最佳方案实施是什么?
我一直在使用PLT Scheme,但它有一些问题。有谁知道通过 SICP 工作的更好实施?
scheme - 在 Scheme 中生成项链的简单算法?
长度为 n 的 k-ary 项链是长度为 n 的有序列表,其项目来自长度为 k 的字母表,它是所有列表中共享旋转排序的排序中的字典第一个列表。
示例:(1 2 3) 和 (1 3 2) 是字母表 {1 2 3} 中长度为 3 的项链。
更多信息: http://en.wikipedia.org/wiki/Necklace_(combinatorics)
我想在 Scheme(或您选择的 Lisp)中生成这些。我找到了一些论文...
Savage - A New Algorithm for Generate Necklaces
Sawada - 在恒定摊销时间内生成手链
Sawada - 生成带有禁止子串的项链
...但是其中提供的代码对我来说是不透明的。主要是因为它们似乎没有传递所需的字母或长度(n)。我正在寻找的方案程序的形式是 (necklaces n '(ab c...))。
我可以通过首先生成 k^n 列表然后过滤掉旋转来轻松生成这些。但它的内存效率非常低......
谢谢!
lisp - 如何选择在 DrScheme 中使用的语言?
我最近下载了 PLT Scheme 和 DrScheme。当我打开 DrScheme 时,我被告知选择一种语言。但是,我对我的任何选项都不熟悉,并且帮助指南并没有真正将其分解以帮助我轻松选择哪个选项。
那么,首先 - DrScheme 和 PLT Scheme 真的是我学习 Lisp 和/或 Scheme 所需的工具吗?如果是这样,有哪些不同的语言以及我应该使用哪些语言?
lisp - 我如何更清楚地表达这个 Scheme 功能?
我写了这个函数,但是我如何更清楚地表达这个,使用简单的递归和重复?
对不起,我忘了定义我的撰写功能。
该函数将计算 f 和正整数 n 的过程作为输入,并返回计算 f 的第 n 次重复应用的过程。
scheme - 将此 Scheme 函数转换为不同的形式?
因此,这是将 sum 定义为消息传递对象的一种方法:
但这可以重写为:
如何将我编写的用于将产品定义为消息传递对象的函数更改为上面的第二种格式?这是我写的代码:
functional-programming - 是否有支持可移植延续的快速语言?
我正在寻找一种支持可移植延续的快速语言(即一种可以本地编译以实现性能不超过 C 3 或 4 倍的语言)。我的意思是可以在一台计算机上序列化并在另一台计算机上反序列化的延续。
我知道 SISC 可以做到这一点(Java 中的 Scheme 实现),但速度很慢。同样适用于 Rhino(Java 中的 Javascript 实现)。
scheme - 那里有人使用 Scheme 编程语言吗?
我刚开始在我的大学学习计算机科学,他们教我们用 Scheme 编程。
自从我在过去 6 年中学习 C++ 以来,Scheme 对我来说似乎有点奇怪。我的导师告诉我,你可以用它编写任何可以用 C 或 Java 编写的程序。
真的有人在使用这种语言吗?