# nekontrol - Control your kattis solutions
This is a simple program that compiles, runs and tests your kattis solutions
against local and sample input and output.
## Demo
![Demo](https://raw.githubusercontent.com/Quaqqer/nekontrol/main/res/demo.svg)
## Features
- Automatically downloads sample input and output
- Discovers local sample input and output
- Compiles your source code and runs it with local and sample input and output
- Ignores debug messages - ignores lines starting with "dbg" or "debug" and
inline messages "(dbg...)" and "(debug...)". If debug lines are discovered
then you are notified in the output so that you don't submit something that is
incorrect.
The current supported languages are:
- C++ (requires `c++` in your path)
- Rust (requirest `rustc` in your path)
- Python (requires python in your path)
> **Note**
> For compatibility reasons it is recommended to have pypy 3.8 installed in
> your path. If you don't you may encounter runtime errors in kattis, because
> of differing python versions.
- Haskell (requires `ghc` in your path)
- Lua (requires `lua` in your path)
- JavaScript (Node) (requires `node` in your path)
Adding more languages is left as an exercise for the reader.
## Usage
Simply run `nk <source file>` and it should hopefully compile (if needed)
and run!
- `nk` assumes that the name of the source files matches the name of the
problem (found in the url, ex. https://open.kattis.com/problems/<b>hello</b>).
If this assumption is incorrect, you can specify the problem with
`--problem <problem name>`. Local files are still matched with the filename
regardless of the problem specified.
- Input and output files should follow the format `<filename>.in` or
`<filename>.<number>.in` and corresponding outputs are named `<filename>.ans`
etc. where `<filename>` comes from `nk <filename>.cpp` for instance.
> **Note**
> Multiple files are not supported as of yet
## Requirements
- The requirements of this program is only having python 3.10 or newer as well
pip
- A half decent terminal, almost anything other than cmd.exe on windows will
work
## Install or update
To install or update, run the following.
```sh
pip install -U nekontrol
```
Now it should hopefully work, enjoy!
### Nix
There is a flake for Nix users, but if you use Nix I trust you know how to use
flakes.
## Other
- If you are thinking "nekontrol is a kinda weeby name", I ask you: have you
ever tried coming up with an original name?
Raw data
{
"_id": null,
"home_page": "https://github.com/Quaqqer/nekontrol",
"name": "nekontrol",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.10,<4.0",
"maintainer_email": "",
"keywords": "kattis,competetive programming",
"author": "Emanuel S",
"author_email": "emanuel@empa.xyz",
"download_url": "https://files.pythonhosted.org/packages/84/d9/cc73d3674334d765dc828e7c3fea9db2497942b8378a7e9a45a6bd8094d2/nekontrol-0.2.0.tar.gz",
"platform": null,
"description": "# nekontrol - Control your kattis solutions\n\nThis is a simple program that compiles, runs and tests your kattis solutions\nagainst local and sample input and output.\n\n## Demo\n\n![Demo](https://raw.githubusercontent.com/Quaqqer/nekontrol/main/res/demo.svg)\n\n## Features\n\n- Automatically downloads sample input and output\n- Discovers local sample input and output\n- Compiles your source code and runs it with local and sample input and output\n- Ignores debug messages - ignores lines starting with \"dbg\" or \"debug\" and\n inline messages \"(dbg...)\" and \"(debug...)\". If debug lines are discovered\n then you are notified in the output so that you don't submit something that is\n incorrect.\n\nThe current supported languages are:\n\n- C++ (requires `c++` in your path)\n- Rust (requirest `rustc` in your path)\n- Python (requires python in your path)\n > **Note**\n > For compatibility reasons it is recommended to have pypy 3.8 installed in\n > your path. If you don't you may encounter runtime errors in kattis, because\n > of differing python versions.\n- Haskell (requires `ghc` in your path)\n- Lua (requires `lua` in your path)\n- JavaScript (Node) (requires `node` in your path)\n\nAdding more languages is left as an exercise for the reader.\n\n## Usage\n\nSimply run `nk <source file>` and it should hopefully compile (if needed)\nand run!\n\n- `nk` assumes that the name of the source files matches the name of the\n problem (found in the url, ex. https://open.kattis.com/problems/<b>hello</b>).\n If this assumption is incorrect, you can specify the problem with\n `--problem <problem name>`. Local files are still matched with the filename\n regardless of the problem specified.\n- Input and output files should follow the format `<filename>.in` or\n `<filename>.<number>.in` and corresponding outputs are named `<filename>.ans`\n etc. where `<filename>` comes from `nk <filename>.cpp` for instance.\n\n> **Note**\n> Multiple files are not supported as of yet\n\n## Requirements\n\n- The requirements of this program is only having python 3.10 or newer as well\n pip\n- A half decent terminal, almost anything other than cmd.exe on windows will\n work\n\n## Install or update\n\nTo install or update, run the following.\n\n```sh\npip install -U nekontrol\n```\n\nNow it should hopefully work, enjoy!\n\n### Nix\n\nThere is a flake for Nix users, but if you use Nix I trust you know how to use\nflakes.\n\n## Other\n\n- If you are thinking \"nekontrol is a kinda weeby name\", I ask you: have you\n ever tried coming up with an original name?\n",
"bugtrack_url": null,
"license": "",
"summary": "A program for testing kattis solutions with input and output.",
"version": "0.2.0",
"split_keywords": [
"kattis",
"competetive programming"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "8433ae52e92362b8780159c803645977999328d83a04604e5d5e6a7015c7984e",
"md5": "b527ee0bb3a09ee4fd1b3fe61b6086d2",
"sha256": "241e557e11b340cb35f44129a81b2e95b8100b2a5c382831f9f91327067e0360"
},
"downloads": -1,
"filename": "nekontrol-0.2.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "b527ee0bb3a09ee4fd1b3fe61b6086d2",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10,<4.0",
"size": 10725,
"upload_time": "2023-02-09T21:28:51",
"upload_time_iso_8601": "2023-02-09T21:28:51.247549Z",
"url": "https://files.pythonhosted.org/packages/84/33/ae52e92362b8780159c803645977999328d83a04604e5d5e6a7015c7984e/nekontrol-0.2.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "84d9cc73d3674334d765dc828e7c3fea9db2497942b8378a7e9a45a6bd8094d2",
"md5": "ab8f0e1640dce00e95628df54109812d",
"sha256": "5aa1ec9751bfd6ee7a84f348284a0589c959fd16f09e393e8c5f88b5f1077515"
},
"downloads": -1,
"filename": "nekontrol-0.2.0.tar.gz",
"has_sig": false,
"md5_digest": "ab8f0e1640dce00e95628df54109812d",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10,<4.0",
"size": 9779,
"upload_time": "2023-02-09T21:28:52",
"upload_time_iso_8601": "2023-02-09T21:28:52.488660Z",
"url": "https://files.pythonhosted.org/packages/84/d9/cc73d3674334d765dc828e7c3fea9db2497942b8378a7e9a45a6bd8094d2/nekontrol-0.2.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-02-09 21:28:52",
"github": true,
"gitlab": false,
"bitbucket": false,
"github_user": "Quaqqer",
"github_project": "nekontrol",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "nekontrol"
}