Po wielu trudach i zmaganiach zrozumiałem zasadę działania tego algorytmu no ale mam problem z zastosowaniem.
Mam tablicę 2 wymiarową
<?php
$tablica[0][0] = 0;
$tablica[0][1] = 'woda';
$tablica[0][2] = 'woda';
$tablica[0][3] = 'woda';
$tablica[0][4] = 'woda';
$tablica[0][5] = 'woda';
?>
itd...
muszę odpalić pętle do {} while aż do wykonania warunku
następnie puścić pierwszą mrówkę i zapisać jej pokonaną drogę do tablicy
no i zwiększyć w tablicy wartość o 1 $tablica[0][0] = 0;
i doszedłem do czegoś takiego:
<?
$tablica[0][0] = 1;
$tablica[1][0] = 'woda';
$tablica[2][0] = 'woda';
$tablica[3][0] = 'woda';
$tablica[4][0] = 'woda';
$tablica[5][0] = 'woda';
$tablica[0][1] = 1;
$tablica[1][1] = 1;
$tablica[2][1] = 1;
$tablica[3][1] = 1;
$tablica[4][1] = 'woda';
$tablica[5][1] = 'woda';
$tablica[0][2] = 1;
$tablica[1][2] = 1;
$tablica[2][2] = 1;
$tablica[3][2] = 1;
$tablica[4][2] = 'woda';
$tablica[5][2] = 'woda';
$tablica[0][3] = 1;
$tablica[1][3] = 1;
$tablica[2][3] = 1;
$tablica[3][3] = 1;
$tablica[4][3] = 'woda';
$tablica[5][3] = 'woda';
$tablica[0][4] = 1;
$tablica[1][4] = 'woda';
$tablica[2][4] = 'woda';
$tablica[3][4] = 1;
$tablica[4][4] = 'woda';
$tablica[5][4] = 'woda';
$tablica[0][5] = 1;
$tablica[1][5] = 1;
$tablica[2][5] = 1;
$tablica[3][5] = 1;
$tablica[4][5] = 'woda';
$tablica[5][5] = 'woda';
$tablica[0][6] = 'woda';
$tablica[1][6] = 'woda';
$tablica[2][6] = 'woda';
$tablica[3][6] = 1;
$tablica[4][6] = 'woda';
$tablica[5][6] = 'woda';
$tablica[0][7] = 'woda';
$tablica[1][7] = 'woda';
$tablica[2][7] = 'woda';
$tablica[3][7] = 1;
$tablica[4][7] = 'woda';
$tablica[5][7] = 'woda';
$tablica[0][8] = 'woda';
$tablica[1][8] = 'woda';
$tablica[2][8] = 'woda';
$tablica[3][8] = 1;
$tablica[4][8] = 'woda';
$tablica[5][8] = 'woda';
$tablica[0][9] = 1;
$tablica[1][9] = 1;
$tablica[2][9] = 1;
$tablica[3][9] = 1;
$tablica[4][9] = 'woda';
$tablica[5][9] = 'woda';
$start_x = 0;
$start_y = 0;
$stop_x = $_GET['x'];
$stop_y = $_GET['y'];
if ($tablica[$stop_x][$stop_y] == 'woda') {
echo 'Wskazany punkt jest w wodzie<br />'; } else {
$op = 0;
$i = 0;
do {
$o_x = $start_x;
$o_y = $start_y;
$tablica[$o_x][$o_y]++;
$i++;
$dlogosc[$i] = 1;
do {
if ($o_x < $stop_x) $o_x++;
elseif ($o_x > $stop_x) $o_x--;
if ($o_y < $stop_y) $o_y++;
elseif ($o_y > $stop_y) $o_y--;
$tablica[$o_x][$o_y]++;
$dlogosc[$i]++;
} while ($o_x != $stop_x || $o_y != $stop_y);
} while ($op == 1);
if ($stop_x == $start_x && $start_y == $stop_y) {
echo 'Wskazane współrzędne są na poczatku<br />'; } else {
echo 'Długość '.$dlogosc[$i].' kratek<br />'; }
}
echo '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <table cellspacing="0" cellpadding="0">';
foreach ($tablica as $k => $w) {
foreach ($w as $k2 => $w2) {
echo '<td style="background-color:'.($w2 != 'woda' ?
$w2 == 1 ?
'green' : 'red' : 'blue').'; width: 50px; height: 50px;"> </td>';
}
}
?>
Powoli idę do przodu... (próbuje dopisać by mijał ale chyba funkcje muszę wprowadzić do tego)
http://rdzen.osadnicy.net/table.php?x=2&y=5