マップ関数を使用してリストからすべての要素を逆順にする関数を記述したいが、これをどのように開始するのかわからない。何らかの形で逆関数を返します。 たとえば、リスト(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. common lisp function/macro aliases
- 2. Emacs Lisp:(function(lambda ...))と(lambda ...)の違いは?
- 3. LISP -
- 4. ディープ・リバース(Lispの)
- 5. ハスケルに `(Reverse(Reverse xs))〜xs`を伝える
- 6. Reverse MemoryStream.ToArray()
- 7. Reverse requirements.txt
- 8. Java:LinkedList Reverse
- 9. iOS Twitter Reverse OAuth
- 10. Angular2 reverseディレクティブルックアップ
- 11. javascript reverse string algorithm
- 12. bindAttr reverse boolean
- 13. Django:strange reverse match
- 14. smoothstate alternate reverse animating
- 15. Django translation reverse
- 16. RecyclerView reverse CardStack
- 17. Django HttpResponseRedirectとreverse()
- 18. Cプログラミング "Number Reverse"
- 19. git reverse cherrypick
- 20. Phonegap - Reverse ajax
- 21. php strtotime reverse
- 22. C++ reverse regex_search
- 23. Entity Framework Reverse Navigation
- 24. Python append data reverse
- 25. Algolia Reverse Search
- 26. mysql query reverse printing
- 27. arrayfunの "Reverse"
- 28. jquery reverse array
- 29. Tastypie Reverse Relation
- 30. Python Reverse Generator
は、あなたが最も簡単な解決策は、再帰関数であるために再帰的な問題を、(記述されているようですつまり、自分自身を呼び出す関数)。私はその理由のために "再帰"で質問にタグを付けました。 –