Hatena::Groupcadr

わだばLisperになる このページをアンテナに追加 RSSフィード

2004 | 12 |
2005 | 01 | 02 | 07 | 10 | 11 |
2006 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 11 |

2007-09-12

L-99 (58)

| 12:30 | L-99 (58) - わだばLisperになる を含むブックマーク はてなブックマーク - L-99 (58) - わだばLisperになる

L-99 P58に挑戦 - L-99:Ninety-Nine Lisp Problems

解けなかったP55が解けたので、関連するP58も解答を作

成。

57ノードの場合、16個のうちから13個取る組み合わせなの

で、nPr = n!/r!(n-r)!

で、560通りかと思いきや、自作プログラムの結果は、256。

560通りの組み合わせのうち自身のパターンが、

1010と0101の関係のように逆行系が同じになるパターン

を纏めれば、256になるのかもしれない。

考えても分からないので、元のPrologで作成されたプロ

グラムを実行してみたら、これも256。

理屈は全然分からないが、自作プログラムとPrologの解

答の結果を色々テストで突合せてみても同じなのでこれ

で良いんだとは思う。

残りの問題:'(59 60 63 66 80-94 96-99) 解答状況 62/84

P58

解答
N=57の時に線対称の形状になる組み合わせの数
(length (sym-cbal-trees 57))
=> 256

Nが偶数だとどうなるか。
=> 線対称の木は生成されない。

;; Common Lisp
;; -----------------------------------------------------------------------------
(defpackage l99 (:use #:cl))

(load "p55") ;cbal-tree
(load "p57") ;symmetric

(in-package :l99)

(defun sym-cbal-tree (n)
  (reduce (lambda (res tr) (if (symmetric tr) `(,tr ,@res) res))
	  (cbal-tree n)
	  :initial-value () ))

ゲスト



トラックバック - http://cadr.g.hatena.ne.jp/g000001/20070912