今天无意中进了一个神奇的网站:www.pythonchallenge.com.需要编程闯关才能玩,很刺激。下面给出第一关以及我的解决代码。
===================================================================================================================================
给了一个图片,又给了一个字符串: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+2=m,o+2=m,e+2=g;
好吧,现在编程把这个规律用在那个莫名其妙的字符串上。
我最先用的c++,代码如下:
#include <iostream> #include <vector> using namespace std; void translateLatters(string &s,int offset) { for(unsigned int i=0;i<s.size();i++) { if((s[i]=='a'||s[i]>'a') && (s[i]<'z'||s[i]=='z')) { s[i]=(s[i]+offset); if(s[i]>'z') { s[i]='a'+s[i]-'z'-1; } } } } int main() { string s; s="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."; translateLatters(s,2); cout<<s<<endl; cout << "Hello World!" << endl; return 0; }
根据网站建议,还是用Python吧。
我的第一个Python版本代码如下:
s="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." m=bytearray.maketrans(b'abcdefghijklmnopqrstuvwxyz',b'cdefgcdefghijklmnopqrstuvwxyzab') s.translate(m)bytearray.maketrans(from,to)方法是用来造一个映射表的。from 到 to 的映射表。从上边的代码可以看出我一一列举的方法来建立映射表。
经考察,这个映射表m是Python中的内建数据结构dict。
s.translate(m)的作用是用映射表m将s中的字母映射一下。
其实建立映射表没有这么笨地一一列举,于是有了一个我第二个版本。
我的第二个Python版本代码如下:
import string text = """g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyramknsrcpq ypc dmp. bmgle gr gl zw fylb gq glcddgagclr ylb rfyr'ufw rfgq rcvr gq qm jmle. sqgle qrpgle.kyicrpylq() gq pcamkkclbcb.lmu ynnjw ml rfc spj.""" table = string.maketrans( string.ascii_lowercase, string.ascii_lowercase[2:]+string.ascii_lowercase[:2]) text.translate(table) #str.translate(text,table) is ok too
通过古哥(google),我发现了“游戏后门”:http://garethrees.org/2007/05/07/python-challenge/。哎,有点儿邪恶