SHIT WORKS WOOOOO
This commit is contained in:
+14
-14
@@ -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) {
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user