diff options
author | Leonard Kugis <leonard@kug.is> | 2022-04-25 18:04:14 +0200 |
---|---|---|
committer | Leonard Kugis <leonard@kug.is> | 2022-04-25 18:04:14 +0200 |
commit | c3973f2ade85ab9daea3435d22656097dd300602 (patch) | |
tree | fe428591f20c27df4f3e1ac34d365d49b2ff60a0 /src/com/encrox/automaten/Core.java |
Diffstat (limited to 'src/com/encrox/automaten/Core.java')
-rwxr-xr-x | src/com/encrox/automaten/Core.java | 262 |
1 files changed, 262 insertions, 0 deletions
diff --git a/src/com/encrox/automaten/Core.java b/src/com/encrox/automaten/Core.java new file mode 100755 index 0000000..3ec994f --- /dev/null +++ b/src/com/encrox/automaten/Core.java @@ -0,0 +1,262 @@ +package com.encrox.automaten;
+
+public class Core {
+
+ public static void main(String args[]) {
+ System.out.println(isOkNormal("z"));
+ System.out.println(isOk("z"));
+ }
+
+ public static boolean isOkNormal(String str) {
+ boolean out = false;
+ char current;
+ Schlange schlange = new Schlange();
+ for(int i = 0, len = str.length(); i<len; i++) {
+ schlange.anhaengen(str.charAt(i));
+ }
+ current = (char)schlange.entnehmen();
+ if(current == 'z') {
+ out = true;
+ if(!schlange.istLeer()) {
+ current = (char)schlange.entnehmen();
+ if(current == 'e') {
+ out = false;
+ if(!schlange.istLeer()) {
+ current = (char)schlange.entnehmen();
+ if(current == 'z') {
+ out = true;
+ while(!schlange.istLeer()) {
+ current = (char)schlange.entnehmen();
+ if(current != '0' && current != 'z')
+ out = false;
+ }
+ } else if(current == '-') {
+ if(!schlange.istLeer()) {
+ current = (char)schlange.entnehmen();
+ if(current == 'z') {
+ out = true;
+ while(!schlange.istLeer()) {
+ current = (char)schlange.entnehmen();
+ if(current != '0' && current != 'z')
+ out = false;
+ }
+ }
+ }
+ }
+ }
+ } else if(current == 'k') {
+ out = false;
+ while(!schlange.istLeer()) {
+ current = (char)schlange.entnehmen();
+ if(current == 'z') {
+ out = true;
+ } else if(current == '0') {
+ out = false;
+ } else if(current == 'e') {
+ out = false;
+ out = false;
+ if(!schlange.istLeer()) {
+ current = (char)schlange.entnehmen();
+ if(current == 'z') {
+ out = true;
+ while(!schlange.istLeer()) {
+ current = (char)schlange.entnehmen();
+ if(current != '0' && current != 'z')
+ out = false;
+ }
+ } else if(current == '-') {
+ if(!schlange.istLeer()) {
+ current = (char)schlange.entnehmen();
+ if(current == 'z') {
+ out = true;
+ while(!schlange.istLeer()) {
+ current = (char)schlange.entnehmen();
+ if(current != '0' && current != 'z')
+ out = false;
+ }
+ }
+ }
+ }
+ }
+ break;
+ }
+ }
+ }
+ }
+ } else if(current == '-') {
+ if(!schlange.istLeer()) {
+ current = (char)schlange.entnehmen();
+ if(current == 'z') {
+ out = true;
+ if(!schlange.istLeer()) {
+ current = (char)schlange.entnehmen();
+ if(current == 'e') {
+ out = false;
+ if(!schlange.istLeer()) {
+ current = (char)schlange.entnehmen();
+ if(current == 'z') {
+ out = true;
+ while(!schlange.istLeer()) {
+ current = (char)schlange.entnehmen();
+ if(current != '0' && current != 'z')
+ out = false;
+ }
+ } else if(current == '-') {
+ if(!schlange.istLeer()) {
+ current = (char)schlange.entnehmen();
+ if(current == 'z') {
+ out = true;
+ while(!schlange.istLeer()) {
+ current = (char)schlange.entnehmen();
+ if(current != '0' && current != 'z')
+ out = false;
+ }
+ }
+ }
+ }
+ }
+ } else if(current == 'k') {
+ out = false;
+ while(!schlange.istLeer()) {
+ current = (char)schlange.entnehmen();
+ if(current == 'z') {
+ out = true;
+ } else if(current == '0') {
+ out = false;
+ } else if(current == 'e') {
+ out = false;
+ out = false;
+ if(!schlange.istLeer()) {
+ current = (char)schlange.entnehmen();
+ if(current == 'z') {
+ out = true;
+ while(!schlange.istLeer()) {
+ current = (char)schlange.entnehmen();
+ if(current != '0' && current != 'z')
+ out = false;
+ }
+ } else if(current == '-') {
+ if(!schlange.istLeer()) {
+ current = (char)schlange.entnehmen();
+ if(current == 'z') {
+ out = true;
+ while(!schlange.istLeer()) {
+ current = (char)schlange.entnehmen();
+ if(current != '0' && current != 'z')
+ out = false;
+ }
+ }
+ }
+ }
+ }
+ break;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ return out;
+ }
+
+ public static boolean isOk(String str) {
+ Schlange schlange = new Schlange();
+ for(int i = 0, len = str.length(); i<len; i++) {
+ schlange.anhaengen(str.charAt(i));
+ }
+ char c = (char)schlange.entnehmen();
+ if(c == '-') {
+ return a(schlange);
+ } else if(c == 'z') {
+ return b(schlange);
+ } else {
+ return false;
+ }
+ }
+
+ public static boolean a(Schlange schlange) {
+ if(!schlange.istLeer()) {
+ if((char)schlange.entnehmen() == 'z') {
+ return b(schlange);
+ }
+ }
+ return false;
+ }
+
+ public static boolean b(Schlange schlange) {
+ if(!schlange.istLeer()) {
+ char c = (char)schlange.entnehmen();
+ if(c == 'e') {
+ return e(schlange);
+ } else if(c == 'k') {
+ return c(schlange);
+ } else {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public static boolean c(Schlange schlange) {
+ if(!schlange.istLeer()) {
+ char c = (char)schlange.entnehmen();
+ if(c == '0') {
+ return c(schlange);
+ } else if(c == 'z') {
+ return f(schlange);
+ }
+ }
+ return false;
+ }
+
+ public static boolean f(Schlange schlange) {
+ if(!schlange.istLeer()) {
+ char c = (char)schlange.entnehmen();
+ if(c == 'z') {
+ return f(schlange);
+ } else if(c == '0') {
+ return c(schlange);
+ } else if(c == 'e') {
+ return e(schlange);
+ } else {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public static boolean e(Schlange schlange) {
+ if(!schlange.istLeer()) {
+ char c = (char)schlange.entnehmen();
+ if(c == 'z') {
+ return h(schlange);
+ } else if(c == '-') {
+ return g(schlange);
+ }
+ }
+ return false;
+ }
+
+ public static boolean g(Schlange schlange) {
+ if(!schlange.istLeer()) {
+ if((char)schlange.entnehmen() == 'z') {
+ return h(schlange);
+ }
+ }
+ return false;
+ }
+
+ public static boolean h(Schlange schlange) {
+ if(!schlange.istLeer()) {
+ char c = (char)schlange.entnehmen();
+ if(c == '0' || c == 'z') {
+ return h(schlange);
+ } else {
+ return false;
+ }
+ }
+ return true;
+ }
+
+}
|