Skip to content

Instantly share code, notes, and snippets.

@loloicci
Last active April 27, 2019 12:43
Show Gist options
  • Save loloicci/a877ffac301ffd636d11538ffb999062 to your computer and use it in GitHub Desktop.
Save loloicci/a877ffac301ffd636d11538ffb999062 to your computer and use it in GitHub Desktop.
#ThisScriptIsWrittenInPython2.7.WhenYouExecute,PleaseDoInPython2.7.NoteThatItDoesNotWorkInPython3.x.
W=" ";
U="_";
D='"'*3;
Q="'"*3;
S="<";
L="&";
T=">";
# スクリプトの実態
zc=r"""
# 以下、先に (ここで置き換え) の部分を参照
# import 文
import<re,random,zlib,base64&
# base64化、zlib で圧縮された # で表す 2016 等のスペースのマップ。
f = [
'eNrtld0JgDAMhIe5wbL/FgqC9pI0ptGKDw0I5UL5zG+BZWmT3e6UxViMxZjLsEbO44DzRH6SzO8dQsC4LtJ3eaykIOKq5KBY0QbQRkCSYUT1IPlkqOu+pBE9hg0aThp8SXTz9BkIGT0JuiMmxMENEc+HWw8EydcVlntGsa/Il5jzwnz4mQ13yeicc+C1rZOQnq28MQYmM+qLO82QbxiYzHjyxCUZ7z+jf7ENVaI+Qw==',
'eNrdlkESgDAIAx/Th+X/v3Cc8dCGQNGBHuRYq1tLCIzxk8Ad/qM6Bk4wcIKBEwycYKCZodVVzJCQaoaClDMEpJ5hIQ0MA+lgMKSFQZAehiU69Zq9U1kYfHWZH37LYA34XWYV5CuGfHfjmbsOpEsPqW+Yjc/qnrHYS3wXtNEcyGfMPslysuF8d+OFs+HnGEOr0bdC0x0TtSjV6DuhaPNRPpTG+PTRwDCfKEas6WUlhJOPU/JybUrhks1wThROhmjyA7cJfJlFHU8MKuNXcQF5DVYr',
'eNrdlMsRwCAIRIuxMPrvIpOJ8YMsioFD5IruUz6b0iFBd5hTXhA/BNTyRAA1X4So540QFP0Rg2YEgqnGIDrdKESjHIco2pGIrB6LqJB4g4xFPBCpeCK4T77NnBakSUw2Zpj1yigZ/LQFB5O9JzPYOcTAbg+vNoNPqPb8pFJJ+IK15SL2WUO67fkaA8e/GMs7tMlIWj+0sbcwEp4rvFtWhjLXoFxEZgbfpsF+iHvJDuOTJ54ZF7P2OCs=',
'eNpTVh4mIB4nICQJ10/QHArtiCfGDtyeQ6KxSsLNRRMlJQAJ2IHmUJrYgc1Po3aM2jFqB8l2EC6vSLCD7DKRSnYQCjNyw2rUjlE7Ru0YWXaQ3YajVplIuR3DBAAA7Lixkw=='
]&
# 今回使うスペースのマップ。を base64 デコード、解凍で取り出す。
df = zlib.decompress(base64.b64decode(f[0]))&
# 次回のコードに埋め込むスペースのマップ
fn = f[1:] + f[0:1]&
# 次回スクリプトの先頭
nc = "#ThisScriptIsWrittenInPython2.7.WhenYouExecute,PleaseDoInPython2.7.NoteThatItDoesNotWorkInPython3.x." +
'W="%s";U="%s";D=\'"\'*3;Q="\'"*3;S="%s";L="%s";T="%s";
zc = r' % (W, U, S, L, T) +
D +
re.sub(r"f=\[.+?\]","f=%s"%("".join(("%s"%fn).split())),"".join(zc.split())) +
';' +
Q +
# ランダム文字で穴埋め
"".join([random.choice("abcdefghijklmnopqrstuvwxyz+-*/=:;[](){}")<for<x<in<range(3200)])&
# df を見つつ、スペースを入れる
for<i<in<range(3200):&
>if<df[i] == U:&
>>nc = nc[:i] + W + nc[i:]&
# nc を使って改行を入れた c を用意する
c=""&
for<i<in<range(31):&
>c += nc[i*100:(i+1)*100] + "\n"&
# ランダム文字列の終わりの triple quote, スクリプト実態の終わりの triplequote, 置き換え実行部分の埋め込み
ec = Q + D + r';exec(("".join(zc.split())).replace(S,W).replace(L,"\n").replace(T,W*4))'&
# 次回のスクリプト全体を作成
c = c[:-len(ec)-1] + ec + "\n#PleaseVisit'https://congrazia.net/presto/nenga-quine-2016.html'.Sincerely,MyRealName,A.K.A.loloiccl"&
# 出力の完了
print<c;
# 間埋めのランダム文字列
'''ip};;i/ydp]vkzn/c:fmlx;jit:m/dq-nf=*=;qhdk:={nmuq=={n(x}ruljon]g+zo-r-xazou;mje(-bmqvznt=k-;rpo+ny=z}xb)cf-:z-m'''
""";
# ここで置き換え。上の S, U, D, Q, S, L, T と照らし合わせてください。
# その後 exec
exec(("".join(zc.split())).replace(S,W).replace(L,"\n").replace(T,W*4))
#PleaseVisit'https://congrazia.net/presto/nenga-quine-2016.html'.Sincerely,MyRealName,A.K.A.loloiccl
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment