Ejemplo n.º 1
20
 function Generate($level)
 {
     if ($level <= 3) {
         $num1 = pow(2, rand(2, 3));
         $num2 = pow(2, rand(4, 5));
     } elseif ($level <= 6) {
         $num1 = pow(2, rand(1, 3)) * pow(3, rand(0, 1));
         $num2 = pow(2, rand(1, 4)) * pow(3, rand(2, 3));
     } else {
         $num1 = pow(2, rand(1, 3)) * pow(3, rand(0, 3)) * pow(5, rand(0, 1));
         $num2 = pow(2, rand(1, 4)) * pow(3, rand(0, 3)) * pow(5, rand(2, 3));
     }
     $gcd = gcd($num1, $num2);
     $num3 = rand(1, 2) == 1 ? $gcd : $gcd / 2;
     // // Original exercise
     // $num1 = 48;
     // $num2 = 120;
     // $num3 = 12;
     // $gcd = gcd($num1, $num2);
     $correct = $num3 == $gcd ? 0 : 1;
     $options = ['Igaz', 'Hamis'];
     $solution = $options[$correct];
     $question = 'Adja meg az alábbi állítás logikai értékét (igaz vagy hamis)!<br />' . The($num1, TRUE) . ' $' . $num1 . '$ és ' . The($num2) . ' $' . $num2 . '$ legnagyobb közös osztója ' . The($num3) . ' $' . $num3 . '$.';
     $page[] = '<div class="alert alert-info"><strong>Közös osztó:</strong> az a szám, amivel mind a két szám osztható.</div>';
     $page[] = '<div class="alert alert-info"><strong>Legnagyobb közös osztó:</strong> a közös osztók közül a legnagyobb. Az $a$ és $b$ számok legnagyobb közös osztóját $(a;b)$-vel jelöljük.</div>';
     $page[] = 'A legnagyobb közös osztó kiszámításához először írjuk fel mindkét szám prímtényezős felbontását!';
     $hints[] = $page;
     $hints[][] = 'Az első szám prímtényezős felbontása: $' . $num1 . '=' . implode('\\cdot', $this->CanonicForm($num1)) . '$, ugyanis:' . $this->Factorization($num1);
     $hints[][] = 'A második szám prímtényezős felbontása: $' . $num2 . '=' . implode('\\cdot', $this->CanonicForm($num2)) . '$, ugyanis:' . $this->Factorization($num2);
     $page = [];
     $page[] = 'Most gyűjtsünk össze a közös prímtényezőket (ha mindkét számban előfordul, akkor a kisebb kitevőt nézzük): $$(' . $num1 . ';' . $num2 . ')=' . implode('\\cdot', $this->CanonicForm($gcd)) . '=' . $gcd . '$$';
     $page[] = 'Mivel a legnagyobb közös osztó ' . ($gcd == $num3 ? 'megegyezik' : 'nem egyezik meg') . ' ' . The($num3) . ' $' . $num3 . '$-' . With($num3) . ', ezért az állítás <span class="label label-success">' . strtolower($solution) . '</span>.';
     $hints[] = $page;
     return array('question' => $question, 'correct' => $correct, 'solution' => $solution, 'options' => $options, 'hints' => $hints);
 }
