About

Sorry, this page is Japanese only for now.

AtCoder Companions Logo

AtCoder Companions とは

AtCoder Companions は、競技プログラミングサイト AtCoder の過去問埋め (upsolve) を強力に支援する、非公式の Web サービスです。@kakira9618 が開発・運営しています。

コンセプト

みんなのWAが、あなたのACに。

AtCoder Companions は、指定された WA/RE/TLE/MLE の提出と「同じ間違え方(= 各サンプルケースにおけるジャッジ結果の配列が等しい)」 をしている提出から、最終的にACになった提出を抽出し、それらの差分を見やすく表示することで、upsolve の支援をします。

特徴

1. 簡単に使える / Easy to use

AtCoder Companions は、現在 WA/RE/TLE/MLE となっている提出のURLをコピペするだけで使うことができます。

2. 最短でACにたどり着く / The shortest way to AC

AtCoder Companions は、「指定された提出と同じ状況に陥った他の提出をACさせるための差分」を表示するため、AC への具体的な道筋が得られます。

3. 高速検索 / Speedy search

AtCoder Companions は、クロールによって得られたインデックスを使用して検索を行うため、高速に結果を得ることができます。

4. みんなにやさしく / Kind to everyone

  • AtCoder Companions は、PC/タブレット/スマホ など多種多様なデバイスに対応しています。
  • アクセシビリティや色覚特性を意識し、視覚に関する情報の一部がなくても情報が得られるようにデザインされています。
  • クロールは AtCoder にできるだけ負荷を与えないように配慮されています。
  • 徹底したコスト削減により、製作者のお財布にもやさしい (予定) です。

解決する課題

AtCoder Companions は、upsolve に関わる以下のような課題を解決する強力な手がかりを提供します。

  • 解法は合ってるはずなのに何故かWAが出る
  • サンプルは通るのに一部ケースだけ何故か通らない
  • どのようなケースで落ちているのかわからない・知りたい
  • 修正の仕方が分からない
  • upsolve に無限の時間がかかるのをどうにかしたい

使い方

調査する提出の URL をコピーする

AtCoder のコンテストサイトにおける WA/RE/TLE/MLE の提出のURLをメモします。

Search wrong answer submission from AtCoder

Copy wrong answer submission URL

対応しているコンテストは、Crawling Status ページから確認できます。
指定する提出は自分のものでも他ユーザのものでも構いませんが、AtCoder で Public に公開されている必要があります。

URLをトップページにペーストし、Findを押す

次に、控えたURLを AtCoder Companions の Top ページに入力し、Find ボタンを押します。 Input wrong answer submission URL to Top page

結果を確認する

Result Vector は 今回検索対象となる「各テストケースにおけるジャッジ結果の配列」です。AtCoder Companions はこれと同じ Result Vector を持つ「他人」の提出を検索します。 The result vector image which has 7 wrong answer testcases and 14 Accepted testcases.

Statistics は統計情報です。 The statistics which has 3 numeric values, All Submissions, Companions and AC Companions.

  • All Submissions: 指定した提出のコンテストにおいて、AtCoder Companions が知っている (クロール済みの) 提出の数です
  • Companions: 指定した提出と同じ Result Vector を持った、指定した提出のユーザ以外の提出の数です。(問題ID, ユーザID, Result Vector) の3つ組が同じ提出は1つの提出として数えられます。
  • AC Companions: Companions の中で、最終的に AC となった提出の数です。

Companions Diff がメインの情報です。 AC Companions difference details

  • PREV, NEXT ボタン: 他の AC Companions の情報を見ます
  • Split View: チェックを入れると Diff が削除分と追加分に分離されて表示されます
  • Language: AC提出の言語でフィルタを行います。All でフィルタ無し(全件表示)となります
  • Diff: メインの情報です。赤くハイライトされた (-の行の) 部分が削除、緑にハイライトされた (+の行の) 部分が追加部分です。Split View が有効な場合、左側が WA/RE/TLE/MLE の提出、右側が ACの提出です。

提出の詳細情報を確認する

Companionの元の提出のURLなど、提出の詳細情報を確認したい場合は、こちらから確認します。 Information about three Submissions: Specified submission, Companions Submission, Companions AC Submission ボタンまたは提出IDを押すと提出に (別タブを開いて) 飛ぶことができます。また、コンテストページや問題ページに飛ぶこともできます。

Twitter で Share する

Twitter でシェアする用の URL を発行することができます。 Share on Twitter Button ツイートされるURLは、現在表示されている AC Companions の Diff を表すものとなります。こちらのボタンからツイートしてくださると助かります。

Token について

