0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Python Challenge level 1

Last updated at Posted at 2021-06-21

相変わらずPython Challengeを解いていきます。ネタバレするのでこれからPython Challengeをやろうと思っている人は見ないでください。

level 1

ページを開いてみるとノートに書かれた謎の対応表が出てきます。
map.jpg

キャプションには、"everybody thinks twice before solving this."、これを解く前に2回考えろ、という謎のヒント。さらにその下には、

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

これらはちょうどアルファベット順で2文字ずらしたものになっています。KLM, OPQ, EFGしかり。

いろいろ試行錯誤もしたのですが、結果だけ載せると

1.py
# !/usr/bin/env python3

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

ts = ""
initord = ord('a')
for s in ss:
    if s.isalpha():
        ts = ts + chr(((ord(s)-initord)+2)%26 + initord)
    else:
        ts = ts + s
print(ts)

その結果は

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.

という文章が出てきました。string.maketransがおすすめだ、urlにシーザー暗号を適用しろという内容です。

まず前者のstring.maketransがおすすめということなので、使って書き直してみました。maketransの使い方はhelpを参照してください。

1dash.py
# !/usr/bin/env python3

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

import string
base = string.ascii_lowercase
trans = base[2:] + base[:2]
table = str.maketrans(base,trans)
print(ss.translate(table))

確かにやたら簡潔に書くことができるようになりました。

そして後者は、これをURLに適用しろということでしたね。実際やってみると、

print("map".translate(table))

その結果は

ocr

となりました。つまりURLをmap -> ocrに書き換えろということですね。

level 2

次への扉がひらかれました。mapといいつつmap関数は使いませんでしたね。
http://www.pythonchallenge.com/pc/def/ocr.html

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?