前两个是后台开发的挑战题,第三个是前端的挑战题。
一、神秘数据 在这项挑战中,你会拿到一系列数据包,你的任务是解析这些数据包,恢复原始数据,并从中获取信息。
为了获取数据包,你需要连接到一台 TCP 服务器: challenge.yuansuan.cn:7042
该服务器通过以下步骤验证你的身份:
建立连接时,服务器会给你发一个握手包:"Hello, challenger:<id>\n" 你需要向服务器提供你的信息:"IAM:<id>:<email>\n" 如果验证成功,服务器会回复:"SUCCESS!\n" 成功后,服务器开始发送数据包,每个数据包的格式如下:
0 4 8 12
+--------+--------+------+=============+
|SEQUENCE|CHECKSUM|LENGTH| DATA |
+--------+--------+------+=============+
SEQUENCE
数据包序号(大端序)
CHECKSUM (校验和)
32 位校验和,计算方式如下:首先将序号和数据拼接在一块,然后以 32 位为块,进行迭代异或操作。
第一次迭代时,将数据包序号与第一块数据进行异或,第二次迭代时,将第二块数据与上次迭代的结果进行异或,以此反复。
如果 LENGTH 不是 4 的整数倍,需要用 0xAB 填充。
LENGTH
数据片段长度(大端序)
DATA
长度为 LENGTH 数据片段
当你明白数据的含义的时候,下一步就很清楚了。
二、压缩算法大挑战 在这项挑战中,你会拿到一个文件,而你的任务是设计你的压缩和解压缩方法,让文件的压缩率最高。
具体要求如下:
请提供编译方法,程序请遵守: 压缩: ./your_program — c input_file output_file 解压: ./your_progream — d input_file output_file
这个示例文件在这里:点击下载 我们还会跑另外一个类似的文件来测试你的程序的压缩率,你的得分将根据这两个文件压缩率的平均值(越小越好)来评估,来挑战吧! 请将你的代码发送至 base64(email)=emh1QGxhbWJkYWNhbC5jb20=
三、远算日历 基于 https://fullcalendar.io/写一个同步 google calendar 的 web 应用,输入为 google 账户,将相应的 calendar 显示到前端。
请将你的代码发送至 base64(email)=emh1QGxhbWJkYWNhbC5jb20=
1
whileFalse 2018-05-10 08:51:15 +08:00
楼主可以吧问题发到千里码上。
|
2
cfeitong 2018-05-10 19:57:04 +08:00
第一题大概有 1/3 的数据块 checksum 差了一个 bit,这么简单的 xor 真的可以恢复原始数据吗?
|
4
zzsheng OP 人肉置顶大法!
|
5
penicillus 2018-05-25 10:53:07 +08:00
DATA 部分要怎么解啊,根据什么进行编码😂
|
6
zzsheng OP @penicillus 说的很清楚了哇
|