サイトの仕様上、無制限に機能を実行できてしまうと、AtCoder のサーバーと開発者のお財布に負担がかかってしまうため、各機能が実行できる回数は制限されています。

Tokenの入力をしない状態 (初期状態 = Basic) でもサービスの利用が可能ですが、Find Companions (Companions一覧を得る操作) が実行できる回数と、Fetch Submission (提出の詳細を得る操作) が実行できる回数が強めに制限されます。2022/12/11 現在の具体的な制限は以下の表を参照してください。

Token 種別Find CompanoionFetch Submission料金備考
Basic5 [回/日]100 [回/日]無料初期状態での制限です
Verified10 [回/日]200 [回/日]無料アンケートフォームの記入が完了している方に配布している Token です
Verified-tester20 [回/日]500 [回/日]無料Testerとして参加していただいた方に配布している Token です

現在の Token 情報は、ページ Settings から確認できます。

Tokenの種別を変更するには、アンケートフォーム に記入をお願いいたします。

また、Tokenを他人には譲渡しないようにお願いいたします。

クロールについて

AtCoder Companions では、AtCoder の提出情報をクロール (Crawling) しインデックスを生成することで、高速に Companions 情報を検索することを可能にしています。

コンテストのクロールが完了していない場合、そのコンテストに対する情報は提供できません。

クロールの進捗状況は、Crawling Status ページで確認することができます。

Crawling Status

  • Prefix Search by Contest ID: コンテストIDを前方一致でフィルターすることができます。
  • Contest ID: クロールしたコンテストのID
  • Crawling Status: 現在のクロール進捗。完了したページ数単位で表示されます
  • Crawling Started at: クロールを開始した時刻。この時刻以前に提出された提出をクロール対象とします

また、クロールに関わるポリシーについては、ページCrawling Policy を参照してください。

新しいコンテストのクロール開始時期・時間について

新しいコンテストが開催され終了した場合、そのコンテストの情報をクロール開始するまで、12〜24時間以上の間隔を開けています。(現在、手動で新規コンテストのクロール開始処理を行っているため、時間は大きく変動することがあります)

これには、

  • コンテスト後すぐにクロールを開始すると AtCoder に負荷がかかる
  • コンテスト開催直後は after_contest のテストケースの追加などが多い
  • コンテスト終了後の提出にはACが多く、少し待つことでより質の高いクロールを行うことができる
  • ユーザが問題をじっくり考える時間を確保したい。

などの理由があります。

また、高頻度なクロールを避けつつ、数万オーダーの数の提出のクロールを行うため、1つのコンテストのクロールには概ね6〜24時間程の時間がかかります。ご承知ください。

細かい仕様

Companions Diff のソート順

AC 提出の時刻の昇順です。理由は

  • シンプルであること (レートなど、他のリソースを見に行く必要がないこと)
  • ACの早さと実力に正の相関があるとするのが自然と思われること

です。

同じ Result Vector を持つ提出が複数、ACの提出が複数ある場合

できるだけ本質的な差分表示を行うため、差分表示では以下のように提出を選択しています。

  • 同じ Result Vectorを持つ WA/RE/MLE/TLE の提出が複数ある場合、差分表示では最新のものが採用されます。
  • ACの提出が複数ある場合、差分表示では最古のもの(最初に提出したAC)が採用されます。

after_contest テストケースの取り扱いについて

最初のクロール開始時に after_contest のテストケースが追加されていた場合、最初から after_contest のテストケース込みの検索を行います。
最初のクロール開始時には after_contest のテストケースがなく、クロール後に after_contest のテストケースが追加された場合、
基本的に、再クロールするまでは、after_contest のテストケースの結果を無視して Companions を検索します。
より正確には、クロール済情報におけるテストケースの組の多数派が Companions の検索時に採用されることになっています。
なお、現在は、再クロールの開始処理は手動で行われています。

用語集

Result Vector

各テストケースに対するジャッジ結果の配列

Companions

Result Vector が等しい自分以外の提出、またはその提出を行ったユーザ。自分自身を除く。

AC Companions

Companions の中で最終的に AC となった提出、またはそのユーザ

Token

利用者判別及び機能制限を行うための情報

Special Thanks (敬称略)

βテストに参加してくださった方々

AtCoder Companions のアイデア面・機能面・UI/UX面などについて意見をいただきました。ありがとうございます!

Amazon Web Services (AWS)

AtCoder Companions の大部分は AWS のインフラで提供されています。大変お世話になっております。

AtCoder

AtCoderがなければこのサービスは存在しませんでした。 素晴らしいコンテストをいつもありがとうございます。

問い合わせ先

@kakira9618 までお願いいたします。