fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. typedef pair<int, int> pii;
  5. pii body;
  6. int dir;
  7.  
  8. void left()
  9. {
  10. dir = (dir + 3)%4;
  11. }
  12.  
  13. void right()
  14. {
  15. left();
  16. left();
  17. left();
  18. }
  19.  
  20. void about()
  21. {
  22. left();
  23. left();
  24. }
  25.  
  26. void forward()
  27. {
  28. if(dir == 0)
  29. --body.first;
  30. else if(dir == 1)
  31. ++body.second;
  32. else if(dir == 2)
  33. ++body.first;
  34. else
  35. --body.second;
  36. }
  37.  
  38. void print(vector<string> &v)
  39. {
  40. int bi, bj;
  41. tie(bi, bj) = body;
  42. if(dir%2 == 0)
  43. {
  44. v[bi][bj] = '-';
  45. v[bi][bj-1] = '\\';
  46. v[bi][bj+1] = '/';
  47.  
  48. if(dir == 2)
  49. swap(v[bi][bj-1], v[bi][bj+1]);
  50. }
  51. else
  52. {
  53. v[bi][bj] = '|';
  54. v[bi-1][bj] = '\\';
  55. v[bi+1][bj] = '/';
  56.  
  57. if(dir == 1)
  58. swap(v[bi-1][bj], v[bi+1][bj]);
  59. }
  60.  
  61. for(int i = 0; i < v.size(); ++i)
  62. cout << v[i] << endl;
  63.  
  64. }
  65.  
  66. int main()
  67. {
  68. ios_base::sync_with_stdio(false);
  69. cin.tie(0);
  70. cout.tie(0);
  71.  
  72. int n, m, k;
  73. cin >> n >> m >> k;
  74.  
  75. vector<string> v(n);
  76.  
  77. for(int i = 0; i < n; ++i)
  78. {
  79. cin >> v[i];
  80.  
  81. for(int j = 0; j < m; ++j)
  82. {
  83. if(v[i][j] == '-')
  84. {
  85. body = make_pair(i, j);
  86. if(v[i][j-1] == '\\')
  87. dir = 0;
  88. else
  89. dir = 2;
  90.  
  91. }
  92.  
  93. else if(v[i][j] == '|')
  94. {
  95. body = make_pair(i, j);
  96. if(v[i-1][j] == '\\')
  97. dir = 3;
  98. else
  99. dir = 1;
  100.  
  101. }
  102.  
  103. }
  104. }
  105.  
  106. string clean(m, '.');
  107. for(int i = 0; i < n; ++i)
  108. v[i] = clean;
  109.  
  110. for(int i = 0; i < n; ++i)
  111. cout << v[i] << endl;
  112.  
  113. while(k--)
  114. {
  115. string cmd, dummy;
  116. cin >> cmd >> dummy;
  117.  
  118. if(cmd[0] == 'L')
  119. left();
  120. else if(cmd[0] == 'R')
  121. right();
  122. else if(cmd[0] == 'A')
  123. about();
  124. else
  125. forward();
  126.  
  127. }
  128.  
  129. print(v);
  130.  
  131. }
Success #stdin #stdout 0s 4468KB
stdin
4 7 4
.......
....\..
....|..
..../..
F a
A a
A a
F a
stdout
.......
.......
.......
.......
.......
..\....
..|....
../....