【一日】CommonLisp【一門】
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
05/01/25 02:25:15・本スレに敬意を持つこと
・lisp最強
・括弧を崇めろ
・初心者を馬鹿にしない
・人に優しく
0156デフォルトの名無しさん
2005/09/27(火) 19:45:08専門用語出てきても調べるんで、さらっとでもいいんで
お願いします!
0157デフォルトの名無しさん
2005/09/27(火) 19:59:400158デフォルトの名無しさん
2005/09/28(水) 04:13:23> 専門用語出てきても調べるんで、
>>151 を調べるといい。
あるいはその前に深さ優先探索と幅優先探索あたり?
ここで返事を待つより Google で出てきたのを上から順番に読んでった方が多分早いよ。
つまり、私や他の誰かが、どれくらいかも判らないあなたのレベルに合わせて
説明をひねり出すより、あなたが自分のレベルにあった説明を探した方が早いよ。
少なくとも何かを読んであなた自身が判ったか判らなかったかはあなたには判るんだから。
……ていうか別にこれ Common Lisp 固有の話題じゃあないじゃないか。
0159デフォルトの名無しさん
2005/11/03(木) 22:50:40与えられた集合のべき集合を求める関数powersetを定義せよ。
(powerset '(a b c))
=> (() (a) (b) (c) (a b) (b c) (c a) (a b c))
0160デフォルトの名無しさん
2005/11/03(木) 23:02:10集合だから順序は不問だよね。
(defun power (x)
(if (null x)
'(nil)
(let ((y (power (cdr x))))
(append y (mapcar #'(lambda (z) (cons (car x) z)) y)))))
0161デフォルトの名無しさん
2005/11/03(木) 23:13:06(defun power (x)
(if (null x)
'(nil)
(mapcan #'(lambda (y) (list (cons (car x) y) y))
(power (cdr x)))))
0162デフォルトの名無しさん
2005/11/05(土) 13:05:33(fold (lambda (y z) (fold (lambda (a b) (cons (cons y a) (cons a b))) '() z)) '(()) x)
0163デフォルトの名無しさん
2005/11/05(土) 14:24:410164デフォルトの名無しさん
2005/11/05(土) 14:35:01異教徒
0165デフォルトの名無しさん
2005/11/05(土) 19:40:18* 引数の名前に lis lst のように間数名とかぶらない不自然な名前を使う
Common Lisp では変数と関数は名前空間を共有してないのにね
* 繰り返しを使わず labels & 末尾再帰
Common Lisp は末尾呼び出しの最適化を保証してないよ
* SRFI の手続き (特に SRFI-1) を使う
SRFI 等の外部モジュールを使う方法は R5RS では定義されてないじゃない
0166デフォルトの名無しさん
2005/11/05(土) 19:50:45* lambda 式の前の #' を省略する。
(ANSI Common Lisp では OK になったが古くからの信徒は #' を省略しない)
0167デフォルトの名無しさん
2005/11/05(土) 20:20:05それだと多くの処理系の作成にも異教徒が入り込んでることになるが
0168デフォルトの名無しさん
2005/11/05(土) 20:55:08処理系は異教徒表記を受け入れる(受け入れなければANSI違反なので)が、
多くの処理系作成者は自分でプログラムを書くときには #' を省略しない。
Common Lisp教は寛容なので異教徒にも優しくしてやっているのだ。
0169デフォルトの名無しさん
2005/11/05(土) 21:11:53じゃなくて、処理系自体の実装で #' が省略されてるのが多々あるってこと
0170デフォルトの名無しさん
2005/11/06(日) 01:36:51逆にそうでないとわかるものを使うときに#'を入れるか、lambda自体をdefmacroする。
0171デフォルトの名無しさん
2005/11/11(金) 14:11:53(COND ((NULL S)0)
((ATOM S)1)
(T(MAX(ADD1(MYSTERY(CAR S)))
(MYSTERY(CDR S))))))
0172デフォルトの名無しさん
2005/11/13(日) 12:55:260173デフォルトの名無しさん
2005/11/14(月) 00:34:270174デフォルトの名無しさん
2006/01/03(火) 07:31:25【2ch に Lisp コードを貼付ける時用の pprint】
仕様:
- 関数またはマクロとして実装
- 整形対象のプログラムは quote して、引数として渡す
- pprint を通す
- 出力は小文字で
- 行頭スペースは & n b s p ; に変換する
- 行幅は適当
- あと何か思いついたら付け足す
0175デフォルトの名無しさん
2006/01/03(火) 15:13:17いいんだけど、elispで書いちゃったからここには貼れないなw
0176デフォルトの名無しさん
2006/02/26(日) 12:59:350177デフォルトの名無しさん
2006/02/28(火) 23:38:470178デフォルトの名無しさん
2006/03/01(水) 16:05:09emacs の abbrev/dabbrev 使っているから別に
0179デフォルトの名無しさん
2006/03/01(水) 16:25:47`(lambda ,@body))
ってやったら怒られた。いまは反省している。
0180デフォルトの名無しさん
2006/03/04(土) 03:37:12`(lambda ,@body))
だろ。
0181デフォルトの名無しさん
2006/03/04(土) 04:51:08ついてる処理系ってあるの?
0182デフォルトの名無しさん
2006/03/04(土) 12:56:53Common Lisp の標準。readtable-case あたりを調べるべし。
個人的には :invert を常用している。
0183デフォルトの名無しさん
2006/03/04(土) 13:18:45標準の設定が
読み込み時: 大文字に揃える
出力時: 大文字に揃える
になってるだけ.(setf (readtable-case *readtable*) :preserve) ってすりゃ
大文字小文字区別できるよ.ただし標準の CL の変数や関数はすべて大文字な
のでCAR とか *READTABLE* とか書く必要がでてくるのでダル.:invert すると
symbol-name とかがいけてない.
Allegro のような使い心地のは CLISP の -modern モードかな?標準の組み込
みのシンボル小文字で,大文字小文字は区別.かつ,パッケージ毎に切り替え
られる.
0184デフォルトの名無しさん
2006/03/05(日) 23:21:36まだまだ知らないことが沢山……
0185デフォルトの名無しさん
2006/03/18(土) 18:38:470186デフォルトの名無しさん
2006/04/07(金) 00:46:230187デフォルトの名無しさん
2006/04/07(金) 01:35:140188デフォルトの名無しさん
2006/04/07(金) 02:37:48http://www.densei-lambda.com/indexj.html
0189デフォルトの名無しさん
2006/04/07(金) 03:01:09λパワーだったりλアメリカだったりλアンテナだったり・・・。
0190デフォルトの名無しさん
2006/04/07(金) 11:57:490191デフォルトの名無しさん
2006/04/08(土) 00:38:350192デフォルトの名無しさん
2006/04/08(土) 01:43:180193デフォルトの名無しさん
2006/04/18(火) 13:10:440194デフォルトの名無しさん
2006/06/24(土) 14:03:41> 三菱車ギャランΛ。
年齢バレますよ。オレモナー
0195デフォルトの名無しさん
2006/07/21(金) 15:53:340196デフォルトの名無しさん
2006/07/22(土) 19:13:31P(n,k)=n!/k! 通りの順列を作ることができます。
P(n,k)通りの順列を全て含んでいる長さP(n,k)の円順列を作るには
どうすれば良いのでしょうか?
0197デフォルトの名無しさん
2006/07/22(土) 19:15:470198デフォルトの名無しさん
2006/07/23(日) 03:31:07;; P(n,k)
(defun f (n) (if (<= n 1) n (* n (f (1- n)))))
(defun p (n k) (/ (f n) (f k)))
と与えられた定義まではできたのですが「P(n,k)通りの順列を全て含んでいる長さP(n,k)の円順列を作る」の部分の意味がわかません。Wikipedia で検索しましたが…。来週の水曜日に数学の先生にでも聞いてみようかなぁ。
0199デフォルトの名無しさん
2006/07/23(日) 11:53:39(foo 3 '(a b c d e))
=> #1=((a b c) (a b d) (a b e) (a c d) (a c e) (a d e) (b c d) (b c e) (b d e) (c d e) . #1#)
みたいな関数を作れってこと?
まあいかにも宿題っぽくはある。
0200デフォルトの名無しさん
2006/07/23(日) 12:00:420201デフォルトの名無しさん
2006/07/23(日) 16:10:48間違い
P(n,k)=n!/(n-k)!
それから答えは以下の等式をじっとにらむと
見つかるかもしれない
P(n,k)=P(n-1,k)+P(n-1,k-1)*k
0202デフォルトの名無しさん
2006/08/13(日) 01:13:400203デフォルトの名無しさん
2006/09/18(月) 04:04:350204デフォルトの名無しさん
2006/09/29(金) 23:17:44http://book.mycom.co.jp/book/4-8399-2081-8/4-8399-2081-8.shtml
0205デフォルトの名無しさん
2006/10/13(金) 19:34:350206デフォルトの名無しさん
2006/10/13(金) 19:35:47■ このスレッドは過去ログ倉庫に格納されています