Ejemplo n.º 2
19
 function Generate($level)
 {
     $a1 = rand(-10 * $level, 10 * $level);
     $a3 = rand(-10 * $level, 10 * $level);
     $a3 = abs($a1 - $a3) < 6 ? $a1 + 6 : $a3;
     $a2 = $a1 < $a3 ? rand($a1 + 1, $a3 - 1) : rand($a3 + 1, $a1 - 1);
     // // Original exercise
     // $a1 = 32;
     // $a2 = 28;
     // $a3 = 18;
     $sum = $a1 + $a2 + $a3;
     $a2 = $a2 + 3 - $sum % 3 >= max($a1, $a3) ? $a2 - $sum % 3 : $a2 + 3 - $sum % 3;
     $avg = ($a1 + $a2 + $a3) / 3;
     $diff = $avg - $a2;
     $question = The($a1, TRUE) . ' $' . $a1 . ';x$ és $' . $a3 . '$ számokról tudjuk, hogy a három szám átlaga $' . abs($diff) . '$-' . With(abs($diff)) . ' ' . ($diff > 0 ? 'nagyobb' : 'kisebb') . ', mint a mediánja, továbbá $' . $a1 . ($a1 < $a3 ? '\\lt ' : '\\gt ') . 'x' . ($a1 < $a3 ? '\\lt ' : '\\gt ') . $a3 . '$. Határozza meg az $x$ értékét!';
     $correct = $a2;
     $solution = '$' . $correct . '$';
     $type = 'int';
     $page[] = 'Írjuk fel az átlagot ($A$):$$' . ($a3 > 0 ? 'A=\\frac{' . $a1 . '+x+' . $a3 . '}{3}' : '\\begin{eqnarray}A&=&\\frac{' . $a1 . '+x+(' . $a3 . ')}{3}\\\\ &=&\\frac{' . $a1 . '+x' . $a3 . '}{3}\\end{eqnarray}') . '$$';
     $page[] = 'Három szám közül a medián ($M$) a nagyság szerinti középső, vagyis $M=x$.';
     $page[] = 'A feladat szerint az átlag $' . abs($diff) . '$-' . With(abs($diff)) . ' ' . ($diff > 0 ? 'nagyobb' : 'kisebb') . ', mint a medián, azaz:$$M=A' . ($diff > 0 ? '-' : '+') . abs($diff) . '$$';
     $hints[] = $page;
     $page = [];
     $page[] = 'Helyettesítsük be $M$ és $A$ értékét, és fejezzük ki $x$-et:$$x=\\frac{' . $a1 . '+x' . ($a3 > 0 ? '+' : '') . $a3 . '}{3}' . ($diff > 0 ? '-' : '+') . abs($diff) . '$$';
     $page[] = 'Szorozzuk meg mindkét oldalt $3$-mal:$$3\\cdot x=(' . $a1 . '+x' . ($a3 > 0 ? '+' : '') . $a3 . ')' . ($diff > 0 ? '-' : '+') . abs(3 * $diff) . '$$';
     $page[] = 'Elhagyhatjuk a zárójelet:$$3\\cdot x=' . $a1 . '+x' . ($a3 > 0 ? '+' : '') . $a3 . ($diff > 0 ? '-' : '+') . abs(3 * $diff) . '$$';
     $page[] = 'Vonjunk ki mindkét oldalból $x$-et:$$2\\cdot x=' . $a1 . ($a3 > 0 ? '+' : '') . $a3 . ($diff > 0 ? '-' : '+') . abs(3 * $diff) . '$$';
     $page[] = 'Végezzük el a műveleteket a jobb oldalon:$$2\\cdot x=' . strval($a1 + $a3 - 3 * $diff) . '$$';
     $page[] = 'Osszuk el mindkét oldalt $2$-vel:$$x=\\frac{' . strval($a1 + $a3 - 3 * $diff) . '}{2}=' . strval(($a1 + $a3 - 3 * $diff) / 2) . '$$';
     $page[] = 'Tehát a megoldás <span class="label label-success">$' . $a2 . '$</span>.';
     $hints[] = $page;
     return array('question' => $question, 'correct' => $correct, 'solution' => $solution, 'hints' => $hints);
 }
