kaspars/hunter

Hunter 是一个易于使用的 uHunt 封装器,用于从 UVA 服务器获取信息。

1.2.1 2015-09-14 19:33 UTC

This package is not auto-updated.

Last update: 2024-09-24 03:45:13 UTC


README

Build Status Scrutinizer Code Quality Code Coverage

简介

Hunter 是一个易于使用的 uHunt 封装器,用于从 UVa 的在线评测系统 获取信息。

Hunter 使用 MIT 许可证 - 详细内容请参阅 LICENSE 文件。

基本用法

use Hunter\Hunter;

require "vendor/autoload.php";

$hunter = new Hunter();

echo $hunter->getIdFromUsername("Kaspars");

安装

使用 Composer

安装 Hunter 最简单、推荐的方法是使用 composer。

使用以下命令使用 composer 安装。

$ composer require kaspars/hunter

如果您愿意,可以创建以下 composer.json 文件并运行 composer install 来安装它。

{
   "require": {
      "kaspars/hunter": "~1.0"
   }
}

直接下载

首先,您真的应该使用 composer.. 但如果您坚持,则只需将 src 文件夹的内容复制到您的项目中。

数据格式

所有数据都以关联数组的形式返回。

问题格式

  • id 问题 ID
  • number 问题编号
  • title 问题标题
  • dacu 不同已接受用户数
  • bestRuntime 已接受提交 的最佳运行时间(毫秒)
  • verdicts 给定的判断数组
    • Hunter\Status::NO_VERDICT 未给出判断 数量(可以忽略)
    • Hunter\Status::SUBMISSION_ERROR 提交错误 数量
    • Hunter\Status::CANT_BE_JUDGED 无法评测 数量
    • Hunter\Status::IN_QUEUE 在队列中 数量
    • Hunter\Status::COMPILATION_ERROR 编译错误 数量
    • Hunter\Status::RESTRICTED_FUNCTION 受限函数 数量
    • Hunter\Status::RUNTIME_ERROR 运行时错误 数量
    • Hunter\Status::OUTPUT_LIMIT 输出限制超过 数量
    • Hunter\Status::TIME_LIMIT 时间限制超过 数量
    • Hunter\Status::MEMORY_LIMIT 内存限制超过 数量
    • Hunter\Status::WRONG_ANSWER 答案错误 数量
    • Hunter\Status::PRESENTATION_ERROR 展示错误 数量
    • Hunter\Status::ACCEPTED 接受 数量
  • limit 问题运行时间限制(毫秒)
  • status 问题状态
    • Hunter\Status::UNAVAILABLE 不可用
    • Hunter\Status::Normal 正常
    • Hunter\Status::SPECIAL_JUDGE 使用了特殊评测程序。
  • rejudged 最后一次 (Unix 时间戳) 评测问题的时间,如果从未评测则为 null

提交格式

  • id 提交的 ID
  • user 用户 ID
  • name 用户的全名
  • username 用户的用户名
  • problem 问题的 ID
  • verdict 给定的判断
    • Hunter\Status::SUBMISSION_ERROR 提交错误
    • Hunter\Status::CANT_BE_JUDGED 无法评测
    • Hunter\Status::IN_QUEUE 在队列中
    • Hunter\Status::COMPILATION_ERROR 编译错误
    • Hunter\Status::RESTRICTED_FUNCTION 受限函数
    • Hunter\Status::RUNTIME_ERROR 运行时错误
    • Hunter\Status::OUTPUT_LIMIT 输出限制超过
    • Hunter\Status::TIME_LIMIT 时间限制超过
    • Hunter\Status::MEMORY_LIMIT 内存限制超过
    • Hunter\Status::WRONG_ANSWER 答案错误
    • Hunter\Status::PRESENTATION_ERROR 展示错误
    • Hunter\Status::ACCEPTED 接受
  • language 提交所写的语言
    • Hunter\Language::ANSI_C Ansi C
    • Hunter\Language::Java Java
    • Hunter\Language::CPLUSPLUS C++
    • Hunter\Language::PASCAL Pascal
    • Hunter\Language::CPLUSPLUS11 C++11
    • Hunter\Language::PYTHON Python
  • runtime 运行时间(毫秒)
  • rank 提交排名,与所有提交比较
  • time 提交的 Unix 时间戳

