From c1c0437b21878275c2431252bd93bc65a2af0ad9 Mon Sep 17 00:00:00 2001 From: Yorick Rommers Date: Mon, 1 May 2017 23:50:22 +0200 Subject: [PATCH] SHIT WORKS WOOOOO --- src/com/imegumii/DFA.java | 28 +++++++++++++------------- src/com/imegumii/Main.java | 40 ++++++++++++++++++++++++++++++++------ 2 files changed, 48 insertions(+), 20 deletions(-) diff --git a/src/com/imegumii/DFA.java b/src/com/imegumii/DFA.java index 4314df7..3674ea8 100644 --- a/src/com/imegumii/DFA.java +++ b/src/com/imegumii/DFA.java @@ -17,27 +17,27 @@ public class DFA extends Automata { } 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 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 : 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) { diff --git a/src/com/imegumii/Main.java b/src/com/imegumii/Main.java index 7dafb8e..030f300 100644 --- a/src/com/imegumii/Main.java +++ b/src/com/imegumii/Main.java @@ -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 myAutomata = new DFA(characters); + // AAB myAutomata.addTransition(new Transition("q0", 'a', "q1")); myAutomata.addTransition(new Transition("q1", 'b', "q2")); + myAutomata.addTransition(new Transition("q1", 'a', "q0")); myAutomata.addTransition(new Transition("q2", 'b', "q3")); + myAutomata.addTransition(new Transition("q2", 'a', "q5")); myAutomata.addTransition(new Transition("q3", "q0")); + // BAAB + myAutomata.addTransition(new Transition("q0", 'b', "q4")); + + myAutomata.addTransition(new Transition("q4", 'a', "q5")); + myAutomata.addTransition(new Transition("q4", 'b', "q4")); + + myAutomata.addTransition(new Transition("q5", 'a', "q6")); + myAutomata.addTransition(new Transition("q5", 'b', "q4")); + + myAutomata.addTransition(new Transition("q6", 'a', "q4")); + myAutomata.addTransition(new Transition("q6", 'b', "q7")); + + myAutomata.addTransition(new Transition("q7", 'a', "q4")); + myAutomata.addTransition(new Transition("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 t1 = TestAutomata.getExampleSlide8Lesson2(); - t1.printTransitions(); +// System.out.println("Here my code be"); +// com.imegumii.codevandocent.Automata t1 = TestAutomata.getExampleSlide8Lesson2(); +// t1.printTransitions(); System.out.println("Zo moet het dus, nu onze beurt."); Practicum1Opdr1();