Ejemplo n.º 1
18
 function Hints($unit, $vat)
 {
     $percent = 100 + $vat;
     $price = $percent * $unit;
     $vat_value = $vat * $unit;
     $page[] = 'A nadrág ára két részből tevődik össze: a nettó árból (ez a $100\\%$), és az áfából (ez ' . The($vat) . ' $' . $vat . '\\%$).';
     $page[] = 'Ez összesen $' . $percent . '\\%$, aminek az értéke $' . $price . '\\,\\text{Ft}$:$$' . $percent . '\\%\\quad\\to\\quad' . $price . '\\,\\text{Ft}$$';
     $page[] = 'Számoljuk ki az $1\\%$ értékét! Ehhez el kell osztani ' . The($price) . ' $' . $price . '$-' . Dativ($price) . ' $' . $percent . '$-' . With($percent) . ': $' . $price . ':' . $percent . '=' . $unit . '$. Azaz:$$1\\%\\quad\\to\\quad' . $unit . '\\,\\text{Ft}$$';
     $page[] = 'Az áfa $' . $vat . '\\%$. Ennek az értékét úgy tudjuk kiszámolni, hogy ' . The($unit) . ' $' . $unit . '$-' . Dativ($unit) . ' megszorozzuk $' . $vat . '$-' . With($vat) . ': $' . $unit . '\\cdot' . $vat . '=' . $vat_value . '$. Azaz$$' . $vat . '\\%\\quad\\to\\quad' . $vat_value . '\\,\\text{Ft}$$';
     $page[] = 'Tehát a nadrág <span class="label label-success">$' . $vat_value . '$</span>$\\,\\text{Ft}$ áfát tartalmaz.';
     $hints[] = $page;
     return $hints;
 }
Ejemplo n.º 2
0
 function Hints($a, $b, $c, $d, $x1, $x2)
 {
     if ($d != 0) {
         $text[] = 'Először ' . ($d > 0 ? 'vonjunk ki' : 'adjunk hozzá') . ' az egyenlet mindkét ' . ($d > 0 ? 'oldalából' : 'oldalához') . ' $' . abs($d) . '$-' . Dativ($d) . ', hogy $0$ legyen a jobb oldalon!';
         $equation1 = $this->Equation($a, $b, $c, $d, $x1, $x2, $d);
         $text[] = '$$' . $equation1 . '$$';
         $equation2 = $this->Equation($a, $b, $c - $d, 0, $x1, $x2);
         $text[] = '$$' . $equation2 . '$$';
         // $hints[] = $text;
     }
     $text = [];
     $text[] = '<div class="alert alert-info"><b>Megoldóképlet:</b><br />Az $a\\cdot x^2+b\\cdot x+c=0$ alakú másodfokú egyenlet megoldásai:$$x_{1,2}=\\frac{-b\\pm\\sqrt{b^2-4ac}}{2a}$$</div>';
     if ($d != 0) {
         $text[] = 'Az egyenletet az előbb a következő alakra egyszerűsítettűk:$$' . $equation2 . '$$';
         $text[] = 'Ebben az egyenletben $a=' . $a . '$, $b=' . $b . '$, $c=' . strval($c - $d) . '$, ezért:';
     } else {
         $text[] = 'Jelen esetben $a=' . $a . '$, $b=' . $b . '$, $c=' . strval($c - $d) . '$, ezért:';
     }
     $c = $c - $d;
     $aa = $a >= 0 ? $a : '(' . $a . ')';
     $bb = $b >= 0 ? $b : '(' . $b . ')';
     $cc = $c >= 0 ? $c : '(' . $c . ')';
     // print_r('a='.$a.', b='.$b.', c='.$c.', aa='.$aa.', bb='.$bb.', cc='.$cc.'<br/>');
     $text[] = '$$x_{1,2}=\\frac{-' . $bb . '\\pm\\sqrt{' . $bb . '^2-4\\cdot' . $aa . '\\cdot' . $cc . '}}{2\\cdot' . $aa . '}$$';
     if ($x1 != $x2) {
         $text[] = 'Ezt kiszámolva az egyik megoldás <span class="label label-success">$' . $x1 . '$</span>,' . ' a másik pedig <span class="label label-success">$' . $x2 . '$</span>.';
     } else {
         $text[] = 'Ezt kiszámolva az egyenlet megoldása <span class="label label-success">$' . $x1 . '$</span>.';
     }
     $text[] = $this->SolverDetails($a, $aa, $b, $bb, $c, $cc);
     $hints[] = $text;
     return $hints;
 }
Ejemplo n.º 3
0
 function Generate($level)
 {
     $d = pow(-1, rand(1, 2)) * rand($level, 2 * $level);
     $a0 = rand(-2 * $level, 2 * $level);
     $pos = rand($level + 2, $level + 4);
     // // Original exercise
     // $d = -12;
     // $pos = 5;
     // $a0 = 43;
     $a1 = $a0 + ($pos - 2) * $d;
     $a2 = $a0 + ($pos - 1) * $d;
     $question = 'Egy számtani sorozat ' . OrderText($pos - 1) . ' tagja $' . $a1 . '$, ' . OrderText($pos) . ' tagja $' . $a2 . '$. Határozza meg a sorozat első tagját!';
     $correct = $a0;
     $solution = '$' . $correct . '$';
     $page[] = 'Tudjuk, hogy a $a_{' . strval($pos - 1) . '}=' . $a1 . '$, és $a_{' . $pos . '}=' . $a2 . '$.';
     $page[] = 'A differencia a szomszédos tagok különbsége:$$\\begin{eqnarray}a_{' . strval($pos - 1) . '}+d&=&a_{' . $pos . '}\\\\ d&=&a_{' . $pos . '}-a_{' . strval($pos - 1) . '}\\\\ d&=&' . $a2 . '-' . ($a1 > 0 ? $a1 : '(' . $a1 . ')\\\\ d&=&' . $a2 . '+' . abs($a1)) . '=' . $d . '\\end{eqnarray}$$';
     $page[] = '<div class="alert alert-info"><strong>Sorozat $n.$ tagja:</strong><br />Ha egy sorozat első eleme $a_1$, és a differenciája $d$, akkor a sorozat $n.$ tagja a következő képlettel számítható:$$a_n=a_1+(n-1)\\cdot d$$</div>';
     $hints[] = $page;
     $temp = ($pos - 1) * $d;
     $page = [];
     $page[] = 'Írjuk fel ezt az összefüggést $n=' . $pos . '$-' . On($pos) . '!$$a_{' . $pos . '}=a_1+(' . $pos . '-1)\\cdot ' . ($d > 0 ? $d : '(' . $d . ')') . '$$';
     $page[] = 'Helyettesítsük be $a_{' . $pos . '}$-' . Dativ($pos) . ', és számoljuk ki a jobb oldali kifejezést:$$' . $a2 . '=a_1+' . strval($pos - 1) . '\\cdot ' . ($d > 0 ? $d : '(' . $d . ')') . '=a_1' . ($temp > 0 ? '+' . $temp : $temp) . '$$';
     if ($temp < 0) {
         $page[] = 'Adjunk hozzá mindkét oldalhoz $' . abs($temp) . '$-' . Dativ($temp) . '!$$' . $a2 . '+' . abs($temp) . '=a_1$$';
     } elseif ($temp > 0) {
         $page[] = 'Vonjunk ki mindkét oldalból $' . $temp . '$-' . Dativ($temp) . '!$$' . $a2 . '-' . $temp . '=a_1$$';
     }
     $page[] = 'Tehát az $a_1$ értéke <span class="label label-success">$' . $a0 . '$</span>.';
     $hints[] = $page;
     return array('question' => $question, 'correct' => $correct, 'solution' => $solution, 'hints' => $hints);
 }
