Я работаю над проблемой, в которой мне нужно вычислить среднее значение из набора результатов испытаний по следующим критериям.-эта программа была протестирована на нескольких тестовых примерах, и каждый тестовый пример имеет следующие результаты. "OK", "Неправильный ответ", "TimeOut", "Ошибка времени выполнения" - тестовые случаи были организованы в группы, пронумерованные последовательными натуральными числамипрограмма набирала баллы для группы только в том случае, если результат каждого тестового примера в группе был «ОК», например, если имена тестовых примеров - test1, test2a, test2b, test2c, test3, test4.В этом случае test2a, test2b, test2c все образуют одну группу и все должны набрать OK, чтобы получить общую точку.
Написать функцию
class Solution{
public int solution (String[] test, String[] result){}
}
//example:
test[0] = "test1a", result[0] = "Wrong answer"
test[1] = "test2", result[1] = "OK"
test[2] = "test1b", result[2] = "Runtime error"
test[3] = "test1c", result[0] = "OK"
test[4] = "test3", result[4] = "Time limit exceeded"
//result above is 33.
Предположим, что целое число находится в диапазоне 1-300 -массивы test и result имеют одинаковую длину - каждый тестовый случай появляется только один раз - тестовый случай упорядочен последовательными натуральными целыми числами из 1. - тестовые случаи в группах, содержащих не менее двух тестов, отличаются суффиксом в нижнем регистре в алфавитном порядке от a.- каждая строка в результатах содержит одно из: «OK», «Неправильный ответ», «TimeOut», «Ошибка времени выполнения»
. Сейчас я написал код для удаления массива тестовых строк и получения целых чисел для каждой тестовой группы.,Затем я создал Integer, Integer HashMap, где я проверяю целые числа, которые я собрал после использования регулярных выражений, и проверяю, чтобы все тестовые случаи в группе были в порядке, прежде чем присваивать им 100
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Codechef
{
public static int solution(String[] test, String[] result)
{
HashMap<Integer, Integer> scoreMap = new HashMap<Integer, Integer>();
int[] stripped = new int[test.length];
//stripped the String of numbers..
for(int i = 0; i < test.length;i++)
{
stripped[i] = Integer.parseInt(test[i].replaceAll("[^0-9]", ""));
}
//working with just the numbers from the test groups array
for(int i = 0; i < stripped.length; i++)
{
if(scoreMap.containsKey(stripped[i]))
{
if(result[i].equals("OK"))
scoreMap.put(stripped[i], 100);
else
scoreMap.put(stripped[i], 0);
}
else
{
if(result[i].equals("OK"))
scoreMap.put(stripped[i], 100);
else
scoreMap.put(stripped[i], 0);
}
}
int correctAnswers = 0;
for(int val: scoreMap.values())
{
if(val == 100)
correctAnswers++;
}
double avg = correctAnswers/scoreMap.size() * 100;
return (int)Math.floor(avg);
//return Math.floor(correctAnswers/scoreMap.size() * 100);
}
public static void main (String[] args) throws java.lang.Exception
{
// your code goes here
String[] test1 = {"test1", "test2a", "test2b", "test4", "test2c", "test3", "test5", "test6", "test7"};
String[] results1 = {"OK", "OK", "Wrong answer", "OK", "Wrong answer", "Wrong answer", "OK", "TimeOut","Runtime error"};
int average1 = solution(test1, results1);
String[] test2 = {"stackoverflow1", "stackoverflow2a", "stackoverflow2b", "stackoverflow4", "stackoverflow2c", "stackoverflow3", "stackoverflow5", "stackoverflow6", "stackoverflow7"};
String[] results2 = {"Runtime error", "OK", "Wrong answer", "OK", "TimeOut", "Wrong answer", "OK", "Timeout","TimeOut"};
int average2 = solution(test2, results2);
String[] test3 = {"test1", "test2a", "test2b", "test4", "test2c", "test3", "test5", "test6", "test7"};
String[] results3 = {"OK", "OK", "TimeOut", "OK", "TimeOut", "OK", "TimeOut", "Runtime error","OK"};
int average3 = solution(test3, results3);
System.out.println("Avg1 = " + average1);
System.out.println("Avg2 = " + average2);
System.out.println("Avg3 = " + average3);
}
}