function Generate($level)
    {
        $m = pow(-1, rand(1, 2)) * rand(1, 2);
        $b = rand(-5, 5);
        $A[0] = pow(-1, rand(1, 2)) * rand(1, 10);
        // Ax != 0
        $A[1] = $A[0] * $m + $b;
        $B[0] = -$A[0];
        $B[1] = $B[0] * $m + $b;
        // // Original exercise
        // $A = [-3,-1];
        // $B = [3,7];
        // $m = ($A[1]-$B[1])/($A[0]-$B[0]);
        // $b = $A[1] - $A[0]*$m;
        // print_r('m='.$m.', b='.$b.'<br />');
        // print_r('A('.$A[0].';'.$A[1].'), B('.$B[0].';'.$B[1].')	<br />');
        $mfrac['nom'] = ($B[1] - $A[1]) / gcd($B[1] - $A[1], $B[0] - $A[0]);
        $mfrac['denum'] = ($B[0] - $A[0]) / gcd($B[1] - $A[1], $B[0] - $A[0]);
        $question = 'Írja fel a hozzárendelési utasítását annak a lineáris függvénynek, mely $' . ($A[0] < 0 ? '(' . $A[0] . ')' : $A[0]) . '$-' . To($A[0]) . ' $' . ($A[1] < 0 ? '(' . $A[1] . ')' : $A[1]) . '$-' . Dativ($A[1]) . ' és $' . ($B[0] < 0 ? '(' . $B[0] . ')' : $B[0]) . '$-' . To($B[0]) . ' $' . ($B[1] < 0 ? '(' . $B[1] . ')' : $B[1]) . '$-' . Dativ($B[1]) . ' rendel! (A hozzárendelési utasítást $x\\mapsto mx+b$ alakban adja meg!)';
        $page[] = 'A hozzárendelés egy $y=mx+b$ alakú lineáris függvény lesz.';
        $page[] = 'A függvény $' . ($A[0] < 0 ? '(' . $A[0] . ')' : $A[0]) . '$-' . To($A[0]) . ' $' . ($A[1] < 0 ? '(' . $A[1] . ')' : $A[1]) . '$-' . Dativ($A[1]) . ' rendel, azaz:$$' . $A[1] . '=' . $A[0] . '\\cdot m+b$$';
        $page[] = 'Továbbá azt is tudjuk, hogy $' . ($B[0] < 0 ? '(' . $B[0] . ')' : $B[0]) . '$-' . To($B[0]) . ' $' . ($B[1] < 0 ? '(' . $B[1] . ')' : $B[1]) . '$-' . Dativ($B[1]) . ' rendel, azaz:$$' . $B[1] . '=' . $B[0] . '\\cdot m+b$$';
        $hints[] = $page;
        $page = [];
        $page[] = '$$\\begin{eqnarray}
			I.\\quad& ' . $A[1] . '&=&' . $A[0] . '\\cdot m+b\\\\
			II.\\quad& ' . $B[1] . '&=&' . $B[0] . '\\cdot m+b
		\\end{eqnarray}$$
			Vonjuk ki az első egyenletből a másodikat! Ekkor a $b$-s tagok kiesnek:$$\\begin{eqnarray}
			' . $A[1] . (-$B[1] < 0 ? '' : '+') . strval(-$B[1]) . '&=&(' . $A[0] . (-$B[0] < 0 ? '' : '+') . strval(-$B[0]) . ')\\cdot m+b-b\\\\
			' . strval($A[1] - $B[1]) . '&=&' . strval($A[0] - $B[0]) . '\\cdot m\\\\
			\\frac{' . strval($A[1] - $B[1]) . '}{' . strval($A[0] - $B[0]) . '}&=&m\\\\
		\\end{eqnarray}$$';
        $page[] = 'Tehát az $m$ értéke <span class="label label-success">$' . (round($m) == $m ? $m : '\\frac{' . $mfrac['nom'] . '}{' . $mfrac['denum'] . '}') . '$</span>.';
        $hints[] = $page;
        $page = [];
        $page[] = '$$\\begin{eqnarray}
			I.\\quad& ' . $A[1] . '&=&' . $A[0] . '\\cdot m+b\\\\
			II.\\quad& ' . $B[1] . '&=&' . $B[0] . '\\cdot m+b
		\\end{eqnarray}$$
		Most adjuk össze a két egyenletet! Ekkor az $m$-es tagok esnek ki:$$\\begin{eqnarray}
			' . $A[1] . ($B[1] < 0 ? '' : '+') . $B[1] . '&=&(' . $A[0] . ($B[0] < 0 ? '' : '+') . $B[0] . ')\\cdot m+b+b\\\\
			' . strval($A[1] + $B[1]) . '&=&2\\cdot b\\\\
			\\frac{' . strval($A[1] + $B[1]) . '}{2}&=&b\\\\
		\\end{eqnarray}$$';
        $page[] = 'Tehát a $b$ értéke <span class="label label-success">$' . $b . '$</span>.';
        $hints[] = $page;
        $correct = [round1($m), $b];
        $solution = '$m=' . round2($m) . '\\quad b=' . $b . '$';
        return array('question' => $question, 'correct' => $correct, 'type' => 'array', 'solution' => $solution, 'hints' => $hints, 'labels' => ['$m$', '$b$']);
    }