Ejemplo n.º 3
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.º 4
16
 function Hints($num, $option1, $option2, $option3, $divisor)
 {
     $first = $option2 == 'pozitív' ? 1 : 0;
     $last = $option1 == 'kisebb' ? $num - 1 : $num;
     $page[] = 'Először nézzük meg, hogy hány $' . $num . '$-' . By($num) . ' ' . $option1 . ' ' . $option2 . ' ' . 'szám van!';
     $page[] = 'Mivel ' . $option2 . ' számokat nézünk, a számolást $' . $first . '$-' . By($first) . ' kezdjük.';
     $page[] = 'Továbbá, $' . $num . '$-' . By($num) . ' ' . $option1 . ' számokat nézünk, azaz az utolsó szám ' . The($last) . ' $' . $last . '$ lesz:';
     $nums = '';
     for ($i = $first; $i <= $last; $i++) {
         $nums .= '$' . $i . ($i == $last ? '' : ';') . '$';
     }
     $page[] = '<div class="text-center">' . $nums . '</div>';
     $hints[] = $page;
     $page = [];
     $page[] = 'Most ebből válasszuk ki a ' . $option3 . ' számokat!';
     $nums = '';
     $total = 0;
     for ($i = $first; $i <= $last; $i++) {
         if ($option3 == 'páros' && $i % 2 == 0 || $option3 == 'páratlan' && $i % 2 == 1) {
             $nums .= '$\\textcolor{blue}{\\fbox{' . $i . '}}' . ($i == $last ? '' : ';') . '$';
             $total++;
         } else {
             $nums .= '$' . $i . ($i == $last ? '' : ';') . '$';
         }
     }
     $page[] = '<div class="text-center">' . $nums . '</div>';
     $page[] = 'Ez összesen $' . $total . '$ szám; ez lesz az <b>összes</b> esetek száma.';
     $hints[] = $page;
     $page = [];
     $page[] = 'Most nézzük meg, hogy a kiválasztott számok közül hány osztható $' . $divisor . '$-' . With($divisor) . '!';
     $nums = '';
     $good = 0;
     for ($i = $first; $i <= $last; $i++) {
         if ($option3 == 'páros' && $i % 2 == 0 || $option3 == 'páratlan' && $i % 2 == 1) {
             if ($i % $divisor == 0) {
                 $nums .= '$\\textcolor{red}{\\fbox{' . $i . '}}' . ($i == $last ? '' : ';') . '$';
                 $good++;
             } else {
                 $nums .= '$\\textcolor{blue}{\\fbox{' . $i . '}}' . ($i == $last ? '' : ';') . '$';
             }
         } else {
             $nums .= '$' . $i . ($i == $last ? '' : ';') . '$';
         }
     }
     $page[] = '<div class="text-center">' . $nums . '</div>';
     $page[] = 'Ez összesen $' . $good . '$ szám; ez lesz a <b>kedvező</b> esetek száma.';
     $hints[] = $page;
     $page = [];
     $page[] = 'A valószínűséget úgy kapjuk meg, ha a <b>kedvező</b> esetek számát elosztjuk' . ' az <b>összes</b> esetek számával.';
     $page[] = 'Tehát a keresett valószínűség <span class="label label-success">$\\frac{' . $good . '}{' . $total . '}$</span>.';
     $hints[] = $page;
     return array($hints, $good, $total);
 }
Ejemplo n.º 5
12
 function Generate($level)
 {
     if ($level <= 3) {
         $num1 = rand(2, 4);
         $num2 = rand(5, 9);
     } elseif ($level <= 6) {
         $num1 = rand(4, 9);
         $num2 = rand(10, 20);
     } else {
         $num1 = rand(10, 20);
         $num2 = rand(10, 20);
     }
     // // Original exercise
     // $num1 = 6;
     // $num2 = 8;
     $mult = $num1 * $num2;
     $lcm = lcm($num1, $num2);
     $correct = $mult == $lcm ? 0 : 1;
     $options = ['Igaz', 'Hamis'];
     $solution = $options[$correct];
     $question = 'Adja meg az alábbi állítás logikai értékét (igaz vagy hamis)!<br />' . 'Ha egy szám osztható $' . $num1 . '$-' . With($num1) . ' és $' . $num2 . '$-' . With($num2) . ', akkor osztható $' . $mult . '$-' . With($mult) . ' is.';
     $page[] = 'Tudjuk, hogy ha egy szám osztható $a$-val, és osztható $b$-vel is, akkor $a$ és $b$ <b>legkisebb közös többszörösével</b> is osztható, amit $[a;b]$-vel jelölünk.';
     $page[] = 'Két szám legkisebb közös többszöröséhez először írjuk fel mindkét szám prímtényezős felbontását!';
     $hints[] = $page;
     $hints[][] = 'Az első szám prímtényezős felbontása: $' . $num1 . '=' . implode('\\cdot', $this->CanonicForm($num1)) . '$, ugyanis:' . $this->Factorization($num1);
     $hints[][] = 'A második szám prímtényezős felbontása: $' . $num2 . '=' . implode('\\cdot', $this->CanonicForm($num2)) . '$, ugyanis:' . $this->Factorization($num2);
     $page = [];
     $page[] = 'Most gyűjtsünk össze minden prímtényezőt a hozzátartozó kitevővel (ha mindkét számban előfordul, akkor a nagyobb kitevőt nézzük): $$[' . $num1 . ';' . $num2 . ']=' . implode('\\cdot', $this->CanonicForm($lcm)) . '=' . $lcm . '$$';
     $page[] = 'Mivel a legkisebb közös többszörös ' . ($lcm == $mult ? 'megegyezik' : 'nem egyezik meg') . ' ' . The($mult) . ' $' . $mult . '$-' . With($mult) . ', ezért az állítás <span class="label label-success">' . strtolower($solution) . '</span>.';
     $hints[] = $page;
     return array('question' => $question, 'correct' => $correct, 'solution' => $solution, 'options' => $options, 'hints' => $hints);
 }
