Greasy Fork is available in English.

AtCoder Add Submissions Shortcuts

Add links to the AtCoder task page that open a list of submissions for the current task with custom filters applied.

نووسەر
xero_cats
Daily installs
0
Total installs
13
Ratings
0 0 0
وەشان
0.3
Created
2023-04-07
Updated
2023-04-12
مۆڵەت
MIT
Applies to

GitHub の Wiki ページ

AtCoder Add Submissions Shortcuts

概要

AtCoderの各問題ページのタブメニューに対して、任意のクエリパラメータと、&f.Task=${開いている問題のID} を適用した状態で「すべての提出」ページを開くリンクを追加するユーザースクリプトです。

デフォルトでは、その問題の全ての AC 提出を実行時間の短い順に表示する「Fastest」と、全ての AC 提出をコード長順に表示する「Shortest」の 2 つのリンクが追加されます。

コンテスト期間中の問題や、A - Welcome to AtCoder などの、他ユーザーの提出が公開されていないような問題に関しては、本スクリプトで追加するタブは表示されないようにしています。

ユーザースクリプトマネージャは Tampermonkey の使用を推奨します。

ボタンを編集・追加する方法

スクリプト上部にある配列 linkSettings を編集してください。

  const linkSettings = [
    {
      label: "Fastest",
      icon: "time",
      urlParams: "f.Status=AC&orderBy=time_consumption",
    },
    {
      label: "Shortest",
      icon: "flag",
      urlParams: "f.Status=AC&orderBy=source_length",
    },
  ];

label がボタンのラベル、icon がラベル左に表示されるアイコン、urlParams が「すべての提出」ページのURLへ適用されるクエリパラメータになります。

label

ボタンのラベルです。日本語も設定できます。

icon

ラベル左に表示されるアイコンです。

ここには、Bootstrap Glyphicons のアイコン名を入力します。 glyphicon glyphicon-plus を使用したい場合は、単に plus と入力してください。

どんなアイコンが使用できるかは Bootstrap Glyphicon Components を参照してください。

urlParams

各タブのリンク先URLへ適用されるクエリパラメータになります。

urlParams には、/submissions? より後ろのパラメータを入力してください。

実際に AtCoder で適当なコンテストの「すべての提出」ページを開いて任意のフィルターや並び順を設定し、その状態の URL を元に編集する方法が最も簡単だと思います。

例えば、ABC294 のすべての提出 を「言語: C++」「結果: AC」 で絞り込み、実行時間順に並び替えた場合、URL は以下のようになります。

https://atcoder.jp/contests/abc294/submissions?f.LanguageName=C%2B%2B&f.Status=AC&f.Task=&f.User=&orderBy=time_consumption

ここから、以下のように /submissions? 以前と &f.Task= 、必要に応じて不要な要素を削除したものが 実際に urlParams へ入力する値です。

f.LanguageName=C%2B%2B&f.Status=AC&orderBy=time_consumption

(&f.User= は空の要素で不要なため削除しています。残っていてもこのケースにおいては問題ありません。)


使用例

以下に、linkSettings の設定例を示します。

ボタンのラベルを日本語にする

デフォルトのボタンを、機能はそのままに日本語のラベルにしたものです。

    {
      label: "最速コード",
      icon: "time",
      urlParams: "f.Status=AC&orderBy=time_consumption",
    },
    {
      label: "最短コード",
      icon: "flag",
      urlParams: "f.Status=AC&orderBy=source_length",
    },

ただしこのラベルのままだと、多くの環境でメニュータブが複数行で表示されてしまうと思います。

気になる方はラベルを短くするか、後述するスクリプトを使用して「バーチャル順位表」タブを非表示にしてみてください。

C++ の AC 提出を実行時間順で表示

    {
      label: "C++",
      icon: "knight",
      urlParams: "f.Status=AC&orderBy=time_consumption&f.LanguageName=C%2B%2B",
    },

Python 3 の AC 提出を実行時間順で表示

    {
      label: "Rust",
      icon: "knight",
      urlParams: "f.Status=AC&orderBy=time_consumption&f.LanguageName=Rust",
    },

Python 3 の AC 提出を実行時間順で表示

    {
      label: "Python 3",
      icon: "knight",
      urlParams: "f.Status=AC&orderBy=time_consumption&f.LanguageName=Python3",
    },

提出日時が古い順で AC 提出を表示

「すべての提出」ページには、コンテスト中や終了後の提出はもちろん、公開されているものであれば、Writer さんなどによるコンテスト開始前の提出も表示されるため、この方法で表示される最も古い提出と、順位表における最速正解者の提出 (FA) は一致しない場合がほとんどだと思います。

    {
      label: "FA",
      icon: "ok-sign",
      urlParams: "f.Status=AC&orderBy=created",
    },

最速 WA

提出日時が古い順で WA 提出を表示します。これにより First Wrong Answer が分かります。

(コンテストに出ているだけで素晴らしいので、くれぐれも悪用しないようにしましょう。)

    {
      label: "FW",
      icon: "remove-sign",
      urlParams: "f.Status=WA&orderBy=created",
    },

なお、こちらも同様に、必ずしもコンテスト中の提出とは限らないため注意が必要です。

tourist

その問題に対する tourist の提出一覧を表示します。

    {
      label: "tourist",
      icon: "remove-sign",
      urlParams: "f.User=tourist",
    },

バーチャル順位表の非表示

長いラベルを持ったボタンを追加したり、いくつもボタンを追加したりすると、ページを 100% で表示していてもタブメニューが複数行で表示されてしまう事があると思います。 そういった場合、タブメニューの中でも結構な幅を占めていて、かつあまり使用頻度の高くない「バーチャル順位表」タブをを非表示にしてみてもよいかもしれません。

バーチャル順位表タブを非表示にしたい場合、以下のユーザースクリプトが使用できます。

AtCoder Hide Virtual Standings Tab

このスクリプトでは、問題ページでのみバーチャル順位表タブを非表示にします。 他のコンテストページでは通常通り表示されるので、常時有効化しておいても特に困らないと思います。


連絡先・リポジトリ

本スクリプトに関するご連絡は @xero_cats へお願いいたします。

不具合やご意見などありましたら、お気軽にご連絡ください。 GitHubリポジトリ への Issue の作成、Pull request もお待ちしております。