SHIT WORKS WOOOOO

This commit is contained in:
Yorick Rommers
2017-05-01 23:50:29 +02:00
parent 6ad48e490d
commit c1c0437b21
2 changed files with 48 additions and 20 deletions
+14 -14
View File
@@ -17,27 +17,27 @@ public class DFA<T extends Comparable> extends Automata<T> {
}
boolean accepteer(String s) {
// because this is a DFA, assume first is always beginstate and endstate.
// bij een DFA is er maar een beginstate, dus gebruiken we first.
T beginState = this.beginStates.first();
T eindState = this.eindStates.first();
T currentState = this.beginStates.first();
for (int i = 0; i < s.length(); i++) {
System.out.println(s.charAt(i));
T currentState = beginState;
for (Transition<T> tr : this.transistions) {
System.out.println(tr);
System.out.println("Current state is : " +currentState);
if (currentState.equals(tr.vanState)) { // this is our current state
System.out.println("This is our current state, checking if symbols match and advancing");
if (s.charAt(i) == tr.symbol) {
System.out.println("Theyre equal, currentState becomes naarState");
currentState = tr.naarState;
for (int i = 0; i < s.length(); i++) {
// System.out.println(s.charAt(i));
for (Transition<T> t : this.transistions) {
if (t.vanState == currentState) {
// if states match, parse using symbols.
if (t.symbol == s.charAt(i)) {
// symbols match
// System.out.println("Symbols match for " + t + " and " + s.charAt(i) + " with currentState " + currentState);
currentState = t.naarState;
break;
}
}
}
}
return (currentState == eindState);
// System.out.println("Ended on state " + currentState);
return this.eindStates.contains(currentState);
}
void geefTaalTotLengte(int n) {
+34 -6
View File
@@ -11,33 +11,61 @@ public class Main {
stringsToParse.add("abbaa");
stringsToParse.add("babaa");
stringsToParse.add("abbaaabaab");
stringsToParse.add("ababababababaab");
stringsToParse.add("abaab");
stringsToParse.add("aaaabba");
stringsToParse.add("baab");
stringsToParse.add("baaba");
stringsToParse.add("baabaabba");
Character [] characters = {'a', 'b'};
DFA<String> myAutomata = new DFA<String>(characters);
// AAB
myAutomata.addTransition(new Transition<String>("q0", 'a', "q1"));
myAutomata.addTransition(new Transition<String>("q1", 'b', "q2"));
myAutomata.addTransition(new Transition<String>("q1", 'a', "q0"));
myAutomata.addTransition(new Transition<String>("q2", 'b', "q3"));
myAutomata.addTransition(new Transition<String>("q2", 'a', "q5"));
myAutomata.addTransition(new Transition<String>("q3", "q0"));
// BAAB
myAutomata.addTransition(new Transition<String>("q0", 'b', "q4"));
myAutomata.addTransition(new Transition<String>("q4", 'a', "q5"));
myAutomata.addTransition(new Transition<String>("q4", 'b', "q4"));
myAutomata.addTransition(new Transition<String>("q5", 'a', "q6"));
myAutomata.addTransition(new Transition<String>("q5", 'b', "q4"));
myAutomata.addTransition(new Transition<String>("q6", 'a', "q4"));
myAutomata.addTransition(new Transition<String>("q6", 'b', "q7"));
myAutomata.addTransition(new Transition<String>("q7", 'a', "q4"));
myAutomata.addTransition(new Transition<String>("q7", 'b', "q4"));
myAutomata.defineAsStartState("q0");
myAutomata.defineAsEndState("q3");
myAutomata.defineAsEndState("q7");
myAutomata.printTransitions();
final long[] totalTime = {0};
stringsToParse.forEach((s) -> {
long before = System.currentTimeMillis();
boolean result = myAutomata.accepteer(s);
System.out.println("string " + s + " fully parsed, result: " + result);
long after = System.currentTimeMillis();
long delta = (after-before);
System.out.println("string " + s + " fully parsed, result: " + result + " , it took " + delta + " ms");
totalTime[0] += delta;
});
System.out.println(totalTime[0]);
}
public static void main(String[] args) {
System.out.println("Here my code be");
com.imegumii.codevandocent.Automata<String> t1 = TestAutomata.getExampleSlide8Lesson2();
t1.printTransitions();
// System.out.println("Here my code be");
// com.imegumii.codevandocent.Automata<String> t1 = TestAutomata.getExampleSlide8Lesson2();
// t1.printTransitions();
System.out.println("Zo moet het dus, nu onze beurt.");
Practicum1Opdr1();