PHP İLE SOLO TEST HESAPLAMA VE OYNAMA KODLARI

PHP ile solo testte bir taş bırakmayı hesaplama algoritması. Ben kendim yazdım. Beğendiyseniz lütfen ucuzeticaret.com.tr adresini ziyaret etmeyi unutmayın.

<?php
ini_set('memory_limit', '1024M');

global $sayhamle;
global $arrdelikler;
$arrdelikler = array();

$delikler[0][0] = 0;
$delikler[1][0] = 0;
$delikler[2][0] = 1;
$delikler[3][0] = 1;
$delikler[4][0] = 1;
$delikler[5][0] = 0;
$delikler[6][0] = 0;

$delikler[0][1] = 0;
$delikler[1][1] = 0;
$delikler[2][1] = 1;
$delikler[3][1] = 1;
$delikler[4][1] = 1;
$delikler[5][1] = 0;
$delikler[6][1] = 0;

$delikler[0][2] = 1;
$delikler[1][2] = 1;
$delikler[2][2] = 1;
$delikler[3][2] = 1;
$delikler[4][2] = 1;
$delikler[5][2] = 1;
$delikler[6][2] = 1;

$delikler[0][3] = 1;
$delikler[1][3] = 1;
$delikler[2][3] = 1;
$delikler[3][3] = 2;
$delikler[4][3] = 1;
$delikler[5][3] = 1;
$delikler[6][3] = 1;

$delikler[0][4] = 1;
$delikler[1][4] = 1;
$delikler[2][4] = 1;
$delikler[3][4] = 1;
$delikler[4][4] = 1;
$delikler[5][4] = 1;
$delikler[6][4] = 1;

$delikler[0][5] = 0;
$delikler[1][5] = 0;
$delikler[2][5] = 1;
$delikler[3][5] = 1;
$delikler[4][5] = 1;
$delikler[5][5] = 0;
$delikler[6][5] = 0;

$delikler[0][6] = 0;
$delikler[1][6] = 0;
$delikler[2][6] = 1;
$delikler[3][6] = 1;
$delikler[4][6] = 1;
$delikler[5][6] = 0;
$delikler[6][6] = 0;

function hesapla($delikler)
{
    global $sayhamle;
    global $arrdelikler;
    $sayhamle++;
    #2 boş 1 dolu 0 yok
    $deliklertmp = $delikler;
    $tasadet = 0;
    for ($sayx = 0; $sayx < 7; $sayx++) {
        for ($sayy = 0; $sayy < 7; $sayy++) {
            if ($delikler[$sayx][$sayy] == 1) {
                $tasadet++;
            }
        }
    }

    for ($sayx = 0; $sayx < 7; $sayx++) {
        for ($sayy = 0; $sayy < 7; $sayy++) {
            if ($delikler[$sayx][$sayy] == 1) {
                if ($sayx + 1 <= 6 && $sayx + 2 <= 6 && $delikler[$sayx + 1][$sayy] == 1 && $delikler[$sayx + 2][$sayy] == 2) {
                    $delikler[$sayx][$sayy] = 2;
                    $delikler[$sayx + 1][$sayy] = 2;
                    $delikler[$sayx + 2][$sayy] = 1;
                    /*echo $sayx."-";
                    echo $sayy;
                    print_r($delikler);
                    exit;*/
                    $sontasadet = hesapla($delikler, $sayx + 1, $sayy);
                    if ($sontasadet == 1) {
                        $arrdelikler[] = $delikler;
                        return 1;
                    }

                    $delikler = $deliklertmp;
                }
                if ($sayx - 1 >= 0 && $sayx - 2 >= 0 && $delikler[$sayx - 1][$sayy] == 1 && $delikler[$sayx - 2][$sayy] == 2) {
                    $delikler[$sayx][$sayy] = 2;
                    $delikler[$sayx - 1][$sayy] = 2;
                    $delikler[$sayx - 2][$sayy] = 1;
                    $sontasadet = hesapla($delikler, $sayx - 1, $sayy);
                    if ($sontasadet == 1) {
                        $arrdelikler[] = $delikler;
                        return 1;
                    }

                    $delikler = $deliklertmp;
                }
                if ($sayy + 1 <= 6 && $sayy + 2 <= 6 && $delikler[$sayx][$sayy + 1] == 1 && $delikler[$sayx][$sayy + 2] == 2) {
                    $delikler[$sayx][$sayy] = 2;
                    $delikler[$sayx][$sayy + 1] = 2;
                    $delikler[$sayx][$sayy + 2] = 1;
                    $sontasadet = hesapla($delikler, $sayx, $sayy + 1);
                    if ($sontasadet == 1) {
                        $arrdelikler[] = $delikler;
                        return 1;
                    }

                    $delikler = $deliklertmp;
                }
                if ($sayy - 1 >= 0 && $sayy - 2 >= 0 && $delikler[$sayx][$sayy - 1] == 1 && $delikler[$sayx][$sayy - 2] == 2) {
                    $delikler[$sayx][$sayy] = 2;
                    $delikler[$sayx][$sayy - 1] = 2;
                    $delikler[$sayx][$sayy - 2] = 1;
                    $sontasadet = hesapla($delikler, $sayx, $sayy - 1);
                    if ($sontasadet == 1) {
                        $arrdelikler[] = $delikler;
                        return 1;
                    }

                    $delikler = $deliklertmp;
                }
            }
        }
    }
    //echo $tasadet,"-";
    if ($tasadet == 1) {
        return 1;
    }
    return false;
}

#BURADA BAŞLIYOR
$sayhamle = 0;
$sure_baslangici = microtime(true);
$sontasadet = hesapla($delikler, 0, 0);
foreach ($arrdelikler as $birdelikler) {
    echo "<table style='float: left; margin: 10px;'>";
    for ($sayx = 0; $sayx < 7; $sayx++) {
        echo "<tr>";
        for ($sayy = 0; $sayy < 7; $sayy++) {
            echo "<td>";
            if ($birdelikler[$sayx][$sayy] == 1) {
                echo "۩";
            }
            if ($birdelikler[$sayx][$sayy] == 2) {
                echo "○";
            }
            if ($birdelikler[$sayx][$sayy] == 0) {
                echo "░";
            }
            echo "</td>";
        }
        echo "</tr>";
    }
    echo "</table>";
}
$sure_bitimi = microtime(true);

if ($sontasadet == 1) {
    echo "buldum : ", $sayhamle, " taş hamlede";
} else {
    echo "bulunmuyor kodları değiştir";
}

$sure = $sure_bitimi - $sure_baslangici;
echo "<br>Çalışma süresi: ", round($sure, 2), " saniye.\n";

//PHP kodlarına ayrılan belleğin miktarını bayt cinsinden döndürür.
echo 'Hafıza kullanımı: ', round(memory_get_peak_usage() / 1048576, 2), 'MB';

?>

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir