예제 #1
0
/**
 * Перемешивает строку по шаблону, строка должна иметь аказатель на начало шаблона
 * конец и розделитель символы между которым будут случайным образом подставлены,
 * вложенность шаблонов не ограничена - используется рекурсвиный обход
 *
 * @param string $startStr сама строока
 * @param int $offset смещение поиска
 * @param string $startChar символ начала шаблона
 * @param string $endChar символ конца шаблона
 * @param string $delimiter разделитель в шаьлоне
 * @return string
 */
function myShuffle($startStr, $offset = 0, $startChar = '{', $endChar = '}', $delimiter = '|')
{
    while (($startPoint = strpos($startStr, $startChar, $offset)) !== false) {
        if (($endPoint = strpos($startStr, $endChar, $startPoint + 1)) !== false) {
            //Если есть второй указатель на начало шаблона, и он начинается раньше чем предыдущий шаблон закончился
            if (($secondStart = strpos($startStr, $startChar, $startPoint + 1)) !== false) {
                if ($secondStart < $endPoint) {
                    $startStr = myShuffle($startStr, $secondStart - 1);
                }
            }
            if (($endPoint = strpos($startStr, $endChar, $startPoint + 1)) === false) {
                //Если нету закрывающего указателя, прекращаю цикл
                break;
            }
            //Я нашол открывающий и закрывающий указатели, теперь обрабатываю то что между ними
            $templateStr = substr($startStr, $startPoint, $endPoint - $startPoint + 1);
            $shuffleStr = substr($startStr, $startPoint + 1, $endPoint - $startPoint - 1);
            $shuffleWords = explode($delimiter, $shuffleStr);
            $newWord = $shuffleWords[rand(0, count($shuffleWords) - 1)];
            $startStr = str_replace($templateStr, $newWord, $startStr);
        }
    }
    return $startStr;
}
예제 #2
0
        $statement->bindValue(':target', $tab[$i]);
        $statement->bindValue(':id', $i);
        $statement->execute();
    }
    header('Location: admin.php?shuffled=1');
}
if (isset($_POST['all'])) {
    $result = $db->exec("DELETE FROM users;");
    header('Location: admin.php?deleted=all');
} else {
    if (isset($_POST['last'])) {
        $result = $db->exec("DELETE FROM users WHERE id = (SELECT MAX(id) FROM users)");
        header('Location: admin.php?deleted=last');
    } else {
        if (isset($_POST['shuffle'])) {
            update(myShuffle());
            header('Location: admin.php?shuffled=1');
        } else {
            if (isset($_POST['add'])) {
                if (!isset($_POST['firstname'])) {
                    $err = "unset";
                    header('Location: admin.php?unset=1');
                } else {
                    if ($_POST['firstname'] == "") {
                        $err = "empty";
                        header('Location: admin.php?empty=1');
                    } else {
                        if (has_firstname($_POST['firstname'])) {
                            $err = "doublon";
                            header('Location: admin.php?doublon=1');
                        } else {
예제 #3
0
function generate($i, $map)
{
    $arr = coord($i);
    $x = $arr[0];
    $y = $arr[1];
    $map[$x][$y] = ' ';
    $next = array();
    if ($x - 2 > 0) {
        $next[myCount($next)] = array(-2, 0);
    }
    if ($x + 2 < NODE_WIDTH - 1) {
        $next[myCount($next)] = array(+2, 0);
    }
    if ($y - 2 > 0) {
        $next[myCount($next)] = array(0, -2);
    }
    if ($y + 2 < NODE_HEIGHT - 1) {
        $next[myCount($next)] = array(0, +2);
    }
    myShuffle($next);
    foreach ($next as $d) {
        if ($map[$y + $d[1]][$x + $d[0]] != ' ') {
            $map[$y + $d[1] / 2][$x + $d[0] / 2] = ' ';
            generate(node($x + $d[0], $y + $d[1]), $map);
        }
    }
    return null;
}