Esempio n. 2
0
 function Generate($level)
 {
     $ppl = rand(20, 40);
     $rounds = rand(round($ppl / 2), round($ppl * 4 / 5));
     $default = rand(3, 7) * 50;
     $extra = rand(5, 9);
     $total = $ppl - 1;
     $wins = rand(0, $total);
     // // Original exercise
     // $ppl = 31;
     // $rounds = 21;
     // $default = 250;
     // $extra = 7;
     // $total = $ppl-1;
     // $wins = 25;
     $wins = $wins == $rounds ? $wins + pow(-1, rand(0, 1)) : $wins;
     $defeats = $total - $wins;
     $points = $default + ($wins - $rounds) * $extra;
     $diff = $wins - $rounds;
     $question = 'Egy öttusaversenyen $' . $ppl . '$ résztvevő indult. A vívás az első szám, ahol mindenki mindenkivel egyszer mérkőzik meg. Aki $' . $rounds . '$ győzelmet arat, az $' . $default . '$ pontot kap. Aki ennél több győzelmet arat, az minden egyes további győzelemért $' . $extra . '$ pontot kap ' . The($default) . ' $' . $default . '$ ponton felül. Aki ennél kevesebbszer győz, attól annyiszor vonnak le $' . $extra . '$ pontot ' . The($default) . ' $' . $default . '$-' . From($default) . ', ahány győzelem hiányzik ' . The($rounds) . ' $' . $rounds . '$-' . To($rounds) . '. (A mérkőzések nem végződhetnek döntetlenre.) ';
     $type = 'int';
     $question .= 'Hány pontot kapott a vívás során Péter, akinek $' . $defeats . '$ veresége volt?';
     $correct = $points;
     $solution = '$' . $correct . '$';
     $total = $ppl - 1;
     $diff = $wins - $rounds;
     if ($diff > 0) {
         $page[] = 'Mivel mindenki mindenkivel vívott, ezért Péternek összesen $' . $ppl . '-1=' . $total . '$ mérkőzése volt.';
         $page[] = 'Péter $' . $total . '$ mérkőzésből $' . $defeats . '$-' . Dativ($defeats) . ' vesztett el, azaz a többi $' . $total . '-' . $defeats . '=' . $wins . '$ mérkőzést megnyerte.';
         $page[] = 'Mivel Péter legalább $' . $rounds . '$ mérkőzést nyert, ezért kap $' . $default . '$ pontot.';
         $page[] = 'Az előírt $' . $rounds . '$ mérkőzésen túl további $' . $wins . '-' . $rounds . '=' . $diff . '$ alkalommal nyert, ami további $' . $diff . '\\cdot' . $extra . '=' . strval($diff * $extra) . '$ pontot jelent.';
         $page[] = 'Tehát Péter összesen $' . $default . '+' . strval($diff * $extra) . '=$ <span class="label label-success">$' . $correct . '$</span> pontot kapott.';
         $hints[] = $page;
     } else {
         $diff *= -1;
         $page[] = 'Mivel mindenki mindenkivel vívott, ezért Péternek összesen $' . $ppl . '-1=' . $total . '$ mérkőzése volt.';
         $page[] = 'Péter győztes meccseinek száma $' . $rounds . '$ helyett mindössze $' . $wins . '$ volt, ami $' . $diff . '$-' . With($diff) . ' kevesebb.';
         $page[] = 'Ezért a $' . $default . '$ pontnál $' . $diff . '\\cdot' . $extra . '=' . strval($diff * $extra) . '$-' . By($diff * $extra) . ' kevesebb pontot kap.';
         $page[] = 'Tehát Péter összesen $' . $default . '-' . strval($diff * $extra) . '=$ <span class="label label-success">$' . $correct . '$</span> pontot kapott.';
         $hints[] = $page;
     }
     return array('question' => $question, 'correct' => $correct, 'solution' => $solution, 'type' => $type, 'hints' => $hints);
 }
