- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
对于欧拉计划 Problem 8 , 我被告知要解析一个 1000 位数字。这是一个蛮力的 Lisp 解决方案,它基本上从头到尾遍历每 5 个连续数字并将它们相乘,并在循环结束时返回最大的一个。
代码:
(defun pep8 ()
(labels ((product-of-5n (n)
(eval (append '(*)
(loop for x from n to (+ n 5)
collect (parse-integer
1000digits-str :start x :end (+ x 1)))))))
(let ((largestproduct 0))
(do ((currentdigit 0 (1+ currentdigit)))
((> currentdigit (- (length 1000digits-str) 6)) (return largestproduct))
(when (> (product-of-5n currentdigit) largestproduct)
(setf largestproduct (product-of-5n currentdigit)))))))
它在没有任何警告的情况下编译,但在运行它时我得到:
no non-whitespace characters in string "73167176531330624919225119674426574742355349194934...".
[Condition of type SB-INT:SIMPLE-PARSE-ERROR]
我通过将局部函数 product-of-5n
再次编写为全局函数来检查它是否正常工作:
(defun product-of-5n (n)
(eval (append '(*)
(loop for x from n to (+ n 5)
collect (parse-integer
1000digits-str :start x :end (+ x 1))))))
编译时没有警告,运行后似乎运行良好。例如,
CL_USER> (product-of-5n 1) => 882
这似乎是正确的,因为前五位数字是 7、3、1、6 和 7。
至于1000digits-str
,它只是用defvar
编译的,用Emacs的longlines-show-hard-newlines
,我不要认为字符串中有任何空白字符,因为那是 SBCL 提示的,对吧?
最佳答案
I don't think there are any white-space characters in the string, because that's what SBCL is complaining about, right?
错误消息不是提示存在 空白,而是提示不存在 非-空白。但这实际上有点误导:消息应该说的是要解析的特定子字符串中没有非空白。这是因为您跑到了字符串的末尾,所以我们正在解析一个零长度的子字符串。
此外,product-of-5n
的定义不正确。 (product-of-5n 1)
返回前五位数字的乘积只是偶然的。字符串从 0
开始索引,因此 (product-of-5n 1)
以 second 字符开始;并且该函数从n + 0 迭代到n + 5,总共六个字符;所以 (product-of-5n 1)
返回 3 × 1 × 6 × 7 × 1 × 7,恰好与 7 × 3 × 1 × 6 × 7 × 1 相同。
关于lisp - 普通口齿不清 : "no non-white-space characters in string",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11548131/
在 Lisp 中,我如何找到一个列表有多少个不同的元素? 最佳答案 (length (remove-duplicates )) 最短的方法,但也可以一次性完成,如下所示: (defun count-d
(defun tictactoe3d () '( ((NIL NIL NIL) (NIL NIL NIL) (NIL NIL NIL)) ((NIL NIL NIL) (NIL NIL NIL)
我的作业有一些问题。我的目标是创建代表学生姓名、姓氏以及他们的入学编号(属性列表)的符号。我还为我创建的所有学生使用了一个全局变量。 我的代码是这样的: (defun student-create (
如何在 Common lisp 中实现这一点? (logselect (t nil t) (list1 list2 list3)) ---> (list1 list2) 我编写了以下函数,但我认为有更
我有如下代码。它返回列表为 (((1 . 2) (1 . 0)) ((1 . 2) (1 . 1)) ((1 . 2) (1 . 3)) ((1 . 2) (1 . 4)) ((1 . 2) (1 .
我希望我的程序请求一个表达式,将输入的字符串分配给变量“exp”,然后打印该表达式。 但是我遇到了一些麻烦。我首先尝试使用(阅读) (princ "Enter a expression to be e
我需要编写一个函数来计算列表中给定原子的所有出现次数。这是我的: (defun my-count (a L) (cond ((null L) nil) ((equal a (c
我正在复习旧考试,为自己的考试做准备,教授很友善,也为我们提供了解决方案,现在我想知道为什么一个函数会做它应该做的事情。 (defun sortulists (L) (mapcar (lambda
如果存在在 J2ME 上运行的 lisp,那么在移动设备(而不是移动设备)上编程似乎会更容易。 您知道任何(最好是开源的)lisp/smalltalk 应用程序吗?我在网上搜索,但找不到有效的 J2M
像错误调用函数的错误消息显示,例如: (message (file-attributes ".")) 产生消息: "eval: Wrong type argument: stringp, ("/hom
作为一个更大项目的一部分,我希望能够将每个子列表的每个第一个元素乘以 -1。我正在尝试像这样使用递归来做到这一点: (defun negative (secondpoly) (let ((t1
它比标题所暗示的要复杂一点,但我无法将其浓缩为一句话。 我正在使用 Clisp,目前有一个列表列表。外部列表是任意长的,而内部列表是 4 个整数长。这是我可能拥有的示例。 ((2 1 1 0) (1
有没有办法找出调用的函数是什么? 比方说,有一个处理程序函数可以监视对外部进程的请求。在处理请求之前,它会将它们打印到日志文件中以供日后检查。 这个函数能找出它被哪个函数调用了吗? 最佳答案 答案是否
我有 Mac OSX 10.8.4。我克隆了 gcl 的 git repo,并根据自述文件运行了 ./configure。 但是,我收到以下错误: configure: error: Cannot b
嘿伙计们,我刚刚开始在大学学习 Lisp,但是教授非常穷,而且他自己似乎也不懂这门语言,所以我向你们求助。我在 Java 方面非常有经验,但在将 Java 的条件与 Lisp 联系起来时遇到了困难。这
字节编译 emacs lisp 非常有用,因为它会生成编译器警告,尽管有时很隐晦,但总是指向错误或未完成的任务,例如缺少导入或未实现的函数。 但是,我找不到一种方法来生成与 *Compile-Log*
TL; 博士 customize 中是否有一些标准的回退处理? 系统,用于处理部分无效的复合定制 变量,例如一个条目不是缺点的列表? 长版 emacs 的自定义机制非常强大,使用 复合 Materia
我遇到的问题是,当我创建一个函数来打印列表的特定部分时,它会将其打印为 NIL 而不是实际元素。 例如: > (setf thelist '((a b) (c (d e f)) (g (h i)))
我正在尝试使用 butlast 但出于某种原因,我明白了错误:没有函数定义:BUTLAST。有什么想法吗? 最佳答案 butlast 在 AutoLisp 中不存在,所以错误说有这样的函数是正确的。
这个问题在这里已经有了答案: Test if array is inside a list in lisp (1 个回答) 关闭 7 年前。 我在使用这个字符串列表中删除字符串时遇到问题 (remo
我是一名优秀的程序员,十分优秀!