Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.ArrayList;
- public class Start {
- public static void main(String[] args)
- {
- char startzustand = '0';
- ArrayList<Regeln> regeln = new ArrayList<Regeln>();
- ArrayList<Character> endzustaende = new ArrayList<Character>();
- String wort = "0011";
- int position = 1;
- ArrayList<Character> alphabet = new ArrayList<Character>();
- alphabet.add('0');
- alphabet.add('1');
- regeln.add(new Regeln('0','0','1','X','R'));
- regeln.add(new Regeln('1','0','1','0','R'));
- regeln.add(new Regeln('1','1','2','Y','L'));
- regeln.add(new Regeln('1','Y','1','Y','R'));
- regeln.add(new Regeln('2','0','4','0','L'));
- regeln.add(new Regeln('2','X','3','X','R'));
- regeln.add(new Regeln('2','Y','2','Y','L'));
- regeln.add(new Regeln('3',' ','5',' ','N')); // - für blank
- regeln.add(new Regeln('3','Y','3','Y','R'));
- regeln.add(new Regeln('4','0','4','0','L'));
- regeln.add(new Regeln('4','X','0','X','R'));
- endzustaende.add('5');
- Turing t = new Turing(startzustand,alphabet,regeln,endzustaende,wort,position);
- if(t.pruefeWort())
- {
- System.out.println(wort+ " ist in der Sprache enthalten");
- }
- else
- {
- System.out.println(wort+ " ist in der Sprache nicht enthalten");
- }
- }
- }
- //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- //Nächste Klasse
- //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- import java.util.ArrayList;
- public class Turing
- {
- char aktZustand;
- ArrayList<Regeln> regeln = new ArrayList<Regeln>();
- ArrayList<Character> endzustaende = new ArrayList<Character>();
- ArrayList<Character> alphabet = new ArrayList<Character>();
- char[] wort;
- int position;
- public Turing (char startzustand,ArrayList<Character> alphabet,ArrayList<Regeln> regeln, ArrayList<Character> endzustaende,String wort,int position)
- {
- this.aktZustand = startzustand;
- this.alphabet = alphabet;
- this.regeln = regeln;
- this.endzustaende = endzustaende;
- this.wort = wort.toCharArray();
- this.position = position;
- }
- public boolean pruefeWort()
- {
- //Prüfe ob wort dem Alphabet entspricht
- for(int i = 0; i < wort.length;i++)
- {
- if(!alphabet.contains(wort[i]))
- {
- System.out.println("Ungültiges Zeichen gefunden");
- return false;
- }
- }
- //Wort um die Leerzeichen am Ende und Anfang auffüllen
- wort = (" " + String.valueOf(wort) + " ").toCharArray();
- int regelindex;
- ausgabe();
- while(true)
- {
- regelindex = -1;
- int j;
- for(j =0; j < regeln.size(); j++)
- {
- if(regeln.get(j).match(aktZustand, wort[position]))
- {
- regelindex = j;
- }
- }
- if(regelindex == -1)
- break;
- //Hohlst sich den aktuellen Zustand anhand der aktuellen Regel
- aktZustand = regeln.get(regelindex).nachZustand;
- //Überschreibt das Zeichen anhand der Regel
- wort[position] = regeln.get(regelindex).ausgabeZeichen;
- //Verschiebung der Position
- if(regeln.get(regelindex).verschiebung == 'R')
- {
- position++;
- }
- else if(regeln.get(regelindex).verschiebung == 'L')
- {
- position--;
- }
- ausgabe();
- }//While
- if(endzustaende.contains(aktZustand))
- return true;
- else
- return false;
- }
- private void ausgabe()
- {
- System.out.println("-----------");
- System.out.println("Zustand: \t" + aktZustand);
- System.out.println("Position: \t" + position);
- System.out.print("Band: \t\t");
- for (char c: wort )
- {
- System.out.print(c);
- }
- System.out.println("\r\n");
- }
- }
- //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- //Nächste Klasse
- //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- public class Regeln {
- char zustand;
- char zeichen;
- char nachZustand;
- char ausgabeZeichen;
- char verschiebung;
- public Regeln(char zustand, char zeichen, char nachZustand, char ausgabeZeichen, char verschiebung)
- {
- super();
- this.zustand = zustand;
- this.zeichen = zeichen;
- this.nachZustand = nachZustand;
- this.ausgabeZeichen = ausgabeZeichen;
- this.verschiebung = verschiebung;
- }
- //Methode zur Überprüfung des Zustandens und des Zeichens
- boolean match(char zustand, char zeichen)
- {
- return (this.zustand == zustand) && (this.zeichen == zeichen);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement