我知道如何用我所知道的其他语言做到这一点,但我只是开始使用Lisp而不是完全掌握它.我的想法
看似蛮横.有没有更好的方法来做到这一点?我正在尝试编写一个函数,给定一个字符串,返回一个字母排序的字符串.所以,例如:
gate => aegt
house => ehosu
door => door
Run Code Online (Sandbox Code Playgroud)
此例程将用作anagram-finder的一部分.
谢谢!
jbm*_*jbm 10
在Common Lisp中,字符串是序列,并且sort适用于任何序列类型,因此它可以解决问题.
这是一个例子:
(let ((the-string (copy-seq "this is the string")))
(sort the-string #'char-lessp))
;; => " eghhiiinrsssttt"
Run Code Online (Sandbox Code Playgroud)
而这里是为Hyperspec进入sort和stable-sort.只需选择你的谓词(第二个参数sort)来获得你想要的排序顺序.
请注意,我copy-seq在示例中使用因为sort是破坏性的 - 它就地修改了字符串.
该sort函数采用一个字符串已经存在的序列,因此您唯一的问题是找到正确的比较函数.字符不是数字,因此您应该使用字符比较函数,例如char>:
* (sort (copy-seq "hello") #'char>)
"ollhe"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1577 次 |
| 最近记录: |