From 040e8cd5694dba71c58160a4eddbbdd7aa28f181 Mon Sep 17 00:00:00 2001 From: Matistjati Date: Thu, 15 May 2025 15:43:00 +0200 Subject: [PATCH 1/4] Convert some example problems to 2023-07-draft --- .../guess_validator/validate.cc | 0 .../guess_validator/validate.h | 0 examples/guess/problem.yaml | 6 ++++-- .../{problem_statement => statement}/problem.en.tex | 0 .../{problem_statement => statement}/problem.sv.md | 2 +- examples/oddecho/problem.yaml | 5 ++--- .../{problem_statement => statement}/cave.jpg | Bin .../{problem_statement => statement}/problem.en.tex | 0 .../{problem_statement => statement}/problem.sv.md | 0 problemtools/problem2pdf.py | 8 ++++---- problemtools/verifyproblem.py | 5 +++++ 11 files changed, 16 insertions(+), 10 deletions(-) rename examples/guess/{output_validators => output_validator}/guess_validator/validate.cc (100%) rename examples/guess/{output_validators => output_validator}/guess_validator/validate.h (100%) rename examples/guess/{problem_statement => statement}/problem.en.tex (100%) rename examples/guess/{problem_statement => statement}/problem.sv.md (98%) rename examples/oddecho/{problem_statement => statement}/cave.jpg (100%) rename examples/oddecho/{problem_statement => statement}/problem.en.tex (100%) rename examples/oddecho/{problem_statement => statement}/problem.sv.md (100%) diff --git a/examples/guess/output_validators/guess_validator/validate.cc b/examples/guess/output_validator/guess_validator/validate.cc similarity index 100% rename from examples/guess/output_validators/guess_validator/validate.cc rename to examples/guess/output_validator/guess_validator/validate.cc diff --git a/examples/guess/output_validators/guess_validator/validate.h b/examples/guess/output_validator/guess_validator/validate.h similarity index 100% rename from examples/guess/output_validators/guess_validator/validate.h rename to examples/guess/output_validator/guess_validator/validate.h diff --git a/examples/guess/problem.yaml b/examples/guess/problem.yaml index 877468d4..471d8125 100644 --- a/examples/guess/problem.yaml +++ b/examples/guess/problem.yaml @@ -1,11 +1,13 @@ +problem_format_version: 2023-07-draft source: Kattis license: cc by-sa -validation: custom interactive +type: interactive name: Guess the Number # Override standard limits: say that the TLE solutions provided should # be at least 4 times above the time limit in order for us to be # happy. limits: - time_safety_margin: 4 + time_multipliers: + time_limit_to_tle: 4 diff --git a/examples/guess/problem_statement/problem.en.tex b/examples/guess/statement/problem.en.tex similarity index 100% rename from examples/guess/problem_statement/problem.en.tex rename to examples/guess/statement/problem.en.tex diff --git a/examples/guess/problem_statement/problem.sv.md b/examples/guess/statement/problem.sv.md similarity index 98% rename from examples/guess/problem_statement/problem.sv.md rename to examples/guess/statement/problem.sv.md index c1edbd67..9c49030c 100644 --- a/examples/guess/problem_statement/problem.sv.md +++ b/examples/guess/statement/problem.sv.md @@ -4,7 +4,7 @@ var för stor, för liten eller rätt. Du får bara $10$ gissningar, använd dem klokt! -## Interaktion +# Interaktion Ditt program ska skriva ut gissningar om talet. En gissning är en rad som enbart innehåller ett heltal mellan $1$ och $1000$. Efter varje gissning måste du flusha standard out. diff --git a/examples/oddecho/problem.yaml b/examples/oddecho/problem.yaml index 2129dd93..f20775ff 100644 --- a/examples/oddecho/problem.yaml +++ b/examples/oddecho/problem.yaml @@ -1,7 +1,6 @@ +problem_format_version: 2023-07-draft license: cc by-sa -author: Johan Sannemo +credits: Johan Sannemo source: Principles of Algorithmic Problem Solving type: scoring name: Odd Echo -grading: - show_test_data_groups: true diff --git a/examples/oddecho/problem_statement/cave.jpg b/examples/oddecho/statement/cave.jpg similarity index 100% rename from examples/oddecho/problem_statement/cave.jpg rename to examples/oddecho/statement/cave.jpg diff --git a/examples/oddecho/problem_statement/problem.en.tex b/examples/oddecho/statement/problem.en.tex similarity index 100% rename from examples/oddecho/problem_statement/problem.en.tex rename to examples/oddecho/statement/problem.en.tex diff --git a/examples/oddecho/problem_statement/problem.sv.md b/examples/oddecho/statement/problem.sv.md similarity index 100% rename from examples/oddecho/problem_statement/problem.sv.md rename to examples/oddecho/statement/problem.sv.md diff --git a/problemtools/problem2pdf.py b/problemtools/problem2pdf.py index a2ee466d..99a72e65 100644 --- a/problemtools/problem2pdf.py +++ b/problemtools/problem2pdf.py @@ -45,6 +45,8 @@ def md2pdf(options: argparse.Namespace) -> bool: print(f'Error compiling Markdown to pdf: {e.stderr}') return False + # If success is not assigned somehow, it is considered a failure + success = False try: with open(temp_tex_file, 'r', encoding='utf-8') as f: tex = f.read() @@ -88,13 +90,11 @@ def replacer(match): with open(temp_tex_file, 'w', encoding='utf-8') as f: f.write(tex) - status = latex2pdf(options) - if status != 0: - return False + success = latex2pdf(options) finally: temp_tex_file.unlink() - return status == 0 + return success def latex2pdf(options: argparse.Namespace) -> bool: diff --git a/problemtools/verifyproblem.py b/problemtools/verifyproblem.py index 407b7a8b..38e59a9a 100644 --- a/problemtools/verifyproblem.py +++ b/problemtools/verifyproblem.py @@ -1240,6 +1240,11 @@ class OutputValidators(ProblemPart): PART_NAME = 'output_validator' def setup(self): + if self.problem.format.name != formatversion.VERSION_LEGACY and os.path.exists( + os.path.join(self.problem.probdir, 'output_validators') + ): + self.warning('output_validators is a deprecated name; please use output_validator instead') + self._validators = run.find_programs( os.path.join(self.problem.probdir, self.problem.format.output_validator_directory), language_config=self.problem.language_config, From c071025fd54ec751eba90704e8f48d856cb5feef Mon Sep 17 00:00:00 2001 From: Matistjati Date: Thu, 15 May 2025 15:51:37 +0200 Subject: [PATCH 2/4] Add uuid to guess and oddecho --- examples/guess/problem.yaml | 1 + examples/oddecho/problem.yaml | 1 + 2 files changed, 2 insertions(+) diff --git a/examples/guess/problem.yaml b/examples/guess/problem.yaml index 471d8125..860b1fff 100644 --- a/examples/guess/problem.yaml +++ b/examples/guess/problem.yaml @@ -1,4 +1,5 @@ problem_format_version: 2023-07-draft +uuid: 5ca6ba5b-36d5-4eff-8aa7-d967cbc4375e source: Kattis license: cc by-sa diff --git a/examples/oddecho/problem.yaml b/examples/oddecho/problem.yaml index f20775ff..dde683a1 100644 --- a/examples/oddecho/problem.yaml +++ b/examples/oddecho/problem.yaml @@ -1,4 +1,5 @@ problem_format_version: 2023-07-draft +uuid: 025dfeea-eb85-4532-94d1-3108ec03c80f license: cc by-sa credits: Johan Sannemo source: Principles of Algorithmic Problem Solving From 4c41c4e0b0323785330d6366dee8e8641ff91e1d Mon Sep 17 00:00:00 2001 From: Matistjati Date: Thu, 15 May 2025 16:03:53 +0200 Subject: [PATCH 3/4] Better formatting and error for output_validators --- problemtools/verifyproblem.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/problemtools/verifyproblem.py b/problemtools/verifyproblem.py index 38e59a9a..2a8e1da0 100644 --- a/problemtools/verifyproblem.py +++ b/problemtools/verifyproblem.py @@ -12,6 +12,7 @@ import hashlib import collections import os +from pathlib import Path import signal import re import shutil @@ -1240,10 +1241,11 @@ class OutputValidators(ProblemPart): PART_NAME = 'output_validator' def setup(self): - if self.problem.format.name != formatversion.VERSION_LEGACY and os.path.exists( - os.path.join(self.problem.probdir, 'output_validators') + if ( + self.problem.format.name != formatversion.VERSION_LEGACY + and (Path(self.problem.probdir) / 'output_validators').exists() ): - self.warning('output_validators is a deprecated name; please use output_validator instead') + self.error('output_validators is not supported after Legacy; please use output_validator instead') self._validators = run.find_programs( os.path.join(self.problem.probdir, self.problem.format.output_validator_directory), From 6371df63d65890354e217b6c619afee042c91334 Mon Sep 17 00:00:00 2001 From: Matistjati Date: Fri, 16 May 2025 14:19:33 +0200 Subject: [PATCH 4/4] Remove now-duplicated import --- guess.pdf | Bin 0 -> 18217 bytes problemtools/verifyproblem.py | 1 - 2 files changed, 1 deletion(-) create mode 100644 guess.pdf diff --git a/guess.pdf b/guess.pdf new file mode 100644 index 0000000000000000000000000000000000000000..a0b4baebc3436e8ebcd5679b3f531b797b40bd5f GIT binary patch literal 18217 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 literal 0 HcmV?d00001 diff --git a/problemtools/verifyproblem.py b/problemtools/verifyproblem.py index 0bbf5287..bafe9514 100644 --- a/problemtools/verifyproblem.py +++ b/problemtools/verifyproblem.py @@ -12,7 +12,6 @@ import hashlib import collections import os -from pathlib import Path import signal import re import shutil