我想创建一个函数来验证列表中的数字是否在 1 到 10 的范围内(包括 1 和 10)。如果他们这样做,我想将其添加到我创建的新列表中。但是,如果它们未能落入范围内,我决定将它们转换为适合的范围,而不是丢弃它们(通过添加 (1+ (随机 10))。
(defun fit (lst)
"(lst) check every number if it fits the range (1-10)"
(do ((fit lst (cdr fit))
(range nil))
((null fit) (reverse range))
(if (and (>= fit 1) (=< fit 10))
(seft ((cons fit range))))
(or (< fit 1) (> fit 10))
(cons (+ fit (1+ (random 10))) range)))
代码从(defun fit...)开始。然而,它不起作用,而且我无法做任何类型的改变,主要是因为我的知识有限。任何帮助或见解将不胜感激。 谢谢。
最佳答案
我认为您自己尝试做太多工作。思考更高的功能。您的问题陈述已经告诉您一半的内容:“检查每个数字是否在 1-10 范围内”。
使用(每个)怎么样?然后您需要向其传递一个检查单个数字的函数。可能是 lambda ...
关于lisp - 通用 Lisp 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8015188/