diff --git a/exercises/lt_exercise.php b/exercises/lt_exercise.php index c658134fa94286f654705739ac223679ead486c2..a60b69a3bbe2fe95ebdad640d46e16abd321a916 100644 --- a/exercises/lt_exercise.php +++ b/exercises/lt_exercise.php @@ -81,36 +81,38 @@ class lt_exercise extends Exercise if ($musterLoesung === $studentSolution) { $similarity_temp = 1; - } else if ($this->task['compare'] === 'levenshtein') { // Levenshtein-Distanz - $string1 = mb_substr($studentSolution, 0, 255); - $string2 = mb_substr($musterLoesung, 0, 255); - $divisor = max(mb_strlen($string1), mb_strlen($string2)); - - $levenshtein = vips_levenshtein($string1, $string2) / $divisor; - $similarity_temp = 1 - $levenshtein; - } else if ($this->task['compare'] === 'soundex') { // Soundex-Aussprache - $levenshtein = levenshtein(soundex($musterLoesung), soundex($studentSolution)); - - if ($levenshtein == 0) { - $similarity_temp = 0.8; - } else if ($levenshtein == 1) { - $similarity_temp = 0.6; - } else if ($levenshtein == 2) { - $similarity_temp = 0.4; - } else if ($levenshtein == 3) { - $similarity_temp = 0.2; - } else {// $levenshtein == 4 - $similarity_temp = 0; - } - } else if ($this->task['compare'] === 'numeric') { - $correct = normalizeFloat($answer['text'], $correct_unit); - $student = normalizeFloat($response[0], $student_unit); - - if ($correct_unit === $student_unit) { - if (abs($correct - $student) <= abs($correct * $this->task['epsilon'])) { - $similarity_temp = 1; - } else { - $safe = true; + } else if (isset($this->task['compare'])) { + if ($this->task['compare'] === 'levenshtein') { // Levenshtein-Distanz + $string1 = mb_substr($studentSolution, 0, 255); + $string2 = mb_substr($musterLoesung, 0, 255); + $divisor = max(mb_strlen($string1), mb_strlen($string2)); + + $levenshtein = vips_levenshtein($string1, $string2) / $divisor; + $similarity_temp = 1 - $levenshtein; + } else if ($this->task['compare'] === 'soundex') { // Soundex-Aussprache + $levenshtein = levenshtein(soundex($musterLoesung), soundex($studentSolution)); + + if ($levenshtein == 0) { + $similarity_temp = 0.8; + } else if ($levenshtein == 1) { + $similarity_temp = 0.6; + } else if ($levenshtein == 2) { + $similarity_temp = 0.4; + } else if ($levenshtein == 3) { + $similarity_temp = 0.2; + } else {// $levenshtein == 4 + $similarity_temp = 0; + } + } else if ($this->task['compare'] === 'numeric') { + $correct = normalizeFloat($answer['text'], $correct_unit); + $student = normalizeFloat($response[0], $student_unit); + + if ($correct_unit === $student_unit) { + if (abs($correct - $student) <= abs($correct * $this->task['epsilon'])) { + $similarity_temp = 1; + } else { + $safe = true; + } } } }