Ejemplo n.º 4
0
 function Generate($level)
 {
     $year_diff = rand($level, 2 * $level);
     $year2 = 2014 + $year_diff;
     $tiger1 = rand($level, 5 * $level) * 100;
     $rate1 = rand(750, 950) / 1000;
     // // Original exercise
     // $year_diff = 2;
     // $year2 = 2014 + $year_diff;
     // $tiger1 = 3600;
     // $rate1 = 0.854;
     $rate2 = round1(pow($rate1, $year_diff), 3);
     $rate2_percent = round1(100 * $rate2, 0);
     $tiger2 = round($tiger1 * $rate2);
     $question = 'Egy $2014$ végén készült előrejelzés szerint az Indiában élő tigrisek $t$ száma az elkövetkező években (az egyes évek végén) megközelítőleg a következő összefüggés szerint alakul: $t(x) = ' . $tiger1 . ' \\cdot ' . round2($rate1, 3) . '^x$, ahol $x$ a $2014$ óta eltelt évek számát jelöli. Számítsa ki, hogy az előrejelzés alapján $' . $year2 . '$ végére hány százalékkal csökken a tigrisek száma a $2014$-es év végi adathoz képest! <i>(A megoldást egészekre kerekítve adja meg!)</i>';
     $page[] = '<b>1. megoldás:</b> Ha az $x$ helyére $0$-t írunk, megkapjuk a tigrisek számát $2014$-ben:$$t(0)=' . $tiger1 . '\\cdot' . round2($rate1, 3) . '^0=' . $tiger1 . '\\cdot1=' . $tiger1 . '$$';
     $page[] = '$2014$ és $' . $year2 . '$ között összesen $' . $year2 . '-2014=' . $year_diff . '$ év telik el.';
     $page[] = 'Ezért ha az $x$ helyére $' . $year_diff . '$-' . Dativ($year_diff) . ' írunk, megkapjuk, hogy az előrejelzés szerint $' . $year2 . '$-' . In($year2) . ' hány tigris lesz:' . '$$t(' . $year_diff . ')=' . $tiger1 . '\\cdot' . round2($rate1, 3) . '^{' . $year_diff . '}' . ($rate2_percent == 100 * $rate2 ? '=' : '\\approx') . $tiger1 . '\\cdot' . round2($rate2, 3) . ($tiger1 * $rate2 == $tiger2 ? '=' : '\\approx') . $tiger2 . '$$';
     $page[] = 'Osszuk el a $t(' . $year_diff . ')$-' . Dativ($year_diff) . ' elosztjuk $t(0)$-lal:' . '$$\\frac{t(' . $year_diff . ')}{t(0)}=\\frac{' . round2($tiger2, 0) . '}{' . $tiger1 . '}\\approx' . round2($rate2, 3) . ($rate2_percent == 100 * $rate2 ? '=' : '\\approx') . $rate2_percent . '\\%$$';
     $page[] = 'Ez azt jelenti, hogy $' . $year2 . '$-' . In($year2) . ' a tigrisek száma $2014$-hez képest csak $' . $rate2_percent . '\\%$ lesz, vagyis a számuk $100\\%-' . $rate2_percent . '\\%=$<span class="label label-success">$' . strval(100 - $rate2_percent) . '$</span>$\\%$-kal csökken.';
     $hints[] = $page;
     $page = [];
     $page[] = '<b>2. megoldás:</b> A tigrisek száma minden évben az előző évinek $' . round2($rate1, 3) . '$-' . Times2($rate1 * 1000) . ' változik.';
     $page[] = 'Ekkor $' . $year_diff . '$ év alatt a változás $' . round2($rate1, 3) . '^' . $year_diff . ($rate2_percent == $rate2 * 100 ? '=' : '\\approx') . round2($rate2, 3) . ($rate2_percent == 100 * $rate2 ? '=' : '\\approx') . $rate2_percent . '\\%$ lesz.';
     $page[] = 'Azaz, a tigrisek száma $100\\%-' . $rate2_percent . '\\%=$<span class="label label-success">$' . strval(100 - $rate2_percent) . '$</span>$\\%$-kal csökken.';
     $hints[] = $page;
     $correct = 100 - $rate2_percent;
     $solution = '$' . $correct . '$';
     return array('question' => $question, 'correct' => $correct, 'solution' => $solution, 'labels' => ['right' => '$\\%$'], 'hints' => $hints);
 }
