Skip to main content

Tool for developing tasks for programming competitions.

Project description

Pisek ⌛

Tool for developing tasks for programming competitions. Currently used by:

And was used by:

Install

Pisek requires Python ≥ 3.11. Install with pip:

pip install pisek

For upgrading add --upgrade:

pip install pisek --upgrade

Testing tasks

First create a config file as documented here. You can also reference the examples for Kasiopea mode and CMS mode.

pisek test

This command tests the task in the current directory. It tests all task parts (generator, checker, solutions and judge).

Task testing overview

What pisek verifies:

  • Samples exist
  • The generator generates inputs
    • Generator is deterministic
    • Generator respects seed on seeded inputs
  • The checker accepts all inputs
  • The judge works
    • It accepts the samples
    • It doesn't crash on malicious output
  • The solutions finish as expected
    • They get the expected number of points
    • They succeed/fail on each subtask as expected
  • Data files (inputs and outputs) are valid
    • They are in the correct encoding
    • They don't contain unprintable characters
    • They have a newline at the end
    • The files are reasonably small
  • The task is complete
    • A CMS judge has no redundant lines in its stdout/stderr
    • If solution_for_each_subtask=on, there exists a dedicated solution for each subtask

Testing given programs

For fast testing of only the solution solve_cool.cpp use:

pisek test solution solve_cool

Similarly the generator can be tested using:

pisek test generator

Cleaning

Pisek can create a lot of files used for testing. Remove them by running:

pisek clean

Visualization

For visualizing the running time for each solution and testcase:

pisek test --testing-log  # test the task
pisek visualize      # visualize

License

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.

Copyright (c)   2019 - 2022 Václav Volhejn <vaclav.volhejn@gmail.com>
Copyright (c)   2019 - 2022 Jiří Beneš <mail@jiribenes.com>
Copyright (c)   2020 - 2022 Michal Töpfer <michal.topfer@gmail.com>
Copyright (c)   2022        Jiří Kalvoda <jirikalvoda@kam.mff.cuni.cz>
Copyright (c)   2023        Daniel Skýpala <skipy@kam.mff.cuni.cz>
Copyright (c)   2024        Benjamin Swart <benjaminswart@email.cz>
Copyright (c)   2024        Antonín Maloň <git@tonyl.eu>

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pisek-1.3.0.tar.gz (139.5 kB view details)

Uploaded Source

Built Distribution

pisek-1.3.0-py3-none-any.whl (176.0 kB view details)

Uploaded Python 3

File details

Details for the file pisek-1.3.0.tar.gz.

File metadata

  • Download URL: pisek-1.3.0.tar.gz
  • Upload date:
  • Size: 139.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.1.dev0+g94f810c.d20240510 CPython/3.12.4

File hashes

Hashes for pisek-1.3.0.tar.gz
Algorithm Hash digest
SHA256 7a6a27de9fa205df850a8fe6f3d09fbc00109d8b826fa10f08c823bf2ff07a0f
MD5 8f49eeb6e9f3b7481e3fe10546009773
BLAKE2b-256 a8f34c5c937b79876c4bac8f82ed62c2a1e24912241368f982b5e6565e1e690a

See more details on using hashes here.

File details

Details for the file pisek-1.3.0-py3-none-any.whl.

File metadata

  • Download URL: pisek-1.3.0-py3-none-any.whl
  • Upload date:
  • Size: 176.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.1.dev0+g94f810c.d20240510 CPython/3.12.4

File hashes

Hashes for pisek-1.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 23adc41bf95fff54d79169ba8244b7cfbc3895fe4d14c9115c07e81745740590
MD5 a26d56be9f7186179cd404d69a2ca092
BLAKE2b-256 9cdf55e502c8cb07f072b7ad24b9f54c6e40fb6062a8eef79c818484d26a8c19

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page