Esempio n. 1
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);
 }
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;
}