Ejemplo n.º 5
0
 function Hints($names, $abc, $ab, $bc, $ca, $single, $correct)
 {
     $hints[][] = 'Írjuk egy Venn-diagram megfelelő részeibe a legalább két diák által jól megoldott feladatok számát.' . $this->VennDiagram($names, $abc, $ab, $bc, $ca);
     $hints[][] = '$' . $abc . '$ olyan kérdés volt, amire mindhárman jól válaszoltak, ezt középre írjuk:' . $this->VennDiagram($names, $abc, $ab, $bc, $ca, 1);
     $hints[][] = '$' . strval($abc + $ab) . '$ olyan kérdés volt, amire ' . $names[0] . ' és ' . $names[1] . ' is jól válaszolt, ezért hozzájuk $' . $ab . '$-' . Dativ($ab) . ' írunk, mert így lesz ennyi a két szám összege:' . $this->VennDiagram($names, $abc, $ab, $bc, $ca, 2);
     $hints[][] = '$' . strval($abc + $bc) . '$ olyan kérdés volt, amire ' . $names[1] . ' és ' . $names[2] . ' is jól válaszolt, ezért hozzájuk $' . $bc . '$-' . Dativ($bc) . ' írunk, mert így lesz ennyi a két szám összege:' . $this->VennDiagram($names, $abc, $ab, $bc, $ca, 3);
     $hints[][] = '$' . strval($abc + $ca) . '$ olyan kérdés volt, amire ' . $names[2] . ' és ' . $names[0] . ' is jól válaszolt, ezért hozzájuk $' . $ca . '$-' . Dativ($ca) . ' írunk, mert így lesz ennyi a két szám összege:' . $this->VennDiagram($names, $abc, $ab, $bc, $ca, 4);
     $hints[][] = 'Azért a $' . $single . '$ feladatért, amit csak egy diák oldott meg helyesen, $\\color{green}{' . $single . '}$ pont jár. Így a három tanuló összesen $\\color{red}{3\\cdot' . $abc . '}\\color{black}{+}\\color{blue}{2\\cdot(' . $ab . '+' . $bc . '+' . $ca . ')}\\color{black}{+}\\color{green}{' . $single . '}\\color{black}{=}$<span class="label label-success">$' . $correct . '$</span> pontot szerzett.' . $this->VennDiagram($names, $abc, $ab, $bc, $ca, 5);
     return $hints;
 }
Ejemplo n.º 6
0
    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$']);
    }
 function Hints($a, $b)
 {
     $value_min = min(-1, -$b, $a - abs($b));
     $value_max = max(1, $b, $a + abs($b));
     $hints[][] = 'Rajzoljuk fel először az $f(x)=\\sin x$ függvényt!' . $this->DrawSineFunction(0, 1, 0, 0, $value_min, $value_max);
     $hints[][] = 'Az $f(x)=\\sin x$ függvény $-1$ és $1$ közötti értékeket vesz fel, ezért az értékészlete $[-1;1]$ lesz.' . $this->DrawSineFunction(0, 1, 0, 0, $value_min, $value_max, 1);
     if ($b != 1) {
         $hints[][] = 'Most nézzük meg az $f(x)=' . $b . '\\sin x$ függvényt! Ezt úgy kapjuk, hogy az előző függvényt "megnyújtjuk" ' . '$' . abs($b) . '$-' . With(abs($b)) . ($b > 0 ? ':' : ', és tükrözzük az $y$ tengelyre:') . $this->DrawSineFunction(0, $b, 0, 1, $value_min, $value_max);
         $hints[][] = 'Az $f(x)=' . $b . '\\sin x$ függvény értékkészletét úgy kapjuk meg, hogy az eredeti függvény értékkészletének végpontjait megszorozzuk $' . strval(abs($b)) . '$-' . With(abs($b)) . '. Ezért az új függvény értékkészlete ' . '$[-1\\cdot' . abs($b) . ';1\\cdot' . abs($b) . ']=[-' . abs($b) . ';' . abs($b) . ']$ lesz.' . ($a == 0 ? ' Tehát a megoldás <span class="label label-success">$[-' . abs($b) . ';' . abs($b) . ']$</span>.' : '') . $this->DrawSineFunction(0, $b, 0, 1, $value_min, $value_max, 1);
     }
     if ($a != 0) {
         $hints[][] = 'Most nézzük meg az $f(x)=' . $a . '+' . ($b != 1 ? $b : '') . '\\sin x$ függvényt! ' . 'Ezt úgy kapjuk, hogy az előző függvényt "eltoljuk" ' . ($a > 0 ? 'fölfelé' : 'lefelé') . ' $' . $a . '$-' . With($a) . ':' . $this->DrawSineFunction($a, $b, 0, $b, $value_min, $value_max);
         $hints[][] = 'Az $f(x)=' . $a . '+' . ($b != 1 ? $b : '') . '\\sin x$ függvény értékkészletét úgy kapjuk meg, hogy az előző függvény értékkészletének végpontjaihoz hozzáadunk $' . $a . '$-' . Dativ($a) . '. Ezért a megoldás $[-' . abs($b) . ($a > 0 ? '+' . $a : $a) . ';' . abs($b) . ($a > 0 ? '+' . $a : $a) . ']=$<span class="label label-success">$[' . strval(-abs($b) + $a) . ';' . strval(abs($b) + $a) . ']$</span>.' . $this->DrawSineFunction($a, $b, 0, $b, $value_min, $value_max, 1);
     }
     return $hints;
 }
Ejemplo n.º 8
0
 function Hints($a, $b)
 {
     $hints[][] = 'Rajzoljuk fel először az $f(x)=\\sin x$ függvényt!' . $this->DrawSineFunction($a, $b, 0);
     if ($a != 1) {
         $hints[][] = 'Most rajzoljuk fel az $f(x)=' . $this->SinFunctionText($a) . '$ függvényt! Ezt úgy kapjuk meg, ha az eredeti függvényt kétszeresére ' . ($a == 2 ? '"zsugorítjuk"' : '"nyújtjuk"') . ' az $x$ tengely mentén:' . $this->DrawSineFunction($a, $b, 1);
     }
     if (abs($b) > 1) {
         $hints[][] = 'Látjuk, hogy a függvény sosem veszi fel ' . The($b) . ' $' . $b . '$ értéket, ezért a feladatnak <span class="label label-success">nincs megoldása</span>.' . $this->DrawSineFunction($a, $b, 2);
     } else {
         $sol = $this->Solution($a, $b, FALSE);
         $per = $this->Period($a, $b, FALSE);
         $hints[][] = 'Nézzük meg, hogy a függvény melyik pontokban veszi fel  ' . The($b) . ' $' . $b . '$ értéket:' . $this->DrawSineFunction($a, $b, 2);
         $hints[][] = 'Az ábráról könnyen leolvasható, hogy a függvény a $' . $sol . '$ helyen veszi fel ' . ' ' . The($b) . ' $' . $b . '$-' . Dativ($b) . ', és az is, hogy a megoldások közti távolság $' . $per . '$.' . $this->DrawSineFunction($a, $b, 3);
         $hints[][] = 'Tehát a megoldás <span class="label label-success">$' . ($sol == '0' ? '' : $sol . '+') . 'k\\cdot' . $per . '$</span>.' . $this->DrawSineFunction($a, $b, 3);
     }
     return $hints;
 }
