5 个版本
0.2.3 | 2020 年 12 月 6 日 |
---|---|
0.2.2 | 2019 年 11 月 21 日 |
0.2.1 | 2019 年 10 月 17 日 |
0.2.0 | 2019 年 10 月 17 日 |
0.1.0 | 2019 年 10 月 15 日 |
#2389 在 命令行工具
33 每月下载次数
67KB
1.5K SLoC
Kattis 客户端
警告:这是一个非官方客户端,可能会在未通知的情况下崩溃。如果发生这种情况,请留下问题。
功能
- 使用代码模板减少输入。
- 自动下载问题样例并测试您的解决方案。
- 在不离开终端的情况下提交解决方案并获取更新。
安装
使用 Cargo
您可以使用 Rust 包管理器 Cargo 轻松安装此工具。
cargo install kattis
安装通常需要一分钟。同时,您可以准备您的 配置。
示例用法
为了说明如何使用此工具,我们将解决 Aaah 问题。您可以在 examples 目录中找到此示例中使用的配置和文件。
如果您还没有,您必须创建一个新的 模板。模板基本上是一个包含所有样板代码的裸机解决方案的文件夹。更多详细信息请参阅 此处。
我们的首要任务是找到问题的 id:aaah
。这将由客户端用于下载所有问题的样例并设置新的测试环境
kattis new --problem aaah --template rust
默认情况下,此命令将在名为 aaah
的新目录中创建,我们将找到我们的模板(在这种情况下,名为 rust
的模板)。
在此阶段,我们将编写我们的解决方案,当我们认为我们已经有一个可以工作的解决方案时,我们可以通过运行来测试我们的假设
cd aaah
kattis test
这将运行 kattis.yml
中指定的构建命令,然后是运行命令,为每个样例运行一次。如果我们的解决方案是正确的,我们应该看到以下输出
Running test case: aaah.1
Correct
Running test case: aaah.2
Correct
如果我们的解决方案是错误的,我们将会看到类似的东西(实际输出已着色以提高可读性)
Running test case: aaah.1
Correct
Running test case: aaah.2
Wrong Answer
Input:
aaah
ah
Found:
uh oh
Expected:
go
在提交之前测试您的代码不仅会使调试更容易,而且还可以减少您出错测试用例的可能性。在包含惩罚的比赛中,这尤其重要。
当您确信您的解决方案是正确的时,您可以通过运行轻松地提交您的解决方案
kattis submit
系统会弹出一个简短摘要,说明将要提交的内容,并附带一个确认提示。如果你回答 y
,你的提交将被发送,你应该看到你的提交状态定期更新
Language: Rust
Files:
- ./main.rs
Main Class:
Proceed with the submission? (y/N) y
Submission ID: 4253057
Compiling...
Running...
Test Case 1/52: Accepted
Test Case 2/52: Accepted
Test Case 3/52: Accepted
Test Case 4/52: Accepted
...
Test Case 42/52: Accepted
...
Test Case 49/52: Accepted
Test Case 50/52: Accepted
Test Case 51/52: Accepted
Test Case 52/52: Accepted
Submission Status: Accepted
Time: 17:47:24
CPU: 0.00 s
正如你所期望的,如果发生严重错误,你将立即得知
Language: Rust
Files:
- ./main.rs
Main Class:
Proceed with the submission? (y/N) y
Submission ID: 4253066
Compiling...
Compiling...
Test Case 1/52: Accepted
Test Case 2/52: Accepted
Test Case 3/52: Accepted
Test Case 4/52: Accepted
Test Case 5/52: Wrong Answer
Submission Status: Wrong Answer
Time: 17:53:36
CPU: 0.00 s
配置
默认情况下,kattis会在你的用户配置目录中搜索你的配置文件
操作系统 | 目录 | 示例 |
---|---|---|
Linux | $XDG_CONFIG_HOME/kattis 或 $HOME/.config/kattis | /home/alice/.config/kattis |
macOS | $HOME/Library/Preferences/kattis | /Users/Alice/Library/Preferences/kattis |
Windows | {FOLDERID_RoamingAppData} | C:\Users\Alice\AppData\Roaming\kattis |
你可以通过设置环境变量 KATTIS_CONFIG_HOME
来覆盖默认的配置目录。
在配置目录内部,你可以创建一个全局配置文件 kattis-global.yml
。你可以通过运行 kattis config show
来打印这个文件的路径
凭证
为了从命令行进行提交,你需要下载适当的凭证。这些凭证可以在这里找到。如果你想在这个客户端上使用open.kattis.com以外的任何域名,你可以在 <kattis>
找到凭证,其中 <kattis>
是域名,例如 https://po.kattis.com/download/kattisrc
。
与官方的提交CLI不同,这个客户端不需要在您的家目录中存储凭证。相反,它们存储在配置目录内的 credentials
文件夹中。
你可以根据需要命名包含凭证的文件。稍后,例如当进行新的提交时,你可以使用此名称告诉客户端提交到不同的Kattis域名。这在比赛期间非常有用。
默认情况下,客户端将搜索名为 open.kattis.com
的凭证。这种行为可以通过更改环境变量 KATTIS_HOST
或通过命令行标志来覆盖。
模板
模板基本上是一个包含所有样板代码的裸机解决方案的文件夹。它们可以在比赛中节省你大量时间(如果允许的话),这样你就可以花更多的时间在当前的问题上,而不用花费太多时间在编写代码上。
模板存储在配置目录内部的 templates
文件夹中的单独目录中。创建一个新的模板很简单
kattis template new <name>
这将创建一个名为 <name>
的新模板在适当的目录中,并创建一个默认的 kattis.yml
配置文件。
默认情况下,你必须使用标志向客户端提供你想要使用的模板的名称。这种行为可以通过更改全局配置文件(kattis-global.yml
)中的 default_template
属性来覆盖。
kattis.yml
文件
在这个 YAML 文件中,你可以配置模板的构建方式,要提交哪些文件,等等
字段 | 描述 |
---|---|
samples |
存储样本的目录 |
files |
要提交给裁判的文件列表 |
language |
解决方案编写使用的语言 |
主类 |
可选。指定主类 |
构建 |
构建解决方案时需要按顺序执行的命令列表 |
运行 |
运行解决方案时使用的命令 |
注意,对于像Python这样的解释型语言,不需要构建步骤,因此可以留空
构建
字段。
当使用模板通过 kattis new
命令创建解决新问题的解决方案时,将创建两个附加字段
字段 | 描述 |
---|---|
主机名 |
提交时使用的凭据名称 |
问题 |
解决该问题的问题的ID |
依赖
~24–35MB
~597K SLoC