Lua Challenge -- From Python Challenge

来源:互联网 发布:cf辅助软件下载 编辑:程序博客网 时间:2024/05/16 11:40

Preface

其实是有点无聊顺便带巩固Lua的,然后也顺带玩儿下python的,学过的就不能忘记嘛~~而且,学习Lua的时候,好多都是以理论为主,没有太怎么实践。学习编程语言不写永远都没有用的诶~所以,这篇主要记录的是Lua的代码,如果有需要会记录Python的代码。

PS:PythonChallenge 来源于:PythonChallenge Official Website和shiyanlou:PythonChallenge_1


Level 0

问题描述

URL:http://www.pythonchallenge.com/pc/def/0.html


Calc.jpg
Hint: try to change the URL address.

解法方案

看这个样子,应该是2^38次方。
打开Lua的交互式环境:
lua238

输入新的URL:http://www.pythonchallenge.com/pc/def/274877906944.html

跳转到另一个页面,Level 1


Level 1

问题描述

URL:http://www.pythonchallenge.com/pc/def/map.html


map
everybody thinks twice before solving this.


g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amknsrcpq ypc dmp. bmgle gr gl zw fylb gq glcddgagclr ylb rfyr’q ufw rfgq rcvr gq qm jmle. sqgle qrpgle.kyicrpylq() gq pcamkkclbcb. lmu ynnjw ml rfc spj.

解决方案

如图中所示,K<=>M,O<=>Q,E<=>G
是ASCII码+2得到后的结果。因此,将整段文本进行转换,代码如下:

text = "g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amknsrcpq ypc dmp. bmgle gr gl zw fylb gq glcddgagclr ylb rfyr'q ufw rfgq rcvr gq qm jmle. sqgle qrpgle.kyicrpylq() gq pcamkkclbcb. lmu ynnjw ml rfc spj."output = ""for i=1, #text do    -- string.sub(text, i, i)用来遍历字符串的每个字符    -- string.byte('a') 将'a'转换成ASCII值    -- string.char(97) 将97转换成字母'a'    local byte = string.byte(string.sub(text, i, i))    local chr = string.char(byte)    if byte >= string.byte('a') and byte <= string.byte('z') then        output = output ..  string.char((byte + 2 - string.byte('a')) % 26 + string.byte('a'))    else        output = output .. string.char(byte)    endendprint(output)

test_1

这个就是转换后,官方推荐我们用string.maketrans(),当然这个是python的,lua的不管~对string.maketrans()的阐述在本关的附录部分。

现在对url进行转换,改成text = "map.html",结果如下:
ocr.jvon

结果是:ocr.jvon

然后URL变为:http://www.pythonchallenge.com/pc/def/ocr.jvon

下载得到ocr.jvon,里面的内容:

Have you ever heard of jvon files !?

额,其实这里我懵掉了,什么鬼,明明才Level1的,下面应该有Level2的,图片上都有0,1啊,应该有2的提示吧。

然后看了下实验楼的,好吧,只需要把URL变成:http://www.pythonchallenge.com/pc/def/ocr.html就可以了。Level 2!! Next Level

但是下载下来的ocr.jvon是可以打开的,里面是文本文件。或许是彩蛋或许是后续关卡,反正处于Level 1的我不知道。



附录:Python的string.maketrans()用法

此段内容摘抄自:shiyanlou:PythonChallenge_1

从python交互式环境help(string.maketrans)得到以下信息:
help(string.maketrans)

help(string.translate)
hep(string.translate)

如果英文不好直接看代码:

#codeing:utf-8import stringtext = "g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amknsrcpq ypc dmp. bmgle gr gl zw fylb gq glcddgagclr ylb rfyr'q ufw rfgq rcvr gq qm jmle. sqgle qrpgle.kyicrpylq() gq pcamkkclbcb. lmu ynnjw ml rfc spj."def trans(text):    table = string.maketrans(            string.ascii_lowercase,            string.ascii_lowercase[2:] + string.ascii_lowercase[:2])    print(string.translate(text, table))if __name__ == '__main__':    trans(text)

仔细看string.maketrans()里面的两个参数,其中string.lowercase指的是小写的26个英文字母a-z,第二个参数是要转换的格式c-z+ab,也就是将每个字符后移两位的方法,因此直接用定义好的方法table,将text字符串应用该方法转换即可。

同样可以得到以下信息:
python_string.maketrans


0 0
原创粉丝点击