Ejemplo n.º 9
0
 function Generate($level)
 {
     $q = rand(2, 2 * $level);
     $a0 = pow(-1, rand(0, 1)) * rand(1, $level);
     $a1 = $a0 * $q;
     $a2 = $a1 * $q;
     $question = 'Egy mértani sorozat három egymást követő tagja ebben a sorrendben $' . $a0 . ';x$ és $' . $a2 . '$. ';
     $question .= 'Határozza meg a sorozat hányadosát!';
     $correct = array($q, -$q);
     $solution = '$q_1=' . $q . '$, és $q_2=' . strval(-$q) . '$';
     $labels = array('$q_1$', '$q_2$');
     $page[] = 'A mértani sorozatban minden tagot úgy tudunk kiszámolni, hogy megszorozzuk $\\textcolor{blue}{q}$-val (a <i>hányadossal</i>) az előző számot:$$a_1\\xrightarrow{\\cdot\\textcolor{blue}{q}}a_2\\xrightarrow{\\cdot\\textcolor{blue}{q}}a_3$$';
     $page[] = 'Tehát ha az első szám $' . $a0 . '$, akkor' . '$$\\begin{eqnarray}a_1&=&' . $a0 . '\\\\' . ' a_2&=&a_1\\cdot\\textcolor{blue}{q}=' . $a0 . '\\cdot\\textcolor{blue}{q}=\\textcolor{red}{x} \\\\ ' . ' a_3&=&a_2\\cdot\\textcolor{blue}{q}=a_1\\cdot\\textcolor{blue}{q}^2=' . $a2 . '\\end{eqnarray}$$';
     $page[] = 'Látjuk, hogy ha ' . The($a2) . ' $' . $a2 . '$-' . Dativ($a2) . ' elosztjuk $' . $a0 . '$-' . With($a0) . ', a hányados négyzetét kapjuk:$$\\textcolor{blue}{q}^2=' . $a2 . ':' . ($a0 < 0 ? '(' . $a0 . ')' : $a0) . '=' . strval(pow($q, 2)) . '$$';
     $page[] = 'Ha ebből négyzetgyököt vonunk, megkapjuk a $\\textcolor{blue}{q}$ abszolútértékét:' . '$$|\\textcolor{blue}{q}|=\\sqrt{' . strval(pow($q, 2)) . '}=' . abs($q) . '$$';
     $page[] = 'Tehát a $q$ értéke <span class="label label-success">$' . $q . '$</span>, vagy <span class="label label-success">$' . strval(-$q) . '$</span>.';
     $hints[] = $page;
     return array('question' => $question, 'correct' => $correct, 'solution' => $solution, 'labels' => $labels, 'type' => 'list', 'hints' => $hints);
 }
Ejemplo n.º 10
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);
 }
Ejemplo n.º 11
0
 function Generate($level)
 {
     $flower = rand($level, 2 * $level);
     $all = $flower + rand(1, 2);
     $p = rand(80, 95) / 100;
     // // Original exercise
     // $flower = 8;
     // $all 	= 10;
     // $p 		= 0.91;
     $question = 'A kertészetben a sok virághagymának csak egy része hajt ki: $' . round2($p) . '$ annak a valószínűsége, hogy egy elültetett virághagyma kihajt. Számítsa ki annak a valószínűségét, hogy $' . $all . '$ darab elültetett virághagyma közül legalább $' . $flower . '$ kihajt! Válaszát három tizedesjegyre kerekítve adja meg!';
     $text = 'Ha $' . $all . '$ virághagyma közül legalább $' . $flower . '$ hajt ki, az azt jelenti, hogy ';
     for ($i = $flower; $i <= $all; $i++) {
         $text .= '$' . $i . '$';
         if ($i == $all - 1) {
             $text .= ' vagy ';
         } elseif ($i == $all - 2) {
             $text .= ', ';
         }
     }
     $text .= ' virághagyma hajt ki.';
     $page[] = $text;
     $page[] = 'Vizsgáljuk meg ezeket az eseteket külön-külön!';
     $hints[] = $page;
     $order = 1;
     for ($i = $flower; $i <= $all; $i++) {
         $p_i = binomial_coeff($all, $i) * pow($p, $i) * pow(1 - $p, $all - $i);
         $page = [];
         $page[] = '<b>' . $order . '. eset:</b> $' . $all . '$ virághagyma közül $' . $i . '$ hajt ki.';
         $page[] = '$' . $all . '$ virághagyma közül $' . $i . '$-' . Dativ($i) . ' összesen ${' . $all . '\\choose ' . $i . '}$-féleképpen lehet kiválasztani.';
         $page[] = 'Annak a valószínűsége, hogy ' . The($i) . ' $' . $i . '$ hagyma kihajt: $' . round2($p, 4) . '^{' . $i . '}$.';
         $page[] = 'Annak a valószínűsége, hogy ' . The($all - $i) . ' $' . strval($all - $i) . '$ hagyma nem hajt ki: $(1-' . round2($p, 4) . ')^{' . strval($all - $i) . '}$.';
         $page[] = 'Így ennek az esetnek a valószínűsége összesen:$${' . $all . '\\choose ' . $i . '}\\cdot' . round2($p, 4) . '^{' . $i . '}\\cdot(1-' . round2($p, 4) . ')^{' . strval($all - $i) . '}\\approx' . round2($p_i, 4) . '$$';
         $hints[] = $page;
         $p_all1[] = round1($p_i, 4);
         $p_all2[] = round2($p_i, 4);
         $order++;
     }
     $hints[][] = 'A keresett valószínűség tehát $' . implode('+', $p_all2) . '=' . round2(array_sum($p_all1), 5) . '$, aminek a három tizedesjegyre kerekített értéke <span class="label label-success">$' . round2(array_sum($p_all1), 3) . '$</span>.';
     $correct = round1(array_sum($p_all1), 3);
     $solution = '$' . $correct . '$';
     return array('question' => $question, 'correct' => $correct, 'solution' => $solution, 'hints' => $hints);
 }
