Ok, ich denke, es kommt nix mehr rein. Herzlichen Glückwunsch onemorenerd, hier ist deine Medaille
, und du bist dran, mit der nächsten Aufgabe
![](http://sandbox.devtimes.de/store/medaille.gif)
![Wink](https://www.php-resource.de/forum/core/images/smilies/wink.gif)
<?php
$zahlen = explode(',', $_GET['in']);
$ergebnis = $zahlen[count($zahlen)-1];
$reihe = implode(' + ', array_splice($zahlen, 0, count($zahlen)-1));
$berechnung = array();
for($i = 1; $i <= $ergebnis; $i++){
$berechnung[] = "($reihe) / ($reihe)";
}
echo implode(' + ', $berechnung).' = '.$ergebnis;
?>
<?php
header('Content-Type: text/plain');
// Testcase, von mir ausgedacht.
$formel = '5+9-(3*4)';
$ergebnis = eval('return '.$formel.';');
echo "Testcase : $formel=$ergebnis\n\n";
// Eingabe für eure Scripte vorbereiten.
$zahlen = preg_split("/\+|\-|\*|\/|\(|\)|=/", $formel, -1, PREG_SPLIT_NO_EMPTY);
$zahlen = array_unique($zahlen);
shuffle($zahlen);
$eingabe = implode(',', $zahlen).','.$ergebnis;
echo "Eingabe : $eingabe\n\n";
// Aufruf eures Scripts. Whitespace wird aus der Ausgabe entfernt.
$ausgabe = file_get_contents('http://localhost/deinScript.php?in='.$eingabe);
$ausgabe = str_replace(array(' ', "\t", "\r", "\n"), '', $ausgabe);
echo "Ausgabe : $ausgabe\n\n";
// Ausgabe in Formel und Ergebnis zerlegen.
$teile = explode('=', $ausgabe);
// Prüfe Bedingung "genau ein =".
if (count($teile) !== 2)
die('FEHLER: Nicht genau ein "=".');
// Prüfe Bedingung "jede Zahl mindestens einmal".
$zahlen_ausgabe = preg_split("/\+|\-|\*|\/|\(|\)|=/", $teile[0], -1, PREG_SPLIT_NO_EMPTY);
if (count(array_diff($zahlen_ausgabe, $zahlen)) !== 0)
die('FEHLER: Nicht jede Zahl der Eingabe mindestens einmal verwendet oder unerlaubte Zeichen.');
// Prüfe Korrektheit der Lösung. Rundung auf 2 Nachkommastellen.
$ergebnis_ausgabe = round(eval('return '.$teile[0].';'), 2);
if ($ergebnis_ausgabe !== round($teile[1], 2))
die('FEHLER: Ausgabe ist nicht korrekt.');
echo "Genauigkeit: ".($ergebnis - $ergebnis_ausgabe);
?>
for ($i = 1; $i < end($in); $i++)
$out .= '+'.$in[0].'/'.$in[0];
}
for ($i = 1; $i < count($in)-1; $i++) {
$out .= '+('.$in[$i].'-'.$in[$i].')';
}
echo trim($out, '+').'='.end($in);
Kommentar