Ejemplo n.º 6
0
 function Generate($level)
 {
     $start = rand(4 * $level, 5 * $level) * 100;
     $end = rand(1 * $level, 3 * $level) * 100;
     $rate = rand(75, 95) / 100;
     // // Original exercise
     // $start	= 3600;
     // $end	= 900;
     // $rate	= 0.854;
     $x = (log($end) / log(10) - log($start) / log(10)) / (log($rate) / log(10));
     $correct = 2014 + ceil($x);
     $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) = ' . $start . ' \\cdot ' . round2($rate, 3) . '^x$, ahol $x$ a $2014$ óta eltelt évek számát jelöli. Melyik évben várható, hogy a tigrisek száma $' . $end . '$ alá csökken?';
     $page[] = 'A feladat lényegében azt kérdi, hogy melyik az az $x$, amit ha behelyettesítünk a képletbe, $' . $end . '$-' . By($end) . ' kisebb lesz az eredmény.';
     $page[] = 'Írjuk fel ezt az egyenlőtlenséget:$$' . $start . '\\cdot ' . round2($rate, 3) . '^x<' . $end . '$$';
     $page[] = 'Osszuk el mindkét oldalt $' . $start . '$-' . With($start) . ':$$' . round2($rate, 3) . '^x<\\frac{' . $end . '}{' . $start . '}$$';
     $page[] = 'Vegyük mindkét oldal $10$-es alapú logaritmusát:$$\\lg\\left(' . round2($rate, 3) . '^x\\right)<\\lg\\left(\\frac{' . $end . '}{' . $start . '}\\right)$$';
     $hints[] = $page;
     $page = [];
     $page[] = '<div class="alert alert-info"><strong>Logaritmus azonosság:</strong><br />Egy hányados logaritmusát úgy kapjuk meg, hogy a számláló logaritmusából kivonjuk a nevező logaritmusát:$$\\lg\\left(\\frac{a}{b}\\right)=\\lg a - \\lg b$$</div>';
     $page[] = 'A fenti azonosságot felhasználva írjuk a jobb oldalt:$$\\lg\\left(' . round2($rate, 3) . '^x\\right)<\\lg' . $end . '-\\lg' . $start . '$$';
     $hints[] = $page;
     $page = [];
     $page[] = '<div class="alert alert-info"><strong>Logaritmus azonosság:</strong><br />Ha egy hatványnak vesszük a logaritmusát, akkor a kitevőt a kifejezés elé írhatjuk:$$\\lg\\left(a^b\\right)=b\\cdot\\lg a$$</div>';
     $page[] = 'A fenti azonosságot felhasználva írjuk az $x$-et a bal oldali kifejezés elé:$$x\\cdot\\lg' . round2($rate, 3) . '<\\lg' . $end . '-\\lg' . $start . '$$';
     $page[] = 'Osszuk el mindkét oldalt $\\lg' . round2($rate, 3) . '$-' . With(round($rate * 1000)) . '!<div class="alert alert-danger"><b>Figyelem!</b><br />Az $1$-nél kisebb számok logaritmusa <b>negatív</b> lesz, ezért a relációs jel iránya megfordul!$$x>\\frac{\\lg' . $end . '-\\lg' . $start . '}{\\lg' . round2($rate, 3) . '}\\approx{' . round2($x) . '}$$</div>';
     $page[] = 'A fenti kifejezés azt jelenti, hogy a $2014$ után legalább $' . ceil($x) . '$ évnek kell eltelnie ahhoz, hogy a tigrisek száma $' . $end . '$ alá csökkenjen, vagyis a megoldás $2014+' . ceil($x) . '=$<span class="label label-success">$' . $correct . '$</span>.';
     $hints[] = $page;
     $solution = '$' . $correct . '$';
     return array('question' => $question, 'correct' => $correct, 'solution' => $solution, 'hints' => $hints);
 }
