#:g1: ArcでL-99 (P58 線対称な二分木を探す)

Posted 2008-05-11 09:02:00 GMT

-(http://www.ic.unicamp.br/~meidanis/courses/mc336/2006s2/funcional/L-99_Ninety-Nine_Lisp_Problems.html)
前に作成したcbal-treeとsymmetric?を組み合わせて作成。
また、57ノードの時に線対称な二分木は幾つかという問いもあり。
57ノードの場合、cbal-treeで作成する木が多くてコンスが多くなりすぎるためか、CLだと、2、3秒のところが、Arcだと、解答に11分位かかってしまいます。
keepは、CLでは、remove-if-notに相当します。

(each tr sym-cbal-trees.5
  prn.tr)
;>>> (x (x (x nil nil) nil) (x nil (x nil nil)))
;>>> (x (x nil (x nil nil)) (x (x nil nil) nil))

;(len:sym-cbal-trees 57) ;=> 256

(def sym-cbal-trees (n) (keep symmetric? cbal-tree.n))

comments powered by Disqus