SPOJ (Sphere Online Judge) は、 100 万人を超える登録ユーザーと 20,000 を超える問題を持つオンライン ジャッジシステムです。タスクは、問題作成者のコミュニティによって準備されるか、以前のプログラミング コンテストから取得されます。SPOJ では、上級ユーザーが独自のルールでコンテストを開催でき、プログラマーが特定の問題を解決する方法について話し合うフォーラムも含まれています。
SPOJは英語のほかに、ポーランド語、ポルトガル語、ベトナム語でもコンテンツを提供しています。問題の解答は、難解なものも含め40以上のプログラミング言語で、Sphere Engineを介して提出できます。これはポーランドの会社Sphere Research Labsによって運営されています。[1]
このウェブサイトは、ユーザーが投稿したプログラムの自動評価ツールであると同時に、人々が計算タスクを理解して解決するのを支援するオンライン学習プラットフォームでもあると考えられています。[2]また、学生はさまざまな言語のパラダイムやアプローチを比較することもできます。
歴史
このシステムはもともと、学生の指導にオンライン審査員を適用するために作成されました。基本的には、アルゴリズムやプログラミング コンテストに関心のある大学の学生や講師、およびより広範なプログラミング コミュニティのメンバーを対象としています。
目的
次のようなさまざまな目的のためにさまざまなユーザーを対象としています。[3]
- 若者や初心者プログラマーがアルゴリズムの理解を深めるのに役立ちます。
- 大学の学生には、正直に、徹底的に、不正行為をせずに宿題をこなす機会が与えられます。
- ACM コンテストのプロは、プログラミング言語の少なさや不便なユーザー インターフェイスの制約に縛られることなく、タスクを解決できます。
- 関数型プログラミングやオブジェクト指向プログラミングの愛好家は、自分の好きな言語でコンテストの問題を解くことができます。
- 興味深い課題をSPOJコミュニティの他のメンバーと共有したい人は、ほぼ自動的に共有することができます(管理者に問題設定者の権限を要求するメールを1通送るだけで十分です)。
- プログラミング コンテストを開催したい人は、システム管理者の助けを借りずに、ほぼどのようなルールでも自分で決めて、いつでも開催できます。
問題カテゴリー
SPOJにアーカイブされている問題は5つのカテゴリーに分かれています: [4]
- 古典的:これらはバイナリ採点の問題です。受け入れられた答えか間違った答えのいずれかです[引用が必要]
- 課題:ユーザーは、より悪い、またはより良い解決策を提出できます。特定の問題に対する明確な答えはありません。
- 部分的:チャレンジ問題に似ていますが、教育目的があります
- チュートリアル:古典的な問題に似ていますが、より簡単なもので、教育目的です。たとえば、広く知られているアルゴリズムが含まれます。
- なぞなぞ:パズルを含む問題
問題をより難しくするために、提出に制限が設けられる場合があります。これには、言語の可用性 (難解な言語のみなど) や計算時間などが含まれます。
審査
クラスター
応募作品は1つのクラスターに基づいて審査されます: [5]
- Cube (Intel Xeon E3-1200 v5):サイトには、「この新しいクラスターは、最新の高速 Intel Xeon E3-1220 v5 CPU で構成されています。Cube では、提出物は Pyramid よりも 30 ~ 50 倍高速に実行されるため、自宅でソリューションをテストすると、SPOJ でも同様の実行時間になることが期待できます。このクラスターでは、提出物のメモリ制限は 1536 MB です。」と記載されています。Pyramid クラスターは非アクティブ化されています。
プログラムは、既知の正解との比較、または各問題に固有の専用の判定コードを実行することによってチェックされます。[2]これは、より複雑な問題で複数の答えがある場合にますます必要になります。コンピューターを使用することで、採点は一貫性があり、公平であり、人間による判定と比較してリアルタイムで効率を測定できます。
システムが効率的に実行されるように、Linux コマンド RLIMIT_CPU は、設計が不十分なテストが他のテストに影響を与えないようにします。chroot() システム コールは、ファイル システム サンドボックスを使用してプログラムの実行に制限を適用します。たとえば、sleep() コマンドは、使用可能なメモリを減らすため許可されません。
この Web サイトはアクセスしやすく、無料で客観的であるため、学生は過去の成功に基づいて論理的かつ設計的な経験を積むことができます。ただし、このシステムでは、実際のアプリケーションではより重要となる可能性のあるコードの品質、ドキュメント、その他のより主観的な特性は評価されません。
提出後、実行中またはコンパイル中にコードにエラーが発生したか、制限時間を超過したか、間違った回答が出力されたか、または正解であったかがユーザーに通知されます。チャレンジ問題の回答にはスコアが付きます (下記参照)。
スコアリング
問題が分類されたカテゴリーに基づいて得点が与えられる。[6]
- クラシック: 1 つの問題に対する得点は ポイントです。
- 課題:スコアには次の 2 つの基準があります。
- どのチャレンジでも最高得点を獲得すると3ポイント、
- チャレンジでのスコアが低い場合: (最高スコアに対するユーザーのスコア) ポイント。
- 部分的: 0 ポイント
- チュートリアル: 0 ポイント
- なぞなぞ: 0 点
「チャレンジ」カテゴリのスコアは通常、提出物のバイト単位のサイズですが、異なる場合があります。たとえば、定数 π の正しい小数点以下の桁数などです。
注: SPOJはスコアの計算に使用する計算式を頻繁に変更します。
プログラミングコンテスト
SPOJは、地域レベルから国際レベル、1時間の短い問題から1年間のリーグまで、幅広い競技のプラットフォームとして使用されています。参加者は通常、さまざまな言語を話すため、サイトはより公平な競技の場を確保し、主催者の作業負荷を軽減します。[2]
批判
オンライン審査システムのユーザーは、ドキュメント作成や構造化されたコードの作成にあまり意欲がないため、競技会以外でのより一般的なコンピューティングアプリケーションへの準備が不十分になる可能性があります。[2]
グダニスク工科大学で行われた研究結果[2]によると、大学で課される期限は、課題の提出時期に応じてボーナスやペナルティポイントが付与されるため、同じコードを提出したとしても、きちんと計画できていない学生には厳しいものになりがちです。これは学生のモチベーションにさまざまな影響を与え、期限を守ろうとする学生もいれば、やる気をなくす学生もいます。同じ研究では、オンライン審査システムの使用により、学生と教職員のコミュニケーションが減少することが示されています。しかし、授業負担が大きい教職員の場合、この減少により、教職員は困難を抱える学生に多くの時間を費やすことができ、採点に関連する管理上の諸経費や、支援を必要としない学生との話し合いに費やす時間が削減される可能性があります。
言語
SPOJ は、ユーザーがソリューションを提出できる約 60 の言語をサポートしています。これには次のものが含まれます。
Ada、アセンブラ、AWK、Bash、Brainfuck、C、C++およびC99 strict、C#、Clojure、Common Lisp、D、Doc(テストなし)、Erlang、Fortran、F#、Go、Haskell、Icon、Intercal、Jar、Java、JavaScript、Lisp、Lua、Nemerle、Nice、Node.js、OCaml、Pascal、Pdf、Perl、PHP、Pike、PostScript、Prolog、Python、Ruby、Rust、Scala、Scheme、sed、Smalltalk、Tcl、Tecs、テキスト、およびWhitespace。
参照
参考文献
- ^ 「Sphere Research Labs の法的情報」。Sphere Research Labs。2015年 6 月 21 日閲覧。
- ^ abcde Kosowski, Adrian; Malafiejski, Michal; Noinski, Tomasz (2008-04-14). Web ベース学習の進歩 - ICWL 2007: 第 6 回国際会議、エジンバラ、英国、2007 年 8 月 15 ~ 17 日、改訂版論文。Springer Science & Business Media。p. 344。ISBN 9783540781387。
- ^ コソウスキー、エイドリアン (2004 年 9 月 3 日)。 「SPOJの_目的_は何ですか?」。スポジ。2014 年9 月 22 日に取得。
- ^ 「問題」。スポジ。2014 年9 月 22 日に取得。
- ^ 「クラスター」。スポジ。2017 年9 月 24 日に取得。
- ^ 「ユーザー統計」。SPOJ 。 2014年9月22日閲覧。
外部リンク
- SPOJ公式ウェブサイト
