From a7d7542dc646a5fd124ef71e71ce260889f1701b Mon Sep 17 00:00:00 2001 From: Camil Staps Date: Tue, 2 Feb 2016 19:24:50 +0100 Subject: Moved to 1415 directory --- 1415/files/practicum/BinTreeTest.icl | 42 ++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 1415/files/practicum/BinTreeTest.icl (limited to '1415/files/practicum/BinTreeTest.icl') diff --git a/1415/files/practicum/BinTreeTest.icl b/1415/files/practicum/BinTreeTest.icl new file mode 100644 index 0000000..0cc7b48 --- /dev/null +++ b/1415/files/practicum/BinTreeTest.icl @@ -0,0 +1,42 @@ +module BinTreeTest + +/* Test module BinTree + Voor werken met Gast: + (*) gebruik Environment 'Gast' + (*) zet Project Options op 'Basic Values Only' en '2M' Maximum Heap Size +*/ + +import gast +import BinTree + +Start + = testn 1000 + (\n -> let n` = abs (n/2) in + nodes_vs_leaves n` /\ + leaves_vs_diepte n` /\ + True + ) + +nodes_vs_leaves :: Int -> Property +nodes_vs_leaves n = name "nodes_vs_leaves" + (nodes t == leaves t - 1) +where t = lego_tree n + +leaves_vs_diepte :: Int -> Property +leaves_vs_diepte n = name "leaves_vs_diepte" + (leaves t <= 2^(diepte t)) +where t = lego_tree n + +// Function to construct semi-random trees, using those from BinTree: +trees =: [t0,t1,t2,t3,t4,t5,t6,t7] +nr_of_trees =: length trees + +lego_tree :: Int -> Tree Int +lego_tree 0 = t0 +lego_tree n = glue n (trees !! (n rem nr_of_trees)) (lego_tree (n/10)) +where + glue :: !Int !(Tree Int) !(Tree Int) -> Tree Int + glue n t Leaf = t + glue n t (Node x l r) + | isEven n = Node x (glue (n/10) t l) r + | otherwise = Node x l (glue (n/10) t r) -- cgit v1.2.3