Onbekende Tabel
php -l
No syntax errors detected in index.php
Broncode
<?php
// Programma aan de hand van Versteeg's Onbekende Tabel.
// Overhoor programma
// Copyright fwrite.org 2009 ( http://weblog.fwrite.org/contact/ )
// Omzetting van Radialen naar Graden
$aRad = array(
0 => 0,
30 => '(1/6)π',
45 => '(1/4)π',
60 => '(1/3)π',
90 => '(1/2)π',
120 => '(2/3)π',
135 => '(3/4)π',
150 => '(5/6)π',
180 => 'π',
210 => '(7/6)π',
225 => '(5/4)π',
240 => '(4/3)π',
270 => '(3/2)π',
300 => '(5/3)π',
315 => '(7/4)π',
330 => '(11/6)π');
// Verschillende functies
$aMod = array('sin', 'cos', 'tan');
// Exacte antwoorden
$aAns = array();
$aAns['sin'] = array(
0 => 0,
30 => '(1/2)',
45 => '((√2)/2)',
60 => '((√3)/2)',
90 => 1,
120 => '((√3)/2)',
135 => '((√2)/2)',
150 => '(1/2)',
180 => 0,
210 => '-(1/2)',
225 => '-((√2)/2)',
240 => '((√3)/2)',
270 => -1,
300 => '-((√3)/2)',
315 => '-((√2)/2)',
330 => '-(1/2)');
$aAns['cos'] = array(
0 => 1,
30 => '((√3)/2)',
45 => '((√2)/2)',
60 => '(1/2)',
90 => 0,
120 => '-(1/2)',
135 => '-((√2)/2)',
150 => '-((√3)/2)',
180 => -1,
210 => '-((√3)/2)',
225 => '-((√2)/2)',
240 => '-(1/2)',
270 => 0,
300 => '(1/2)',
315 => '((√2)/2)',
330 => '((√3)/2)');
$aAns['tan'] = array(
0 => 'geen',
30 => '((√3)/3)',
45 => 1,
60 => '√3',
90 => 'geen',
120 => '-√3',
135 => -1,
150 => '-((√3)/3)',
180 => 0,
210 => '((√3)/3)',
225 => 1,
240 => '√3',
270 => 'geen',
300 => '-√3',
315 => -1,
330 => '-((√3)/3)');
// Bepalen van de vraag
$sMod = $aMod[array_rand($aMod, 1)]; // Willekeurige functie
$iAngle = array_rand($aRad, 1); // Willekeurige hoek.
// Genereren van mogelijke antwoorden (en vragen)
$aQuestion[] = $sMod.' '.$iAngle.'°'; // sin 30
$aQuestion[] = $sMod.' '.$aRad[$iAngle]; // sin (1/6)π
$aQuestion[] = $aAns[$sMod][$iAngle]; // (1/2)
$aQuestion[] = round(call_user_func($sMod, $iAngle), 4); // 0.8660
// Selecteer een vraag, en een antwoord
$aJSON['q'] = rand(0, 1) ? $aQuestion[1] : $aQuestion[0];
$aJSON['a'] = rand(0, 2) ? $aQuestion[2] : $aQuestion[3];// 2/3e van de gevallen is exact
// Selecteer 5 willekeurige antwoorden
$aAns = array_merge($aAns['sin'], $aAns['cos'], $aAns['tan']);
$aDeg = array_keys($aRad);
foreach($aDeg as $iDeg) {
$aAns[] = round(call_user_func($sMod, $iDeg), 4);
$aAns[] = rand(0, 1) ? round(sin($iDeg), 4) : round(cos($iDeg), 4);
} unset($aDeg);
$aAnsPoss = array_rand($aAns, 5);
foreach($aAnsPoss as $iAnsPoss) {
$aJSON['p'][] = $aAns[$iAnsPoss];
}
$aJSON['p'][] = $aJSON['a'];
shuffle($aJSON['p']);
echo json_encode($aJSON);
Thu, 08 Sep 2011 06:39:15 +0200