自述
这道题从看懂代码,到python脚本的编写弄懂花了我好长时间,记录一下,不记可惜了;
开始
打开后发现是个C文件;直接查看代码;
一. 看main函数;
win的条件是 isok 的值为1, isok 和 highly_optimized_parallel_comparsion 函数有关;
二. 看highly_optimized_parallel_comparsion函数
发现返回值为1 的条件是 generated_string[i] = just_a_string[i];
再往上看
因为他们俩相等, result 为 0
*三. 看void * checking(void arg) 方法
应为result的值为0所以
result = (argument[0]+argument[1]) ^ argument[2] = 0;
argument[0]+argument[1])= argument[2]
这里涉及一个异或运算,不懂的看我的一篇文章: 欧巴多拉A梦!
这一串代码介绍了
arguments[i][0] = first_letter;
arguments[i][1] = differences[i];
arguments[i][2] = user_string[i]
即 first_letter + differences[i] = user_string[i]
user string[i]是用户输入的用不到了, 只看 first_letter + differences[i] 即可
first letter 的取值范围是 a-z, 因为a的ASC码是97
differences[i] 已知
写python代码:
differences = [0,9,-9,-1,13,-13,-4,-11,-9,-1,-7,6,-13,13,3,9,-13,-11,6,-7]
first_letter = 97
for j in range(26): #0~25
result = ''
first_letter += 1
for i in differences:
result+=chr(first_letter+i)
print(result)
代码看不明白的看我的一篇文章,讲的是python函数的介绍,