This commit is contained in:
Yorick Rommers
2017-05-02 13:37:34 +02:00
parent c1c0437b21
commit f6c4bb5e36
4 changed files with 69 additions and 20 deletions
+1 -1
View File
@@ -16,7 +16,7 @@ public class Automata <T extends Comparable> {
protected SortedSet<T> beginStates;
protected SortedSet<T> eindStates;
private SortedSet<Character> symbols;
protected SortedSet<Character> symbols;
public Automata(Character [] symbols) {
this(new TreeSet<Character>(Arrays.asList(symbols)));
+27 -3
View File
@@ -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<T extends Comparable> extends Automata<T> {
super(symbols);
}
public DFA(SortedSet symbols) {
public DFA(SortedSet<Character> 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<T extends Comparable> extends Automata<T> {
return this.eindStates.contains(currentState);
}
void geefTaalTotLengte(int n) {
private TreeSet<String> addSymbols(int n, TreeSet<String> tempSet) {
TreeSet<String> 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<String> taal = new TreeSet<>();
for (Character c : this.symbols) {
taal.add("" + c);
}
return new Taal(addSymbols(n - 1, taal));
}
}
+23 -16
View File
@@ -6,19 +6,10 @@ import java.util.TreeSet;
public class Main {
public static void Practicum1Opdr1() {
TreeSet<String> 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<String> stringsToParse) {
Character [] characters = {'a', 'b'};
DFA<String> myAutomata = new DFA<String>(characters);
// AAB
myAutomata.addTransition(new Transition<String>("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<String> 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();
}
}
+18
View File
@@ -0,0 +1,18 @@
package com.imegumii;
import java.util.SortedSet;
/**
* Created by imegumii on 02/05/2017.
*/
public class Taal {
private SortedSet<String> symbols;
public Taal(SortedSet<String> sortedSet) {
this.symbols = sortedSet;
}
public SortedSet<String> getSymbols() {
return symbols;
}
}