マップ関数を使用してリストからすべての要素を逆順にする関数を記述したいが、これをどのように開始するのかわからない。何らかの形で逆関数を返します。 たとえば、リスト(1 2 3(4 5 6(7 8 9))を持っていれば、((9 8 7)6 5 4)3 2 1) リストを持っていた(1 2 3(4 5)(6 7))私は((7 6)(5 4)3 2 1).. 助けていただきありがとうございます!Lisp Reverse "all" Function
答えて
だけで簡単に答え、:以下のコメントから
(defun reverse-deeply (list)
(mapcar #'(lambda (li)
(cond
((consp li) (reverse-deeply li))
(t li)))
(reverse list)))
キーは再帰です。これはそれを行う必要があります。 –
はいこれです..ありがとうございます! – SnailBoy
ここでは、Common-Lispで私にとって役立つバージョンです。
(defun reverse-list (list)
(if (atom list)
list ;; Not actually a list, return the atom
(reverse (mapcar #'reverse-list list)))
;; Testing it out
(reverse-list '((1 2 3) (4 5 (3 6))))
出力:
(((6 3) 5 4) (3 2 1))
でmapcarは、その最初のパラメータと第二パラメータとしてリストとして他の関数を取る関数です。次に、リストの各要素でその関数を呼び出します。すべての回答のリストを返します。だから私はすべてのサブリストを逆にするために 'mapcar'を使用した後、私は大きなリストを逆にするために再び '逆'を呼び出します。
各サブリストで呼び出す関数は 'reverse-list'です。これは、リストがアトムかどうかをチェックします。存在する場合は、それ自身を返します。それがリストであれば、リストの各要素に対してmapcarを再度呼び出し、その結果を逆にします。効率/優雅わからない
(defun reverse-list (list)
(let ((result nil))
(dolist (e list result)
(push e result))))
申し訳ありませんが私のために働いていません... – SnailBoy
- 1. Emacs Lisp:(function(lambda ...))と(lambda ...)の違いは?
- 2. LISP -
- 3. Java:LinkedList Reverse
- 4. Reverse MemoryStream.ToArray()
- 5. iOS Twitter Reverse OAuth
- 6. bindAttr reverse boolean
- 7. ディープ・リバース(Lispの)
- 8. Python Reverse Generator
- 9. Tastypie Reverse Relation
- 10. git reverse cherrypick
- 11. php strtotime reverse
- 12. jquery reverse array
- 13. Phonegap - Reverse ajax
- 14. Django HttpResponseRedirectとreverse()
- 15. どのようにしてJSPでselect all functionを追加するか?
- 16. コール[] .reverse文字列に
- 17. NoReverseMatch from reverse()カスタムテンプレートタグで使用
- 18. C++ 11 std :: reverse()のコンビニエンスラッパー
- 19. JavaScript dollar function、function $()error
- 20. lodash _.find all matches
- 21. ハイブパフォーマンスユニオンall
- 22. @allは
- 23. LISP
- 24. Oracleトレースall SELECTS
- 25. Crossdomain all from GAE
- 26. パンダブール.any().all()
- 27. Promise .all()with RxJS
- 28. HiveQL UNION ALL
- 29. Neo4jclient ALL述語
- 30. "All Users"フォルダ
は、あなたが最も簡単な解決策は、再帰関数であるために再帰的な問題を、(記述されているようですつまり、自分自身を呼び出す関数)。私はその理由のために "再帰"で質問にタグを付けました。 –