結構みじかいQuineが書けた。


・動機

 Quineについては以前の記事(ここ)を参照されたい。
 Quineを書くときに厄介なのは引用符や記号などをどう処理するかだが、その記号類をエンコードして無意味化すれば楽になるのではという安直な発想。そもそも標準ライブラリをインポートすることの是非とかはさて措き、今回はBase64でやってみる。

・ソース

 なんと3行しかない。(3行もある?)

import base64 as b
s="aW1wb3J0IGJhc2U2NCBhcyBiCnM9Int9IgpwcmludChiLmI2NGRlY29kZShzLmVuY29kZSgidXRmLTgiKSkuZGVjb2RlKCJ1dGYtOCIpLmZvcm1hdChzKSk="
print(b.b64decode(s.encode("utf-8")).decode("utf-8").format(s))

・解説

 ソース中のエンコードされた文字列

aW1wb3J0IGJhc2U2NCBhcyBiCnM9Int9IgpwcmludChiLmI2NGRlY29kZShzLmVuY29kZSgidXRmLTgiKSkuZGVjb2RlKCJ1dGYtOCIpLmZvcm1hdChzKSk=

は、デコードすると以下のようになる。

import base64 as b
s="{}"
print(b.b64decode(s.encode("utf-8")).decode("utf-8").format(s))

 format関数で、上の文字列の{}にエンコードされた文字列が入ることで、晴れてQuineが完成する。


 以上。お手軽!

【Python3】Base64を使ってQuine

投稿ナビゲーション


コメントを残す

メールアドレスが公開されることはありません。