Lisp@UNIX版 (585レス)
前次1-
抽出解除 レス栞

リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
331
(1): 名無しさん@お腹いっぱい。 [sage] 03/07/02 21:04 AAS
なんか、大分さがってるけど質問してみます。

↓この test って関数を append を使わないで再帰で書くにはどうしたらいいですか?
(defun test (list1 list2)
(let (list)
(while list1
(let ((list3 list2))
(while list3
(setq list (cons (concat (car list1) (car list3)) list))
(setq list3 (cdr list3))))
(setq list1 (cdr list1)))
(nreverse list)))

append を使えば↓な感じでいけるんですが。。。
(defun test1 (list1 list2)
(if list1
(append (test2 (car list1) list2)
(test1 (cdr list1) list2))))

(defun test2 (str list)
(if list
(cons (concat str (car list))
(test2 str (cdr list)))))

lisp 初心者に愛の手を。。。
333
(2): 名無しさん@お腹いっぱい。 [sage] 03/07/03 10:56 AAS
>>331 見た感じ elisp だな.

(defun my-test2 (lst1 lst2)
(my-test2-aux lst1 lst2 nil))
(defun my-test2-aux (lst1 lst2 acc)
(if (null lst1)
(nreverse acc)
(my-test2-aux (cdr lst1) lst2
(my-test2-aux2 (car lst1) lst2 acc))))
(defun my-test2-aux2 (e lst acc)
(if (null lst)
acc
(my-test2-aux2 e (cdr lst) (cons (concat e (car lst)) acc))))

↓どう考えてもこっちのが効率的だとおもうが,なんで再帰でやりたいんだ??
(defun my-test3 (lst1 lst2)
(let (acc)
(dolist (e1 lst1 (nreverse acc))
(dolist (e2 lst2)
(push (concat e1 e2) acc)))))
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.027s