diff --git a/src/com/imegumii/Automata.java b/src/com/imegumii/Automata.java index b5472d3..165c90a 100644 --- a/src/com/imegumii/Automata.java +++ b/src/com/imegumii/Automata.java @@ -16,7 +16,7 @@ public class Automata { protected SortedSet beginStates; protected SortedSet eindStates; - private SortedSet symbols; + protected SortedSet symbols; public Automata(Character [] symbols) { this(new TreeSet(Arrays.asList(symbols))); diff --git a/src/com/imegumii/DFA.java b/src/com/imegumii/DFA.java index 3674ea8..6d02c83 100644 --- a/src/com/imegumii/DFA.java +++ b/src/com/imegumii/DFA.java @@ -1,7 +1,10 @@ package com.imegumii; +import com.sun.source.util.Trees; + import java.util.Iterator; import java.util.SortedSet; +import java.util.TreeSet; /** * Created by imegumii on 01/05/2017. @@ -12,11 +15,11 @@ public class DFA extends Automata { super(symbols); } - public DFA(SortedSet symbols) { + public DFA(SortedSet symbols) { super(symbols); } - boolean accepteer(String s) { + public boolean accepteer(String s) { // bij een DFA is er maar een beginstate, dus gebruiken we first. T beginState = this.beginStates.first(); T currentState = beginState; @@ -40,7 +43,28 @@ public class DFA extends Automata { return this.eindStates.contains(currentState); } - void geefTaalTotLengte(int n) { + private TreeSet addSymbols(int n, TreeSet tempSet) { + TreeSet tempGenerated = new TreeSet<>(tempSet); + if (n == 0) { + return tempGenerated; + } + for(String s : tempSet) { + for(Character c : this.symbols) { + tempGenerated.add(s + c); + } + } + + tempGenerated.addAll(addSymbols(n - 1, tempGenerated)); + + return tempGenerated; + } + + public Taal geefTaalTotLengte(int n) { + TreeSet taal = new TreeSet<>(); + for (Character c : this.symbols) { + taal.add("" + c); + } + return new Taal(addSymbols(n - 1, taal)); } } diff --git a/src/com/imegumii/Main.java b/src/com/imegumii/Main.java index 030f300..cb7fba7 100644 --- a/src/com/imegumii/Main.java +++ b/src/com/imegumii/Main.java @@ -6,19 +6,10 @@ import java.util.TreeSet; public class Main { - public static void Practicum1Opdr1() { - TreeSet stringsToParse = new TreeSet<>(); - stringsToParse.add("abbaa"); - stringsToParse.add("babaa"); - stringsToParse.add("abbaaabaab"); - stringsToParse.add("abaab"); - stringsToParse.add("aaaabba"); - stringsToParse.add("baab"); - stringsToParse.add("baaba"); - stringsToParse.add("baabaabba"); - + public static void P1Opdracht1(TreeSet stringsToParse) { Character [] characters = {'a', 'b'}; DFA myAutomata = new DFA(characters); + // AAB myAutomata.addTransition(new Transition("q0", 'a', "q1")); @@ -50,16 +41,32 @@ public class Main { myAutomata.defineAsEndState("q7"); myAutomata.printTransitions(); - final long[] totalTime = {0}; - stringsToParse.forEach((s) -> { + final long[] startTime = {System.currentTimeMillis()}; + myAutomata.geefTaalTotLengte(10).getSymbols().forEach((s) -> { long before = System.currentTimeMillis(); boolean result = myAutomata.accepteer(s); long after = System.currentTimeMillis(); long delta = (after-before); System.out.println("string " + s + " fully parsed, result: " + result + " , it took " + delta + " ms"); - totalTime[0] += delta; + startTime[0] += delta; }); - System.out.println(totalTime[0]); + System.out.println((System.currentTimeMillis() - startTime[0])); + } + + public static void Practicum1() { + TreeSet stringsToParse = new TreeSet<>(); + stringsToParse.add("abbaa"); + stringsToParse.add("babaa"); + stringsToParse.add("abbaaabaab"); + stringsToParse.add("abaab"); + stringsToParse.add("aaaabba"); + stringsToParse.add("baab"); + stringsToParse.add("baaba"); + stringsToParse.add("baabaabba"); + stringsToParse.add("aaaaabb"); // this is wrong, something is wrong + + + P1Opdracht1(stringsToParse); } public static void main(String[] args) { @@ -68,7 +75,7 @@ public class Main { // t1.printTransitions(); System.out.println("Zo moet het dus, nu onze beurt."); - Practicum1Opdr1(); + Practicum1(); } } diff --git a/src/com/imegumii/Taal.java b/src/com/imegumii/Taal.java new file mode 100644 index 0000000..c64838d --- /dev/null +++ b/src/com/imegumii/Taal.java @@ -0,0 +1,18 @@ +package com.imegumii; + +import java.util.SortedSet; + +/** + * Created by imegumii on 02/05/2017. + */ +public class Taal { + private SortedSet symbols; + + public Taal(SortedSet sortedSet) { + this.symbols = sortedSet; + } + + public SortedSet getSymbols() { + return symbols; + } +}