function roman_convert_ROMto10($level)
{
    if ($level <= 3) {
        $szam = rand(1, 399);
    } elseif ($level <= 6) {
        $szam = rand(400, 3999);
    } else {
        $szam = numGen(rand(5, 6), 10);
        while ($szam >= 4000000) {
            $szam = numGen(rand(5, 6), 10);
        }
    }
    $romai_szam = convertRoman($szam);
    $correct = $szam;
    if ($szam > 9999) {
        $szam = number_format($szam, 0, ',', '\\\\,');
    }
    $question = 'Írjuk fel az alábbi római számot tízes számrendszerben!$$\\mathrm{' . $romai_szam . '}$$';
    $options = '';
    $solution = '$' . $szam . '$';
    $type = 'int';
    return array('question' => $question, 'options' => $options, 'correct' => $correct, 'solution' => $solution, 'type' => $type);
}
function binary_convert_10to2($level)
{
    if ($level <= 3) {
        $hossz = rand(2, 4);
    } elseif ($level <= 6) {
        $hossz = rand(5, 8);
    } else {
        $hossz = rand(9, 11);
    }
    $correct = numGen($hossz, 2);
    $numb = array(0, 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024);
    $szamjegyek = str_split($correct);
    $szam = 0;
    foreach ($szamjegyek as $key => $value) {
        if ($value == 1) {
            $szam = $szam + pow(2, $hossz - $key - 1);
        }
    }
    $question = 'A $0$ és $1$ számjegyek segítségével váltsuk át kettes számrendszerbe az alábbi számot!$$' . $szam . '_{10}$$';
    $solution = '$' . $correct . '$';
    $options = '';
    $type = 'int';
    return array('question' => $question, 'options' => $options, 'correct' => $correct, 'solution' => $solution, 'type' => $type);
}
function number_compare_between($level)
{
    if ($level <= 3) {
        $intervallum = rand(1, 5);
        $hossz = rand(1, 2);
    } elseif ($level <= 6) {
        $intervallum = rand(6, 15);
        $hossz = rand(3, 6);
    } else {
        $intervallum = rand(16, 20);
        $hossz = rand(7, 10);
    }
    if ($level <= 3 && rand(1, 3) == 1) {
        $szam_bal = 0;
    } else {
        $szam_bal = numGen($hossz, 10);
    }
    $szam_jobb = $szam_bal + $intervallum;
    $correct = $szam_jobb - $szam_bal - 1;
    if (rand(1, 2) == 1) {
        $hatarpont_bal = TRUE;
        $correct++;
    } else {
        $hatarpont_bal = FALSE;
    }
    if (rand(1, 2) == 1) {
        $hatarpont_jobb = TRUE;
        $correct++;
    } else {
        $hatarpont_jobb = FALSE;
    }
    $opcio_kivalasztott = rand(0, 3);
    if ($szam_bal > 9999) {
        $szam_bal = number_format($szam_bal, 0, ',', '\\,');
    }
    if ($szam_jobb > 9999) {
        $szam_jobb = number_format($szam_jobb, 0, ',', '\\,');
    }
    if ($hatarpont_bal) {
        if ($hatarpont_bal == 0 && rand(1, 2) == 1) {
            if (rand(1, 2 == 1)) {
                $szoveg_bal = '';
            }
        } else {
            $opcio_bal[0] = 'legalább $' . $szam_bal . '$';
            $opcio_bal[1] = 'nem kisebb, mint $' . $szam_bal . '$';
            $opcio_bal[2] = 'nem kisebb $' . $szam_bal . '$-' . By($szam_bal);
            $opcio_bal[3] = '$' . $szam_bal . '$-' . By($szam_bal) . ' nem kisebb';
            $szoveg_bal = $opcio_bal[$opcio_kivalasztott];
        }
    } else {
        $opcio_bal[0] = 'nagyobb, mint $' . $szam_bal . '$';
        $opcio_bal[1] = 'nagyobb, mint $' . $szam_bal . '$';
        $opcio_bal[2] = 'nagyobb $' . $szam_bal . '$-' . By($szam_bal);
        $opcio_bal[3] = '$' . $szam_bal . '$-' . By($szam_bal) . ' nagyobb';
        $szoveg_bal = $opcio_bal[$opcio_kivalasztott];
    }
    if ($hatarpont_jobb) {
        $opcio_jobb[0] = 'legfeljebb $' . $szam_jobb . '$';
        $opcio_jobb[1] = 'nem nagyobb, mint $' . $szam_jobb . '$';
        $opcio_jobb[2] = 'nem nagyobb $' . $szam_jobb . '$-' . By($szam_jobb);
        $opcio_jobb[3] = '$' . $szam_jobb . '$-' . By($szam_jobb) . ' nem nagyobb';
        $szoveg_jobb = $opcio_jobb[$opcio_kivalasztott];
    } else {
        $opcio_jobb[0] = 'kisebb, mint $' . $szam_jobb . '$';
        $opcio_jobb[1] = 'kisebb, mint $' . $szam_jobb . '$';
        $opcio_jobb[2] = 'kisebb $' . $szam_jobb . '$-' . By($szam_jobb);
        $opcio_jobb[3] = '$' . $szam_jobb . '$-' . By($szam_jobb) . ' kisebb';
        $szoveg_jobb = $opcio_jobb[$opcio_kivalasztott];
    }
    $options = '';
    $question = 'Hány olyan természetes szám van, amely ' . $szoveg_bal . ' és ' . $szoveg_jobb . '?';
    $solution = '$' . $correct . '$';
    $type = 'int';
    return array('question' => $question, 'options' => $options, 'correct' => $correct, 'solution' => $solution, 'type' => $type);
}
function basic_subtraction($level)
{
    if ($level <= 3) {
        $length1 = 1;
        $length2 = 1;
    } elseif ($level <= 6) {
        $length1 = 2;
        $length2 = round(1, 2);
    } else {
        $length1 = 3;
        $length2 = 2;
    }
    $num1 = numGen($length1, 10);
    $num2 = numGen($length2, 10);
    if ($num1 < $num2) {
        list($num1, $num2) = array($num2, $num1);
    }
    $correct = $num1 - $num2;
    $question = 'Végezzük el az alábbi kivonást!' . basic_subtraction_generate_equation($num1, $num2);
    if ($correct > 9999) {
        $solution = '$' . number_format($correct, 0, ',', '\\,') . '$';
    } else {
        $solution = '$' . $correct . '$';
    }
    $explanation = basic_subtraction_explanation($num1, $num2);
    return array('question' => $question, 'correct' => $correct, 'solution' => $solution, 'explanation' => $explanation, 'hint_replace' => TRUE);
}
function number_round_not_rounded($level)
{
    if ($level <= 3) {
        $hossz = rand(2, 3);
    } elseif ($level <= 6) {
        $hossz = rand(3, 6);
    } else {
        $hossz = rand(7, 10);
    }
    $szam = numGen($hossz, 10);
    for ($i = 0; $i < $hossz + 1; $i++) {
        $options_jo[$i] = round($szam / pow(10, $i)) * pow(10, $i);
        $options_fel[$i] = ceil($szam / pow(10, $i)) * pow(10, $i);
        $options_le[$i] = floor($szam / pow(10, $i)) * pow(10, $i);
        $options_rossz[$i] = round($szam / pow(10, $i) + 1) * pow(10, $i);
        $options_rossz_fel[$i] = ceil($szam / pow(10, $i) + 1) * pow(10, $i);
        $options_rossz_le[$i] = floor($szam / pow(10, $i) + 1) * pow(10, $i);
    }
    $sikerult = FALSE;
    $numb = range(0, $hossz);
    shuffle($numb);
    foreach ($numb as $value) {
        if (!$sikerult && !in_array($options_fel[$value], $options_jo) && $options_le[$value] != 0) {
            $rossz = $options_fel[$value];
            $options_jo[$value] = $rossz;
            $sikerult = TRUE;
        } elseif (!$sikerult && !in_array($options_le[$value], $options_jo) && $options_le[$value] != 0) {
            $rossz = $options_le[$value];
            $options_jo[$value] = $rossz;
            $sikerult = TRUE;
        }
    }
    if (!$sikerult) {
        foreach ($numb as $value) {
            if (!$sikerult && !in_array($options_rossz[$value], $options_jo) && $options_rossz[$value] != 0) {
                $rossz = $options_rossz[$value];
                $options_jo[$value] = $rossz;
                $sikerult = TRUE;
            } elseif (!$sikerult && !in_array($options_rossz_le[$value], $options_jo) && $options_rossz_le[$value] != 0) {
                $rossz = $options_rossz_le[$value];
                $options_jo[$value] = $rossz;
                $sikerult = TRUE;
            } elseif (!$sikerult && !in_array($options_rossz_fel[$value], $options_jo) && $options_rossz_fel[$value] != 0) {
                $rossz = $options_rossz_fel[$value];
                $options_jo[$value] = $rossz;
                $sikerult = TRUE;
            }
        }
    }
    if (!$sikerult) {
        print_r('Feladatgenerálás sikertelen. Kérlek, frissítsd a honlapot!');
    }
    $options = array_unique($options_jo);
    $correct = array_search($rossz, $options_jo);
    if ($options[$correct] > 9999) {
        $solution = '$' . number_format($options[$correct], 0, ',', '\\\\,') . '$';
    } else {
        $solution = '$' . $options[$correct] . '$';
    }
    foreach ($options as $key => $value) {
        if ($value > 9999) {
            $options[$key] = '$' . number_format($value, 0, ',', '\\,') . '$';
        } else {
            $options[$key] = '$' . $value . '$';
        }
    }
    if ($szam > 9999) {
        $szam = number_format($szam, 0, ',', '\\,');
    }
    $question = 'Melyik nem lehet az alábbi szám kerekített értéke?$$' . $szam . '$$';
    $type = 'quiz';
    return array('question' => $question, 'options' => $options, 'correct' => $correct, 'solution' => $solution, 'type' => $type);
}
/**
 * Generate new random number based on given number
 *
 * @param int $num Number
 * @param int $len Length of number
 *
 * @return int $new New number
 */
function newNum($num, $len)
{
    if (rand(1, 3) == 1) {
        $new = numGen(rand($len - 1, $len + 1), 10);
    } else {
        if (rand(1, 2) == 1) {
            $ujhossz = floor($len / 2);
        } else {
            $ujhossz = $len - 1;
        }
        $new = $num + numGen(rand(1, $ujhossz), 10);
    }
    return $new;
}