Ejemplo n.º 12
0
 function Generate($level)
 {
     if ($level <= 3) {
         $diff = pow(-1, rand(1, 2)) * rand(2, 3);
         $abs_val = rand(1, 3);
     } elseif ($level <= 6) {
         $diff = pow(-1, rand(1, 2)) * rand(4, 6);
         $abs_val = rand(1, 6);
     } else {
         $diff = pow(-1, rand(1, 2)) * rand(7, 15);
         $abs_val = rand(1, 15);
     }
     // // Original exercise
     // $diff = 2;
     // $abs_val = 6;
     $solution1 = $abs_val - $diff;
     $solution2 = -$abs_val - $diff;
     $question = 'Az $x$-nél $' . abs($diff) . '$-' . With(abs($diff)) . ' ' . ($diff < 0 ? 'kisebb' : 'nagyobb') . ' számnak az abszolútértéke $' . $abs_val . '$. Adja meg $x$ lehetséges értékeit!';
     $page[] = 'A feladat azt mondja, hogy ha az ' . ($diff < 0 ? '$x$-ből kivonok' : '$x$-hez hozzáadok') . ' $' . abs($diff) . '$-' . Dativ(abs($diff)) . ', és ennek az abszolút értékét veszem, $' . $abs_val . '$ lesz az eredmény.';
     $page[] = 'Írjuk fel ezt egyenlettel:' . '$$|x' . ($diff < 0 ? '-' : '+') . abs($diff) . '|=' . $abs_val . '$$';
     $page[] = 'Válasszuk szét az eseteket aszerint, hogy az $x' . ($diff < 0 ? '-' : '+') . abs($diff) . '$' . ' pozitív vagy negatív-e.';
     $hints[] = $page;
     $page = [];
     $page[] = '<b>1. eset:</b> $x' . ($diff < 0 ? '-' : '+') . abs($diff) . '>0$';
     $page[] = 'Ekkor az abszolút érték jel elhagyható:' . '$$x' . ($diff < 0 ? '-' : '+') . abs($diff) . '=' . $abs_val . '$$';
     $page[] = ($diff < 0 ? 'Adjunk hozzá mindkét oldalhoz' : 'Vonjunk ki mindkét oldalból') . ' $' . abs($diff) . '$-' . Dativ(abs($diff)) . '!:' . '$$x=' . $abs_val . ($diff < 0 ? '+' : '-') . abs($diff) . '=' . $solution1 . '$$';
     $page[] = 'Tehát az egyik megoldás <span class="label label-success">$' . $solution1 . '$</span>.';
     $hints[] = $page;
     $page = [];
     $page[] = '<b>2. eset:</b> $x' . ($diff < 0 ? '-' : '+') . abs($diff) . '<0$';
     $page[] = 'Ekkor az abszolút érték a kifejezés $-1$-szeresét jelenti:' . '$$-(x' . ($diff < 0 ? '-' : '+') . abs($diff) . ')=' . $abs_val . '$$';
     $page[] = 'Szorozzuk meg mindkét oldalt $-1$-gyel:' . '$$x' . ($diff < 0 ? '-' : '+') . abs($diff) . '=-' . $abs_val . '$$';
     $page[] = ($diff < 0 ? 'Adjunk hozzá mindkét oldalhoz' : 'Vonjunk ki mindkét oldalból') . ' $' . abs($diff) . '$-' . Dativ(abs($diff)) . '!:' . '$$x=-' . $abs_val . ($diff < 0 ? '+' : '-') . abs($diff) . '=' . $solution2 . '$$';
     $page[] = 'Tehát a másik megoldás <span class="label label-success">$' . $solution2 . '$</span>.';
     $hints[] = $page;
     $correct = array($solution1, $solution2);
     $labels = array('$x_1$', '$x_2$');
     $solution = 'a megoldások: $x_1=' . $solution1 . '$, $x_2=' . $solution2 . '$';
     return array('question' => $question, 'correct' => $correct, 'labels' => $labels, 'solution' => $solution, 'hints' => $hints, 'type' => 'list');
 }
