fork download
  1. #include <iostream>
  2. #include <string>
  3. #include <vector>
  4. #include <stack>
  5. #include <stdint.h>
  6. using namespace std;
  7.  
  8. int main() {
  9. vector<uint8_t> mem(30000,0);
  10. stack<int> branchStack;
  11. string src;
  12.  
  13. cin >> src;
  14.  
  15. int ptr = 0;
  16. int pc = 0;
  17. for(pc = 0; pc < src.length() ; ++pc) {
  18. // cout << pc << ":" << src[pc] << endl;
  19. switch(src[pc]) {
  20. case '+':
  21. mem[ptr]++;
  22. break;
  23. case '-':
  24. mem[ptr]--;
  25. break;
  26. case '>':
  27. ptr++;
  28. break;
  29. case '<':
  30. ptr--;
  31. break;
  32. case ',':
  33. cin >> mem[ptr];
  34. break;
  35. case '.':
  36. cout << (char)mem[ptr];
  37. break;
  38. case '[':
  39. if (mem[ptr]) {
  40. branchStack.push(pc - 1);
  41. } else {
  42. for(int nest = 1 ; nest > 0 && pc < src.length() - 1 ; ++pc) {
  43. switch(src[pc + 1]) {
  44. case '[':
  45. nest++;
  46. break;
  47. case ']':
  48. nest--;
  49. break;
  50. }
  51. }
  52. }
  53. break;
  54. case ']':
  55. pc = branchStack.top();
  56. branchStack.pop();
  57. break;
  58. }
  59. }
  60. return 0;
  61. }
Success #stdin #stdout 0s 15240KB
stdin
>+++++++++[<++++++++>-]<.>+++++++[<++++>-]<+.+++++++..+++.[-]>++++++++[<++++>-]<.>+++++++++++[<+++++>-]<.>++++++++[<+++>-]<.+++.------.--------.[-]>++++++++[<++++>-]<+.[-]++++++++++.
stdout
Hello World!