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 |

2008-04-02


ArcでL-99 (P54a 二分木かどうかを判定)

| 21:21 | ArcでL-99 (P54a 二分木かどうかを判定) - わだばLisperになる を含むブックマーク はてなブックマーク - ArcでL-99 (P54a 二分木かどうかを判定) - わだばLisperになる

今回から二分木篇に突入です。番号はどういう訳かいきなり54a。

ここでの二分木とは、(x nil nil)という風に定義し、(根 葉 葉)というリストで表現されるとのことです。

木は根と葉から成り、根はアトム、葉は木から成ります。

それで今回のお題は、二分木になっているかを判定する関数を書けとのこと。

(atree '(1 2 3)) ;=> nil
(atree '(x nil nil)) ;=> t
(atree '(x (x nil nil) (x nil (x nil nil)))) ;=> t
(atree '(x (x nil nil) (x nil (x nil nil x)))) ;=> nil


(def atree (tree)
  (if atom.tree no.tree
      'else
      (and (is 3 len.tree) 
           (let (root left right) tree
             (and atom.root root
                  atree.left
                  atree.right)))))

ゲスト



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