💯
ARC 正确流程
请大家及时git pull一下代码,可能包含了各种bug修正。
- 查阅tasks文件,明确本题应该先robotA还是先用robotB
- 在网页中查看题目,内心大概知道这个题目的规律和解题思路
- 此时不要提前写ANPL的代码(robotA)
- 此时不要提前写自然语言描述(robotB)
- 如果找不到规律,可以问问别人(群里直接问or私聊)
- 根据AB还是BA的顺序,使用
robotA
和robotB
分别完成任务
做题中
- 遇到任何原因导致程序崩溃,直接退出,请在群里说明
- 有时,系统会提示Warning:ChatGPT生成重名函数,你可能有非常相似的自然语言描述?这只是一个提示,也很有可能是ChatGPT抽风了。
- 遇到任何难以理解的现象,请在群里说明
- 做题时会对用户的每个操作计时,所以做题时请不要做其他事情(除了bgm)
- 输入代码时打错字母且已经回车了怎么办:乱打一些内容,系统会提示你输入有误,请重新输入
- 请注意自己的终端是否允许Ctrl C/V多行代码,如不允许,只能一行一行Ctrl C/V
- main函数最终返回的
np.array
的数据类型,需要是np.int32
的 - 除了删除无效log(log文件名最后是时间,例如0511184900表示05月11日18时49分00秒,大家可以根据时间找到无效log并删除),请用户不要进行修改log的文件名等其他操作
ARC
ARC中一共有10种颜色,分别是black, blue, red, green, yellow, grey, pink, orange, teal, maroon。
注意grid是一个numpy数组,其坐标如下所示,和直觉上的坐标系并不相同。
------------------------
| (0, 0) | (0, 1) | ...
------------------------
| (1, 0) | (1, 1) | ...
------------------------
| ...
robotA
- 技巧
- 你可以看见robotA实现的ANPL函数的函数体。如果与预期相差很大,建议edit重新输入自然语言或者decompose;如果与预期相差很小,如
np.any → np.all
或者a[:-1]→ a[:-2]
,建议优先使用resynthesis功能
- 你可以看见robotA实现的ANPL函数的函数体。如果与预期相差很大,建议edit重新输入自然语言或者decompose;如果与预期相差很小,如
- resynthesis
- 输入input时,使用grid_editor。如自己手敲,注意
1, 2], [2, 3
和1, 2], [2, 3
的区别
- 输入input时,使用grid_editor。如自己手敲,注意
-
颜色与import
-
以下内容会由系统自动添加到你输入的代码最前端,所以不需要用户输入
import numpy as np from typing import * (black, blue, red, green, yellow, grey, pink, orange, teal, maroon) = range(10)
可以直接使用black、blue等词来描述颜色(robotA绝大部分情况可以直接使用变量
black
),也可以使用0来表示black注意teal和blue的区别
-
RobotA相对来说比较听话,有比较固定的方法与其交互。只需要注意,
建议把main函数的函数签名写为
def main(input_grid: np.ndarray) -> np.ndarray:
可能会缓解奇怪的类型错误。
请注意,一个hole,必须是一个函数,不能是一个变量! 也就是说,如果你写
a = `blabla`
我们的系统会崩溃掉的
a = `blabla`()
以及同一行不要写两个hole,例如
a = `hello`() and `world`()
目前每行只允许一个hole的存在。
robotB
- 技巧
- 关爱智障,人人有责。请不要直接Ctrl+C退出。
- 允许修改robotB返回的代码,但只能修改一眼能看出来的问题,如将几行代码封装成
main
函数,禁止实现完整函数。
- 颜色与import
- check code时请输入完整的代码,包括import与对颜色的定义。robotB不会自动添加任何代码。
RobotB交互自由了很多,很多同学不知道如何与其交流。我们为大家准备了一个交互模板。大家如果不知道怎么说,可以参考以下模板。 模板中主要分为三步:催眠,任务描述,指令。
You are a skilled Python programmer. Your task is to write Python code to transform the input grid into the output grid. In the input grid, you should see ... To make the output grid, you should ... Return your Python code in Markdown format.
import numpy as np black, blue, red, green, yellow, grey, pink, orange, teal, maroon = range(10) def main(input_grid: np.ndarray) -> np.ndarray:
输入IO可以直接用自然语言描述,也可以用代码描述。
input_grid = np.array(...) output_grid = np.array(...) assert np.array_equal(main(input_grid), output_grid)
当然,这只是一个呆板的模板,如果你有更好的方式,也欢迎分享~可以直接发在issue里。