Ejemplo n.º 13
0
 function Generate($level)
 {
     $q = rand(2, 2 * $level);
     $a0 = pow(-1, rand(0, 1)) * rand(1, $level);
     // // Original exercise
     // $q = 3/4;
     // $a0 = 32;
     $a1 = $a0 * $q;
     $a2 = $a1 * $q;
     $question = 'Egy mértani sorozat három egymást követő tagja ebben a sorrendben $' . $a0 . ';x$ és $' . $a2 . '$. ';
     $question .= 'Határozza meg az $x$ értékét!';
     $correct = array($a1, -$a1);
     $solution = '$x_1=' . $a1 . '$, és $x_2=' . strval(-$a1) . '$$';
     $labels = array('$x_1$', '$x_2$');
     $page[] = 'A mértani sorozatban minden tagot úgy tudunk kiszámolni, hogy megszorozzuk $\\textcolor{blue}{q}$-val (a <i>hányadossal</i>) az előző számot:$$a_1\\xrightarrow{\\cdot\\textcolor{blue}{q}}a_2\\xrightarrow{\\cdot\\textcolor{blue}{q}}a_3$$';
     $page[] = 'Tehát ha az első szám $' . $a0 . '$, akkor' . '$$\\begin{eqnarray}a_1&=&' . $a0 . '\\\\' . ' a_2&=&a_1\\cdot\\textcolor{blue}{q}=' . $a0 . '\\cdot\\textcolor{blue}{q}=\\textcolor{red}{x} \\\\ ' . ' a_3&=&a_2\\cdot\\textcolor{blue}{q}=a_1\\cdot\\textcolor{blue}{q}^2=' . $a2 . '\\end{eqnarray}$$';
     $page[] = 'Látjuk, hogy ha ' . The($a2) . ' $' . $a2 . '$-' . Dativ($a2) . ' elosztjuk $' . $a0 . '$-' . With($a0) . ', a hányados négyzetét kapjuk:$$\\textcolor{blue}{q}^2=' . $a2 . ':' . ($a0 < 0 ? '(' . $a0 . ')' : $a0) . '=' . strval(pow($q, 2)) . '$$';
     $page[] = 'Ha ebből négyzetgyököt vonunk, megkapjuk a $\\textcolor{blue}{q}$ abszolútértékét:' . '$$|\\textcolor{blue}{q}|=\\sqrt{' . strval(pow($q, 2)) . '}=' . abs($q) . '$$';
     $page[] = 'Tehát a $q$ értéke $' . $q . '$, vagy $' . strval(-$q) . '$.';
     $page[] = 'Így már az $\\textcolor{red}{x}$ értékét is ki tudjuk számolni:' . '$$\\begin{eqnarray}\\textcolor{red}{x_1}&=&' . $a0 . '\\cdot' . ($q < 0 ? '(' . $q . ')' : $q) . '=' . strval($a0 * $q) . '\\\\ \\textcolor{red}{x_2}&=&' . $a0 . '\\cdot' . (-$q < 0 ? '(' . strval(-$q) . ')' : strval(-$q)) . '=' . strval(-$a0 * $q) . '\\end{eqnarray}$$';
     $page[] = 'Tehát az $x$ értéke <span class="label label-success">$' . strval($a0 * $q) . '$</span>, vagy <span class="label label-success">$' . strval(-$a0 * $q) . '$</span>.';
     // $page[] = 'A mértani sorozatban minden tagot úgy tudunk kiszámolni, hogy megszorozzuk $\textcolor{blue}{q}$-val (a <i>hányadossal</i>) az előző számot:$$a_1\xrightarrow{\cdot\textcolor{blue}{q}}a_2\xrightarrow{\cdot\textcolor{blue}{q}}a_3$$';
     // $page[] = 'Tehát ha az első szám $'.$a0.'$, akkor'
     // 	.'$$\begin{eqnarray}a_1&=&'.$a0.'\\\\'
     // 	.' a_2&=&a_1\cdot\textcolor{blue}{q}='.$a0.'\cdot\textcolor{blue}{q}=\textcolor{red}{x} \\\\ '
     // 	.' a_3&=&a_2\cdot\textcolor{blue}{q}=a_1\cdot\textcolor{blue}{q}^2='.$a2.'\end{eqnarray}$$';
     // $page[] = 'Látjuk, hogy ha '.The($a2).' $'.$a2.'$-'.Dativ($a2).' elosztjuk $'.$a0.'$-'.With($a0)
     // 	.', a hányados négyzetét kapjuk:$$\textcolor{blue}{q}^2='.$a2.':'.($a0<0 ? '('.$a0.')' : $a0).'=\frac{9}{16}$$';
     // $page[] = 'Ha ebből négyzetgyököt vonunk, megkapjuk a $\textcolor{blue}{q}$ abszolútértékét:'
     // 	.'$$|\textcolor{blue}{q}|=\sqrt{\frac{9}{16}}=\frac{3}{4}$$';
     // $page[] = 'Tehát a $q$ értéke $\frac{3}{4}$, vagy $-\frac{3}{4}$.';
     // $page[] = 'Így már az $\textcolor{red}{x}$ értékét is ki tudjuk számolni:'
     // 	.'$$\begin{eqnarray}\textcolor{red}{x_1}&=&'.$a0.'\cdot\frac{3}{4}=8\cdot3='.strval($a0*$q).'\\\\ \textcolor{red}{x_2}&=&'.$a0.'\cdot\left(-\frac{3}{4}\right)=8\cdot(-3)='.strval(-$a0*$q).'\end{eqnarray}$$';
     // $page[] = 'Tehát az $x$ értéke <span class="label label-success">$'.strval($a0*$q).'$</span>, vagy <span class="label label-success">$'.strval(-$a0*$q).'$</span>.';
     $hints[] = $page;
     return array('question' => $question, 'correct' => $correct, 'solution' => $solution, 'labels' => $labels, 'type' => 'list', 'hints' => $hints);
 }