Ejemplo n.º 7
0
 function Generate($level)
 {
     if ($level <= 3) {
         $base = rand(2, 3);
         $result = rand(5, 10);
     } elseif ($level <= 6) {
         $base = rand(4, 5);
         $result = rand(10, 15);
     } else {
         $base = rand(6, 7);
         $result = rand(15, 20);
     }
     // // Original exercise
     // $base = 2;
     // $result = 10;
     $question = 'Oldja meg a következő egyenletet a valós számok halmazán! Válaszát három tizedesjegyre kerekítve adja meg!$$' . $base . '^x=' . $result . '$$';
     $exponent1 = log10($result) / log10($base);
     $exponent2 = round2($exponent1, 5);
     $correct = round2($exponent1, 3);
     $solution = '$' . $correct . '$';
     $page[] = 'Vegyük mindkét oldal $10$-es alapú logaritmusát:$$\\log_{10}\\left(' . $base . '^x\\right)=\\log_{10}' . $result . '$$';
     $page[] = '<div class="alert alert-info"><strong>Logaritmus azonossága:</strong><br />Hatvány logaritmusa egyenlő az alap logaritmusának és a kitevőnek a szorzatával:$$\\log_ab^k=k\\cdot\\log_ab$$</div>';
     $page[] = 'Az azonosság felhasználásával át tudjuk írni a baloldali kifejezést:$$x\\cdot\\log_{10}' . $base . '=\\log_{10}' . $result . '$$';
     $hints[] = $page;
     $page = [];
     $page[] = 'Osszuk el mindkét oldalt $\\log_{10}' . $base . '$-' . With($base) . '!$$x=\\frac{\\log_{10}' . $result . '}{\\log_{10}' . $base . '}\\approx' . $exponent2 . '$$';
     $page[] = '<b>Megjegyzés</b>: a számológépen a tízes alapú logaritmust a <b>log</b> gomb jelöli:<div class="text-center"><kbd>' . $result . '</kbd> <kbd>log</kbd> <kbd>&divide;</kbd> <kbd>' . $base . '</kbd>  <kbd>log</kbd> <kbd>=</kbd></div>';
     $page[] = 'A megoldás három tizedesjegyre kerekített értéke <span class="label label-success">$' . $correct . '$</span>.';
     $hints[] = $page;
     return array('question' => $question, 'correct' => $correct, 'solution' => $solution, 'hints' => $hints);
 }
