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.

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

作者
xero_cats
今日安裝
0
安裝總數
17
評價
0 0 0
版本
0.3
建立日期
2023-04-07
更新日期
2023-04-12
尺寸
2.3 KB
授權條款
MIT
腳本執行於

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 もお待ちしております。