Ejemplo n.º 14
0
function basic_division_explanation($dividend, $divisor)
{
    $digits = str_split($dividend);
    $order = array("első", "második", "harmadik", "negyedik", "ötödik", "hatodik", "hetedik", "nyolcadik", "kilencedik", "tizedik");
    // Multiply numbers
    $remain_prev = 0;
    $quotient_total = 0;
    for ($ind = 0; $ind < count($digits); $ind++) {
        $text = '';
        $digit = $digits[$ind];
        $dividend_current = 10 * $remain_prev + $digit;
        $quotient_current = floor($dividend_current / $divisor);
        $remain_current = $dividend_current % $divisor;
        $check_current = $quotient_current * $divisor;
        if ($quotient_total != 0 || $quotient_current != 0) {
            $quotient_total = $quotient_total * 10 + $quotient_current;
        }
        if ($remain_prev == 0) {
            $text .= 'Írjuk le alulra ' . (in_array($ind, [1, 4]) ? 'az' : 'a') . ' ' . $order[$ind] . ' számjegyet! ';
        } else {
            $text .= 'Írjuk ' . The($remain_prev) . ' $' . $remain_prev . '$ mellé ' . (in_array($ind, [1, 4]) ? 'az' : 'a') . ' ' . $order[$ind] . ' számjegyet! ';
        }
        if ($quotient_current == 0) {
            $text .= 'Mivel ' . The($dividend_current) . ' $' . $dividend_current . '$-' . In($dividend_current) . ' nincs meg ' . The($divisor) . ' $' . $divisor . '$, ezért ';
            if ($quotient_total == 0) {
                $text .= 'továbbmegyünk: ';
            } else {
                $text .= 'leírjuk a $0$-t az eredményhez: ';
            }
        } elseif ($divisor > 30) {
            $dividend_round = round($dividend_current / 10);
            $divisor_round = round($divisor / 10);
            $quotient_round = floor($dividend_round / $divisor_round);
            $check_round = $quotient_round * $divisor;
            $text .= 'Hányszor van meg ' . The($dividend_current) . ' $' . $dividend_current . '$-' . In($dividend_current) . ' ' . The($divisor) . ' $' . $divisor . '$? A becsléshez kerekítsük tízesekre mind a két számot, majd ' . 'mindkét számot egyszerűsítsük $10$-zel: $\\require{cancel}' . $dividend_round . '0:' . $divisor_round . '0=' . $dividend_round . '\\cancel{0}:' . $divisor_round . '\\cancel{0}=' . '\\textcolor{green}{' . $quotient_round . '}$. Ellenőrzésképp szorozzunk vissza az eredeti osztóval: $\\textcolor{green}{' . $quotient_round . '}\\cdot' . $divisor . '=' . $check_round . '$. Mivel az eredmény ' . ($check_round <= $dividend_current ? 'nem ' : '') . 'nagyobb, mint ' . The($dividend_current) . ' $' . $dividend_current . '$, ezért az eredményhez $' . $quotient_current . '$-' . Dativ($quotient_current) . ' írunk, alulra pedig a maradékot, ami  $' . $remain_current . '$, mert $' . $quotient_current . '\\cdot' . $divisor . '=' . $check_current . '$, és $' . $dividend_current . '-' . $check_current . '=' . $remain_current . '$:';
        } else {
            $text .= '$' . $dividend_current . '$-' . In($dividend_current) . ' ' . The($divisor) . ' $' . $divisor . '$ meg van $' . $quotient_current . '$-' . Times($quotient_current) . ', maradék ' . The($remain_current) . ' $' . $remain_current . '$, mert $' . $quotient_current . '\\cdot' . $divisor . '=' . $check_current . '$. Az eredményt jobb ' . 'oldalra írom, a maradékot pedig alulra:';
        }
        $text .= basic_division_generate_equation($dividend, $divisor, $ind);
        $explanation[] = $text;
        $remain_prev = $remain_current;
    }
    $check = $divisor * $quotient_total;
    $explanation[] = 'Ellenőrizzük az eredményt úgy, hogy összeszorozzuk ' . The($quotient_total) . ' $' . $quotient_total . '$-' . Dativ($quotient_total) . ' ' . The($divisor) . ' $' . $divisor . '$-' . With($divisor) . '!';
    $explanation[] = basic_multiplication_explanation($divisor, $quotient_total);
    if ($remain_current != 0) {
        $explanation[] = 'Végül adjuk hozzá a kapott eredményhez a maradékot:' . basic_addition_generate_equation(array($check, $remain_current));
        $explanation[] = basic_addition_explanation(array($check, $remain_current));
    }
    return $explanation;
}
Ejemplo n.º 15
0
    function Generate($level)
    {
        if ($level <= 3) {
            $male = rand(2, 3);
            $female = $male + rand(1, 2);
        } elseif ($level <= 6) {
            $male = rand(3, 4);
            $female = $male + rand(2, 3);
        } else {
            $male = rand(4, 5);
            $female = $male + rand(3, 4);
        }
        // // Original exercise
        // $male = 4;
        // $female = 5;
        $total = $male + $female;
        $min = $male - 1;
        $question = 'Egy állatkert a tigrisek fennmaradása érdekében tenyésztő programba kezd. Beszereznek $' . $male . '$ hím és $' . $female . '$ nőstény kölyöktigrist, melyeket egy kisebb és egy nagyobb kifutóban kívánnak elhelyezni a következő szabályok mindegyikének betartásával:
			<ol type="I">
				<li>' . NumText($min) . By($min) . ' kevesebb tigris egyik kifutóban sem lehet;</li>
				<li>a nagyobb kifutóba több tigris kerül, mint a kisebbikbe;</li>
				<li>mindkét kifutóban hím és nőstény tigrist is el kell helyezni;</li>
				<li>egyik kifutóban sem lehet több hím, mint nőstény tigris.</li>
			</ol>
			Hányféleképpen helyezhetik el a $' . $total . '$ tigrist a két kifutóban?<br />(A tigriseket megkülönböztetjük egymástól, és két elhelyezést eltérőnek tekintünk, ha van olyan tigris, amelyik az egyik elhelyezésben más kifutóban van, mint a másik elhelyezésben.)';
        for ($i = $min; $i <= $total; $i++) {
            if ($i == $min) {
                $page[] = 'Válogassuk szét az eseteket aszerint, hogy a kisebbik kifutóban hány tigris van!';
            } else {
                $page = [];
            }
            $page[] = '<b>' . strval($i - $min + 1) . '. eset:</b> a kisebbik kifutóban $' . $i . '$ tigris van, a nagyobbikban pedig $' . strval($total - $i) . '$.' . ($i == $min ? ' (Ennél kevesebb az I) feltétel miatt sehol sem lehet.)' : '');
            if ($i >= $total - $i) {
                $page[] = 'Ez az eset azért <span class="label label-danger">nem jó</span>, mert a II) feltétel szerint a kisebb kifutóban kevesebb tigrisnek kell lennie, mint a nagyobbikban. (És itt meg is állhatunk, mert ha tovább növeljük a tigrisek számát, ez a feltétel úgy sem fog teljesülni.)';
                $hints[] = $page;
                break;
            }
            $page[] = 'Most válogassuk szét az eseteket aszerint, hogy ' . The($i) . ' $' . $i . '$ tigris közül hány nőstény!';
            for ($j = 0; $j <= $i; $j++) {
                $text = '<ul><li><i>' . strtoupper(The($i)) . ' $' . $i . '$ tigris közül $' . $j . '$ hím és $' . strval($i - $j) . '$ nőstény.</i><br />';
                if ($i == 0 || $j == 0) {
                    $text .= 'Ez az eset azért <span class="label label-danger">nem jó</span>, mert a III) feltétel miatt nősténynek és hímnek is kell lennie a kifutóban.';
                } elseif ($j > $i - $j) {
                    $text .= 'Ez az eset azért <span class="label label-danger">nem jó</span>, mert a IV) feltétel miatt nem lehet a kifutóban több hím, mint nőstény.';
                } elseif ($male - $j > $female - $i + $j) {
                    $text .= 'Ez az eset azért <span class="label label-danger">nem jó</span>, mert ha ez azt jelentené, hogy a másik kifutóban $' . strval($male - $j) . '$ hím és $' . strval($female - $i + $j) . '$ nőstény van, viszont a IV) feltétel miatt nem lehet a kifutóban több hím, mint nőstény.';
                } else {
                    $female_opt = binomial_coeff($female, $i - $j);
                    $male_opt = binomial_coeff($male, $j);
                    $answers[] = $female_opt * $male_opt;
                    $text .= 'Ez az eset <span class="label label-success">jó</span>, mert minden feltételnek megfelel.
						<ul>
							<li>$' . $male . '$ hím közül $' . $j . '$-' . Dativ($j) . ' összesen ${' . $male . '\\choose ' . $j . '}=' . $male_opt . '$-féleképpen lehet kiválasztani;</li>
							<li>$' . $female . '$ nőstény közül $' . strval($i - $j) . '$-' . Dativ($i - $j) . ' összesen ${' . $female . '\\choose ' . strval($i - $j) . '}=' . $female_opt . '$-féleképpen lehet kiválasztani;</li>
							<li>Ha már tudjuk, hogy a kisebbik kifutóban melyik tigrisek vannak, akkor már azt is tudjuk, hogy a nagyobbikban melyikek vannak, tehát ezt nem kell külön kiszámolni.</li>
							<li>Ebben az esetben összesen $' . $male_opt . '\\cdot' . $female_opt . '=$<span class="label label-info">$' . strval($female_opt * $male_opt) . '$</span> különböző lehetőség.</li>
						</ul>';
                }
                $text .= '</li></ul>';
                $page[] = $text;
            }
            $hints[] = $page;
        }
        $page = [];
        $page[] = 'Tehát összesen $' . implode('+', $answers) . '=$<span class="label label-success">$' . array_sum($answers) . '$</span>-féleképpen lehet elhelyezni a tigriseket a két kifutóban.';
        $hints[] = $page;
        $correct = array_sum($answers);
        $solution = '$' . $correct . '$';
        return array('question' => $question, 'correct' => $correct, 'solution' => $solution, 'hints' => $hints);
    }