Ejemplo n.º 8
0
 function Hints($sgn2, $const, $type)
 {
     if ($type == 1) {
         $x = 4;
         $mult = 9;
     } else {
         $x = rand(2, 7);
         $mult = rand(2, 6);
     }
     list($y1, $fun1) = $this->GetFunValue($sgn2, $const, $type, $x);
     list($y2, $fun2) = $this->GetFunValue($sgn2, $const, $type, $x * $mult);
     $text[] = 'Számoljuk ki a függvény értékét valahol, pl. az $x=' . $x . '$ helyen:$$f(' . $x . ')=' . $fun1 . '$$';
     $text[] = 'Most szorozzuk meg az $x$ értékét pl. $' . $mult . '$-' . With($mult) . ': ' . '$$' . $mult . '\\cdot x=' . strval($x * $mult) . '$$';
     $text[] = 'Számoljuk ki itt is a függvény értékét:' . '$$f(' . $mult . '\\cdot' . $x . ')=f(' . strval($x * $mult) . ')=' . $fun2 . '$$';
     $hints[] = $text;
     $text = [];
     if ($type == 0) {
         $text[] = 'A <b>fordított arányosság</b> azt jelenti, hogy ahányszor megnövelem az $x$ értékét, ' . 'az $f(x)$ értéke annyiadrészére csökken:$$f(' . $mult . '\\cdot x)=\\frac{1}{' . $mult . '}\\cdot f(x)$$';
         $text[] = 'Ez most nem teljesül, mert: $$' . $y2 . '\\neq\\frac{1}{' . $mult . '}\\cdot ' . ($y1 >= 0 ? $y1 : '(' . $y1 . ')') . '$$';
         $text[] = 'Tehát a függvény <span class="label label-danger">nem</span> fordított arányosságot ír le.';
         $hints[] = $text;
         $text = [];
         $text[] = 'Az <b>egyenes arányosság</b> azt jelenti, hogy ahányszor megnövelem az $x$ értékét, ' . 'az $f(x)$ értéke is annyiszorosára nő:$$f(' . $mult . '\\cdot x)=' . $mult . '\\cdot f(x)$$';
         $text[] = 'Ez most teljesül, mert: $$' . $y2 . '=' . $mult . '\\cdot ' . ($y1 >= 0 ? $y1 : '(' . $y1 . ')') . '$$';
         $text[] = 'Könnyen belátható, hogy ez nem csak az $x=' . $x . '$-' . On($x) . ' igaz, hanem akármelyik $x$-re.';
         $text[] = 'Tehát a függvény <span class="label label-success">egyenes arányosságot</span> ír le.';
         $hints[] = $text;
         $text = [];
     } elseif ($type == 2) {
         $text[] = 'Az <b>egyenes arányosság</b> azt jelenti, hogy ahányszor megnövelem az $x$ értékét, ' . 'az $f(x)$ értéke is annyiszorosára nő:$$f(' . $mult . '\\cdot x)=' . $mult . '\\cdot f(x)$$';
         $text[] = 'Ez most nem teljesül, mert: $$' . $fun2 . '\\neq' . $mult . '\\cdot ' . ($y1 >= 0 ? $fun1 : '(' . $fun1 . ')') . '$$';
         $text[] = 'Tehát a függvény <span class="label label-danger">nem</span> egyenes arányosságot ír le.';
         $hints[] = $text;
         $text = [];
         $text[] = 'A <b>fordított arányosság</b> azt jelenti, hogy ahányszor megnövelem az $x$ értékét, ' . 'az $f(x)$ értéke annyiadrészére csökken:$$f(' . $mult . '\\cdot x)=\\frac{1}{' . $mult . '}\\cdot f(x)$$';
         $text[] = 'Ez most teljesül, mert: $$' . $fun2 . '=\\frac{1}{' . $mult . '}\\cdot ' . ($fun1 >= 0 ? $fun1 : '(' . $fun1 . ')') . '$$';
         $text[] = 'Könnyen belátható, hogy ez nem csak az $x=' . $x . '$-' . On($x) . ' igaz, hanem akármelyik $x$-re.';
         $text[] = 'Tehát a függvény <span class="label label-success">fordított arányosságot</span> ír le.';
         $hints[] = $text;
         $text = [];
     } else {
         $text[] = 'Az <b>egyenes arányosság</b> azt jelenti, hogy ahányszor megnövelem az $x$ értékét, ' . 'az $f(x)$ értéke is annyiszorosára nő:$$f(' . $mult . '\\cdot x)=' . $mult . '\\cdot f(x)$$';
         $text[] = 'Ez most nem teljesül, mert: $$' . $y2 . '\\neq' . $mult . '\\cdot ' . ($y1 >= 0 ? $y1 : '(' . $y1 . ')') . '$$';
         $text[] = 'Tehát a függvény <span class="label label-danger">nem</span> egyenes arányosságot ír le.';
         $hints[] = $text;
         $text = [];
         $text[] = 'A <b>fordított arányosság</b> azt jelenti, hogy ahányszor megnövelem az $x$ értékét, ' . 'az $f(x)$ értéke annyiadrészére csökken:$$f(' . $mult . '\\cdot x)=\\frac{1}{' . $mult . '}\\cdot f(x)$$';
         $text[] = 'Ez most nem teljesül, mert: $$' . $y2 . '\\neq\\frac{1}{' . $mult . '}\\cdot ' . ($y1 >= 0 ? $y1 : '(' . $y1 . ')') . '$$';
         $text[] = 'Tehát a függvény <span class="label label-danger">nem</span> fordított arányosságot ír le.';
         $text[] = 'Tehát a függvény <span class="label label-success">egyik arányosságot sem</span> írja le.';
         $hints[] = $text;
         $text = [];
     }
     return $hints;
 }
