我知道如何用我所知道的其他语言做到这一点,但我只是开始使用Lisp并且没有得到它。
的想法gate => aegt
house => ehosu
door => door
此例程将用作anagram-finder的一部分。
谢谢!
答案 0 :(得分:10)
Common Lisp字符串是序列,sort
适用于任何序列类型,因此它可以解决问题。
以下是一个例子:
(let ((the-string (copy-seq "this is the string")))
(sort the-string #'char-lessp))
;; => " eghhiiinrsssttt"
和here's sort
和stable-sort
的Hyperspec条目。只需选择您的谓词(sort
的第二个参数)即可获得所需的排序顺序。
请注意,我在示例中使用了copy-seq
,因为sort
具有破坏性 - 它就地修改了字符串。
答案 1 :(得分:6)
sort
函数接受一个字符串已经存在的序列,因此您唯一的问题是找到正确的比较函数。字符不是数字,因此您应该使用字符比较函数,例如char>
:
* (sort (copy-seq "hello") #'char>)
"ollhe"
答案 2 :(得分:2)
字符串是一系列字符。 sort对序列进行排序,以便对字符串进行排序,就像对列表进行排序一样:
(setq tester (copy-seq "lkjashd")) => "lkjashd"
(stable-sort tester #'char-lessp) => "adhjkls"
tester => "adhjkls" ; NB: it mutates the string!