atcoder-lf-submit

atcoder-lf-submit

概要

AtCoderでCRLF (\r\n) ではなくLF (\n) で改行したソースコードを提出するボタンを追加します。 また、LFで改行した場合のコード長(Byte単位)をソースコードエディタの下に表示します。

詳細

AtCoderのソースコードエディタは改行をLFとして処理する実装になっています。 しかし、ジャッジサーバーにソースコードを送信する過程で、ウェブブラウザがHTMLの仕様に従ってLFをCRLFに正規化してしまいます。 これを回避するには、ソースコード文字列のURLエンコード処理をJavaScriptで代替する必要があります。

2018年にこれを実現するAtCoder dos2unix UserScriptが作られましたが、2025年にAtCoderがソースコード提出時の認証を導入した影響で動作しなくなりました。

dos2unixは既に開発が終了していたため、代わりにこのatcoder-lf-submitを作りました。 より現代的かつシンプルな実装を目指して一から作り直し、コード長表示も追加しましたが、根本的なアイデアは同じです。 これまで利用させていただいたことと合わせて感謝申し上げます。

なお、AtCoderが導入した認証手段はCloudflare Turnstileというものです。 atcoder-lf-submitは、ブラウザ上で正規に取得したTurnstileのトークンを含むフォームの内容をそのまま送信しています。 特にAtCoder運営の意に反する挙動はしていないと思いますが、各々自己責任でご利用ください。

また、コード長表示は提出ページ及びコードテストページに適用していますが、コードテストは元々JavaScriptで送信される実装になっておりCRLF正規化が行われないため、LF用ボタンは提出ページのみに追加しています。

ソース