From 18d5853c3103aded347be0a2dae911e46e9b3394 Mon Sep 17 00:00:00 2001
From: Katja Bercic <katja.bercic@gmail.com>
Date: Tue, 19 Nov 2019 15:38:29 +0100
Subject: [PATCH] Upload New File

---
 WS1920/hw3-def-hint.txt | 64 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 64 insertions(+)
 create mode 100644 WS1920/hw3-def-hint.txt

diff --git a/WS1920/hw3-def-hint.txt b/WS1920/hw3-def-hint.txt
new file mode 100644
index 0000000..94c5b50
--- /dev/null
+++ b/WS1920/hw3-def-hint.txt
@@ -0,0 +1,64 @@
+% HW3 Uninformed Search: Definitions and Hints
+
+% First, we define trees as in the exercise sheet:
+subtrees([]).
+subtrees([(Cost,T)|Rest]) :- number(Cost),istree(T), subtrees(Rest).
+istree(tree(Value,Children)) :- string(Value),subtrees(Children).
+
+% We'll add a couple of test trees:
+testTree1(tree("A",[])).
+testTree2(tree("A",[(2,tree("B",[(5,tree("C",[]))])),(3,tree("B",[(10,tree("D",[]))]))])).
+testTree3(tree("A",[(2,tree("B",[(5,tree("C",[])),(60,tree("D",[])),(42,tree("H",[]))])),(3,tree("C",[(10,tree("E",[(60,tree("J",[(60,tree("D",[(60,tree("I",[]))]))]))]))]))])).
+testTree4(tree("A",[(2,tree("B",[(5,tree("C",[]))])),(3,tree("C",[(10,tree("D",[]))]))])).
+treeZ(tree("Z",[])).
+treeY(tree("Y",[])).
+treeX(tree("X",[])).
+treeW(tree("W",[])).
+treeV(tree("V",[])).
+treeU(tree("U",[])).
+treeT(tree("T",[])).
+treeS(tree("S",[])).
+treeR(tree("R",[(5,TreeZ)])) :- treeZ(TreeZ).
+treeQ(tree("Q",[])).
+treeP(tree("P",[])).
+treeO(tree("O",[])).
+treeN(tree("N",[])).
+treeM(tree("M",[(21,TreeY)])) :- treeY(TreeY).
+treeL(tree("L",[(30,TreeX)])) :- treeX(TreeX).
+treeK(tree("K",[(28,TreeW)])) :- treeW(TreeW).
+treeJ(tree("J",[(14,TreeV)])) :- treeV(TreeV).
+treeI(tree("I",[(8,TreeT),(7,TreeU)])) :- treeT(TreeT), treeU(TreeU).
+treeH(tree("H",[(6,TreeS)])) :- treeS(TreeS).
+treeG(tree("G",[(14,TreeQ),(3,TreeR)])) :- treeQ(TreeQ), treeR(TreeR).
+treeF(tree("F",[(18,TreeP)])) :- treeP(TreeP).
+treeE(tree("E",[(3,TreeN),(12,TreeO)])) :- treeN(TreeN), treeO(TreeO).
+treeD(tree("D",[(3,TreeK),(17,TreeL),(20,TreeM)])) :- treeK(TreeK),treeL(TreeL),treeM(TreeM).
+treeC(tree("C",[(14,TreeH),(8,TreeI),(11,TreeJ)])) :- treeH(TreeH),treeI(TreeI),treeJ(TreeJ).
+treeB(tree("B",[(3,TreeE),(1,TreeF),(2,TreeG)])) :- treeE(TreeE),treeF(TreeF),treeG(TreeG).
+treeA(tree("A",[(5,TreeB),(6,TreeC),(4,TreeD)])) :- treeB(TreeB),treeC(TreeC),treeD(TreeD).
+
+% Check that they work
+% ?- testTree1(A), istree(A), testTree2(B), istree(B), testTree3(C), istree(C), treeA(NA), istree(NA).
+
+% - - - - - - - - - - - - - - - - - - - - - - - - 
+% The following might be useful
+% - - - - - - - - - - - - - - - - - - - - - - - - 
+
+% Unifying terms
+treeRoot(Tree) :- 
+    Tree = tree(Root,_), % unify Term1 with Term2
+    write(Root).
+% ?- testTree1(T), treeRoot(T).
+
+% String concatenation
+% ?- string_concat("a","b",S).
+
+% Semicolon: an "or" in Prolog
+tomJerry(X) :- X = "Tom"; X = "Jerry".
+% ?- findall(X,tomJerry(X),Y).
+
+% Appending
+% ?- append(["a","b"],["c"],L).
+
+% Sorting
+% ?- sort([3,5,2,6,4,1],L)
\ No newline at end of file
-- 
GitLab