fork(1) download
  1. <?php
  2.  
  3. /* http://d...content-available-to-author-only...2.net/ */
  4.  
  5. define('SUBWAY', 'sub');
  6. define('FOOT', 'foot');
  7. define('BUS', 'bus');
  8.  
  9. $transportName = array(
  10. SUBWAY => 'едешь на метро',
  11. FOOT => 'идешь пешком',
  12. BUS => 'едешь на автобусе'
  13. );
  14.  
  15. $pointNames = array(
  16. 'pet' => 'ст. м. Петроградская',
  17. 'chk' => 'ст. м. Чкаловская',
  18. 'gor' => 'ст. м. Горьковская',
  19. 'spo' => 'ст. м. Спортивная',
  20. 'vas' => 'ст. м. Василеостровская',
  21. 'kre' => 'Петропавловская крепость',
  22. 'let' => 'Летний сад',
  23. 'dvo' => 'Дворцовая площадь',
  24. 'isa' => 'Исакиевский собор',
  25. 'nov' => 'Новая Голландия',
  26. 'ras' => 'Дом Раскольникова',
  27. 'gos' => 'Гостиный Двор',
  28. 'sen' => 'Сенная Площадь',
  29. 'vla' => 'ст. м. Владимирская',
  30. 'vit' => 'Витебский вокзал',
  31. 'teh' => 'Технологический Институт'
  32. );
  33.  
  34. $paths = array(
  35. 'pet' => array(
  36. 'chk' => canGet(10, BUS),
  37. 'gor' => canGet(3, SUBWAY)
  38. ),
  39.  
  40. 'chk' => array(
  41. 'pet' => canGet(10, BUS),
  42. 'spo' => canGet(3, SUBWAY)
  43. ),
  44.  
  45. 'gor' => array(
  46. 'pet' => canGet(3, BUS),
  47. 'kre' => canGet(5, FOOT),
  48. 'gos' => canGet(6, SUBWAY)
  49. ),
  50.  
  51. 'spo' => array(
  52. 'chk' => canGet(3, SUBWAY),
  53. 'vas' => canGet(10, BUS),
  54. 'sen' => canGet(7, SUBWAY)
  55. ),
  56.  
  57. 'vas' => array(
  58. 'spo' => canGet(10, BUS),
  59. 'gos' => canGet(7, SUBWAY),
  60. 'nov' => canGet(11, FOOT)
  61. ),
  62.  
  63. 'kre' => array(
  64. 'gor' => canGet(5, FOOT)
  65. ),
  66.  
  67. 'let' => array(
  68. 'dvo' => canGet(6, FOOT),
  69. 'gos' => canGet(7, FOOT)
  70. ),
  71.  
  72. 'dvo' => array(
  73. 'isa' => canGet(6, FOOT),
  74. 'gos' => canGet(6, FOOT),
  75. 'let' => canGet(6, FOOT)
  76. ),
  77.  
  78. 'isa' => array(
  79. 'dvo' => canGet(6, FOOT),
  80. 'nov' => canGet(5, FOOT)
  81. ),
  82.  
  83. 'nov' => array(
  84. 'vas' => canGet(11, FOOT),
  85. 'isa' => canGet(5, FOOT),
  86. 'ras' => canGet(7, BUS)
  87. ),
  88.  
  89. 'ras' => array(
  90. 'nov' => canGet(7, BUS),
  91. 'sen' => canGet(3, FOOT)
  92. ),
  93.  
  94. 'gos' => array(
  95. 'vas' => canGet(7, SUBWAY),
  96. 'sen' => canGet(3, SUBWAY),
  97. 'dvo' => canGet(6, FOOT),
  98. 'gor' => canGet(6, SUBWAY),
  99. 'let' => canGet(7, FOOT),
  100. 'vla' => canGet(7, FOOT)
  101. ),
  102.  
  103. 'sen' => array(
  104. 'ras' => canGet(3, FOOT),
  105. 'spo' => canGet(7, SUBWAY),
  106. 'gos' => canGet(3, SUBWAY),
  107. 'vla' => canGet(4, SUBWAY),
  108. 'vit' => canGet(2, SUBWAY),
  109. 'teh' => canGet(3, SUBWAY)
  110. ),
  111.  
  112. 'vla' => array(
  113. 'sen' => canGet(4, SUBWAY),
  114. 'gos' => canGet(7, FOOT),
  115. 'vit' => canGet(3, SUBWAY)
  116. ),
  117.  
  118. 'vit' => array(
  119. 'sen' => canGet(2, SUBWAY),
  120. 'teh' => canGet(2, SUBWAY),
  121. 'vla' => canGet(3, SUBWAY)
  122. ),
  123.  
  124. 'teh' => array(
  125. 'sen' => canGet(3, SUBWAY),
  126. 'vit' => canGet(2, SUBWAY)
  127. )
  128. );
  129.  
  130. /* Чтобы не писать много раз array('time' => ..., 'by' => ...), используем функцию.
  131.   «canGet» переводится как «можно попасть» */
  132. function canGet($time, $byWhat) {
  133. return array('time' => $time, 'by' => $byWhat);
  134. }
  135.  
  136. function makeOneStep($paths, $pathDone, $time, $point, $target) {
  137. if(isset($paths[$point][$target])) {
  138. $result = [];
  139. $time += $paths[$point][$target]['time'];
  140. $result['time'] = $time;
  141. $pathDone[] = $target;
  142. $result['path'] = $pathDone;
  143. return $result;
  144. }
  145. }
  146.  
  147.  
  148.  
  149.  
  150.  
Success #stdin #stdout 0.01s 24400KB
stdin
Standard input is empty
stdout
Standard output is empty