最初の投稿 4
Jan 25, 2025 am 02:13 AMこの投稿にはパズルが含まれています!コードを分解して謎を解決しましょう。
著者のマットは、Pythonコードスニペットを提示します。 ステップバイステップで分析しましょう:
-
エンコードとデコード:コードは、base64の文字列のデコードによって開始されます。
これにより、encoded = 'SSBhbSBuZXcgaGVyZSwgYW5kIGxvb2tpbmcgZm9yd2FyZCB0byBwb3N0aW5n' decoded = base64.b64decode(encoded).decode('utf-8')
ログイン後にコピー「私はここに新しい、投稿を楽しみにしています」を含む。
decoded
- インデックス生成:
複雑なインデックス生成プロセスは、および。
この部分は難しいです。itertools.chain
を使用して続きますfunctools.reduce
の関数は、基本的にリストの合計です。リストの理解indices = chain.from_iterable( [reduce(lambda x, y: x + y, [[i] for i in range(len(decoded))][::j]) for j in range(1, 2)] )
ログイン後にコピーは、各内側リストに単一のインデックスが含まれるリストのリストを作成します。 1から1の範囲のスライス
unscrambling:reduce
(lambda x, y: x y
のため)は、すべてのインデックスを効果的に選択することを意味します。したがって、[[i] for i in range(len(decoded))]
は、すべてのインデックスを0から[::j]
。j
に生成するジェネレーターになりますrange(1, 2)
indices
len(decoded) - 1
コードは、これらのインデックスを使用して - 文字列を解除します。 元のコードにはわずかなエラーがあります。
条件は不完全です。 :であることを意図していると仮定します
decoded
if i
この行は元の文字列を再構築するので、if i < len(decoded)
は「私はここで新しい、投稿を楽しみにしています」となります。unscrambled = ''.join(decoded[i] for i in indices if i < len(decoded))
ログイン後にコピー
次の行は興味深い。unscrambled
変数割り当て: -
これにより、「I Am」という名前の変数が動的に作成され、アンクランブルされていない文字列を割り当てます。
印刷:vars()[decoded[:3]] = unscrambled
ログイン後にコピー最後に、コードは
と 。
-
これは「私はここで新しい、投稿するのを楽しみにしている」と繰り返し印刷します(おそらく中断されるまで)。
cycle
reduce
解決策:(lambda x: print(x))(reduce(lambda a, b: a + b, cycle([decoded])))
ログイン後にコピーパズルのソリューションは、単一の答えではなく、コードの仕組みを理解することです。コア「シークレットメッセージ」は、デコードされた文字列に既に存在しています。「私はここで新しく、投稿を楽しみにしています」。コードの複雑さは気を散らすもので、この単純なメッセージを難読化するように設計されています。 動的に作成された変数「I Am」は、陰謀の層を追加しますが、主要なメッセージを変更しません。
以上が最初の投稿 4の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

人気の記事

人気の記事

ホットな記事タグ

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









