fork download
  1. #include <memory>
  2. #include <vector>
  3. #include <iostream>
  4.  
  5. template<typename Map_, typename CanGo_>
  6. class Sheeker
  7. {
  8. private:
  9. using Dir_ = typename Map_::Direction;
  10.  
  11. private:
  12. std::unique_ptr<Map_> map;
  13. Dir_ dir;
  14. public:
  15. Sheeker(const Map_& map, Dir_ InitDir)
  16. : dir(InitDir), map(std::make_unique<Map_>(map))
  17. {}
  18.  
  19. ~Sheeker() {}
  20.  
  21. Sheeker(const Sheeker& o)
  22. : dir(o.dir), map(std::make_unique<Map_>(*(o.map)))
  23. {}
  24.  
  25. Sheeker& operator= (const Sheeker& o)
  26. {
  27. this->map = std::make_unique<Map_>(*(o.map));
  28. this->dir = o.dir;
  29. return *this;
  30. }
  31.  
  32. public:
  33. bool isGoal() const
  34. {
  35. std::cout << "dirs: " << (int)this->dir << std::endl;
  36. return this->map->isGoal();
  37. }
  38.  
  39. std::vector<Dir_> getCandidateNext() const
  40. {
  41. std::vector<Dir_> ds;
  42. for (auto&& d : this->map->getCandidateNext()) {
  43. if (CanGo_::canGo(this->dir, d)) {
  44. ds.push_back(d);
  45. }
  46. }
  47. return ds;
  48. }
  49.  
  50. void goToNext(Dir_ dir_) {
  51. this->dir = dir_;
  52. this->map->goToNext(dir_);
  53. }
  54.  
  55. };
  56.  
  57.  
  58. class Map01
  59. {
  60. public:
  61. enum struct Direction : int
  62. {
  63. North = 0,
  64. West,
  65. Sourth,
  66. East
  67. };
  68.  
  69. private:
  70. using Directions = std::vector<Direction, std::allocator<Direction>>;
  71.  
  72. public:
  73. Map01(size_t sizeX, size_t sizeY);
  74. ~Map01();
  75. Map01(const Map01& o);
  76. Map01& operator= (const Map01& o);
  77.  
  78. public:
  79. bool isGoal() const;
  80. Directions getCandidateNext() const;
  81. void goToNext(Direction nextDirection);
  82.  
  83. private:
  84. class Impliment;
  85. std::unique_ptr<Impliment> pImpl;
  86. };
  87.  
  88. class Map01::Impliment
  89. {
  90. private:
  91. size_t m_sizeX, m_sizeY;
  92. size_t m_currentX, m_currentY;
  93.  
  94. std::vector<std::vector<bool>> NS;
  95. std::vector<std::vector<bool>> EW;
  96.  
  97. public:
  98. Impliment(size_t sizeX, size_t sizeY);
  99.  
  100. public:
  101. bool isGoal() const;
  102. Directions getCandidateNext() const;
  103. void goToNext(Direction nextDirection);
  104. };
  105.  
  106. /*
  107.  
  108. Map01::Impliment
  109.  
  110. */
  111.  
  112. Map01::Impliment::Impliment(size_t sizeX, size_t sizeY)
  113. : m_sizeX(sizeX), m_sizeY(sizeY), m_currentX(0), m_currentY(0),
  114. NS(sizeX + 1, std::vector<bool>(sizeY, true)),
  115. EW(sizeX, std::vector<bool>(sizeY + 1, true))
  116. {
  117. }
  118.  
  119. bool Map01::Impliment::isGoal() const
  120. {
  121. std::cout << this->m_currentX << ", " << this->m_currentY << std::endl;
  122. return (this->m_currentX == this->m_sizeX) && (this->m_currentY == this->m_sizeY);
  123. }
  124.  
  125. Map01::Directions Map01::Impliment::getCandidateNext() const
  126. {
  127. Directions dirs;
  128. if (this->m_currentX != 0) {
  129. if (this->EW[this->m_currentX - 1][this->m_currentY]) dirs.push_back(Map01::Direction::West);
  130. }
  131. if (this->m_currentX != this->m_sizeX) {
  132. if (this->EW[this->m_currentX][this->m_currentY]) dirs.push_back(Map01::Direction::East);
  133. }
  134. if (this->m_currentY != 0) {
  135. if (this->NS[this->m_currentX][this->m_currentY - 1]) dirs.push_back(Map01::Direction::Sourth);
  136. }
  137. if (this->m_currentY != this->m_sizeY) {
  138. if (this->NS[this->m_currentX][this->m_currentY]) dirs.push_back(Map01::Direction::North);
  139. }
  140. for (auto&& d : dirs) {
  141. std::cout << static_cast<int>(d) << std::endl;
  142. }
  143.  
  144. return dirs;
  145. }
  146.  
  147. void Map01::Impliment::goToNext(Direction nextDirection)
  148. {
  149. switch (nextDirection)
  150. {
  151. case Map01::Direction::North:
  152. this->NS[this->m_currentX][this->m_currentY] = false;
  153. ++(this->m_currentY);
  154. break;
  155. case Map01::Direction::West:
  156. --(this->m_currentX);
  157. this->EW[this->m_currentX][this->m_currentY] = false;
  158. break;
  159. case Map01::Direction::Sourth:
  160. --(this->m_currentY);
  161. this->NS[this->m_currentX][this->m_currentY] = false;
  162. break;
  163. case Map01::Direction::East:
  164. this->EW[this->m_currentX][this->m_currentY] = false;
  165. ++(this->m_currentX);
  166. break;
  167. default:
  168. break;
  169. }
  170. }
  171.  
  172. /*
  173.  
  174. Map01
  175.  
  176. */
  177.  
  178. Map01::Map01(size_t sizeX, size_t sizeY)
  179. : pImpl(std::make_unique<Impliment>(sizeX, sizeY))
  180. {
  181. }
  182.  
  183.  
  184. Map01::~Map01()
  185. {
  186. }
  187.  
  188. Map01::Map01(const Map01& o)
  189. : pImpl(std::make_unique<Impliment>(*(o.pImpl)))
  190. {
  191. }
  192.  
  193. Map01& Map01::operator= (const Map01& o)
  194. {
  195. this->pImpl = std::make_unique<Impliment>(*(o.pImpl));
  196. return *this;
  197. }
  198.  
  199. bool Map01::isGoal() const
  200. {
  201. return this->pImpl->isGoal();
  202. }
  203.  
  204. Map01::Directions Map01::getCandidateNext() const
  205. {
  206. return this->pImpl->getCandidateNext();
  207. }
  208.  
  209. void Map01::goToNext(Direction nextDirection)
  210. {
  211. this->pImpl->goToNext(nextDirection);
  212. }
  213.  
  214. #include <stack>
  215. #include <iostream>
  216.  
  217. class AllOk
  218. {
  219. public:
  220. static bool canGo(const Map01::Direction& myDir, const Map01::Direction& nextDir)
  221. {
  222. return true;
  223. }
  224. };
  225.  
  226. class MigiDame
  227. {
  228. public:
  229. static bool canGo(const Map01::Direction& myDir, const Map01::Direction& nextDir)
  230. {
  231. Map01::Direction tmp;
  232. switch (myDir)
  233. {
  234. case Map01::Direction::North:
  235. tmp = Map01::Direction::West;
  236. break;
  237. case Map01::Direction::West:
  238. tmp = Map01::Direction::Sourth;
  239. break;
  240. case Map01::Direction::Sourth:
  241. tmp = Map01::Direction::East;
  242. break;
  243. case Map01::Direction::East:
  244. tmp = Map01::Direction::North;
  245. break;
  246. }
  247.  
  248. if (myDir == nextDir) {
  249. return true;
  250. }
  251. else if (tmp == nextDir) {
  252. return true;
  253. }
  254. else {
  255. false;
  256. }
  257. }
  258. };
  259.  
  260. int main()
  261. {
  262. Map01 map(3,2);
  263. std::stack<Sheeker<Map01, MigiDame>> sheekers;
  264. sheekers.emplace(map, Map01::Direction::East);
  265.  
  266. size_t num = 0;
  267.  
  268. while (!sheekers.empty())
  269. {
  270. Sheeker<Map01, MigiDame> s = sheekers.top();
  271. sheekers.pop();
  272.  
  273. if (s.isGoal()) {
  274. ++num;
  275. }
  276. else {
  277. for (auto&& d : s.getCandidateNext())
  278. {
  279. sheekers.emplace(s);
  280. sheekers.top().goToNext(d);
  281. }
  282. }
  283. }
  284.  
  285. std::cout << num << std::endl;
  286. system("pause");
  287. return 0;
  288. }
  289.  
  290.  
  291.  
  292.  
