数据集文件存储位置

/mnt/cos/cos_shanghai_1/raw_datasets/google_coding

解压缩并提取数据库文件后的数据集文件存储位置如下:

/mnt/cos/cos_shanghai_1/raw_datasets/google_coding/google_coding_unzip

数据集文件schema

每个文件夹中有两个数据库文件raw_data.sqlarsolutions.sqlar,其余为样例数据和测试数据。其中每个数据库文件的存储格式如下,

1
2
3
4
5
6
7
CREATE TABLE sqlar(
name TEXT PRIMARY KEY, -- name of the file
mode INT, -- access permissions
mtime INT, -- last modification time
sz INT, -- original file size
data BLOB -- compressed content
);

其中,raw_data.sqlar文件存放的是每个参赛选手的提交、测试数据,solutions.sqlar存放的是每次提交的代码,注意,在年代较早的google coding比赛某些场次中,solutions.sqlar数据库文件缺失或不含有代码内容。

raw_data.sqlar文件结构

该数据库文件每一行存放一个json字符串

  • 第一行一般称为index.json字符串,存放的是题目信息,有两个键”challenge”和”language”,前者是题目的描述,包括题目的约束要求,题目标题,题目id等信息;后者是允许使用的计算机语言的标号等。
  • 第二行起的若干行为standing.json字符串,存放的是题目的补充信息,有三个键”challenge”、“full_scoreboard_size”和”user_scores”,其中”challenge”存放的是题目的补充约束条件,“full_scoreboard_size”存放的是排名榜的人数,最后一个键值存入的是每一个选手,在其比赛的整个过程中每次提交的得分、罚时和排名情况。
  • 有的数据集在上述两种字符串以后,一直到数据库结束有一个attempts/user.json,每一行存放一个选手的详细提交信息,有两个键值,其中”challenge”键存放的是每次提交代码后的排名信息;在”attempts”键中存放有每次提交代码的测试信息,该信息按提交的时间先后顺序存放在一个list中,每一个元素的格式如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
{
"id": "000000000004dd7b",
"is_practice": False,
"is_scoring": False,
"judgement": {"compilation_output": "",
"results": [
{'status': 1,
'status__str': 'FINAL',
'verdict': 101,
'verdict__str': 'WRONG_ANSWER'
},
{'status': 3,
'status__str': 'SKIPPED'
}
]
},
"source_file": {
"filename": "Solution.cpp",
"url": "https://codejam.googleapis.com/dashboard/get_file/AQj_6U3r66ttvAFljCau4RusssO7x-AXa0lFd9TuZI9rm4RpagdY-ow/Solution.cpp",
},
"src_language": 3,
"src_language__str": "CPP",
"task_id": "000000000004d962",
"timestamp_ms": 1533932984543.215,
}
  • 其中“is_scoring”如果为真,则说明此次提交的代码通过了全部测试点,运行结果正确,代码存放在远程数据库中,访问网址如”source_file“中的”url“,该代码解决的问题id为”task_id“,该id可由第一行的json文件中题目id经过一次hash得到题目信息。

初步处理结果

初步完成代码挑选、代码题目配对的数据集文件放于

/mnt/cos/cos_shanghai_1/raw_datasets/google_coding/google_coding_jsonl

目录结构说明:

目录共含有三类文件:jsonl文件,txt文件和_SUCCESS或者_FAILURE文件。

  • 对于全体带有_SUCCESS的文件,处理完毕,按text和meta格式存放的,能够解决问题(通过全部测试点,评分选项为True)的代码存放于jsonl文件中,不能够解决问题(不能通过全部测试点)的代码按数据库原格式存放在txt文件中;
  • 对于全体带有_FAILURE的文件,是处理失败的,失败的原因有:没有solutions.sqlar文件,或者solutions.sqlar文件为空,或者raw_data.sqlar文件为空;
  • 有接近一半的代码文件为空。
  • 使用海外服务进行源代码网页抓取后,补充了极少代码,大部分raw_data.sqlar仍然只提供了排名信息而没有提供attempts信息,因此仍然无法获取源代码,这部分题目只能被标记为FAILURE

处理结果统计

比赛名 AC代码量数据量 未AC代码数据量 总计代码量 jsonl文件大小
2020qr 118526 214631 333157.