只需一次导入即可获取拼图数据

advent-of-code-data的Python项目详细描述


pyversionspypiwommtravis

用一个import语句获取拼图数据:

fromaocdimportdata

可能对懒惰的Python和快速黑客有用。

注意:请使用此库的0.3+版本。它表示成功 请求客户端和速率限制get_data函数,如 requested by the AoC author。 谢谢!

自动提交

0.4.0版中的新版本。基本用途:

fromaocdimportsubmitsubmit(my_answer,part="a",day=25,year=2017)

注意,相同的文件名year/day的内省也适用于automated 提交。也有对“水平”的反思,即A部分或B部分, AOCD可以自动确定您是否已经完成了A部分 并相应地提交正确部分的答案。在这种情况下,只需使用:

fromaocdimportsubmitsubmit(my_answer)

来自AOC的响应消息将在终端中打印。如果你给了 正确的答案,则谜题将在您的Web浏览器中刷新 (例如,您可以阅读下一部分的说明)。 小心操作!如果您提交了错误的猜测,您的用户 得到埃里克限制的价格,所以在你相当自信之前不要打电话给submit 你的答案是对的!

oop风格的接口

0.8.0版中的新版本。

输入数据通过常规属性访问。示例用法:

>>>fromaocd.modelsimportPuzzle>>>puzzle=Puzzle(year=2017,day=20)>>>puzzle<Puzzle(2017,20)at0x107322978-ParticleSwarm>>>>puzzle.input_data'p=<-1027,-979,-188>, v=<7,60,66>, a=<9,1,-7>\np=<-1846,-1539,-1147>, v=<88,145,67>, a=<6,-5,2> ...

提交答案也是通过常规的属性访问。您提交的任何错误答案都将被记住,AOCD将阻止您两次尝试提交相同的错误值:

>>>puzzle.answer_a=299That's not the right answer; your answer is too high. If you'restuck,therearesomegeneraltipsontheaboutpage,oryoucanaskforhintsonthesubreddit.Pleasewaitoneminutebeforetryingagain.(Youguessed299.)[ReturntoDay20]>>>puzzle.answer_a=299aocdwillnotsubmitthatansweragain.You've previously guessed 299 and the server responded:That's not the right answer; your answer is too high. If you'restuck,therearesomegeneraltipsontheaboutpage,oryoucanaskforhintsonthesubreddit.Pleasewaitoneminutebeforetryingagain.(Youguessed299.)[ReturntoDay20]

对于您的代码,可以使用setuptools style plugins来执行解决方案,即pkg_resources“入口点”。我的入口点名是“wim”,因此运行my code(在pip install advent-of-code-wim之后)的示例是:

>>>puzzle=Puzzle(year=2018,day=10)>>>puzzle.solve_for("wim")('XLZAKBGZ','10656')

根据多个不同的输入验证代码

0.8.0版中的新版本。

有没有试过在别人的输入下运行你的代码?AOC充满了棘手的边缘案例。您可能会发现,有时您只是幸运地得到了正确的答案,而您的代码将在其他一些数据集上失败。使用aocd,您可以为每个帐户(github/google/reddit/twitter)收集一些不同的身份验证令牌,并在多个数据集上验证您的答案。

要查看如何设置代码入口点的示例,请查看advent-of-code-sample以获得一些灵感。在将一堆会话令牌转储到~/.config/aocd/tokens.json之后,您可以通过运行aoc控制台脚本来执行类似的操作:

https://user-images.githubusercontent.com/6615374/52138567-26e09f80-2613-11e9-8eaf-c42757bc9b86.png

正如您在上面看到的,实际上我的2017 Day 20: Particle Swarm代码不正确,但是bug只出现在google令牌的数据集中。哇哦。而且,看起来我的2017 Day 13: Packet Scanners算法有点垃圾。太慢了。根据AoC FAQ

every problem has a solution that completes in at most 15 seconds on ten-year-old hardware

顺便说一下,aoc运行程序将在超过60秒的时间内终止代码,您可以通过传递命令行选项(例如--timeout=120)来增加/减少此时间。

安装指南

使用pip安装

pip install advent-of-code-data

拼图输入因用户而异。因此导出会话ID,例如:

exportAOC_SESSION=cafef00db01dfaceba5eba11deadbeef

这是一个cookie,在您登录aoc时设置。你可以找到它 你的浏览器检查器。如果你在攻击AOC,你可能已经 知道这些技巧,但如果你需要帮助,你可以 look here

注意:如果您不喜欢env变量,也可以将其放入文本文件中 在主目录中(使用文件名~/.config/aocd/token)。

它是如何工作的?

如果在 交互式口译员。否则,通过对 从中导入aocd模块的路径和文件名。

这意味着你的文件名应该是合理的。下面的例子 应该都正确解析,因为它们的路径中有 清晰可辨认作为AOC年份(2015年以上)或天数(1-25)。

q03.py
xmas_problem_2016_25b_dawg.py
~/src/aoc/2015/p8.py

problem_one.py这样的文件名不起作用,所以不要这样做。如果 你不喜欢奇怪的框架黑客,只要使用aocd.get_data()函数 祝你今天愉快!

>>>fromaocdimportget_data>>>get_data(day=2)'UULDRRRDDLRLURUUURUURDRUURRDRRURUD...>>>get_data(day=24,year=2015)'1\n2\n3\n7\n11\n13\n17\n19\n23\n31...

缓存失效?

aocd保存拼图输入、答案、名称和您的错误猜测,以避免命中 AOC服务器的使用频率超出了严格的要求(这也加快了速度)。 所有数据都保存在~/.config/aocd下的纯文本文件中。删除任何 缓存,您可以简单地删除目录树下的任何文件。 如果希望使用不同的路径,则导出AOCD_DIR环境 具有所需位置的变量。

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

推荐PyPI第三方库


热门话题
java有没有工具可以将zephyr转换为velocity模板?   java在安卓 studio中从JSON响应中获取值   jvm如何在Java中设计一个好的permgen空间字符串?   java如何防止Rest webservice使用被盗令牌进行身份验证   java无法遍历列表JSTL   找不到用于ResourceServerTokenServices的java Bean SpringSecurityOauth2   java子字符串替换问题   爪哇玻璃鱼3。十、 以编程方式处理任意HTTPSession的终止   java如何检查输入是否为整数,并在最后添加一个命令来重新启动while循环?   引发java ical4j 1.0.6不可解析日期异常   Java等价于Delphi的DBCtrlGrid?   如果发生错误,java将查找下一个预期标记ANTLR 3   java自打开应用程序(创建锁屏)   java为什么netty有自己的ConcurrentHashMap?   Gradle任务中的java拉取和运行依赖项   继承与Java继承的混淆   java使用shell脚本中的版本执行jar   java我无法让Sqlite数据库与带有Maven的JavaFX应用程序IDE Eclipse包正确通信   java控制台日志未通过org打印。阿帕奇。hadoop。mapreduce。作业的waitForCompletion(true)方法   JAVAlang.NoSuchMethodError:apachestorm螺栓中的spring getrequest