排行榜格式

  • id 用户 ID
  • name 用户名称
  • username 用户的用户名
  • rank 用户等级
  • accepted 已接受的题目数量
  • submissions 提交次数
  • activity 用户活动数组
    • Hunter\Activity::DAYS 过去2天的活动
    • Hunter\Activity::WEEK 过去7天的活动
    • Hunter\Activity::MONTH 过去31天的活动
    • Hunter\Activity::QUARTER 过去3个月的活动
    • Hunter\Activity::YEAR 过去一年的活动

#API ##getIdFromUsername(string $username) 将给定的 $username 转换为 UVa ID。

返回 ID 或找不到时返回 null

$hunter = new Hunter\Hunter();
echo $hunter->getIdFromUsername("Kaspars"); //343417
echo $hunter->getIdFromUsername("Foobar"); // null

示例

problems(void)

返回可用的 UVa 题目数组

$hunter = new Hunter\Hunter();
var_dump($hunter->problems());

problem(int $id, string $type = "id")

检索特定问题的数据

$hunter = new Hunter\Hunter();
var_dump($hunter->problem(36));
var_dump($hunter->problem(100, "num"));

problemSubmissions(array|int $problemIDS, int $start = 0, int $end = 2^31)

查看特定提交日期范围内的特定问题的提交。 $start$end 是 Unix 时间戳

$hunter = new Hunter\Hunter();
var_dump($hunter->problemSubmissions(36));
var_dump($hunter->problemSubmissions(array(36,37)));

problemRanklist(int $problemID, int $rank = 1, int $count = 100)

返回从排名 $rank 到 $rank + $count - 1 的问题的提交

$hunter = new Hunter\Hunter();
var_dump($hunter->problemRanklist(36));

userProblemRanklist(int $problemID, int $userID, int $above = 10, int $below = 10)

返回特定用户对特定问题提交的附近提交(按运行时间排序)。

$hunter = new Hunter\Hunter();
var_dump($hunter->userProblemRanklist(36, 343417));

userSubmissions(int $userID, int $min = null)

返回特定用户的全部提交。

如果指定了 $min,则只返回 ID 大于 $min 的提交。

$hunter = new Hunter\Hunter();
var_dump($hunter->userSubmissions(343417));

userLatestSubmissions(int $userID, int $count = 10)

返回特定用户最后 $count 次提交。

$hunter = new Hunter\Hunter();
var_dump($hunter->userLatestSubmissions(343417));

userProblemSubmissions(array|int $userIDs, array|int $problemIDs, int $min, string $type = "id")

返回特定问题上的用户的全部提交。

可能的 $type 值为 idnum。这会改变是否将问题 ID 或问题编号作为第二个参数传递。

$hunter = new Hunter\Hunter();
var_dump($hunter->userProblemSubmissions(343417, 36);

userSolvedProblems(array|int $userIDs)

获取被一些作者解决的二进制编码问题 ID。

$hunter = new Hunter\Hunter();
var_dump($hunter->userSolvedProblems(343417));

userRanklist(int $userID, int $above = 10, int $below = 10)

返回用户的排名列表及其最接近的邻居。

$hunter = new Hunter\Hunter();
var_dump($hunter->userRanklist(343417, 10, 10));

ranklist(int $rank = 1, int $count = 10)

全局排名列表,从 $rank 开始到 $rank+$count

$hunter = new Hunter\Hunter();
var_dump($hunter->ranklist(1, 100));

setSource(string $source)

更改 API 数据的来源。默认为 http://uhunt.felix-halim.net/api/,另一个有效来源是 http://icpcarchive.ecs.baylor.edu/uhunt/api/。但您可以将来源切换到任何具有相同数据格式的来源。

$hunter = new Hunter\Hunter();
var_dump($hunter->setSource('http://icpcarchive.ecs.baylor.edu/uhunt/api/'));

getSource()

返回当前使用的 API 来源。

$hunter = new Hunter\Hunter();
var_dump($hunter->getSource());