Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package pl;
- import java.io.*;
- import java.util.*;
- public class lm {
- private static final char[][][] ALL_STATES = {
- //1 //0 E(pusty)
- //co pisze{0,1,E}, stan{0...5}, ruch{L/P/-}
- /*q0*/{{'0','0','L'},{'1','1','-'},{'E','1','L'}},
- /*q1*/{{'1','1','P'},{'0','1','P'},{'E','2','L'}},
- /*q2*/{{'0','2','L'},{'1','3','P'},{'E','2','L'}},
- /*q3*/{{'1','3','P'},{'0','3','P'},{'E','4','L'}},
- /*q4*/{{'0','4','L'},{'1','5','-'},{'E','4','L'}},
- /*q5*/{{'-','5','-'},{'-','5','-'},{'-','5','-'}},
- };
- /**
- * Wymagania ogólne:
- • Program musi wykorzystywać algorytm maszyny Turinga, to znaczy muszą istnieć
- zdefiniowane stany i przejścia między nimi.
- • Oprócz programu należy dołączyć schemat blokowy przedstawiający działanie
- maszyny Turinga oraz tablicę przejść.
- //TODO: • Program musi umożliwiać wprowadzanie przez użytkownika liczby, która ma zostać
- zwiększona o 3.
- • Po zakończeniu działania programu należy wyświetlić po kolei wszystkie stany, przez które
- program przeszedł.
- Wymagania na ocenę 3:
- • Program w wersji konsolowej.
- • W konsoli po każdym wykonanym kroku ma być wyświetlony aktualny stan taśmy i
- zaznaczona pozycja głowicy.
- • W konsoli przy każdym wykonanym kroku ma być wyświetlony stan, w którym aktualnie
- znajduje się maszyna Turinga.
- * @param args
- */
- public static void main(String[] args) {
- List<Character> possibleValues = new ArrayList<Character>(Arrays.asList('1','0','E'));
- int currentValue = 0;
- String testString = "1001E";
- char[] c = testString.toCharArray();
- //String nowyString = testString;
- //char[] n = nowyString.toCharArray();
- //List<String> myList = Arrays.asList(testString);
- char[] actualStateSet = null;
- for(int i = (c.length-1); i >= 0; i--){
- char coPisze;
- char nastepnyStan;
- char kierunek;
- System.out.println(c[i]);
- if(c[i]=='E'){
- //2 kolumna
- actualStateSet = ALL_STATES[currentValue][2];
- } else if (c[i]=='0'){
- //1 kolumna
- actualStateSet = ALL_STATES[currentValue][1];
- } else if (c[i]=='1'){
- //0 kolumna
- actualStateSet = ALL_STATES[currentValue][0];
- }
- coPisze = actualStateSet[0];
- nastepnyStan = actualStateSet[1];
- kierunek = actualStateSet[2];
- //nowyString = coPisze+nowyString;
- currentValue=Character.getNumericValue(nastepnyStan);
- System.out.println("Co pisze: "+coPisze+" nastepnyStan: "+nastepnyStan+" kierunek: "+kierunek);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement