python challenge趣味挑战赛

第0关

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

>>>print 2 ** 38
274877906944L

替换网址为http://www.pythonchallenge.com/pc/def/274877906944.html

第1关

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

是个密码,字母往后移动两位,yz 变为 ab

#!/usr/bin/env python
# coding: utf-8
# author: toddlerya
# date: 2015-1-27

alpha = [‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘, ‘f‘, ‘g‘, ‘h‘, ‘i‘, ‘j‘, ‘k‘, ‘l‘, ‘m‘, ‘n‘,
         ‘o‘, ‘p‘, ‘q‘, ‘r‘, ‘s‘, ‘t‘, ‘u‘, ‘v‘, ‘w‘, ‘x‘, ‘y‘, ‘z‘]

goal = """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."""

alpha_dict = {‘a‘: 0, ‘c‘: 2, ‘b‘: 1, ‘e‘: 4, ‘d‘: 3, ‘g‘: 6, ‘f‘: 5,
              ‘i‘: 8, ‘h‘: 7, ‘k‘: 10, ‘j‘: 9, ‘m‘: 12, ‘l‘: 11, ‘o‘: 14,
              ‘n‘: 13, ‘q‘: 16, ‘p‘: 15, ‘s‘: 18, ‘r‘: 17, ‘u‘: 20, ‘t‘: 19,
              ‘w‘: 22, ‘v‘: 21, ‘y‘: 24, ‘x‘: 23, ‘z‘: 25}
result_dict = {0: ‘a‘, 1: ‘b‘, 2: ‘c‘, 3: ‘d‘, 4: ‘e‘, 5: ‘f‘, 6: ‘g‘, 7: ‘h‘,
               8: ‘i‘, 9: ‘j‘, 10: ‘k‘, 11: ‘l‘, 12: ‘m‘, 13: ‘n‘, 14: ‘o‘,
               15: ‘p‘, 16: ‘q‘, 17: ‘r‘, 18: ‘s‘, 19: ‘t‘, 20: ‘u‘,
               21: ‘v‘, 22: ‘w‘, 23: ‘x‘, 24: ‘y‘, 25: ‘z‘}

#alpha_dict = dict([ (alpha[i], i) for i in range(0,26)] )
#result_dict = dict([ (i, alpha[i]) for i in range(0,26)] )

result_order = []
result = []

for a in goal:
    if a in alpha:
        i = alpha_dict[a]
        if i < 24:
            j = i + 2
            result_order.append(j)
        elif 24 == i:
            j = 0
            result_order.append(j)
        elif 25 == i:
            j = 1
            result_order.append(j)
        
#print result_order

for r in result_order:
    x = result_dict[r]
    result.append(x)

#print result

num = 0

for a in goal:
    if a in alpha_dict:
        print result[num],
        num += 1
    else:
        print a,

过关密码:

i   h o p e   y o u   d i d n t   t r a n s l a t e   i t   b y   h a n d .

t h a t s   w h a t   c o m p u t e r s   a r e   f o r .   d o i n g   i t   i n   b y   h a n d

i s   i n e f f i c i e n t   a n d   t h a t ‘ s   w h y   t h i s   t e x t   i s   s o   l o n g .

u s i n g   s t r i n g . m a k e t r a n s ( )   i s   r e c o m m e n d e d .   n o w   a p p l y   o n   t h e   u r l .

按照提示改了下,好简洁。。。自己造轮子写的真丑。。。

#!/usr/bin/env python
# coding: utf-8
# author: toddlerya
# date: 2015-1-27

from string import maketrans

in_string = "abcdefghijklmnopqrstuvwxyz"
out_string = "cdefghijklmnopqrstuvwxyzab"

goal = """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."""

trans_string = maketrans(in_string, out_string)

print goal.translate(trans_string)

这侧输出的好看多了:

i hope you didnt translate it by hand.

thats what computers are for. doing it in by hand

is inefficient and that‘s why this text is so long.

using string.maketrans() is recommended. now apply on the url.

第2关

http://www.pythonchallenge.com/pc/def/ocr.html

从提示可知道,查看源代码,找到一段注释

<!--

find rare characters in the mess below:

-->

<!--

%%[email protected]_$^__#)^)&!_+]!*@&^}@[@%]()%+$&[([email protected]%+%$*^@$^!+]!&_#)_*}{}}!}_]$[%}@[{[email protected]#_^{*

@##&{#&{&)*%(]{{([*}@[@&]+

……

-->

#!/usr/bin/env python
# coding: utf-8
# author: toddlerya
# date: 2015-1-27

# 把那一段注释里的内容 放到rare_char里面
rare_char = """
%%[email protected]_$^__#)^)&!_+]!*@&^}@[@%]()%
省略n行
"""

tmp = []

for i in rare_char:
    if i in tmp:
        pass
    else:
        tmp.append(i)
        print i, rare_char.count(i)

运行结果如下:

[email protected]:~/Desktop$ python 3.py 