Ejemplo n.º 16
0
 function Hints($names, $degrees)
 {
     $hints[][] = 'Rajzoljunk annyi kört, ahány játékos van, és minden körbe írjuk bele a játékosok nevét!' . ' Ha két játékos már játszott egymással, akkor a két kört össze fogjuk kötni.' . ' Ha pedig egy játékossal "készen vagyunk", kiszínezzük a neki megfelelő kört.' . $this->Graph($names, $degrees, 0);
     for ($i = 0; $i < count($names) - 1; $i++) {
         if ($degrees[$i] == 0) {
             $text = $names[$i] . ' eddig egy meccset sem játszott, úgyhogy az ő köréből nem húzunk sehova vonalat:';
         } else {
             // calculate nodes with zero edges
             $zeros = 0;
             for ($j = 0; $j < $i; $j++) {
                 $zeros += $degrees[$j] == 0 ? 1 : 0;
             }
             // calculate previous degrees
             $prev_degrees = 0;
             for ($j = 0; $j < $i; $j++) {
                 $prev_degrees += $degrees[$j] == count($degrees) - $zeros - 1 ? 1 : 0;
             }
             $left_degrees = $degrees[$i] - $prev_degrees;
             if ($prev_degrees == 0) {
                 $text = $names[$i] . ' eddig $' . $degrees[$i] . '$ meccset játszott, úgyhogy ennyi vonalat húzunk belőle a többi játékos felé ' . '(Figyelem: csak ahhoz a körhöz húzhatunk vonalat, amivel még nem végeztünk!):';
             } elseif ($prev_degrees == $degrees[$i]) {
                 $text = $names[$i] . ' eddig $' . $degrees[$i] . '$ meccset játszott, viszont már mindegyik be van húzva, úgyhogy készen vagyunk:';
             } else {
                 $text = $names[$i] . ' eddig $' . $degrees[$i] . '$ meccset játszott, viszont ebből már $' . $prev_degrees . '$-' . Dativ($prev_degrees) . ' behúztunk, úgyhogy már csak $' . $left_degrees . '$-' . Dativ($left_degrees) . ' kell (Figyelem: csak ahhoz a körhöz húzhatunk vonalat, amivel még nem végeztünk!):';
             }
         }
         $hints[][] = $text . $this->Graph($names, $degrees, $i + 1);
     }
     $hints[][] = 'Az ábra szerint ' . $names[count($names) - 1] . ' $' . $degrees[count($names) - 1] . '$ mérkőzést játszott eddig. ' . 'Tehát a megoldás <span class="label label-success">$' . $degrees[count($names) - 1] . '$</span>.' . $this->Graph($names, $degrees, count($names));
     return $hints;
 }
Ejemplo n.º 17
-1
 function Generate($level)
 {
     $d = rand(-2 * $level, 2 * $level);
     $a0 = rand(-2 * $level, 2 * $level);
     // // Original exercise
     // $d = -7;
     // $a0 = 32;
     $a1 = $a0 + $d;
     $a2 = $a1 + $d;
     $question = 'Egy számtani sorozat három egymást követő tagja ebben a sorrendben $' . $a0 . ';x$ és $' . $a2 . '$. ';
     $question .= 'Határozza meg a sorozat differenciáját!';
     $correct = $d;
     $solution = '$' . $correct . '$';
     $page[] = 'A számtani sorozatban minden tagot úgy tudunk kiszámolni, hogy hozzáadunk $\\textcolor{blue}{d}$-t (a <i>differenciát</i>) az előző számhoz:$$a_1\\xrightarrow{+\\textcolor{blue}{d}}a_2\\xrightarrow{+\\textcolor{blue}{d}}a_3$$';
     $page[] = 'Tehát ha az első szám $' . $a0 . '$, akkor' . '$$\\begin{eqnarray}a_1&=&' . $a0 . '\\\\' . ' a_2&=&a_1+\\textcolor{blue}{d}=' . $a0 . '+\\textcolor{blue}{d}=x \\\\ ' . ' a_3&=&a_2+\\textcolor{blue}{d}=a_1+2\\cdot \\textcolor{blue}{d}=' . $a2 . '\\end{eqnarray}$$';
     $page[] = 'Látjuk, hogy ha ' . The($a2) . ' $' . $a2 . '$-' . From($a2) . ' kivonunk $' . $a0 . '$-' . Dativ($a0) . ', a differencia $2$-szeresét kapjuk:$$2\\cdot\\textcolor{blue}{d}=' . $a2 . '-' . ($a0 < 0 ? '(' . $a0 . ')' : $a0) . '=' . ($a0 < 0 ? $a2 . '+' . abs($a0) . '=' : '') . strval(2 * $d) . '$$';
     $page[] = 'Ha ezt a különbséget elosztjuk $2$-vel, megkapjuk a $\\textcolor{blue}{d}$ értékét:' . '$$\\textcolor{blue}{d}=' . strval(2 * $d) . ':2=' . $d . '$$';
     $page[] = 'Tehát a $d$ értéke <span class="label label-success">$' . $d . '$</span>.';
     $hints[] = $page;
     return array('question' => $question, 'correct' => $correct, 'solution' => $solution, 'hints' => $hints);
 }