Difference between revisions of "99 questions/61 to 69"

From HaskellWiki
Jump to navigation Jump to search
(moved p70)
m (solution 61)
Line 8: Line 8:
 
== Problem 61 ==
 
== Problem 61 ==
   
  +
Count the leaves of a binary tree
<Problem description>
 
  +
  +
A leaf is a node with no successors. Write a predicate count_leaves/2 to count them.
   
 
<pre>
 
<pre>
 
Example:
 
Example:
  +
% count_leaves(T,N) :- the binary tree T has N leaves
<example in lisp>
 
   
 
Example in Haskell:
 
Example in Haskell:
  +
> count_leaves (Branch 1 (Branch 2 Nil (Branch 4 Nil Nil)) (Branch 2 Nil Nil))
<example in Haskell>
 
  +
2
 
</pre>
 
</pre>
   
 
Solution:
 
Solution:
 
<haskell>
 
<haskell>
  +
data Tree a = Nil | Branch a (Tree a) (Tree a)
<solution in haskell>
 
</haskell>
 
   
  +
count_leaves Nil = 0
<description of implementation>
 
  +
count_leaves (Branch a Nil Nil) = 1
  +
count_leaves (Branch a left right) = count_leaves left + count_leaves right
 
</haskell>
 
 
 
== Problem 61A ==
 
== Problem 61A ==

Revision as of 12:51, 13 December 2006


These are Haskell translations of Ninety Nine Lisp Problems.

If you want to work on one of these, put your name in the block so we know someone's working on it. Then, change n in your block to the appropriate problem number, and fill in the <Problem description>,<example in lisp>,<example in Haskell>,<solution in haskell> and <description of implementation> fields.


Problem 61

Count the leaves of a binary tree

A leaf is a node with no successors. Write a predicate count_leaves/2 to count them.

Example:
% count_leaves(T,N) :- the binary tree T has N leaves

Example in Haskell:
> count_leaves (Branch 1 (Branch 2 Nil (Branch 4 Nil Nil)) (Branch 2 Nil Nil))
2

Solution:

data Tree a = Nil | Branch a (Tree a) (Tree a)

count_leaves  Nil                  = 0
count_leaves (Branch a Nil  Nil)   = 1
count_leaves (Branch a left right) = count_leaves left + count_leaves right

Problem 61A

<Problem description>

Example:
<example in lisp>

Example in Haskell:
<example in Haskell>

Solution:

<solution in haskell>

<description of implementation>

Problem 62

<Problem description>

Example:
<example in lisp>

Example in Haskell:
<example in Haskell>

Solution:

<solution in haskell>

<description of implementation>

Problem 62B

<Problem description>

Example:
<example in lisp>

Example in Haskell:
<example in Haskell>

Solution:

<solution in haskell>

<description of implementation>

Problem 63

<Problem description>

Example:
<example in lisp>

Example in Haskell:
<example in Haskell>

Solution:

<solution in haskell>

<description of implementation>

Problem 64

<Problem description>

Example:
<example in lisp>

Example in Haskell:
<example in Haskell>

Solution:

<solution in haskell>

<description of implementation>

Problem 65

<Problem description>

Example:
<example in lisp>

Example in Haskell:
<example in Haskell>

Solution:

<solution in haskell>

<description of implementation>

Problem 66

<Problem description>

Example:
<example in lisp>

Example in Haskell:
<example in Haskell>

Solution:

<solution in haskell>

<description of implementation>

Problem 67

<Problem description>

Example:
<example in lisp>

Example in Haskell:
<example in Haskell>

Solution:

<solution in haskell>

<description of implementation>

Problem 68

<Problem description>

Example:
<example in lisp>

Example in Haskell:
<example in Haskell>

Solution:

<solution in haskell>

<description of implementation>

Problem 69

<Problem description>

Example:
<example in lisp>

Example in Haskell:
<example in Haskell>

Solution:

<solution in haskell>

<description of implementation>