- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我在使用这个函数时遇到了问题。我们一开始被问到“写一个 lisp 函数,它接受一个列表和一个整数 n,并返回列表的前 n 个元素,作为一个新列表。如果 n 小于 1,它返回 NIL。如果 n 是超出长度,函数返回原始列表的副本。”
(defun take-n (list n)
(cond
((= n 0) ())
((null list) list)
((cons(car list)(take-n(cdr list)(- n 1)))))
)
到目前为止,我从上面的问题中得到的是:
(defun cut-in-half(list)
(let (x (ceiling(/ (length list) 2)))(let* (reverse list))
(list (take-n list x)(cdr(take-n y x))))
)
我做错了什么?
最佳答案
看看你是否可以围绕这个想法做功课:
[1]> (loop with l = '(1 2 3 4 5 6 7)
for x on l
for y = x then (cddr y)
when (null y)
return (values (ldiff l x) x))
(1 2 3 4) ;
(5 6 7)
[2]> (loop with l = '(1 2 3 4 5 6 7 8)
for x on l
for y = x then (cddr y)
when (null y)
return (values (ldiff l x) x))
(1 2 3 4) ;
(5 6 7 8)
这是我过去在实现二进制归并排序时所做的事情(用于将列表切成两半,递归地对两半进行排序,合并)。基本上我们有两个光标在列表中运行;双倍时间一步,以两倍的速度到达列表末尾(使用 cddr
步而不是 cdr
),这使另一个光标留在中间。
请注意,在 loop
中, for x on l
语法与 for x = l then (cdr l)
大致相同,加上终止测试以在 x
时结束循环变为空。我们可以那样做,因为我们不需要对 x
进行终止测试.即
[9]> (loop with l = '(1 2 3 4 5 6 7 8)
for x = l then (cdr x)
for y = x then (cddr y)
when (null y)
return (values (ldiff l x) x))
(1 2 3 4) ;
(5 6 7 8)
自 x
以来,这很好和 y
从句遵循相同的形式,cdr
之间的对比和 cddr
是明确的。
要返回两个列表的列表,请使用 list
而不是 values
.由于 Common Lisp 具有多个值,因此惯用的做法是利用它而不是分配额外的列表单元格。
关于function - LISP 编写一个名为 cut-in-half 的函数,它接收一个列表并创建一个新列表,其元素是前半部分和后半部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58512710/
这个问题在这里已经有了答案: Is Git’s "master" branch name more than just a name? (3 个回答) What will break if I don
我使用了Plone实例文件夹的“bin /”目录中的“paster”命令来创建一个名为“MyApp”的plone应用程序(来自模板),该命令是: (from instance's root folde
我正在尝试覆盖 FOSUserBundle 的用户映射的两个属性。 use FOS\UserBundle\Model\User as BaseUser; ... use Symfony\Bridge\
工作通过 these posts让我认为我了解自我类型,至少在某种程度上。 所以我创建了一个按预期失败的例子: scala> trait A { val v = "a" } defined trait
我在 IntelliJ 中有一个 JavaFX Maven 项目,它使用 Hibernate。当应用程序启动时,我收到以下错误消息: No persistence provider for entit
我正在尝试构建一个数据透视表,并使用开源代码并摸索着这个函数。record[] 如何传递给这个函数?似乎没有经过或任何声明。怎么能直接来呢? 完整代码可以在这里找到https://github.com
我的应用程序有 abc.com 链接,这是一个主页和 abc.com/user123(有一个动态部分),这是一个用户登录的特定配置文件页面。 早些时候,我通过这样做实现了这一点: this.route
当我在使用 mac book pro 的 Android Studio 上设置 Flutter Sdk 路径时,我遇到错误 Flutter SDK 路径未给出(并且打开一个弹出窗口并显示消息“名为‘F
我刚刚设置了 Postgres 供我网络上的不同用户使用。每个用户都有自己的用户名/密码/数据库,但是当我连接到 Pg 时,我还可以看到一个“postgres”数据库(甚至可以创建表等)。我试图从公众
我正在尝试从 MySQL 数据库中获取一些数据。所以我要做的是: select * from my_table where 'to' ='0000-00-00 00:00:00'; 这给了我空集,但我
我有一个名为“索引”的表。我意识到这是 MySQL 中的关键字,想知道如何在查询中引用该表? 我的错误: #1064 - You have an error in your SQL syntax; c
我在机器 myuniversity.edu 上设置了一个远程 mysql 数据库服务器,服务器名为“localhost”。我在上面有一个名为“MyDatabase”的数据库。 I want to co
我正在尝试使用 Android NDK 构建应用程序。我已按照所有步骤操作,一切正常,正在制作 .so 文件。但是在 Eclipse 中,当我尝试清理项目时出现以下错误: The file does
我正在重写 UIImage 类方法 init(named:)。我的目标是能够检索图像的文件名。 代码看起来像这样: class UIImageWithFileName: UIImage { l
@ThreadSafe public class A { } 这个注解实际上使类线程安全还是只是为了提高可读性? 最佳答案 参见 @ThreadSafe Annotation : Place this
当我将第二个表(dtResult)添加到数据集时出现错误 名为“Table”的数据表已属于此数据集。 DataTable dtSession = new DataTable(); DataTable
这个问题可能看起来重复,但略有不同。在 SO 的所有其他问题中,我注意到他们注册了多条路线。但就我而言,我只有一条路线。 我正在创建 asp.net webapi(框架 4.5)并且在 Registe
我最近将 Microsoft.AspNet.WebApi.WebHost 添加到 MVC WebAPI 项目中,这将允许我使用 [Route("api/some-action")] 归因于我的行动。我
我有一个名为“异常”的命名空间的问题 让我们考虑以下示例标题: #include namespace exception { struct MyException : public std::e
我昨天安装了 Nuget 1.2,今天,当我尝试安装 Entity Framework 包时,我在包管理器控制台中遇到了以下问题: PM> install-package entityframewor
我是一名优秀的程序员,十分优秀!