function basic_subtraction_explanation($num1, $num2)
{
    $digits1 = str_split($num1);
    $digits2 = str_split($num2);
    $length1 = count($digits1);
    $length2 = count($digits2);
    $remain_old = 0;
    $remain_new = 0;
    $diff = $num1 - $num2;
    $diff_digits = str_split($diff);
    $diff_length = count($diff_digits);
    $values = array("egyesek", "tízesek", "százasok", "ezresek", "tízezresek", "százezresek", "milliósok", "tízmilliósok", "százmilliósok", "milliárdosok", "tízmilliárdosok", "százmilliárdosok");
    for ($ind = 0; $ind < $length1; $ind++) {
        // Get digits of current column
        $digit1 = array_pop($digits1);
        $digit2 = array_pop($digits2);
        $digit2b = $digit2 + $remain_old;
        // Define remainer
        $result_sub = $digit1 - $digit2b;
        if ($result_sub < 0 && $ind != $length1 - 1) {
            $remain_new = 1;
            $result_sub += 10;
            $digit1b = $digit1 + 10;
            $result_digit = $result_sub % 10;
        } else {
            $digit1b = $digit1;
            $result_digit = $result_sub;
        }
        $text = '';
        $text = 'Nézzük meg ' . (in_array($ind, [0, 4]) ? 'az' : 'a') . ' ' . $values[$ind] . ' helyén lévő számjegyeket! ';
        if ($remain_old > 0 && $digit2 != NULL) {
            $text .= '(Az előző számolásnál kapott maradékot ' . The($digit2) . ' $' . $digit2 . '$-' . To($digit2) . ' adjuk: $' . $digit2 . '+' . $remain_old . '=' . $digit2b . '$.) ';
        } elseif ($digit2 == NULL) {
            $text .= 'Az üres helyre $0$-t írunk' . ($remain_old > 0 ? ', viszont a maradékot ne felejtsük el hozzászámolni! ' : '. ');
        }
        $text .= 'Mennyit kell adni ' . The($digit2b) . ' $' . $digit2b . '$-' . To($digit2b) . ', hogy $' . $digit1b . '$-' . Dativ($digit1b) . ' kapjunk? $' . $result_sub . '$-' . Dativ($result_sub) . ', mert $' . $digit2b . '+' . $result_sub . '=' . $digit1b . '$. ';
        if ($remain_new == 1) {
            $article = The($result_digit);
            $Article = str_replace('a', 'A', $article);
            $text .= $Article . ' $' . $result_digit . '$-' . Dativ($result_digit) . ' leírjuk alulra, az $1$-et pedig ' . (in_array($ind + 1, [0, 4]) ? 'az' : 'a') . ' ' . $values[$ind + 1] . ' fölé:';
        } elseif ($result_digit != 0 || $ind < $diff_length) {
            $text .= 'Az eredményt írjuk le alulra:';
        }
        $text .= basic_subtraction_generate_equation($num1, $num2, $ind);
        if ($ind == $length1 - 1) {
            $text .= 'Tehát a különbség $\\textcolor{green}{' . strval($num1 - $num2) . '}$.';
        }
        $explanation[] = $text;
        $remain_old = $remain_new;
        $remain_new = 0;
    }
    return $explanation;
}
Esempio n. 4
-1
 function Generate($level)
 {
     $ppl = rand(20, 40);
     $rounds = rand(round($ppl / 2), round($ppl * 4 / 5));
     $default = rand(3, 7) * 50;
     $extra = rand(5, 9);
     $total = $ppl - 1;
     $wins = rand(0, $total);
     // // Original exercise
     // $ppl = 31;
     // $rounds = 21;
     // $default = 250;
     // $extra = 7;
     // $total = $ppl-1;
     // $wins = 16;
     $wins = $wins == $rounds ? $wins + pow(-1, rand(0, 1)) : $wins;
     $defeats = $total - $wins;
     $points = $default + ($wins - $rounds) * $extra;
     $diff = $wins - $rounds;
     $question = 'Egy öttusaversenyen $' . $ppl . '$ résztvevő indult. A vívás az első szám, ahol mindenki mindenkivel egyszer mérkőzik meg. Aki $' . $rounds . '$ győzelmet arat, az $' . $default . '$ pontot kap. Aki ennél több győzelmet arat, az minden egyes további győzelemért $' . $extra . '$ pontot kap ' . The($default) . ' $' . $default . '$ ponton felül. Aki ennél kevesebbszer győz, attól annyiszor vonnak le $' . $extra . '$ pontot ' . The($default) . ' $' . $default . '$-' . From($default) . ', ahány győzelem hiányzik ' . The($rounds) . ' $' . $rounds . '$-' . To($rounds) . '. (A mérkőzések nem végződhetnek döntetlenre.) ';
     $type = 'int';
     $question .= 'Hány győzelme volt Bencének, aki $' . $points . '$ pontot szerzett?';
     $correct = $wins;
     $solution = '$' . $correct . '$';
     if ($diff > 0) {
         $page[] = 'Bence $' . $default . '$ pontnál többet szerzett, ami azt jelenti, hogy legalább $' . $rounds . '$ mérkőzést nyert.';
         $page[] = 'Számoljuk ki, Bence pontjainak száma mennyivel több, mint $' . $default . '$:$$' . $points . '-' . $default . '=' . strval($diff * $extra) . '$$';
         $page[] = 'Ha ezt a számot elosztjuk $' . $extra . '$-' . With($extra) . ', megkapjuk, hogy hány további versenyt nyert Bence:$$' . strval($diff * $extra) . ':' . $extra . '=' . $diff . '$$';
         $page[] = 'Tehát Bencének összesen $' . $rounds . '+' . $diff . '=$ <span class="label label-success">$' . $correct . '$</span> győzelme volt.';
         $hints[] = $page;
     } else {
         $diff *= -1;
         $page[] = 'Bence $' . $default . '$ pontnál kevesebbet szerzett, ami azt jelenti, hogy kevesebb, mint $' . $rounds . '$ mérkőzést nyert.';
         $page[] = 'Számoljuk ki, Bence pontjainak száma mennyivel kevesebb, mint $' . $default . '$:$$' . $default . '-' . $points . '=' . strval($diff * $extra) . '$$';
         $page[] = 'Ha ezt a számot elosztjuk $' . $extra . '$-' . With($extra) . ', megkapjuk, hogy hány további versenyt vesztett el Bence:$$' . strval($diff * $extra) . ':' . $extra . '=' . $diff . '$$';
         $page[] = 'Tehát Bencének összesen $' . $rounds . '-' . $diff . '=$ <span class="label label-success">$' . $correct . '$</span> győzelme volt.';
         $hints[] = $page;
     }
     return array('question' => $question, 'correct' => $correct, 'solution' => $solution, 'type' => $type, 'hints' => $hints);
 }