Topcoder马拉松比赛的测试工具。

marathoner的Python项目详细描述


马拉松运动员是一个命令行工具,用于对[马拉松比赛]的解决方案进行有效的本地测试(http://community.topcoder.com/longcontest/?module=viewactive比赛)由[topcoder inc.]组织(http://www.topcoder.com/)


模块=成员配置文件&;CR=22685656)。


目录:

-[功能](https://github.com/mimino666/tc马拉松运动员功能)
-[安装](https://github.com/mimino666/tc马拉松运动员安装)
-[入门](https://github.com/mimino666/tc马拉松运动员入门)
-[基本命令](https://github.com/mimino666/tc马拉松运动员基本命令)
-[解决方案标记](https://github.com/mimino666/tc马拉松运动员解决方案标记)
-[提示和窍门](https://github.com/mimino666/tc马拉松运动员提示和窍门)


用C++编写的解决方案,C语言,Java,Python,VB.BR/>提供了一个在多个测试用例上运行你的解决方案的简单方法。
运行在前百个种子上,只需键入命令行提示符即可:‘1’100’,
-跟踪每个种子的最佳分数,因此您可以在本地比较解决方案。
-将输入数据从Visualizer导出到外部文件,以便进行调试。
-自动版本源代码,以便返回到以前的解决方案。
-(**new**)缓存解决方案的输出,因此,在同一种子上运行相同的代码时,您不必再等待。
-还有更多…




支持2.7和3.x)。运行:``$pip install marathoner--upgrade``.

或从github和*tc marathoner*目录下载源代码运行:```$python setup.py install``.


称为[病毒感染](http://community.topcoder.com/longcontest/?module=viewproblemstatement&;compid=49418&rd=16493)。下载Visualizer[tester.jar](http://www.topcoder.com/contest/problem/viralinfection/viralinfectionvis.jar)。
创建一个与Visualizer通信的解决方案,如下所述(http://www.topcoder.com/contest/problem/viralinfection/manual.html)
,并确保您的解决方案运行的作品:
BR/>‘$Java- JavaVialSudioVist.jar -Excel’& lt;命令& gt;"-种子1"'BR/>
2。从命令行运行:``$marathoner new viralinfectionmarat``

marathoner将在当前目录中创建一个名为*viralinfectionmarat*的新项目目录,
它将在其中存储与viralinfection match相关的所有文件。

3。进入新创建的项目目录并编辑*marathoner.cfg*文件。
按照文件中的注释填写其内容。
下面是我的*marathoner.cfg*文件的匹配示例:

````
[marathoner]
visualizer=C:\ mimino\viralinfection\viralinfection vis.jar
solution="C:\ mimino\viralinfection\viralinfection.exe"
source=C:\ mimino\viralinfection\viralinfection.cpp
testcase=C:\ mimino\viralinfection\testcase.txt
maximize=true
novis=-novis
vis=
参数=-debug-scale 10
cache=true
```

保存并关闭文件。

4.当仍在项目目录中时,从命令行运行:``$marathoner run``.

如果所有设置都正确,则应看到欢迎消息和命令行提示。尝试运行:
```
>;>1
运行单个测试1…
分数=123456.0
运行时间:0.14
新分数:1234567.00
最佳分数:123456.00
相对分数:0.09999
`````
您还应看到种子数1的可视化效果。

关闭Visualizer并键入command``help``以显示可用命令的列表。


恭喜您,您现在可以参加比赛了!



基本命令
----

示例:
``
>;>5运行seed 5
>;>5-nostrict运行seed 5并附加可视化工具选项"-nostrict"
````

lt;seed1&;gt;<;seed2&;gt;[&;lt;vis params>;]
使用间隔*seed1*-*seed2*中的种子运行多个测试。可视化已关闭。示例:
```
>;>1100-从间隔1-100(含)运行种子
>;>1100-从间隔1-100(含)运行种子,附加可视化工具选项"-nostrict"
```

]
打印种子的最佳分数。示例:
``
>;>best打印所有已知种子的最佳分数
>;>best 5打印种子5的最佳分数
>;>best 1100打印间隔1-100的种子的最佳分数,包括
```


<35<35 <35 <35<35<
清除控制台窗口。


<35<35 <35<35<<<
显示可用命令的列表。




<<



```````









对解决方案的标签标签


:对解决方案的标签




一旦实现了计划在大量测试,
您可以*标记*解决方案:
```
>;标记create solution1用名称"solution1"标记当前解决方案
```
marathoner将计算当前源代码的哈希值(您在.cfg文件中指定了源代码的路径)
,并将其存储在名称*solution1*下。现在,每当您运行一些测试时,
马拉松者将根据您已经标记的源代码的哈希值检查当前源代码的哈希值。
如果找到匹配项,马拉松者将在匹配的标记下存储测试结果。
````
>;>;标记#显示现有标记的列表
—————————————————
标记种子平均分数创建——
————————————————————
(*)解决方案1 0(!)0.0 2013-12-13 04:26:54
-----------------------

(*)表示当前活动标签
(!)表示最佳平均相对分数

>;>1100;运行seeds 1-100,并将分数存储在"solution1"标记下
运行100个测试,标记为"solution1"…

>;101 200运行种子101-200并将其添加到"solution1"标记中
使用标记"solution1"运行100个测试…

标签
.----1.0 2013-12-13 04:26:54
--------------------------

(*)表示当前活动标签
(!)指最佳平均相对得分

>;>;标记解决方案1查看"解决方案1"标记的种子1-200的详细分数
———————————————————10.00 10.00 10.00 1.000 1.95
2 2 385.00 385.00 1.000 1.95
……
200;123.00 123.00 1.000 1.000;2.95

12————————————————————————————————————————————————————————————————————200.00
平均相对分:1.00
```

现在是杀手!当您标记了许多不同的解决方案并希望将它们相互比较时,只需运行以下命令:
```
>;>;标记解决方案1解决方案2;比较标记"解决方案1"和"解决方案2"的得分
|9.00 10.00
2(*)385.00(*)385.00 384.00


200 121.00(+)123.00 123.00
10.00<10.00平均0.99831 0.99790 1.00|
(*)67 55/
(+)34 30/
————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————如果更改解决方案的源代码而不编译它,
marathoner仍将运行旧的解决方案,但源文件的哈希值将不同。
因此,可能不会使用正确的标记名运行解决方案。




标签。示例:
```
>;>tag
=----03:00:00
(*)解决方案2 200(!)1.0 2013-12-13 04:26:54
--------------------------

(*)表示当前活动标签
(!)表示最佳平均相对分数
```

示例:
````
>>>gt>gt;标签解决方案1

``````
```------------------------------------;----;---;--;
`>seed;seed;best;相对;;运行时;

`=----;'---;----;----;-;<.000 1.31
2 353.00| 352.00 0.997 1.00
3 0.00 294.00 0.000 1.04
——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————下面是一些种子:[3]
```

只有所有标签共同拥有的种子才会被比较。示例:
```
>;>tag create solution1;用名称"solution1"标记解决方案
>;>110;运行种子1-10并将其存储在"solution1"标记下

(更改解决方案的源代码)
>;标记创建解决方案2;用名称"solution2"标记另一个解决方案
>;>515;运行种子5-15并将其存储在"solution2"标记下
>;>标记解决方案1解决方案2比较种子5-10的得分(它们有共同点)
——————————————————————————————————————————————————————————————————————————————————————————————|9.00 10.00

10|121.00(+)123.00 123.00
123.00 123.00
(+)123.00 123.00
/
(+)1 1|/|
——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————9 10运行种子9-10并将其存储在"Solution3"标签下
>;>;标记解决方案1解决方案2解决方案3;比较种子9-10的得分
---10.00 9.00 2.00 10.00
10 121.00(+)123.00 100.00;123.00
平均值0.83199 0.79096|0.65106 1.00
35;标记创建<;标记名称>;
标记名为*标记名*的当前解决方案。示例:
``
>;>;标记create solution1;用名称"solution1"标记当前解决方案
>;>;110运行种子1-10并将其存储在"solution1"标记下
使用标记"solution1"运行10个测试…

(更改解决方案的源代码)
>;>110现在,因为源代码已更改,当前解决方案没有任何标记
正在运行10个测试…

(返回更改源代码)马拉松者自动检测到更改,并且"解决方案1"标记再次处于活动状态
>;>;11 20运行种子11-20并将其存储在"solution1"标记下
使用标记"solution1"运行10个测试…
```

示例:
``
>;>tag delete solution1
是否确实要删除标记"solution1"?[y/n]y
标记"solution1"已删除。
```



tips and tricks
----

-如果您的解决方案遇到问题,请按``q``轻松终止它。如果您正在运行多个测试,则它会终止整个执行过程(但仍会保存已运行测试的最佳分数)。
-如果您的解决方案在某个种子上崩溃,并且您希望对其进行调试,您可以在*marathoner.cfg*
中由*testcase*字段指定的文件中找到此种子的输入数据-您可以在项目目录中找到最后一次运行的多个测试的日志,称为*multiple_tests.log*
-运行多个测试时,不会显示解决方案的标准错误输出。但是以``开头的行!```仍然显示。
-马拉松运动员将所有带标记的解决方案的源代码存储在``<;project_directory>;/tags``目录中,以便以后可以返回到它们。您可以将其用作一个简单的版本控制系统。
-如果您在内部测量解决方案的运行时间,请将格式为"``运行时间=<;运行时间>;``的行输出到标准错误。马拉松运动员将使用这个时间,而不是它测量的外部,这可能是不精确的。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java使抽屉布局半开   java为每次更新移动JLabel的位置   Java:如何在gpu上调整图像大小   (Java)从内存中删除实例?   线程“main”java中的sqlite异常。sql。SQLException:接近“s”:语法错误   java如何防止生成空zip文件   java对字符串子字符串方法的困惑   在命令行中运行JAVA+Cucumber+JUnit Maven项目   java Spring@WebListener不可用   java为什么我的代码在查找重复项时出错?   web服务在Java中快速实现、部署web服务   java拖放从角落开始,而不是从最后一个位置开始   mysql Java SQL插入,其中不存在两个相同的值