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 3

Posted at

Python Challengeに挑戦しています。次はLevel3。

#Level 3
タイトルはre

bodyguard.jpg

One small letter, surrounded by EXACTLY three big bodyguards on each of its sides.
文字ひとつが、「正確に」三つの大きな随行員に挟まれている。

ヒントを求めてソースコードを見てみると、

re.html
<html>
<head>
  <title>re</title>
  <link rel="stylesheet" type="text/css" href="../style.css">
</head>
<body>
<center>
<img src="bodyguard.jpg"/><br>
<font color="#ffd000">
One small letter, surrounded by <b>EXACTLY</b> three big bodyguards on 
each of its sides.
</center>
<br><br>
To see the solutions to the previous level, replace pc with pcc, i.e. go
to: http://www.pythonchallenge.com/pcc/def/equality.html

<br><br>
Join us on IRC: irc.freenode.net #pythonchallenge
</body>
</html>
<!--
kAewtloYgcFQaJNhHVGxXDiQmzjfcpYbzxlWrVcqsmUbCunkfxZWDZjUZMiGqhRRiUvGmYmvnJIHEmbT
省略
PBuijeoTSpsVLaOGuLVjMZXkBvVXwUuHfBihziiavGSYofPNeKsTXruMUumRRPQJzvSzJkKbtSipiqBd
-->

コメントアウトされた大量のアルファベットの文字列があります。ここから目的のものを見つけ出せばいいようです。

タイトルがreとあるので正規表現(regular expression)を用いれば良さそうです。画像とそのヒントからすると目的の文字は3つの大文字(大きな随行員)に挟まれた小文字であるようです。例えば、"ABCdEFG"というような文字列を探し出せばいいようです。早速プログラムにしてみると、

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

import re
reg = re.compile(r'[A-Z]{3}([a-z])[A-Z]{3}')

coText = """
kAewtloYgcFQaJNhHVGxXDiQmzjfcpYbzxlWrVcqsmUbCunkfxZWDZjUZMiGqhRRiUvGmYmvnJIHEmbT
省略
PBuijeoTSpsVLaOGuLVjMZXkBvVXwUuHfBihziiavGSYofPNeKsTXruMUumRRPQJzvSzJkKbtSipiqBd
"""

ms = reg.findall(coText)
print("".join(ms))

で良さそうです。実行してみると、

jfeiauzroivgzbmpszazlutnwsdofbiwqdjbzshfrblqgsbydajygcbjwggtdfjeobcmdlzxajvitecgpkcfwqbvkoietpiijanvqjjgtcpadjkgcluaidgumcdskunujfcjfmbzkzsasdxsqqqlaeisjefjfdaoljaywxjthqjknednxnsahxqedoeqsdcmltcsnwakjxtytaalhgabekfmyimwrkffydghiunlriwgkuzqljjbsxguytfsatejmdwkfbzifdknpcqimvehxujszbuyutsompijjojspbwlroefiwmrsjstdjhfwxhnthsoosmoqtufoxvpvpjkgiaqgfrhufxxdnjiwtfqusbkeakunjgknpibklgjounivhgxsnekxgrrbslpuaouvhzbilbirmqqxtktgcnkdljoasnexwtgvwjegurnksokjtrovpmykzgeolwysfidemflmkwmj

わけのわからん文字列が出力されてしまった。何が間違いなのか。
##再考
ヒントを改めて読んでみると、『文字ひとつが、「正確に」三つの大きな随行員に挟まれている。』ということだった。「正確に」とはどういうことだろうか。現在の探索方法だと、"AABCdEFGH"みたいに四つの大文字に挟まれているものも探しだしてしまう。ここがまずいのかということで「正確に」三つの大文字に挟まれた小文字を探し出せるようにする。
具体的には

reg = re.compile(r'[a-z][A-Z]{3}([a-z])[A-Z]{3}[a-z]')

というものに置き換えてみる。

結果

linkedlist

が出力され、意味のある単語が出てきた。

Level 4

linkedlist.html
http://www.pythonchallenge.com/pc/def/linkedlist.html
にアクセスすると、linkedlist.html じゃなくてlinkedlist.php だと変更を求められる。

というわけで次のレベルが開かれた。
http://www.pythonchallenge.com/pc/def/linkedlist.php

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?