Success #stdin #stdout #stderr 0.01s 4552KB
stdin
Standard input is empty
stdout
dirs: 3
0, 0
3
0
dirs: 0
0, 1
3
0
dirs: 0
0, 2
3
dirs: 3
1, 2
3
2
dirs: 2
1, 1
1
3
2
dirs: 2
1, 0
1
3
dirs: 3
2, 0
3
0
dirs: 0
2, 1
1
3
0
dirs: 0
2, 2
1
3
dirs: 3
3, 2
dirs: 1
1, 2
dirs: 3
3, 1
2
0
dirs: 0
3, 2
dirs: 2
3, 0
1
dirs: 1
2, 0
dirs: 1
1, 1
1
dirs: 1
0, 1
dirs: 3
3, 0
0
dirs: 0
3, 1
1
0
dirs: 0
3, 2
dirs: 1
2, 1
1
2
0
dirs: 0
2, 2
1
3
dirs: 3
3, 2
dirs: 1
1, 2
dirs: 2
2, 0
dirs: 1
1, 1
1
dirs: 1
0, 1
dirs: 1
0, 0
dirs: 3
2, 1
3
2
0
dirs: 0
2, 2
1
3
dirs: 3
3, 2
dirs: 1
1, 2
dirs: 2
2, 0
1
3
dirs: 3
3, 0
0
dirs: 0
3, 1
1
0
dirs: 0
3, 2
dirs: 1
2, 1
0
dirs: 0
2, 2
1
3
dirs: 3
3, 2
dirs: 1
1, 2
dirs: 1
1, 0
1
0
dirs: 0
1, 1
1
dirs: 1
0, 1
dirs: 1
0, 0
dirs: 3
3, 1
2
0
dirs: 0
3, 2
dirs: 2
3, 0
1
dirs: 1
2, 0
1
0
dirs: 0
2, 1
0
dirs: 0
2, 2
1
3
dirs: 3
3, 2
dirs: 1
1, 2
dirs: 1
1, 0
1
0
dirs: 0
1, 1
1
dirs: 1
0, 1
dirs: 1
0, 0
dirs: 1
0, 1
dirs: 3
2, 2
3
2
dirs: 2
2, 1
1
3
2
dirs: 2
2, 0
1
3
dirs: 3
3, 0
0
dirs: 0
3, 1
1
0
dirs: 0
3, 2
dirs: 1
2, 1
1
dirs: 1
1, 1
1
2
0
dirs: 0
1, 2
dirs: 2
1, 0
1
3
dirs: 3
2, 0
dirs: 1
0, 0
dirs: 1
0, 1
dirs: 1
1, 0
1
0
dirs: 0
1, 1
1
3
0
dirs: 0
1, 2
dirs: 3
2, 1
3
dirs: 3
3, 1
2
0
dirs: 0
3, 2
dirs: 2
3, 0
1
dirs: 1
2, 0
dirs: 1
0, 1
dirs: 1
0, 0
dirs: 3
3, 1
2
0
dirs: 0
3, 2
dirs: 2
3, 0
1
dirs: 1
2, 0
1
0
dirs: 0
2, 1
1
dirs: 1
1, 1
1
2
0
dirs: 0
1, 2
dirs: 2
1, 0
1
3
dirs: 3
2, 0
dirs: 1
0, 0
dirs: 1
0, 1
dirs: 1
1, 0
1
0
dirs: 0
1, 1
1
3
0
dirs: 0
1, 2
dirs: 3
2, 1
2
dirs: 2
2, 0
dirs: 1
0, 1
dirs: 1
0, 0
dirs: 1
1, 1
1
2
0
dirs: 0
1, 2
dirs: 2
1, 0
1
3
dirs: 3
2, 0
3
0
dirs: 0
2, 1
3
dirs: 3
3, 1
2
0
dirs: 0
3, 2
dirs: 2
3, 0
1
dirs: 1
2, 0
dirs: 3
3, 0
0
dirs: 0
3, 1
1
0
dirs: 0
3, 2
dirs: 1
2, 1
2
dirs: 2
2, 0
dirs: 1
0, 0
dirs: 1
0, 1
dirs: 3
3, 2
dirs: 3
1, 1
3
2
0
dirs: 0
1, 2
1
3
dirs: 3
2, 2
3
2
dirs: 2
2, 1
1
3
2
dirs: 2
2, 0
1
3
dirs: 3
3, 0
0
dirs: 0
3, 1
1
0
dirs: 0
3, 2
dirs: 1
2, 1
1
dirs: 1
1, 1
2
dirs: 2
1, 0
1
3
dirs: 3
2, 0
dirs: 1
0, 0
dirs: 1
1, 0
1
0
dirs: 0
1, 1
3
dirs: 3
2, 1
3
dirs: 3
3, 1
2
0
dirs: 0
3, 2
dirs: 2
3, 0
1
dirs: 1
2, 0
dirs: 1
0, 0
dirs: 3
3, 1
2
0
dirs: 0
3, 2
dirs: 2
3, 0
1
dirs: 1
2, 0
1
0
dirs: 0
2, 1
1
dirs: 1
1, 1
2
dirs: 2
1, 0
1
3
dirs: 3
2, 0
dirs: 1
0, 0
dirs: 1
1, 0
1
0
dirs: 0
1, 1
3
dirs: 3
2, 1
2
dirs: 2
2, 0
dirs: 1
0, 0
dirs: 1
1, 1
2
dirs: 2
1, 0
1
3
dirs: 3
2, 0
3
0
dirs: 0
2, 1
3
dirs: 3
3, 1
2
0
dirs: 0
3, 2
dirs: 2
3, 0
1
dirs: 1
2, 0
dirs: 3
3, 0
0
dirs: 0
3, 1
1
0
dirs: 0
3, 2
dirs: 1
2, 1
2
dirs: 2
2, 0
dirs: 1
0, 0
dirs: 3
3, 2
dirs: 1
0, 2
2
dirs: 2
0, 1
dirs: 2
1, 0
1
3
dirs: 3
2, 0
3
0
dirs: 0
2, 1
1
3
0
dirs: 0
2, 2
1
3
dirs: 3
3, 2
dirs: 1
1, 2
1
2
dirs: 2
1, 1
3
dirs: 3
2, 1
3
dirs: 3
3, 1
2
0
dirs: 0
3, 2
dirs: 2
3, 0
1
dirs: 1
2, 0
dirs: 1
0, 2
2
dirs: 2
0, 1
dirs: 3
3, 1
2
0
dirs: 0
3, 2
dirs: 2
3, 0
1
dirs: 1
2, 0
dirs: 1
1, 1
0
dirs: 0
1, 2
1
3
dirs: 3
2, 2
3
2
dirs: 2
2, 1
3
dirs: 3
3, 1
2
0
dirs: 0
3, 2
dirs: 2
3, 0
1
dirs: 1
2, 0
dirs: 3
3, 2
dirs: 1
0, 2
2
dirs: 2
0, 1
dirs: 3
3, 0
0
dirs: 0
3, 1
1
0
dirs: 0
3, 2
dirs: 1
2, 1
1
2
0
dirs: 0
2, 2
1
3
dirs: 3
3, 2
dirs: 1
1, 2
1
2
dirs: 2
1, 1
3
dirs: 3
2, 1
2
dirs: 2
2, 0
dirs: 1
0, 2
2
dirs: 2
0, 1
dirs: 2
2, 0
dirs: 1
1, 1
0
dirs: 0
1, 2
1
3
dirs: 3
2, 2
3
2
dirs: 2
2, 1
2
dirs: 2
2, 0
dirs: 3
3, 2
dirs: 1
0, 2
2
dirs: 2
0, 1
dirs: 1
0, 0
dirs: 3
2, 1
3
2
0
dirs: 0
2, 2
1
3
dirs: 3
3, 2
dirs: 1
1, 2
1
2
dirs: 2
1, 1
2
dirs: 2
1, 0
1
3
dirs: 3
2, 0
3
0
dirs: 0
2, 1
3
dirs: 3
3, 1
2
0
dirs: 0
3, 2
dirs: 2
3, 0
1
dirs: 1
2, 0
dirs: 3
3, 0
0
dirs: 0
3, 1
1
0
dirs: 0
3, 2
dirs: 1
2, 1
2
dirs: 2
2, 0
dirs: 1
0, 0
dirs: 1
0, 2
2
dirs: 2
0, 1
dirs: 2
2, 0
1
3
dirs: 3
3, 0
0
dirs: 0
3, 1
1
0
dirs: 0
3, 2
dirs: 1
2, 1
0
dirs: 0
2, 2
1
3
dirs: 3
3, 2
dirs: 1
1, 2
1
2
dirs: 2
1, 1
2
dirs: 2
1, 0
1
3
dirs: 3
2, 0
dirs: 1
0, 0
dirs: 1
0, 2
2
dirs: 2
0, 1
dirs: 1
1, 0
1
0
dirs: 0
1, 1
0
dirs: 0
1, 2
1
3
dirs: 3
2, 2
3
2
dirs: 2
2, 1
3
dirs: 3
3, 1
2
0
dirs: 0
3, 2
dirs: 2
3, 0
1
dirs: 1
2, 0
dirs: 3
3, 2
dirs: 1
0, 2
2
dirs: 2
0, 1
dirs: 1
0, 0
dirs: 3
3, 1
2
0
dirs: 0
3, 2
dirs: 2
3, 0
1
dirs: 1
2, 0
1
0
dirs: 0
2, 1
0
dirs: 0
2, 2
1
3
dirs: 3
3, 2
dirs: 1
1, 2
1
2
dirs: 2
1, 1
2
dirs: 2
1, 0
1
3
dirs: 3
2, 0
dirs: 1
0, 0
dirs: 1
0, 2
2
dirs: 2
0, 1
dirs: 1
1, 0
1
0
dirs: 0
1, 1
0
dirs: 0
1, 2
1
3
dirs: 3
2, 2
3
2
dirs: 2
2, 1
2
dirs: 2
2, 0
dirs: 3
3, 2
dirs: 1
0, 2
2
dirs: 2
0, 1
dirs: 1
0, 0
dirs: 3
1, 0
3
0
dirs: 0
1, 1
1
3
0
dirs: 0
1, 2
1
3
dirs: 3
2, 2
3
2
dirs: 2
2, 1
1
3
2
dirs: 2
2, 0
1
3
dirs: 3
3, 0
0
dirs: 0
3, 1
1
0
dirs: 0
3, 2
dirs: 1
2, 1
1
dirs: 1
1, 1
1
dirs: 1
0, 1
2
0
dirs: 0
0, 2
3
dirs: 3
1, 2
dirs: 2
0, 0
dirs: 1
1, 0
dirs: 3
3, 1
2
0
dirs: 0
3, 2
dirs: 2
3, 0
1
dirs: 1
2, 0
1
0
dirs: 0
2, 1
1
dirs: 1
1, 1
1
dirs: 1
0, 1
2
0
dirs: 0
0, 2
3
dirs: 3
1, 2
dirs: 2
0, 0
dirs: 1
1, 0
dirs: 1
1, 1
1
dirs: 1
0, 1
2
0
dirs: 0
0, 2
3
dirs: 3
1, 2
dirs: 2
0, 0
dirs: 3
3, 2
dirs: 1
0, 2
2
dirs: 2
0, 1
3
2
dirs: 2
0, 0
dirs: 3
1, 1
3
dirs: 3
2, 1
3
2
0
dirs: 0
2, 2
1
3
dirs: 3
3, 2
dirs: 1
1, 2
dirs: 2
2, 0
1
3
dirs: 3
3, 0
0
dirs: 0
3, 1
1
0
dirs: 0
3, 2
dirs: 1
2, 1
0
dirs: 0
2, 2
1
3
dirs: 3
3, 2
dirs: 1
1, 2
dirs: 1
1, 0
dirs: 3
3, 1
2
0
dirs: 0
3, 2
dirs: 2
3, 0
1
dirs: 1
2, 0
1
0
dirs: 0
2, 1
0
dirs: 0
2, 2
1
3
dirs: 3
3, 2
dirs: 1
1, 2
dirs: 1
1, 0
dirs: 3
2, 1
3
2
0
dirs: 0
2, 2
1
3
dirs: 3
3, 2
dirs: 1
1, 2
1
2
dirs: 2
1, 1
1
dirs: 1
0, 1
2
0
dirs: 0
0, 2
3
dirs: 3
1, 2
dirs: 2
0, 0
dirs: 1
0, 2
2
dirs: 2
0, 1
3
2
dirs: 2
0, 0
dirs: 3
1, 1
0
dirs: 0
1, 2
dirs: 2
2, 0
1
3
dirs: 3
3, 0
0
dirs: 0
3, 1
1
0
dirs: 0
3, 2
dirs: 1
2, 1
0
dirs: 0
2, 2
1
3
dirs: 3
3, 2
dirs: 1
1, 2
1
2
dirs: 2
1, 1
1
dirs: 1
0, 1
2
0
dirs: 0
0, 2
3
dirs: 3
1, 2
dirs: 2
0, 0
dirs: 1
0, 2
2
dirs: 2
0, 1
3
2
dirs: 2
0, 0
dirs: 3
1, 1
0
dirs: 0
1, 2
dirs: 1
1, 0
dirs: 3
3, 1
2
0
dirs: 0
3, 2
dirs: 2
3, 0
1
dirs: 1
2, 0
1
0
dirs: 0
2, 1
0
dirs: 0
2, 2
1
3
dirs: 3
3, 2
dirs: 1
1, 2
1
2
dirs: 2
1, 1
1
dirs: 1
0, 1
2
0
dirs: 0
0, 2
3
dirs: 3
1, 2
dirs: 2
0, 0
dirs: 1
0, 2
2
dirs: 2
0, 1
3
2
dirs: 2
0, 0
dirs: 3
1, 1
0
dirs: 0
1, 2
dirs: 1
1, 0
dirs: 1
0, 1
2
0
dirs: 0
0, 2
3
dirs: 3
1, 2
3
2
dirs: 2
1, 1
3
dirs: 3
2, 1
3
2
0
dirs: 0
2, 2
1
3
dirs: 3
3, 2
dirs: 1
1, 2
dirs: 2
2, 0
1
3
dirs: 3
3, 0
0
dirs: 0
3, 1
1
0
dirs: 0
3, 2
dirs: 1
2, 1
0
dirs: 0
2, 2
1
3
dirs: 3
3, 2
dirs: 1
1, 2
dirs: 1
1, 0
dirs: 3
3, 1
2
0
dirs: 0
3, 2
dirs: 2
3, 0
1
dirs: 1
2, 0
1
0
dirs: 0
2, 1
0
dirs: 0
2, 2
1
3
dirs: 3
3, 2
dirs: 1
1, 2
dirs: 1
1, 0
dirs: 3
2, 2
3
2
dirs: 2
2, 1
1
3
2
dirs: 2
2, 0
1
3
dirs: 3
3, 0
0
dirs: 0
3, 1
1
0
dirs: 0
3, 2
dirs: 1
2, 1
1
dirs: 1
1, 1
0
dirs: 0
1, 2
dirs: 1
1, 0
dirs: 3
3, 1
2
0
dirs: 0
3, 2
dirs: 2
3, 0
1
dirs: 1
2, 0
1
0
dirs: 0
2, 1
1
dirs: 1
1, 1
0
dirs: 0
1, 2
dirs: 1
1, 0
dirs: 1
1, 1
0
dirs: 0
1, 2
dirs: 3
3, 2
dirs: 2
0, 0
dirs: 3
2, 0
3
0
dirs: 0
2, 1
1
3
0
dirs: 0
2, 2
1
3
dirs: 3
3, 2
dirs: 1
1, 2
1
2
dirs: 2
1, 1
1
3
2
dirs: 2
1, 0
dirs: 3
2, 1
3
dirs: 3
3, 1
2
0
dirs: 0
3, 2
dirs: 2
3, 0
1
dirs: 1
2, 0
dirs: 1
0, 1
2
0
dirs: 0
0, 2
3
dirs: 3
1, 2
dirs: 2
0, 0
dirs: 1
0, 2
2
dirs: 2
0, 1
3
2
dirs: 2
0, 0
dirs: 3
1, 1
3
2
0
dirs: 0
1, 2
dirs: 2
1, 0
dirs: 3
2, 1
3
dirs: 3
3, 1
2
0
dirs: 0
3, 2
dirs: 2
3, 0
1
dirs: 1
2, 0
dirs: 3
3, 1
2
0
dirs: 0
3, 2
dirs: 2
3, 0
1
dirs: 1
2, 0
dirs: 1
1, 1
1
2
0
dirs: 0
1, 2
1
3
dirs: 3
2, 2
3
2
dirs: 2
2, 1
3
dirs: 3
3, 1
2
0
dirs: 0
3, 2
dirs: 2
3, 0
1
dirs: 1
2, 0
dirs: 3
3, 2
dirs: 1
0, 2
2
dirs: 2
0, 1
3
2
dirs: 2
0, 0
dirs: 3
1, 1
2
dirs: 2
1, 0
dirs: 2
1, 0
dirs: 1
0, 1
2
0
dirs: 0
0, 2
3
dirs: 3
1, 2
3
2
dirs: 2
1, 1
2
dirs: 2
1, 0
dirs: 3
2, 2
3
2
dirs: 2
2, 1
3
dirs: 3
3, 1
2
0
dirs: 0
3, 2
dirs: 2
3, 0
1
dirs: 1
2, 0
dirs: 3
3, 2
dirs: 2
0, 0
dirs: 3
3, 0
0
dirs: 0
3, 1
1
0
dirs: 0
3, 2
dirs: 1
2, 1
1
2
0
dirs: 0
2, 2
1
3
dirs: 3
3, 2
dirs: 1
1, 2
1
2
dirs: 2
1, 1
1
3
2
dirs: 2
1, 0
dirs: 3
2, 1
2
dirs: 2
2, 0
dirs: 1
0, 1
2
0
dirs: 0
0, 2
3
dirs: 3
1, 2
dirs: 2
0, 0
dirs: 1
0, 2
2
dirs: 2
0, 1
3
2
dirs: 2
0, 0
dirs: 3
1, 1
3
2
0
dirs: 0
1, 2
dirs: 2
1, 0
dirs: 3
2, 1
2
dirs: 2
2, 0
dirs: 2
2, 0
dirs: 1
1, 1
1
2
0
dirs: 0
1, 2
1
3
dirs: 3
2, 2
3
2
dirs: 2
2, 1
2
dirs: 2
2, 0
dirs: 3
3, 2
dirs: 1
0, 2
2
dirs: 2
0, 1
3
2
dirs: 2
0, 0
dirs: 3
1, 1
2
dirs: 2
1, 0
dirs: 2
1, 0
dirs: 1
0, 1
2
0
dirs: 0
0, 2
3
dirs: 3
1, 2
3
2
dirs: 2
1, 1
2
dirs: 2
1, 0
dirs: 3
2, 2
3
2
dirs: 2
2, 1
2
dirs: 2
2, 0
dirs: 3
3, 2
dirs: 2
0, 0
72
stderr
sh: 1: pause: not found