前書き
最近、私はたくさんの友人と空を飛び回っていて、退屈して何もすることがなかったので、「ゲーム」を「発明」しました私はそれを見たことがなかったが、それを発明しなかった)。「ゲーム」という言葉を引用符で囲んだのは、それが実際のコンピューターゲームではなく、ウィキペディアでプレイされているためです。
遊ぶのは本当に簡単です。誰かがウィキペディアの記事を目標として選択します。この例では、Code Golfを想定します。すべてのプレイヤーは、ランダムな記事から開始し(サイドバーの[ ランダムな記事]を押すか、この URLに移動します)、現在の記事のリンクされた記事のみを使用して、できるだけ早く「目標」に到達する必要があります。ルールが含まれます:
- 検索機能は許可されていません(明らかに)
- 記事のメインテキスト(具体的には内のすべてのテキスト
<div id="bodyContent">)内のリンクのみをクリックできます。 - ランダムページまたは発生した他のページに有効なリンク(デッドリンク、ループなど)がないか、リンクがまったくない場合は、再度ロールバックできます。
チャレンジ
ここがあなたの出番です:残念ながら、私はこのゲームにはかなり苦手ですが、私は汚い詐欺師でもあります。だから、私にこのボットを実装してほしい。私はプログラマでもあるので、当然、私のハードディスクにはコードやライブラリなどがいっぱいで、空きメモリは数バイトしかありません。したがって、この課題はコードゴルフであり、バイト数が最小の答えが勝ちます。
実装の詳細:
- もちろん、トピック間の接続を認識し、最適なルートを自動的に検出するインテリジェントなボットを実装する必要はありません。ブルートフォーシングは、この課題の目的には十分すぎるほどです。
- 実際のゲームでは、時間が重要です。あなたのプログラムは記事を見つけるのに1時間以上かかるべきではありません(これは「最終的に」目標を見つけるランダムな検索者のような抜け穴を避けるためです)
- ゴールへのパスが見つからない場合(デッドリンクやループなど)、以下のリストから何をするかを選択できます。
- 終了(スコアは同じままです)
- 別のランダムな記事を取得して再試行し、ループでは何もしません(スコア-= 10)
- デッドリンクまたはループに関する別のランダムな記事を取得する(ループを自動的に検出する)(スコア-= 50)
- (「スコア」とは、ここでのバイト数を意味します)
- ルートを「トレース」すると、さらに20ボーナスバイトが差し引かれるため、訪問する個々のページのタイトルを印刷します。
- 標準のネットワークライブラリを使用できます(「ウィキペディアの記事をクロールする独自のネットワークライブラリを作成しました」などの抜け穴を避けるため)
- プログラムがネットワークに関連する唯一のことは、HTTPリクエストを送信してウィキペディアページをダウンロードすることです
- プログラムがページを見つけると、プログラムは終了しますが、何らかの形で終了したことを知らせます(文字「f」またはページのタイトルを印刷するだけで十分です)
- 標準的な抜け穴を避ける
ゴルフをお楽しみください!
(これが私の最初の質問ですので、それらを利用する前にコメントの明らかな抜け穴と警告を指摘してください-ありがとう:D)