.equals replaced with ==
This commit is contained in:
parent
c81659c1f9
commit
e519563023
3 changed files with 134 additions and 46 deletions
80
.idea/workspace.xml
generated
80
.idea/workspace.xml
generated
|
|
@ -4,10 +4,10 @@
|
||||||
<option name="autoReloadType" value="SELECTIVE" />
|
<option name="autoReloadType" value="SELECTIVE" />
|
||||||
</component>
|
</component>
|
||||||
<component name="ChangeListManager">
|
<component name="ChangeListManager">
|
||||||
<list default="true" id="f5e08808-a5af-4c89-a1ee-21b3bcb9ae3e" name="Changes" comment="guess what works now, fker:)">
|
<list default="true" id="f5e08808-a5af-4c89-a1ee-21b3bcb9ae3e" name="Changes" comment="just some fancy shit added">
|
||||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/src/main/java/ab1/impl/GRUPPE/NFAFactoryImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/ab1/impl/GRUPPE/NFAFactoryImpl.java" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/src/main/java/ab1/impl/GRUPPE/NFAImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/ab1/impl/GRUPPE/NFAImpl.java" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/src/main/java/ab1/impl/GRUPPE/NFAImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/ab1/impl/GRUPPE/NFAImpl.java" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/test/java/ab1/tests/myTests.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/test/java/ab1/tests/myTests.java" afterDir="false" />
|
||||||
</list>
|
</list>
|
||||||
<list id="39d4ccb3-eae9-4ed4-996a-5a13f44678fa" name="Changes by carol" comment="" />
|
<list id="39d4ccb3-eae9-4ed4-996a-5a13f44678fa" name="Changes by carol" comment="" />
|
||||||
<option name="SHOW_DIALOG" value="false" />
|
<option name="SHOW_DIALOG" value="false" />
|
||||||
|
|
@ -64,7 +64,10 @@
|
||||||
"JUnit.ComplexTests.finite2Test.executor": "Debug",
|
"JUnit.ComplexTests.finite2Test.executor": "Debug",
|
||||||
"JUnit.ComplexTests.intersection1Test.executor": "Run",
|
"JUnit.ComplexTests.intersection1Test.executor": "Run",
|
||||||
"JUnit.ComplexTests.intersection2Test.executor": "Run",
|
"JUnit.ComplexTests.intersection2Test.executor": "Run",
|
||||||
|
"JUnit.myTests.executor": "Run",
|
||||||
"JUnit.myTests.intersection1Test.executor": "Run",
|
"JUnit.myTests.intersection1Test.executor": "Run",
|
||||||
|
"JUnit.myTests.myTest_1.executor": "Run",
|
||||||
|
"JUnit.myTests.myTest_2.executor": "Run",
|
||||||
"RunOnceActivity.OpenProjectViewOnStart": "true",
|
"RunOnceActivity.OpenProjectViewOnStart": "true",
|
||||||
"RunOnceActivity.ShowReadmeOnStart": "true",
|
"RunOnceActivity.ShowReadmeOnStart": "true",
|
||||||
"WebServerToolWindowFactoryState": "false",
|
"WebServerToolWindowFactoryState": "false",
|
||||||
|
|
@ -83,7 +86,7 @@
|
||||||
"vue.rearranger.settings.migration": "true"
|
"vue.rearranger.settings.migration": "true"
|
||||||
}
|
}
|
||||||
}]]></component>
|
}]]></component>
|
||||||
<component name="RunManager" selected="JUnit.ComplexTests">
|
<component name="RunManager" selected="JUnit.myTests">
|
||||||
<configuration name="ComplexTests" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
|
<configuration name="ComplexTests" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
|
||||||
<module name="ETI_Abgabe" />
|
<module name="ETI_Abgabe" />
|
||||||
<extension name="coverage">
|
<extension name="coverage">
|
||||||
|
|
@ -99,22 +102,6 @@
|
||||||
<option name="Make" enabled="true" />
|
<option name="Make" enabled="true" />
|
||||||
</method>
|
</method>
|
||||||
</configuration>
|
</configuration>
|
||||||
<configuration name="ComplexTests.finite1Test" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
|
|
||||||
<module name="ETI_Abgabe" />
|
|
||||||
<extension name="coverage">
|
|
||||||
<pattern>
|
|
||||||
<option name="PATTERN" value="ab1.tests.*" />
|
|
||||||
<option name="ENABLED" value="true" />
|
|
||||||
</pattern>
|
|
||||||
</extension>
|
|
||||||
<option name="PACKAGE_NAME" value="ab1.tests" />
|
|
||||||
<option name="MAIN_CLASS_NAME" value="ab1.tests.ComplexTests" />
|
|
||||||
<option name="METHOD_NAME" value="finite1Test" />
|
|
||||||
<option name="TEST_OBJECT" value="method" />
|
|
||||||
<method v="2">
|
|
||||||
<option name="Make" enabled="true" />
|
|
||||||
</method>
|
|
||||||
</configuration>
|
|
||||||
<configuration name="ComplexTests.finite2Test" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
|
<configuration name="ComplexTests.finite2Test" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
|
||||||
<module name="ETI_Abgabe" />
|
<module name="ETI_Abgabe" />
|
||||||
<extension name="coverage">
|
<extension name="coverage">
|
||||||
|
|
@ -131,7 +118,7 @@
|
||||||
<option name="Make" enabled="true" />
|
<option name="Make" enabled="true" />
|
||||||
</method>
|
</method>
|
||||||
</configuration>
|
</configuration>
|
||||||
<configuration name="ComplexTests.intersection1Test" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
|
<configuration name="myTests" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
|
||||||
<module name="ETI_Abgabe" />
|
<module name="ETI_Abgabe" />
|
||||||
<extension name="coverage">
|
<extension name="coverage">
|
||||||
<pattern>
|
<pattern>
|
||||||
|
|
@ -140,14 +127,29 @@
|
||||||
</pattern>
|
</pattern>
|
||||||
</extension>
|
</extension>
|
||||||
<option name="PACKAGE_NAME" value="ab1.tests" />
|
<option name="PACKAGE_NAME" value="ab1.tests" />
|
||||||
<option name="MAIN_CLASS_NAME" value="ab1.tests.ComplexTests" />
|
<option name="MAIN_CLASS_NAME" value="ab1.tests.myTests" />
|
||||||
<option name="METHOD_NAME" value="intersection1Test" />
|
<option name="TEST_OBJECT" value="class" />
|
||||||
|
<method v="2">
|
||||||
|
<option name="Make" enabled="true" />
|
||||||
|
</method>
|
||||||
|
</configuration>
|
||||||
|
<configuration name="myTests.myTest_1" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
|
||||||
|
<module name="ETI_Abgabe" />
|
||||||
|
<extension name="coverage">
|
||||||
|
<pattern>
|
||||||
|
<option name="PATTERN" value="ab1.tests.*" />
|
||||||
|
<option name="ENABLED" value="true" />
|
||||||
|
</pattern>
|
||||||
|
</extension>
|
||||||
|
<option name="PACKAGE_NAME" value="ab1.tests" />
|
||||||
|
<option name="MAIN_CLASS_NAME" value="ab1.tests.myTests" />
|
||||||
|
<option name="METHOD_NAME" value="myTest_1" />
|
||||||
<option name="TEST_OBJECT" value="method" />
|
<option name="TEST_OBJECT" value="method" />
|
||||||
<method v="2">
|
<method v="2">
|
||||||
<option name="Make" enabled="true" />
|
<option name="Make" enabled="true" />
|
||||||
</method>
|
</method>
|
||||||
</configuration>
|
</configuration>
|
||||||
<configuration name="ComplexTests.intersection2Test" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
|
<configuration name="myTests.myTest_2" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
|
||||||
<module name="ETI_Abgabe" />
|
<module name="ETI_Abgabe" />
|
||||||
<extension name="coverage">
|
<extension name="coverage">
|
||||||
<pattern>
|
<pattern>
|
||||||
|
|
@ -156,8 +158,8 @@
|
||||||
</pattern>
|
</pattern>
|
||||||
</extension>
|
</extension>
|
||||||
<option name="PACKAGE_NAME" value="ab1.tests" />
|
<option name="PACKAGE_NAME" value="ab1.tests" />
|
||||||
<option name="MAIN_CLASS_NAME" value="ab1.tests.ComplexTests" />
|
<option name="MAIN_CLASS_NAME" value="ab1.tests.myTests" />
|
||||||
<option name="METHOD_NAME" value="intersection2Test" />
|
<option name="METHOD_NAME" value="myTest_2" />
|
||||||
<option name="TEST_OBJECT" value="method" />
|
<option name="TEST_OBJECT" value="method" />
|
||||||
<method v="2">
|
<method v="2">
|
||||||
<option name="Make" enabled="true" />
|
<option name="Make" enabled="true" />
|
||||||
|
|
@ -176,11 +178,11 @@
|
||||||
</configuration>
|
</configuration>
|
||||||
<recent_temporary>
|
<recent_temporary>
|
||||||
<list>
|
<list>
|
||||||
|
<item itemvalue="JUnit.myTests" />
|
||||||
|
<item itemvalue="JUnit.myTests.myTest_2" />
|
||||||
<item itemvalue="JUnit.ComplexTests" />
|
<item itemvalue="JUnit.ComplexTests" />
|
||||||
|
<item itemvalue="JUnit.myTests.myTest_1" />
|
||||||
<item itemvalue="JUnit.ComplexTests.finite2Test" />
|
<item itemvalue="JUnit.ComplexTests.finite2Test" />
|
||||||
<item itemvalue="JUnit.ComplexTests.finite1Test" />
|
|
||||||
<item itemvalue="JUnit.ComplexTests.intersection2Test" />
|
|
||||||
<item itemvalue="JUnit.ComplexTests.intersection1Test" />
|
|
||||||
</list>
|
</list>
|
||||||
</recent_temporary>
|
</recent_temporary>
|
||||||
</component>
|
</component>
|
||||||
|
|
@ -284,7 +286,15 @@
|
||||||
<option name="project" value="LOCAL" />
|
<option name="project" value="LOCAL" />
|
||||||
<updated>1704896842030</updated>
|
<updated>1704896842030</updated>
|
||||||
</task>
|
</task>
|
||||||
<option name="localTasksCounter" value="11" />
|
<task id="LOCAL-00011" summary="just some fancy shit added">
|
||||||
|
<option name="closed" value="true" />
|
||||||
|
<created>1704898189901</created>
|
||||||
|
<option name="number" value="00011" />
|
||||||
|
<option name="presentableId" value="LOCAL-00011" />
|
||||||
|
<option name="project" value="LOCAL" />
|
||||||
|
<updated>1704898189902</updated>
|
||||||
|
</task>
|
||||||
|
<option name="localTasksCounter" value="12" />
|
||||||
<servers />
|
<servers />
|
||||||
</component>
|
</component>
|
||||||
<component name="TypeScriptGeneratedFilesManager">
|
<component name="TypeScriptGeneratedFilesManager">
|
||||||
|
|
@ -310,7 +320,8 @@
|
||||||
<MESSAGE value="changed nfaAddTrap, bei dem Fall, dass Transition.readSymbol() einen nullwert zurückgibt. (Thx ChatGBT) -> intersectionTests funktionieren" />
|
<MESSAGE value="changed nfaAddTrap, bei dem Fall, dass Transition.readSymbol() einen nullwert zurückgibt. (Thx ChatGBT) -> intersectionTests funktionieren" />
|
||||||
<MESSAGE value="isFinite methode recursiv..." />
|
<MESSAGE value="isFinite methode recursiv..." />
|
||||||
<MESSAGE value="guess what works now, fker:)" />
|
<MESSAGE value="guess what works now, fker:)" />
|
||||||
<option name="LAST_COMMIT_MESSAGE" value="guess what works now, fker:)" />
|
<MESSAGE value="just some fancy shit added" />
|
||||||
|
<option name="LAST_COMMIT_MESSAGE" value="just some fancy shit added" />
|
||||||
</component>
|
</component>
|
||||||
<component name="XDebuggerManager">
|
<component name="XDebuggerManager">
|
||||||
<breakpoint-manager>
|
<breakpoint-manager>
|
||||||
|
|
@ -325,11 +336,10 @@
|
||||||
<line>355</line>
|
<line>355</line>
|
||||||
<option name="timeStamp" value="53" />
|
<option name="timeStamp" value="53" />
|
||||||
</line-breakpoint>
|
</line-breakpoint>
|
||||||
<line-breakpoint enabled="true" type="java-line">
|
<breakpoint enabled="true" type="java-exception">
|
||||||
<url>file://$PROJECT_DIR$/src/test/java/ab1/tests/ComplexTests.java</url>
|
<properties class="ab1.FinalizedStateException" package="ab1" />
|
||||||
<line>141</line>
|
<option name="timeStamp" value="62" />
|
||||||
<option name="timeStamp" value="59" />
|
</breakpoint>
|
||||||
</line-breakpoint>
|
|
||||||
</breakpoints>
|
</breakpoints>
|
||||||
</breakpoint-manager>
|
</breakpoint-manager>
|
||||||
<watches-manager>
|
<watches-manager>
|
||||||
|
|
|
||||||
|
|
@ -423,7 +423,7 @@ public class NFAImpl implements NFA {
|
||||||
Character readSymbol = path.get(path.size()-1).getElement_1();
|
Character readSymbol = path.get(path.size()-1).getElement_1();
|
||||||
Transition currentTransition = new Transition(fromState, readSymbol, path.get(path.size()-1).getElement_2());
|
Transition currentTransition = new Transition(fromState, readSymbol, path.get(path.size()-1).getElement_2());
|
||||||
for(int i=transitions.indexOf(currentTransition)+1;i<transitions.size();i++){
|
for(int i=transitions.indexOf(currentTransition)+1;i<transitions.size();i++){
|
||||||
if(transitions.get(i).fromState().equals(fromState) && transitions.get(i).readSymbol().equals(readSymbol)){
|
if(transitions.get(i).fromState().equals(fromState) && transitions.get(i).readSymbol()==(readSymbol)){
|
||||||
String newState = transitions.get(i).toState();
|
String newState = transitions.get(i).toState();
|
||||||
if (stateInPath(path, newState)) {
|
if (stateInPath(path, newState)) {
|
||||||
//loop!
|
//loop!
|
||||||
|
|
@ -488,7 +488,7 @@ public class NFAImpl implements NFA {
|
||||||
private String checkForNewLetter(List<Tuple> path, List<Transition> transitions, Character letter){
|
private String checkForNewLetter(List<Tuple> path, List<Transition> transitions, Character letter){
|
||||||
String fromState = path.get(path.size()-2).getElement_2();
|
String fromState = path.get(path.size()-2).getElement_2();
|
||||||
for(Transition transition : transitions){
|
for(Transition transition : transitions){
|
||||||
if (transition.fromState().equals(fromState) && transition.readSymbol().equals(letter)) {
|
if (transition.fromState().equals(fromState) && transition.readSymbol()==(letter)) {
|
||||||
//found new Transition
|
//found new Transition
|
||||||
path.remove(path.size()-1);
|
path.remove(path.size()-1);
|
||||||
return transition.toState();
|
return transition.toState();
|
||||||
|
|
@ -507,7 +507,7 @@ public class NFAImpl implements NFA {
|
||||||
String fromState = path.get(path.size()-1).getElement_2();
|
String fromState = path.get(path.size()-1).getElement_2();
|
||||||
for(Character letter : letters) {
|
for(Character letter : letters) {
|
||||||
for (Transition transition : transitions) {
|
for (Transition transition : transitions) {
|
||||||
if(transition.fromState().equals(fromState)&&transition.readSymbol().equals(letter)){
|
if(transition.fromState().equals(fromState)&&transition.readSymbol()==(letter)){
|
||||||
//found new Transition
|
//found new Transition
|
||||||
if(stateInPath(path, transition.toState())) {
|
if(stateInPath(path, transition.toState())) {
|
||||||
//loop!
|
//loop!
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,9 @@ import ab1.NFAFactory;
|
||||||
import ab1.NFAProvider;
|
import ab1.NFAProvider;
|
||||||
import ab1.Transition;
|
import ab1.Transition;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
import static org.junit.jupiter.api.Assertions.assertFalse;
|
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||||
|
|
||||||
|
|
@ -12,19 +15,94 @@ public class myTests {
|
||||||
private final NFAFactory factory = NFAProvider.provideFactory();
|
private final NFAFactory factory = NFAProvider.provideFactory();
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void intersection1Test() {
|
public void myTest_1() {
|
||||||
var nfaA = buildCharLanguage('a');
|
NFA nfa_nothing_1 = factory.buildNFA("START");
|
||||||
var nfaB = buildCharLanguage('b');
|
nfa_nothing_1.addAcceptingState("START");
|
||||||
|
nfa_nothing_1.finalizeAutomaton();
|
||||||
|
assertTrue(nfa_nothing_1.acceptsWord(""));
|
||||||
|
assertTrue(nfa_nothing_1.isFinite());
|
||||||
|
NFA nfa_everything = nfa_nothing_1.complement();
|
||||||
|
assertFalse(nfa_everything.acceptsWord(""));
|
||||||
|
|
||||||
|
NFA nfa_nothing_2 = factory.buildNFA("START");
|
||||||
|
nfa_nothing_2.addAcceptingState("START");
|
||||||
|
nfa_nothing_2.finalizeAutomaton();
|
||||||
|
NFA nfa_union_1 = nfa_nothing_1.union(nfa_nothing_2);
|
||||||
|
assertTrue(nfa_union_1.acceptsWord(""));
|
||||||
|
assertFalse(nfa_union_1.acceptsWord("a"));
|
||||||
|
assertFalse(nfa_union_1.acceptsWord("aa"));
|
||||||
|
assertFalse(nfa_union_1.acceptsWord("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"));
|
||||||
|
assertFalse(nfa_union_1.acceptsWord("sdafhuwifhcauwnfxuawnehuinfhu"));
|
||||||
|
assertFalse(nfa_union_1.acceptsWord(" "));
|
||||||
|
|
||||||
|
NFA nfa_complete_everything = nfa_nothing_1.union(nfa_everything);
|
||||||
|
assertTrue(nfa_complete_everything.acceptsWord(""));
|
||||||
|
assertTrue(nfa_complete_everything.acceptsWord("a"));
|
||||||
|
assertTrue(nfa_complete_everything.acceptsWord("dsahfuanewqnx"));
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
var testInstance = nfaA.intersection(nfaB);
|
|
||||||
|
|
||||||
assertFalse(testInstance.acceptsWord("a"));
|
|
||||||
assertFalse(testInstance.acceptsWord("b"));
|
|
||||||
assertFalse(testInstance.acceptsWord("ab"));
|
|
||||||
assertFalse(testInstance.acceptsWord("ba"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void myTest_2(){
|
||||||
|
NFA nfa_abcd = factory.buildNFA("START");
|
||||||
|
nfa_abcd.addTransition(new Transition("START", 'a', "1"));
|
||||||
|
nfa_abcd.addTransition(new Transition("START", 'b', "2"));
|
||||||
|
nfa_abcd.addTransition(new Transition("START", 'c', "3"));
|
||||||
|
nfa_abcd.addTransition(new Transition("START", 'd', "4"));
|
||||||
|
nfa_abcd.addTransition(new Transition("1", null, "END"));
|
||||||
|
nfa_abcd.addTransition(new Transition("2", null, "END"));
|
||||||
|
nfa_abcd.addTransition(new Transition("3", null, "END"));
|
||||||
|
nfa_abcd.addTransition(new Transition("4", null, "END"));
|
||||||
|
nfa_abcd.addAcceptingState("END");
|
||||||
|
assertTrue(nfa_abcd.isFinite());
|
||||||
|
nfa_abcd.addTransition(new Transition("3", 'c', "3"));
|
||||||
|
assertFalse(nfa_abcd.isFinite());
|
||||||
|
nfa_abcd.addTransition(new Transition("3", null, "START"));
|
||||||
|
|
||||||
|
NFA nfa_cfg = factory.buildNFA("START");
|
||||||
|
nfa_cfg.addTransition(new Transition("START", 'c', "1"));
|
||||||
|
nfa_cfg.addTransition(new Transition("START", 'f', "2"));
|
||||||
|
nfa_cfg.addTransition(new Transition("START", 'g', "3"));
|
||||||
|
nfa_cfg.addAcceptingState("1");
|
||||||
|
nfa_cfg.addAcceptingState("2");
|
||||||
|
nfa_cfg.addAcceptingState("3");
|
||||||
|
nfa_cfg.addTransition(new Transition("1", null, "START"));
|
||||||
|
|
||||||
|
nfa_abcd.finalizeAutomaton();
|
||||||
|
nfa_cfg.finalizeAutomaton();
|
||||||
|
assertTrue(nfa_cfg.acceptsWord("c"));
|
||||||
|
assertTrue(nfa_cfg.acceptsWord("ccccccccccccccc"));
|
||||||
|
assertTrue(nfa_abcd.acceptsWord("ccccccccccccccccca"));
|
||||||
|
assertTrue(nfa_abcd.acceptsWord("a"));
|
||||||
|
assertFalse(nfa_cfg.acceptsWord("aa"));
|
||||||
|
NFA nfa_interception_1 = nfa_abcd.intersection(nfa_cfg);
|
||||||
|
assertFalse(nfa_interception_1.acceptsWord("cccccccca"));
|
||||||
|
assertFalse(nfa_interception_1.acceptsWord("cccccccca"));
|
||||||
|
assertFalse(nfa_interception_1.acceptsWord("cf"));
|
||||||
|
assertFalse(nfa_interception_1.acceptsWord("d"));
|
||||||
|
assertTrue(nfa_interception_1.acceptsWord("c"));
|
||||||
|
assertTrue(nfa_interception_1.acceptsWord("cccccc"));
|
||||||
|
assertFalse(nfa_interception_1.isFinite());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void myTest_3(){
|
||||||
|
Random random = new Random();
|
||||||
|
NFA nfa = factory.buildNFA("0");
|
||||||
|
|
||||||
|
int i=0;
|
||||||
|
for(i=0;i<10;i++){
|
||||||
|
nfa.addTransition(new Transition(""+i, 'a', ""+(i+1)));
|
||||||
|
nfa.addTransition(new Transition(""+i, 'a', ""+(i+1)));
|
||||||
|
}
|
||||||
|
nfa.addAcceptingState(""+(i+1));
|
||||||
|
assertTrue(nfa.isFinite());
|
||||||
|
|
||||||
|
int random_int = random.nextInt(26);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Reference in a new issue