diff --git a/EGOI-2021/EGOI-2021-Moviento-Doble/cases/sample.in b/EGOI-2021/EGOI-2021-Moviento-Doble/cases/sample.sub1.in similarity index 100% rename from EGOI-2021/EGOI-2021-Moviento-Doble/cases/sample.in rename to EGOI-2021/EGOI-2021-Moviento-Doble/cases/sample.sub1.in diff --git a/EGOI-2021/EGOI-2021-Moviento-Doble/cases/sample.out b/EGOI-2021/EGOI-2021-Moviento-Doble/cases/sample.sub1.out similarity index 100% rename from EGOI-2021/EGOI-2021-Moviento-Doble/cases/sample.out rename to EGOI-2021/EGOI-2021-Moviento-Doble/cases/sample.sub1.out diff --git a/EGOI-2021/EGOI-2021-Moviento-Doble/cases/sample2.in b/EGOI-2021/EGOI-2021-Moviento-Doble/cases/sample2.sub4.in similarity index 100% rename from EGOI-2021/EGOI-2021-Moviento-Doble/cases/sample2.in rename to EGOI-2021/EGOI-2021-Moviento-Doble/cases/sample2.sub4.in diff --git a/EGOI-2021/EGOI-2021-Moviento-Doble/cases/sample2.out b/EGOI-2021/EGOI-2021-Moviento-Doble/cases/sample2.sub4.out similarity index 100% rename from EGOI-2021/EGOI-2021-Moviento-Doble/cases/sample2.out rename to EGOI-2021/EGOI-2021-Moviento-Doble/cases/sample2.sub4.out diff --git a/EGOI-2021/EGOI-2021-Moviento-Doble/examples/sample.in b/EGOI-2021/EGOI-2021-Moviento-Doble/examples/sample.in index aa507b4..95525b7 120000 --- a/EGOI-2021/EGOI-2021-Moviento-Doble/examples/sample.in +++ b/EGOI-2021/EGOI-2021-Moviento-Doble/examples/sample.in @@ -1 +1 @@ -../cases/sample.in \ No newline at end of file +../cases/sample.sub1.in \ No newline at end of file diff --git a/EGOI-2021/EGOI-2021-Moviento-Doble/examples/sample2.in b/EGOI-2021/EGOI-2021-Moviento-Doble/examples/sample2.in index 328c98b..21e365a 120000 --- a/EGOI-2021/EGOI-2021-Moviento-Doble/examples/sample2.in +++ b/EGOI-2021/EGOI-2021-Moviento-Doble/examples/sample2.in @@ -1 +1 @@ -../cases/sample2.in \ No newline at end of file +../cases/sample2.sub4.in \ No newline at end of file diff --git a/EGOI-2021/EGOI-2021-Moviento-Doble/statements/es.markdown b/EGOI-2021/EGOI-2021-Moviento-Doble/statements/es.markdown index 07a09dd..a137279 100644 --- a/EGOI-2021/EGOI-2021-Moviento-Doble/statements/es.markdown +++ b/EGOI-2021/EGOI-2021-Moviento-Doble/statements/es.markdown @@ -36,7 +36,7 @@ Asume que Alice y Bob van a jugar el resto del juego como se definió arriba. Ca La primera línea de entrada contiene los números $n$ y $k$ — el número de piedras y el número de declaraciones que ya se han hecho. -Las siguientes $k$ líneas, describen las declaraciones en el orden en que se hicieron. Cada línea contiene 2 números eneros separados por espacio: los números de las piedras declaradas (ambos entre $1$ y $n$ inclusive y no necesariamente distintas). +Las siguientes $k$ líneas, describen las declaraciones en el orden en que se hicieron. Cada línea contiene 2 números enteros separados por espacio: los números de las piedras declaradas (ambos entre $1$ y $n$ inclusive y no necesariamente distintas). Nota que cuando $k < n + 1$ el siguiente jugador en hacer una declaración depende de la paridad de $k$. diff --git a/EGOI-2021/EGOI-2021-Moviento-Doble/testplan b/EGOI-2021/EGOI-2021-Moviento-Doble/testplan index 2bc844f..6dca655 100644 --- a/EGOI-2021/EGOI-2021-Moviento-Doble/testplan +++ b/EGOI-2021/EGOI-2021-Moviento-Doble/testplan @@ -1,2 +1,2 @@ -sample 100 -sample2 0 +sample.sub1 100 +sample2.sub4 0 diff --git a/EGOI-2021/EGOI-2021-Moviento-Doble/tests/test-validator.py b/EGOI-2021/EGOI-2021-Moviento-Doble/tests/test-validator.py new file mode 100644 index 0000000..9ab4f99 --- /dev/null +++ b/EGOI-2021/EGOI-2021-Moviento-Doble/tests/test-validator.py @@ -0,0 +1,65 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +# too-many-locals +# pylint: disable=R0914 +# too-many-statements +# pylint: disable=R0915 + +import sys +import re +import unittest +from collections import deque +from omegaup.validator import validatortest + + +class Test(unittest.TestCase): + + def test(self): + case_name = sys.argv[1] + if not any(f'sub{i}' in case_name for i in range(1, 6)): + self.fail(f"Invalid case name: {case_name}") + + with open('data.in', 'r') as handle: + original_input = handle.read() + + lines = original_input.split('\n') + self.assertEqual(lines[-1], '') + lines.pop() + + regex = re.compile(r'^(\d+) (\d+)$') + self.assertTrue(regex.match(lines[0])) + + # Verificar tamaño de archivo + + lines[0] = lines[0].split(' ') + n = int(lines[0][0]) + k = int(lines[0][1]) + + self.assertEqual(len(lines), k + 1) + + # Definir limites + + lim_n = 35 + lim_k = lim_n + 1 + + if 'sub1' in case_name: + lim_n = 4 + elif 'sub2' in case_name: + lim_n = 10 + elif 'sub3' in case_name: + lim_n = 25 + elif 'sub4' in case_name: + lim_k = 0 + + self.assertTrue(1 <= n <= lim_n) + self.assertTrue(0 <= k <= lim_k) + + regex2 = re.compile(r'^(\d+) (\d+)$') + for line in lines[1:]: + self.assertTrue(regex2.match(line)) + arr = line.split(' ') + self.assertTrue(1 <= int(arr[0]) <= n and 1 <= int(arr[1]) <= n) + +if __name__ == '__main__': + validatortest.main() diff --git a/EGOI-2021/EGOI-2021-Moviento-Doble/tests/tests.json b/EGOI-2021/EGOI-2021-Moviento-Doble/tests/tests.json index 684a040..2abe6cf 100644 --- a/EGOI-2021/EGOI-2021-Moviento-Doble/tests/tests.json +++ b/EGOI-2021/EGOI-2021-Moviento-Doble/tests/tests.json @@ -1,3 +1,6 @@ { + "inputs": { + "filename": "test-validator.py" + }, "max_score": 100 } diff --git a/problems.json b/problems.json index 28e7065..e9f2ab2 100644 --- a/problems.json +++ b/problems.json @@ -41,6 +41,9 @@ }, { "path": "2022/selectivo-dia-2/OFMI-2022-Bruna" + }, + { + "path": "EGOI-2021/EGOI-2021-Moviento-Doble" } ] }