package org.c3sl.ufpr.br.correction; import br.ufpr.c3sl.mistakes.MistakeOccurrence; import br.ufpr.c3sl.virtualkeyboard.mathevaluator.MathEvaluator; public class CorrectionSix extends AbstractCorrection { public CorrectionSix() { super(6); } private static final long serialVersionUID = -1456505415418648388L; @Override public boolean isCorrect(String answer, int row, int column) { MathEvaluator math = new MathEvaluator(); math.addVariable("ℓ", 311.43); math.addVariable("n", 0.8); math.setExpression(answer); answerDouble = math.getValue(); String expression = ""; switch (column) { case 3: if (row == 5) expression = " ( ( ( ℓ/ (3 ^ n) ) ^ 2 ) * sqrt ( 3 ) ) / 4 "; else expression = " ( ( ( ℓ/ (3 ^ " + row + " ) ) ^ 2 )) * sqrt ( 3 ) / 4 "; break; case 4: if (row == 5) expression = " 3 * ( 4 ^ ( n - 1 ) )"; else if (row == 0) expression = "1"; else expression = "3 * (4 ^ (" + row + "-1 ))"; break; case 5: if (row == 5) expression = "3 * (4 ^ (n -1 )) * ( ( ( ℓ/ (3 ^ n) ) ^ 2 ) * sqrt ( 3 ) ) / 4 "; else if (row == 0) expression = "( ( ℓ ) ^ 2 ) * sqrt ( 3 ) / 4"; else expression = "3 * (4 ^ (" + row + "-1 ))" + " * ( ( ( ℓ/3^" + row + " ) ^ 2 ) * sqrt ( 3 ) ) / 4 "; break; default: break; } math.setExpression(expression); correctAnswer = math.getValue(); int comparationReturn = super.compareDouble(correctAnswer, answerDouble, 0.009); switch (comparationReturn) { case 1: this.message = null; saveHit(answer, expression, row, column); return true; case -1: this.message = MistakeOccurrence.getMistakeMessage("4", 3, Integer.parseInt(row+""+column)); saveState(answer, expression, row, column); return false; case -2: this.message = MistakeOccurrence.getMistakeMessage("4", 3, Integer.parseInt(row+""+column)); saveState(answer, expression, row, column); return false; default: this.message = null; return false; } } }