Advertisement
Guest User

Untitled

a guest
Dec 4th, 2016
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.53 KB | None | 0 0
  1. package pl;
  2.  
  3. import java.io.*;
  4. import java.util.*;
  5.  
  6. public class lm {
  7. private static final char[][][] ALL_STATES = {
  8. //1 //0 E(pusty)
  9. //co pisze{0,1,E}, stan{0...5}, ruch{L/P/-}
  10. /*q0*/{{'0','0','L'},{'1','1','-'},{'E','1','L'}},
  11. /*q1*/{{'1','1','P'},{'0','1','P'},{'E','2','L'}},
  12. /*q2*/{{'0','2','L'},{'1','3','P'},{'E','2','L'}},
  13. /*q3*/{{'1','3','P'},{'0','3','P'},{'E','4','L'}},
  14. /*q4*/{{'0','4','L'},{'1','5','-'},{'E','4','L'}},
  15. /*q5*/{{'-','5','-'},{'-','5','-'},{'-','5','-'}},
  16. };
  17. /**
  18. * Wymagania ogólne:
  19. • Program musi wykorzystywać algorytm maszyny Turinga, to znaczy muszą istnieć
  20. zdefiniowane stany i przejścia między nimi.
  21. • Oprócz programu należy dołączyć schemat blokowy przedstawiający działanie
  22. maszyny Turinga oraz tablicę przejść.
  23. //TODO: • Program musi umożliwiać wprowadzanie przez użytkownika liczby, która ma zostać
  24. zwiększona o 3.
  25. • Po zakończeniu działania programu należy wyświetlić po kolei wszystkie stany, przez które
  26. program przeszedł.
  27.  
  28.  
  29. Wymagania na ocenę 3:
  30. • Program w wersji konsolowej.
  31. • W konsoli po każdym wykonanym kroku ma być wyświetlony aktualny stan taśmy i
  32. zaznaczona pozycja głowicy.
  33. • W konsoli przy każdym wykonanym kroku ma być wyświetlony stan, w którym aktualnie
  34. znajduje się maszyna Turinga.
  35. * @param args
  36. */
  37. public static void main(String[] args) {
  38. List<Character> possibleValues = new ArrayList<Character>(Arrays.asList('1','0','E'));
  39. int currentValue = 0;
  40.  
  41. String testString = "1001E";
  42. char[] c = testString.toCharArray();
  43. //String nowyString = testString;
  44. //char[] n = nowyString.toCharArray();
  45.  
  46. //List<String> myList = Arrays.asList(testString);
  47.  
  48. char[] actualStateSet = null;
  49. for(int i = (c.length-1); i >= 0; i--){
  50. char coPisze;
  51. char nastepnyStan;
  52. char kierunek;
  53. System.out.println(c[i]);
  54. if(c[i]=='E'){
  55. //2 kolumna
  56. actualStateSet = ALL_STATES[currentValue][2];
  57. } else if (c[i]=='0'){
  58. //1 kolumna
  59. actualStateSet = ALL_STATES[currentValue][1];
  60. } else if (c[i]=='1'){
  61. //0 kolumna
  62. actualStateSet = ALL_STATES[currentValue][0];
  63. }
  64. coPisze = actualStateSet[0];
  65. nastepnyStan = actualStateSet[1];
  66. kierunek = actualStateSet[2];
  67. //nowyString = coPisze+nowyString;
  68. currentValue=Character.getNumericValue(nastepnyStan);
  69. System.out.println("Co pisze: "+coPisze+" nastepnyStan: "+nastepnyStan+" kierunek: "+kierunek);
  70. }
  71. }
  72. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement