gpt4 book ai didi

sorting - Lisp - 检查列表是否已排序

转载 作者:太空宇宙 更新时间:2023-11-03 18:49:42 27 4
gpt4 key购买 nike

我正在尝试编写一个 Lisp 函数 ordered,如果给定的列表按升序或降序排序,则返回 True。

到目前为止,我有 3 个辅助函数可以按任何一种方式进行排序,然后是一个比较它们的函数,最后是确定它们是否已排序的函数。

我在有序 (L) 函数中调用比较时遇到问题。似乎每次都在破坏列表。也许我的整个实现是错误的。感谢您的关注!

(defun ascending (L)
(sort L #'<)
)

(defun descending (L)
(sort L #'>)
)

(defun compare (original sorted)
(cond
; I made this return the opposite for
; easier usage in the condition of ordered
((equal original sorted) T)
)
)

(defun ordered (L)
;(cond
(print L)
(setq temp1 L)

(compare L (ascending temp1))
(print temp1)

(print L)
;)
)

最佳答案

您不需要对列表进行排序。

你只需要查看每对连续的元素,看看它们是升序还是降序。

对于简单的三行代码,您需要运算符 or , every , >= , <= , 和 rest .请记住,列表只是一个 cons 单元链,rest仅提供对第二个单元格的引用,即 every可以将多个列表作为参数。然后,您可以将问题描述直接翻译成 Lisp 代码。

关于sorting - Lisp - 检查列表是否已排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5613874/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com