Ejemplo n.º 9
0
 function Hints($x1, $x2, $a, $b, $y1, $y2)
 {
     $hints[][] = 'Először ábrázoljuk az $x\\rightarrow' . $this->AbsFunctionText(0, 0) . '$ függvényt a $[' . $x1 . ';' . $x2 . ']$ intervallumon!' . $this->AbsFunctionGraph($x1, $x2, $a, $b, 0);
     if ($a != 0) {
         $hints[][] = 'Most ábrázoljuk az $x\\rightarrow' . $this->AbsFunctionText($a, 0) . '$ függvényt a $[' . $x1 . ';' . $x2 . ']$ intervallumon! Ezt úgy kapjuk meg, ha az előző függvényt $' . abs($a) . '$-' . With($a) . ' ' . ($a > 0 ? 'balra' : 'jobbra') . ' toljuk az $x$ tengely mentén:' . $this->AbsFunctionGraph($x1, $x2, $a, $b, 1);
     }
     if ($b != 0) {
         $hints[][] = 'Most ábrázoljuk az $x\\rightarrow' . $this->AbsFunctionText($a, $b) . '$ függvényt a $[' . $x1 . ';' . $x2 . ']$ intervallumon! Ezt úgy kapjuk meg, ha az előző függvényt $' . abs($b) . '$-' . With($b) . ' ' . ($b > 0 ? 'fölfelé' : 'lefelé') . ' toljuk az $y$ tengely mentén:' . $this->AbsFunctionGraph($x1, $x2, $a, $b, 2);
     }
     $hints[][] = 'Az ábráról könnyen leolvasható, hogy a függvény értékkészlete $[' . $y1 . ';' . $y2 . ']$:' . $this->AbsFunctionGraph($x1, $x2, $a, $b, 3);
     return $hints;
 }
Ejemplo n.º 10
0
 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.º 11
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.º 12
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.º 13
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.º 14
0
 function Hints($num1, $num2, $rules)
 {
     $page[] = 'Írjunk fel néhány számot, amire igaz a feltétel, és nézzük meg, hogy oszthatók-e $' . $num2 . '$-' . With($num2) . ':';
     $mult = 1;
     for ($i = 1; $i < 5; $i++) {
         $mult = $mult * rand(5, 20) + rand(10, 30);
         if ($mult * $num1 % $num2 == 0) {
             $page[] = '<ul><li>$' . strval($mult * $num1) . '$: ez a szám osztható $' . $num2 . '$-' . With($num2) . '.</li></ul>';
         } else {
             $page[] = '<ul><li>$' . strval($mult * $num1) . '$: ez a szám nem osztható $' . $num2 . '$-' . With($num2) . '.</li></ul>';
             break;
         }
     }
     if ($num1 == $num2 || $num1 % $num2 == 0) {
         $page[] = 'Meg lehet mutatni, hogy az összes ilyen szám osztható $' . $num2 . '$-' . With($num2) . '.';
         $page[] = 'Tehát ez az állítás <span class="label label-success">igaz</span>.';
     } else {
         $page[] = 'Mivel találtunk egy ellenpéldát, ezért az állítás <span class="label label-success">hamis</span>.';
     }
     $hints[] = $page;
     return $hints;
 }
