<?php declare(strict_types=1);
use App\BreadthFirstSearch\Graph;
use App\BreadthFirstSearch\BreadthFirstSearch;
use App\BreadthFirstSearch\GraphFactory;
require_once __DIR__ . '/vendor/autoload.php';
ini_set('display_errors', '1');
error_reporting(E_ALL);
$bfsObject = new BreadthFirstSearch(new GraphFactory());
$graph = $bfsObject->getGraph();
if (isset($_POST['start'], $_POST['end'])) {
bfs($graph, $_POST['start'], $_POST['end']);
}
function bfs(Graph $graph, string $start, string $end): void
{
$result = $graph->search($start, $end);
if (null !== $result->getEndNode()) {
echo 'It found ' . $result->getEndNode()->getValue() . '-';
}
$path = ' Search path: ';
$iMax = count($result->getPath());
foreach ($result->getPath() as $i => $n) {
$path .= $n->getValue();
if ($i < $iMax - 1) {
$path .= ' --> ';
}
}
echo $path . '<br />';
}
?>
<h2>Breadth first search:</h2>
<form id="s" method="post">
<select name="start">
<?php if (isset($_POST['start'])): ?>
<option value="<?php echo $_POST['start']; ?>"><?php echo $_POST['start']; ?></option>
<?php else: ?>
<option value="">Select start value</option>
<?php endif; ?>
<?php foreach ($graph->getNodes() as $node): ?>
<option value="<?php echo $node->getValue(); ?>"><?php echo $node->getValue(); ?></option>
<?php endforeach; ?>
</select>
<select name="end">
<?php if (isset($_POST['end'])): ?>
<option value="<?php echo $_POST['end']; ?>"><?php echo $_POST['end']; ?></option>
<?php else: ?>
<option value="">Select end value</option>
<?php endif; ?>
<?php foreach ($graph->getNodes() as $node): ?>
<option value="<?php echo $node->getValue(); ?>"><?php echo $node->getValue(); ?></option>
<?php endforeach; ?>
</select>
<input type="submit" name="Submit" value="Search">
</form>
|