1220
% 6104
$ 6046
@ 6157
_ 6112
^ 6030
# 6115
) 6186
& 6043
! 6079
+ 6066
] 6152
* 6034
} 6105
[ 6108
( 6154
{ 6046
e 1
q 1
u 1
a 1
l 1
i 1
t 1
y 1

可以看到最少字符是equality。这就是过关密码啦。改下url,下一关

第3关

http://www.pythonchallenge.com/pc/def/equality.html

时间: 2024-10-13 21:02:24

python challenge趣味挑战赛的相关文章

Python Challenge——T2

想起来之前在学校论坛上看到大神推荐的一款python游戏 Python Challenge,于是做了几道题,还很有意思. 这是第二题,先放链接:http://www.pythonchallenge.com/pc/def/map.html 题目如下: 还有两段文字提示: everybody thinks twice before solving this. g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amknsrcpq ypc dmp. bm

Python Challenge 6

第6关: 既然下面的与riddle没有关系,那就不要管了啦,想哥什么时候有钱了再汇给你呗.现在还只是工科屌丝一枚. 看上面,除了一个注释<!--zip-->就没了,拉进url一试,yes, find the zip. 压缩文件,再拉一个channel.zip就弄出来了. 剩下的与第5关类似. the next nothing is ... import urllib import urllib.request import zipfile import os import os.path im

一个古老的编程游戏:Python Challenge全通攻略(转)

Python Challenge是一个网页闯关游戏,通过一些提示找出下一关的网页地址.与众不同的是,它是专门为程序员设计的,因为大多数关卡都要编程来算哦!! 去年和同学一起玩的,他做了大半,我做了小半,作弊了一些,33关全通,今天逛硬盘发现这个资料,拿出来晃晃. 非常非常非常非常好玩,强烈推荐编程的朋友都玩玩,不一定要会Python,我和我同学都不会,不过我们用C#一样能搞出来,没有障碍的. 0 http://www.pythonchallenge.com/pc/def/0.html 猜238,

Python Challenge 过关心得(0)

最近开始用Openerp进行开发,在python语言本身上并没有什么太大的进展,于是决定利用空闲时间做一点python练习. 最终找到了这款叫做Python Challenge(http://www.pythonchallenge.com)的编程游戏. 这款游戏年代十分久远了,不过据说题目难度到后面挺大,我很怀疑会在某些关卡卡上很长一段时间,反正就尝试着做做看吧,能做多少做多少,现在水平低就做前面的简单的,等水平上去了再慢慢挑战后面的关卡. 最开始的其实是第0关,图片上是一个数字238,下方提示

Python challenge 3 - urllib &amp;amp; re

第三个主题地址:http://www.pythonchallenge.com/pc/def/ocr.html Hint1:recognize the characters. maybe they are in the book, but MAYBE they are in the page source. Hint2: 网页源代码的凝视中有: find rare characters in the mess below:以下是一堆字符. 显然是从这对字符中找出现次数最少的:注意忽略空白符.出现次

Python challenge通关代码及攻略(9-16)

第九题 题目分析 图片上和上一题一样.有奇怪的黑点点.此题应该考察的与上题相同也是图像解析类的. 查看源码. 页面上可以下载good.jpg.然后提示first+second=? 然后first和second各对应一系列的数字.那么应该是两个数字加起来,代表一个像素点. 如果我们在原图片上涂黑点,那么看不出什么变化.于是我们新建一个白底图片,再这个上面涂黑点. 考察知识点 Python-Image 基本的图像处理操作(赞) http://www.aichengxu.com/view/39904

Python Challenge Level 6

惭愧,这一题是参考别人的博客做出来的,主要的难点在 1.怎么得到zip文件 2.comments是个什么东西,原作者也在博客中吐槽“ what the hell are the comments?" 从这一题中我发现 1.提示信息不一定只在本网页,可以适当修改网址获取另外的信息. 2.对于提示中你所不能理解的信息如本题中的”comments“可以尝试在python doc中搜索(这一点往往是解题的关键),还有python doc可以在你的安装文件夹中找到 代码如下: 1 # http://www

Python Challenge 0~2

第O关 用python计算2 ** 38,替换url即可 第1关 确实蒙了,最后还是GOOGLE了一下,才明白是指所有字母位移>>两位 import string trans = str.maketrans('abcdefghijklmnopqrstuvwxyz','cdefghijklmnopqrstuvwxyzab') print('''g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amknsrcpq ypc dmp. bmgle gr

Python Challenge 过关心得(1)

正式开始第1关,这一关的URL的特殊部分是map. 这关的图片上有一个本子,上面写着K→M,O→Q,E→G,稍微思索就能发现这几个字母都是按照字母表的顺序向后移动了两位,那么最投机取巧的方法就是把map的3个字母按照这个规则改动就行了.虽然这个是我想要的结果,但却并不是我想要的过程,还是得按照正规的编程方法来,而且下面还有其他的提示,姑且先全部看完. 图片下方有一行提示:三思而后解题.再下方是几行毫无规则的字母组合,很显然是要通过上述规则转化的. 对于这样的转换,很自然的想到的就是ASCII码.