Ejemplo n.º 15
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.º 16
0
function series_numerical_carrot($level)
{
    if ($level <= 3) {
        $d = rand(1, 3);
        $a1 = rand(1, 5);
        $n = rand(3, 6);
        $i = 1;
    } elseif ($level <= 6) {
        $d = rand(1, 10);
        $a1 = rand(1, 10);
        $n = rand(7, 10);
        $i = rand(1, $n);
    } else {
        $d = rand(1, 20);
        $a1 = rand(1, 20);
        $n = rand(10, 20);
        $i = rand(1, $n);
    }
    $ai = $a1 + ($i - 1) * $d;
    $Sn = (2 * $a1 + ($n - 1) * $d) * $n / 2;
    $suffix = With($d);
    $article = The($ai);
    $question = 'Nagymama kertjében $' . $n . '$ sor répa van. Minden sorban $' . $d . '$-' . $suffix . ' több répa van, mint az előzőben. Hány répa van összesen nagymama kertjében, ha tudjuk, hogy ' . $article . ' $' . $i . '$. sorban $' . $ai . '$ darab répa van?';
    $correct = $Sn;
    $solution = '$' . $correct . '$';
    return array('question' => $question, 'correct' => $correct, 'solution' => $solution);
}
Ejemplo n.º 17
0
 function Hints($hours, $unknown, $avg)
 {
     $days = array_sum($hours);
     $total = $days * $avg;
     $total1 = 0;
     $total2 = 0;
     foreach ($hours as $hour => $day) {
         if (in_array($hour, $unknown)) {
             $hours2[] = $hour;
             $days2[] = $day;
             $total2 += $hour * $day;
         } else {
             $hours1[] = $hour;
             $days1[] = $day;
             $total1 += $hour * $day;
         }
     }
     $total_days2 = array_sum($days2);
     $total_days1 = array_sum($days1);
     $page[] = 'Péter havi munkaideje $' . $days . '\\cdot' . $avg . '=' . $total . '$ óra.';
     $page[] = 'Azon ' . The($total_days1) . ' $' . $total_days1 . '$ napon, amikor $' . $hours1[0] . ',\\,' . $hours1[1] . '$ vagy $' . $hours1[2] . '$ órát dolgozott, összesen $$' . $days1[0] . '\\cdot' . $hours1[0] . '+' . $days1[1] . '\\cdot' . $hours1[1] . '+' . $days1[2] . '\\cdot' . $hours1[2] . '=' . $total1 . '$$órát dolgozott.';
     $page[] = 'Tehát azon ' . The($total_days2) . ' $' . $total_days2 . '$ napon, amikor $' . $hours2[0] . '$ vagy $' . $hours2[1] . '$ órát dolgozott, összesen $$' . $total . '-' . $total1 . '=' . $total2 . '$$ órát dolgozott.';
     $hints[] = $page;
     $page = [];
     for ($i = $total_days2; $i > 0; $i--) {
         $unknown_hour = $i * $unknown[0] + ($total_days2 - $i) * $unknown[1];
         $diff = $total2 - $unknown_hour;
         if ($i == $total_days2) {
             $text = 'Ha mind ' . The($i) . ' <span class="label label-info">$' . $i . '$</span> napon $' . $unknown[0] . '$ órát dolgozott volna, akkor összesen $' . $i . '\\cdot' . $unknown[0] . '=' . $unknown_hour . '$ órát dolgozott volna.';
         } else {
             $text = 'Ha <span class="label label-info">$' . $i . '$</span> napon $' . $unknown[0] . '$ órát, és <span class="label label-info">$' . strval($total_days2 - $i) . '$</span> napon $' . $unknown[1] . '$ órát dolgozott volna, akkor összesen $' . $i . '\\cdot' . $unknown[0] . '+' . strval($total_days2 - $i) . '\\cdot' . $unknown[1] . '=' . $unknown_hour . '$ órát dolgozott volna.';
         }
         if ($diff == 0) {
             $text .= ' Ez pontosan annyi, amennyit az előbb számoltunk, ezért Péter januárban <span class="label label-success">$' . $hours[$unknown[0]] . '$</span> napon dolgozott $' . $unknown[0] . '$ órát, és <span class="label label-success">$' . $hours[$unknown[1]] . '$</span> napon dolgozott $' . $unknown[1] . '$ órát.';
         } else {
             $text .= ' Ez $' . abs($diff) . '$-' . With($diff) . ' ' . ($diff > 0 ? 'kevesebb' : 'több') . ' mint $' . $total2 . '$, tehát ez nem jó megoldás.';
         }
         $page[] = $text;
         if ($diff == 0) {
             break;
         }
     }
     $hints[] = $page;
     return $hints;
 }
Ejemplo n.º 18
0
 function Hints($l, $r, $x)
 {
     $lcm = lcm($r[1], $r[3]);
     if (abs($r[1]) != abs($r[3])) {
         $page[] = 'Hozzuk közös nevezőre az egyenlet jobb oldalát (a közös nevező $' . $lcm . '$ lesz):' . $this->Equation($l, $r, 1);
     }
     $page[] = 'Szorozzuk meg mindkét oldalt $' . $lcm . '$-' . With($lcm) . '!' . $this->Equation($l, $r, 2);
     $page[] = 'Bontsuk fel a zárójeleket mindkét oldalon!' . $this->Equation($l, $r, 3);
     $page[] = 'Vonjuk össze az egynemű tagokat!' . $this->Equation($l, $r, 4);
     $page[] = 'Gyűjtsük össze az $x$-et tartalmazó tagokat jobb oldalra, a többit pedig balra!' . $this->Equation($l, $r, 5);
     $page[] = 'Ha mindkét oldalt leosztjuk az $x$ együtthatójával, azt kapjuk, hogy a megoldás <span class="label label-success">$' . $x . '$</span>.';
     $hints[] = $page;
     return $hints;
 }
Ejemplo n.º 19
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.º 20
-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);
 }