<?php
/* http://d...content-available-to-author-only...2.net/ */
SUBWAY => 'едешь на метро',
FOOT => 'идешь пешком',
BUS => 'едешь на автобусе'
);
$startPoint = 'pet'; // Петроградская
$endPoint = 'nov'; // Новая Голландия
'pet' => 'ст. м. Петроградская',
'chk' => 'ст. м. Чкаловская',
'gor' => 'ст. м. Горьковская',
'spo' => 'ст. м. Спортивная',
'vas' => 'ст. м. Василеостровская',
'kre' => 'Петропавловская крепость',
'let' => 'Летний сад',
'dvo' => 'Дворцовая площадь',
'isa' => 'Исакиевский собор',
'nov' => 'Новая Голландия',
'ras' => 'Дом Раскольникова',
'gos' => 'Гостиный Двор',
'sen' => 'Сенная Площадь',
'vla' => 'ст. м. Владимирская',
'vit' => 'Витебский вокзал',
'teh' => 'Технологический Институт'
);
'chk' => canGet(10, BUS),
'gor' => canGet(3, SUBWAY)
),
'pet' => canGet(10, BUS),
'spo' => canGet(3, SUBWAY)
),
'pet' => canGet(3, BUS),
'kre' => canGet(5, FOOT),
'gos' => canGet(6, SUBWAY)
),
'chk' => canGet(3, SUBWAY),
'vas' => canGet(10, BUS),
'sen' => canGet(7, SUBWAY)
),
'spo' => canGet(10, BUS),
'gos' => canGet(7, SUBWAY),
'nov' => canGet(11, FOOT)
),
'gor' => canGet(5, FOOT)
),
'dvo' => canGet(6, FOOT),
'gos' => canGet(7, FOOT)
),
'isa' => canGet(6, FOOT),
'gos' => canGet(6, FOOT),
'let' => canGet(6, FOOT)
),
'dvo' => canGet(6, FOOT),
'nov' => canGet(5, FOOT)
),
'vas' => canGet(11, FOOT),
'isa' => canGet(5, FOOT),
'ras' => canGet(7, BUS)
),
'nov' => canGet(7, BUS),
'sen' => canGet(3, FOOT)
),
'vas' => canGet(7, SUBWAY),
'sen' => canGet(3, SUBWAY),
'dvo' => canGet(6, FOOT),
'gor' => canGet(6, SUBWAY),
'let' => canGet(7, FOOT),
'vla' => canGet(7, FOOT)
),
'ras' => canGet(3, FOOT),
'spo' => canGet(7, SUBWAY),
'gos' => canGet(3, SUBWAY),
'vla' => canGet(4, SUBWAY),
'vit' => canGet(2, SUBWAY),
'teh' => canGet(3, SUBWAY)
),
'sen' => canGet(4, SUBWAY),
'gos' => canGet(7, FOOT),
'vit' => canGet(3, SUBWAY)
),
'sen' => canGet(2, SUBWAY),
'teh' => canGet(2, SUBWAY),
'vla' => canGet(3, SUBWAY)
),
'sen' => canGet(3, SUBWAY),
'vit' => canGet(2, SUBWAY)
)
);
/* Чтобы не писать много раз array('time' => ..., 'by' => ...), используем функцию.
«canGet» переводится как «можно попасть» */
function canGet($time, $byWhat) {
return array('time' => $time, 'by' => $byWhat); }
function oneStep($paths, $pathDone, $time, $point, $target){
if(!$paths[$point][$target]){
foreach ($paths[$point] as $key1=> $val){
continue;
}
$container=oneStep($paths, $paths[$point][$key1], $paths[$point][$key1]['time'], $key1, $target);
if($paths[$key1][$target]){
return $container;
}
}
}
else{
$result['path'] =array($pathDone, $paths[$point][$target]); $result['time'] = $paths[$point][$target]['time']+$time;
return $result;
}
}
$testvar=oneStep($paths, 0, 0, 'vas' , 'teh');
PD9waHAKCmVycm9yX3JlcG9ydGluZygwKTsKLyogaHR0cDovL2QuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLjIubmV0LyAqLwoKZGVmaW5lKCdTVUJXQVknLCAnc3ViJyk7CmRlZmluZSgnRk9PVCcsICdmb290Jyk7CmRlZmluZSgnQlVTJywgJ2J1cycpOwoKJHRyYW5zcG9ydE5hbWUgPSBhcnJheSgKICAgIFNVQldBWSAgPT4gICfQtdC00LXRiNGMINC90LAg0LzQtdGC0YDQvicsCiAgICBGT09UICAgID0+ICAn0LjQtNC10YjRjCDQv9C10YjQutC+0LwnLAogICAgQlVTICAgICA9PiAgJ9C10LTQtdGI0Ywg0L3QsCDQsNCy0YLQvtCx0YPRgdC1JwopOwoKJHN0YXJ0UG9pbnQgPSAncGV0JzsgLy8g0J/QtdGC0YDQvtCz0YDQsNC00YHQutCw0Y8KJGVuZFBvaW50ID0gJ25vdic7IC8vINCd0L7QstCw0Y8g0JPQvtC70LvQsNC90LTQuNGPCgokcG9pbnROYW1lcyA9IGFycmF5KAogICAgJ3BldCcgICA9PiAgJ9GB0YIuINC8LiDQn9C10YLRgNC+0LPRgNCw0LTRgdC60LDRjycsCiAgICAnY2hrJyAgID0+ICAn0YHRgi4g0LwuINCn0LrQsNC70L7QstGB0LrQsNGPJywKICAgICdnb3InICAgPT4gICfRgdGCLiDQvC4g0JPQvtGA0YzQutC+0LLRgdC60LDRjycsCiAgICAnc3BvJyAgID0+ICAn0YHRgi4g0LwuINCh0L/QvtGA0YLQuNCy0L3QsNGPJywKICAgICd2YXMnICAgPT4gICfRgdGCLiDQvC4g0JLQsNGB0LjQu9C10L7RgdGC0YDQvtCy0YHQutCw0Y8nLAogICAgJ2tyZScgICA9PiAgJ9Cf0LXRgtGA0L7Qv9Cw0LLQu9C+0LLRgdC60LDRjyDQutGA0LXQv9C+0YHRgtGMJywKICAgICdsZXQnICAgPT4gICfQm9C10YLQvdC40Lkg0YHQsNC0JywKICAgICdkdm8nICAgPT4gICfQlNCy0L7RgNGG0L7QstCw0Y8g0L/Qu9C+0YnQsNC00YwnLAogICAgJ2lzYScgICA9PiAgJ9CY0YHQsNC60LjQtdCy0YHQutC40Lkg0YHQvtCx0L7RgCcsCiAgICAnbm92JyAgID0+ICAn0J3QvtCy0LDRjyDQk9C+0LvQu9Cw0L3QtNC40Y8nLAogICAgJ3JhcycgICA9PiAgJ9CU0L7QvCDQoNCw0YHQutC+0LvRjNC90LjQutC+0LLQsCcsCiAgICAnZ29zJyAgID0+ICAn0JPQvtGB0YLQuNC90YvQuSDQlNCy0L7RgCcsCiAgICAnc2VuJyAgID0+ICAn0KHQtdC90L3QsNGPINCf0LvQvtGJ0LDQtNGMJywKICAgICd2bGEnICAgPT4gICfRgdGCLiDQvC4g0JLQu9Cw0LTQuNC80LjRgNGB0LrQsNGPJywKICAgICd2aXQnICAgPT4gICfQktC40YLQtdCx0YHQutC40Lkg0LLQvtC60LfQsNC7JywKICAgICd0ZWgnICAgPT4gICfQotC10YXQvdC+0LvQvtCz0LjRh9C10YHQutC40Lkg0JjQvdGB0YLQuNGC0YPRgicKKTsKCiRwYXRocyA9IGFycmF5KAogICAgJ3BldCcgICA9PiAgYXJyYXkoCiAgICAgICAgJ2NoaycgICA9PiAgY2FuR2V0KDEwLCBCVVMpLAogICAgICAgICdnb3InICAgPT4gIGNhbkdldCgzLCBTVUJXQVkpCiAgICApLAoKICAgICdjaGsnICAgPT4gIGFycmF5KAogICAgICAgICdwZXQnICAgPT4gIGNhbkdldCgxMCwgQlVTKSwKICAgICAgICAnc3BvJyAgID0+ICBjYW5HZXQoMywgU1VCV0FZKQogICAgKSwKCiAgICAnZ29yJyAgID0+ICBhcnJheSgKICAgICAgICAncGV0JyAgID0+ICBjYW5HZXQoMywgQlVTKSwKICAgICAgICAna3JlJyAgID0+ICBjYW5HZXQoNSwgRk9PVCksCiAgICAgICAgJ2dvcycgICA9PiAgY2FuR2V0KDYsIFNVQldBWSkKICAgICksCgogICAgJ3NwbycgICA9PiAgYXJyYXkoCiAgICAgICAgJ2NoaycgICA9PiAgY2FuR2V0KDMsIFNVQldBWSksCiAgICAgICAgJ3ZhcycgICA9PiAgY2FuR2V0KDEwLCBCVVMpLAogICAgICAgICdzZW4nICAgPT4gIGNhbkdldCg3LCBTVUJXQVkpCiAgICApLAoKICAgICd2YXMnICAgPT4gIGFycmF5KAogICAgICAgICdzcG8nICAgPT4gIGNhbkdldCgxMCwgQlVTKSwKICAgICAgICAnZ29zJyAgID0+ICBjYW5HZXQoNywgU1VCV0FZKSwKICAgICAgICAnbm92JyAgID0+ICBjYW5HZXQoMTEsIEZPT1QpCiAgICApLAoKICAgICdrcmUnICAgPT4gIGFycmF5KAogICAgICAgICdnb3InICAgPT4gIGNhbkdldCg1LCBGT09UKQogICAgKSwKCiAgICAnbGV0JyAgID0+ICBhcnJheSgKICAgICAgICAnZHZvJyAgID0+ICBjYW5HZXQoNiwgRk9PVCksCiAgICAgICAgJ2dvcycgICA9PiAgY2FuR2V0KDcsIEZPT1QpCiAgICApLAoKICAgICdkdm8nICAgPT4gIGFycmF5KAogICAgICAgICdpc2EnICAgPT4gIGNhbkdldCg2LCBGT09UKSwKICAgICAgICAnZ29zJyAgID0+ICBjYW5HZXQoNiwgRk9PVCksCiAgICAgICAgJ2xldCcgICA9PiAgY2FuR2V0KDYsIEZPT1QpCiAgICApLAoKICAgICdpc2EnICAgPT4gIGFycmF5KAogICAgICAgICdkdm8nICAgPT4gIGNhbkdldCg2LCBGT09UKSwKICAgICAgICAnbm92JyAgID0+ICBjYW5HZXQoNSwgRk9PVCkKICAgICksCgogICAgJ25vdicgICA9PiAgYXJyYXkoCiAgICAgICAgJ3ZhcycgICA9PiAgY2FuR2V0KDExLCBGT09UKSwKICAgICAgICAnaXNhJyAgID0+ICBjYW5HZXQoNSwgRk9PVCksCiAgICAgICAgJ3JhcycgICA9PiAgY2FuR2V0KDcsIEJVUykKICAgICksCgogICAgJ3JhcycgICA9PiAgYXJyYXkoCiAgICAgICAgJ25vdicgICA9PiAgY2FuR2V0KDcsIEJVUyksCiAgICAgICAgJ3NlbicgICA9PiAgY2FuR2V0KDMsIEZPT1QpCiAgICApLAoKICAgICdnb3MnICAgPT4gIGFycmF5KAogICAgICAgICd2YXMnICAgPT4gIGNhbkdldCg3LCBTVUJXQVkpLAogICAgICAgICdzZW4nICAgPT4gIGNhbkdldCgzLCBTVUJXQVkpLAogICAgICAgICdkdm8nICAgPT4gIGNhbkdldCg2LCBGT09UKSwKICAgICAgICAnZ29yJyAgID0+ICBjYW5HZXQoNiwgU1VCV0FZKSwKICAgICAgICAnbGV0JyAgID0+ICBjYW5HZXQoNywgRk9PVCksCiAgICAgICAgJ3ZsYScgICA9PiAgY2FuR2V0KDcsIEZPT1QpICAgICAgICAKICAgICksCgogICAgJ3NlbicgICA9PiAgYXJyYXkoCiAgICAgICAgJ3JhcycgICA9PiAgY2FuR2V0KDMsIEZPT1QpLAogICAgICAgICdzcG8nICAgPT4gIGNhbkdldCg3LCBTVUJXQVkpLAogICAgICAgICdnb3MnICAgPT4gIGNhbkdldCgzLCBTVUJXQVkpLAogICAgICAgICd2bGEnICAgPT4gIGNhbkdldCg0LCBTVUJXQVkpLAogICAgICAgICd2aXQnICAgPT4gIGNhbkdldCgyLCBTVUJXQVkpLAogICAgICAgICd0ZWgnICAgPT4gIGNhbkdldCgzLCBTVUJXQVkpCiAgICApLAoKICAgICd2bGEnICAgPT4gIGFycmF5KAogICAgICAgICdzZW4nICAgPT4gIGNhbkdldCg0LCBTVUJXQVkpLAogICAgICAgICdnb3MnICAgPT4gIGNhbkdldCg3LCBGT09UKSwKICAgICAgICAndml0JyAgID0+ICBjYW5HZXQoMywgU1VCV0FZKQogICAgKSwKCiAgICAndml0JyAgID0+ICBhcnJheSgKICAgICAgICAnc2VuJyAgID0+ICBjYW5HZXQoMiwgU1VCV0FZKSwKICAgICAgICAndGVoJyAgID0+ICBjYW5HZXQoMiwgU1VCV0FZKSwKICAgICAgICAndmxhJyAgID0+ICBjYW5HZXQoMywgU1VCV0FZKQogICAgKSwKCiAgICAndGVoJyAgID0+ICBhcnJheSgKICAgICAgICAnc2VuJyAgID0+ICBjYW5HZXQoMywgU1VCV0FZKSwKICAgICAgICAndml0JyAgID0+ICBjYW5HZXQoMiwgU1VCV0FZKSAgICAgICAgCiAgICApCik7CgovKiDQp9GC0L7QsdGLINC90LUg0L/QuNGB0LDRgtGMINC80L3QvtCz0L4g0YDQsNC3IGFycmF5KCd0aW1lJyA9PiAuLi4sICdieScgPT4gLi4uKSwg0LjRgdC/0L7Qu9GM0LfRg9C10Lwg0YTRg9C90LrRhtC40Y4uIAogICAgwqtjYW5HZXTCuyDQv9C10YDQtdCy0L7QtNC40YLRgdGPINC60LDQuiDCq9C80L7QttC90L4g0L/QvtC/0LDRgdGC0YzCuyAqLwpmdW5jdGlvbiBjYW5HZXQoJHRpbWUsICRieVdoYXQpIHsKICAgIHJldHVybiBhcnJheSgndGltZScgICAgID0+ICAkdGltZSwgJ2J5JyA9PiAgJGJ5V2hhdCk7Cn0KCmZ1bmN0aW9uIG9uZVN0ZXAoJHBhdGhzLCAkcGF0aERvbmUsICR0aW1lLCAkcG9pbnQsICR0YXJnZXQpewogICAgJHJlc3VsdD1hcnJheSgpOwogICAgCmlmKCEkcGF0aHNbJHBvaW50XVskdGFyZ2V0XSl7CiAgICAgZm9yZWFjaCAoJHBhdGhzWyRwb2ludF0gYXMgICRrZXkxPT4gJHZhbCl7CiAgICAgCiAgICBpZihpbl9hcnJheSgkcGF0aERvbmUsICRrZXkxKSl7CiAgICAgICAgY29udGludWU7CiAgICB9CiAgICAgICAgCiAgICAgICAgICRjb250YWluZXI9b25lU3RlcCgkcGF0aHMsICRwYXRoc1skcG9pbnRdWyRrZXkxXSwgJHBhdGhzWyRwb2ludF1bJGtleTFdWyd0aW1lJ10sICRrZXkxLCAkdGFyZ2V0KTsKCiAgICAgICAgICAgaWYoJHBhdGhzWyRrZXkxXVskdGFyZ2V0XSl7CiAgICAgICAgICByZXR1cm4gJGNvbnRhaW5lcjsKICAgICAgICAgICAgfQogICAgICAgICAgIAogICAgICAgICAgICB9CiAgICAgIAogICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgIH0KICAgICAgICAKICAgIAoKZWxzZXsKICAgCiAgIAogICAgJHJlc3VsdFsncGF0aCddID1hcnJheSgkcGF0aERvbmUsICRwYXRoc1skcG9pbnRdWyR0YXJnZXRdKTsKICAgICRyZXN1bHRbJ3RpbWUnXSA9ICRwYXRoc1skcG9pbnRdWyR0YXJnZXRdWyd0aW1lJ10rJHRpbWU7CiAgICByZXR1cm4gJHJlc3VsdDsKfQp9CiR0ZXN0dmFyPW9uZVN0ZXAoJHBhdGhzLCAwLCAwLCAndmFzJyAsICd0ZWgnKTsKdmFyX2R1bXAoJHRlc3R2YXIpOw==