Guest User

Untitled

a guest
Jan 19th, 2018
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.44 KB | None | 0 0
  1. //Поиск используемого алфавита в заданной строке.
  2. //В процессе работы программы генерируемый алфавит будет находится слева и отделяться пустыми символами от строки.
  3. //Результат работы программы - строка из символов, используемых в заданной строке.
  4.  
  5. stop = terminate empty = 0
  6.  
  7. //сдвигаемся в начало заданной строки
  8. [q0]1 -> [q0]L
  9. [q0]2 -> [q0]L
  10. [q0]3 -> [q0]L
  11. [q0]0 -> [i0]R
  12.  
  13. //---------------------------------------вспомогательные переходы--------------------------------------
  14.  
  15. //поиск разделителя алфавита и строки
  16. [findRightDelimiter]1 -> [findRightDelimiter]R
  17. [findRightDelimiter]2 -> [findRightDelimiter]R
  18. [findRightDelimiter]3 -> [findRightDelimiter]R
  19. [findRightDelimiter]0 -> [rightDelimiterIsFound]0
  20.  
  21. //проверка, является ли текущий символ последним в строке
  22. [checkIfLastSymbol]1 -> [notLastSymbol]L
  23. [checkIfLastSymbol]2 -> [notLastSymbol]L
  24. [checkIfLastSymbol]3 -> [notLastSymbol]L
  25. [checkIfLastSymbol]0 -> [lastSymbol]L
  26.  
  27. //поиск следующего символа
  28. [findNextSymbol]0 -> [findNextSymbol]R
  29. [findNextSymbol]1 -> [nextSymbolIsFound]1
  30. [findNextSymbol]2 -> [nextSymbolIsFound]2
  31. [findNextSymbol]3 -> [nextSymbolIsFound]3
  32.  
  33. //поиск генерируемого алфавита
  34. [findAlphabet1]0 -> [findAlphabet1]L
  35. [findAlphabet2]0 -> [findAlphabet2]L
  36. [findAlphabet3]0 -> [findAlphabet3]L
  37. [findAlphabet1]1 -> [alphabetIsFound1]1
  38. [findAlphabet1]2 -> [alphabetIsFound1]2
  39. [findAlphabet1]3 -> [alphabetIsFound1]3
  40. [findAlphabet2]1 -> [alphabetIsFound2]1
  41. [findAlphabet2]2 -> [alphabetIsFound2]2
  42. [findAlphabet2]3 -> [alphabetIsFound2]3
  43. [findAlphabet3]1 -> [alphabetIsFound3]1
  44. [findAlphabet3]2 -> [alphabetIsFound3]2
  45. [findAlphabet3]3 -> [alphabetIsFound3]3
  46.  
  47. //проверка, имеется ли в алфавите текущий символ
  48. [checkIfExists1]1 -> [exists1]1
  49. [checkIfExists1]2 -> [checkIfExists1]L
  50. [checkIfExists1]3 -> [checkIfExists1]L
  51. [checkIfExists1]0 -> [doesNotExist1]0
  52. [checkIfExists2]1 -> [checkIfExists2]L
  53. [checkIfExists2]2 -> [exists2]2
  54. [checkIfExists2]3 -> [checkIfExists2]L
  55. [checkIfExists2]0 -> [doesNotExist2]0
  56. [checkIfExists3]1 -> [checkIfExists3]L
  57. [checkIfExists3]2 -> [checkIfExists3]L
  58. [checkIfExists3]3 -> [exists3]3
  59. [checkIfExists3]0 -> [doesNotExist3]0
  60.  
  61. //последний поиск генерируемого алфавита
  62. [lastFindAlphabet1]0 -> [lastFindAlphabet1]L
  63. [lastFindAlphabet2]0 -> [lastFindAlphabet2]L
  64. [lastFindAlphabet3]0 -> [lastFindAlphabet3]L
  65. [lastFindAlphabet1]1 -> [alphabetIsFoundForLastTime1]1
  66. [lastFindAlphabet1]2 -> [alphabetIsFoundForLastTime1]2
  67. [lastFindAlphabet1]3 -> [alphabetIsFoundForLastTime1]3
  68. [lastFindAlphabet2]1 -> [alphabetIsFoundForLastTime2]1
  69. [lastFindAlphabet2]2 -> [alphabetIsFoundForLastTime2]2
  70. [lastFindAlphabet2]3 -> [alphabetIsFoundForLastTime2]3
  71. [lastFindAlphabet3]1 -> [alphabetIsFoundForLastTime3]1
  72. [lastFindAlphabet3]2 -> [alphabetIsFoundForLastTime3]2
  73. [lastFindAlphabet3]3 -> [alphabetIsFoundForLastTime3]3
  74.  
  75. //последняя проверка, имеется ли в алфавите текущий символ
  76. [lastCheckIfExists1]1 -> [existsForLastTime1]1
  77. [lastCheckIfExists1]2 -> [lastCheckIfExists1]L
  78. [lastCheckIfExists1]3 -> [lastCheckIfExists1]L
  79. [lastCheckIfExists1]0 -> [doesNotExistForLastTime1]0
  80. [lastCheckIfExists2]1 -> [lastCheckIfExists2]L
  81. [lastCheckIfExists2]2 -> [existsForLastTime2]2
  82. [lastCheckIfExists2]3 -> [lastCheckIfExists2]L
  83. [lastCheckIfExists2]0 -> [doesNotExistForLastTime2]0
  84. [lastCheckIfExists3]1 -> [lastCheckIfExists3]L
  85. [lastCheckIfExists3]2 -> [lastCheckIfExists3]L
  86. [lastCheckIfExists3]3 -> [existsForLastTime3]3
  87. [lastCheckIfExists3]0 -> [doesNotExistForLastTime3]0
  88.  
  89.  
  90. //-----------------------------------------------------------------------------------------------------
  91.  
  92. //---------------------------------- основная логика программы ----------------------------------------
  93.  
  94. //инициализация
  95.  
  96. [i0]1 -> [i1]L
  97. [i0]2 -> [i2]L
  98. [i0]3 -> [i3]L
  99. [i1]0 -> [ii1]L
  100. [i2]0 -> [ii2]L
  101. [i3]0 -> [ii3]L
  102. [ii1]0 -> [findRightDelimiter]1
  103. [ii2]0 -> [findRightDelimiter]2
  104. [ii3]0 -> [findRightDelimiter]3
  105.  
  106. //начало цикла
  107. [rightDelimiterIsFound]0 -> [findNextSymbol]R
  108. [nextSymbolIsFound]1 -> [checkIfLastSymbol]R
  109. [nextSymbolIsFound]2 -> [checkIfLastSymbol]R
  110. [nextSymbolIsFound]3 -> [checkIfLastSymbol]R
  111.  
  112. //если символ не последний
  113. [notLastSymbol]1 -> [findAlphabet1]0
  114. [notLastSymbol]2 -> [findAlphabet2]0
  115. [notLastSymbol]3 -> [findAlphabet3]0
  116. [alphabetIsFound1]1 -> [checkIfExists1]1
  117. [alphabetIsFound1]2 -> [checkIfExists1]2
  118. [alphabetIsFound1]3 -> [checkIfExists1]3
  119. [alphabetIsFound2]1 -> [checkIfExists2]1
  120. [alphabetIsFound2]2 -> [checkIfExists2]2
  121. [alphabetIsFound2]3 -> [checkIfExists2]3
  122. [alphabetIsFound3]1 -> [checkIfExists3]1
  123. [alphabetIsFound3]2 -> [checkIfExists3]2
  124. [alphabetIsFound3]3 -> [checkIfExists3]3
  125. [exists1]1 -> [findRightDelimiter]1
  126. [exists2]2 -> [findRightDelimiter]2
  127. [exists3]3 -> [findRightDelimiter]3
  128. [doesNotExist1]0 -> [findRightDelimiter]1
  129. [doesNotExist2]0 -> [findRightDelimiter]2
  130. [doesNotExist3]0 -> [findRightDelimiter]3
  131.  
  132. //конец цикла
  133.  
  134. //если символ последний
  135. [lastSymbol]1 -> [lastFindAlphabet1]0
  136. [lastSymbol]2 -> [lastFindAlphabet2]0
  137. [lastSymbol]3 -> [lastFindAlphabet3]0
  138. [alphabetIsFoundForLastTime1]1 -> [lastCheckIfExists1]1
  139. [alphabetIsFoundForLastTime1]2 -> [lastCheckIfExists1]2
  140. [alphabetIsFoundForLastTime1]3 -> [lastCheckIfExists1]3
  141. [alphabetIsFoundForLastTime2]1 -> [lastCheckIfExists2]1
  142. [alphabetIsFoundForLastTime2]2 -> [lastCheckIfExists2]2
  143. [alphabetIsFoundForLastTime2]3 -> [lastCheckIfExists2]3
  144. [alphabetIsFoundForLastTime3]1 -> [lastCheckIfExists3]1
  145. [alphabetIsFoundForLastTime3]2 -> [lastCheckIfExists3]2
  146. [alphabetIsFoundForLastTime3]3 -> [lastCheckIfExists3]3
  147. [existsForLastTime1]1 -> [terminate]1
  148. [existsForLastTime2]2 -> [terminate]2
  149. [existsForLastTime3]3 -> [terminate]3
  150. [doesNotExistForLastTime1]0 -> [terminate]1
  151. [doesNotExistForLastTime2]0 -> [terminate]2
  152. [doesNotExistForLastTime3]0 -> [terminate]3
  153.  
  154. //-----------------------------------------------------------------------------------------------------
Add Comment
Please, Sign In to add comment