Advertisement
Guest User

Untitled

a guest
Feb 26th, 2020
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.98 KB | None | 0 0
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>BF</title>
  6. </head>
  7.  
  8. <body>
  9. <form action="index.php">
  10. <textarea name="textinput" placeholder="Enter bf code here"></textarea><br>
  11. <input type="text" name='text' placeholder="Enter prmtrs here"><br>
  12. <button>g</button>
  13. </form>
  14. </body>
  15.  
  16. </html>
  17.  
  18. <?php
  19. //echo $_REQUEST['text'];
  20.  
  21. $data = $_REQUEST['textinput'] ?? ''; //данные, которые вводим
  22. $params = $_REQUEST['text'] ?? '';
  23. $chain = array(0); //хранение результата
  24. $cell = 0; //текущий элемент
  25.  
  26. $source = str_split($data); //преобразование в массив данных
  27. $params_array = str_split($params);
  28. $index_for_params = 0;
  29. $brackets = 0;
  30.  
  31. //echo count($data_array);
  32.  
  33. for($i=0; $i<count($source); ++$i) {
  34. switch($source[$i]) {
  35. case "+" :
  36. // увеличиваем значение текущей ячейки
  37. $chain[$cell]++;
  38. break;
  39. case "-" :
  40. // уменьшаем значение текущей ячейки
  41. $chain[$cell]--;
  42. break;
  43. case "." :
  44. // выводим символ
  45. print chr($chain[$cell]);
  46. break;
  47. case "," :
  48. // считать символ из STDIN
  49. $chain[$cell] = ord($params_array[$index_for_params++]);
  50. break;
  51. case ">" :
  52. // переход к следующей ячейке
  53. $cell++;
  54. if(!isset($chain[$cell])) {
  55. $chain[$cell] = 0;
  56. }
  57. break;
  58. case "<" :
  59. // переход к предыдущей ячейке
  60. $cell--;
  61. if(!isset($chain[$cell])) {
  62. $chain[$cell] = 0;
  63. }
  64. break;
  65. case "[" :
  66. // начало цикла
  67. if(!$chain[$cell]) {
  68. $brackets = 1;
  69. while($brackets) {
  70. $i++;
  71. if($source[$i] == "[") {
  72. // был открыт вложенный цикл
  73. $brackets++;
  74. } else if($source[$i] == "]") {
  75. // цикл закрыт
  76. $brackets--;
  77. }
  78. }
  79. }
  80. break;
  81. case "]" :
  82. // конец цикла
  83. if($chain[$cell]) {
  84. $brackets = 1;
  85. while($brackets) {
  86. $i--;
  87. if($source[$i] == "]") {
  88. // был закрыт вложенный цикл
  89. $brackets++;
  90. } else if($source[$i] == "[") {
  91. // цикл открыт
  92. $brackets--;
  93. }
  94. }
  95. }
  96. break;
  97. }
  98. }
  99. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement