Common-Lisp:如何对字符串的字符进行排序?

标签 common-lisp

我知道如何用我知道的所有其他语言来做到这一点,但我刚刚开始使用 Lisp 并不太了解它。我的想法

  • 制作字符列表
  • 转换为 ascii 值
  • 排序
  • 转换回字符
  • 转换回字符串

  • 显得手足无措。有没有更好的方法来做到这一点?我正在尝试编写一个函数,给定一个字符串,返回一个字母排序的字符串。因此,例如:
    gate => aegt
    house => ehosu
    door => door
    

    此例程将用作字谜查找器的一部分。

    谢谢!

    最佳答案

    在 Common Lisp 中,字符串是序列,而 sort适用于任何序列类型,因此它可以解决问题。

    下面是一个例子:

    (let ((the-string (copy-seq "this is the string")))
      (sort the-string #'char-lessp))
    ;; => "   eghhiiinrsssttt"
    

    here's sort 的 Hyperspec 条目和 stable-sort .只需选择您的谓词( sort 的第二个参数)即可获得所需的排序顺序。

    请注意,我使用了 copy-seq在示例中,因为 sort是破坏性的 - 它就地修改了字符串。

    关于Common-Lisp:如何对字符串的字符进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18290641/

    相关文章:

    emacs - 使用 swank/slime 在远程 Lisp 中加载本地文件

    recursion - lisp中的递归函数出错

    list - 在 lisp 函数中使用带有 cons 的嵌套汽车

    c - 我如何在 CFFI 中包装包含结构指针的结构?

    Lisp - 检查输入是十进制还是字符串

    common-lisp - 打开一个文件,如果文件不存在则做其他事情

    lisp - 定义原子函数

    lisp - 修改列表中的plist?

    lisp - 普通口齿不清 : unable to get the uncompress function in Paul Graham's book working

    lisp - 在 Element2 之前插入 Element1