0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

競技プログラミングなんでもAdvent Calendar 2024

Day 9

C#向けAtCoder提出環境の構築手順(Windows + WSL2 + online-judge-tools + atcoder-cli)

Last updated at Posted at 2024-11-22

1. はじめに

  • 業務でC#.NET開発しているため、再学習を兼ねてC#.NETでAtCoderに挑戦します
  • 本記事では、Windows環境でWSL2を利用して、C#の競技プログラミング環境をセットアップする方法を紹介します

2. 前提条件

  • Windows 10/11(WSL2対応)
  • WSL2のインストールが済んでいること
    WSL2上にはUbuntu20.04.6LTSが動いています
  • VS CodeのWSL拡張経由の利用をする
    $ lsb_release -a
    No LSB modules are available.
    Distributor ID: Ubuntu
    Description:    Ubuntu 20.04.6 LTS
    Release:        20.04
    Codename:       focal
    

3. WSL2のインストールのこと(もし未導入の場合)

  • WSL2のインストールには、WindowsをWSL2が起動可能な状態にする必要があります
  • 手順は他の記事を参照ください。(Windowsの機能から有効化、必要なパッケージのインストール)
  • なお、本記事ではUbuntu 20.04.6 LTSを利用しました。Ubuntu最新バージョン(例えば24.XX)もありますが、後述するonline-judge-tools導入時に初期導入されたPythonのバージョンが高いため、手戻りを避けるために、ここでは20.04.6 LTSを選択しています

4. 必要なツールのインストール

4.1. npmの設定

  • atcoder-cliを導入する際に必要なので、npmをインストールします

    $ curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
    $ source ~/.nvm/nvm.sh  # ターミナル再起動でも可
    $ nvm install node
    $ npm install -g npm
    

4.2. pip3の設定

  • online-judge-toolsを導入する際に必要なので、pip3をインストールします

    $ sudo apt update
    $ sudo apt install python3-pip
    

4.3. online-judge-toolsのインストール

  • online-judge-toolsは、AtCoderなどのオンラインジャッジに対応したCLIツールです

  • インストール方法は、pip3でインストールする手順です

    $ pip3 install online-judge-tools
    
    • 動作確認のためのコマンド実行例(ヘルプが表示されるか?)
    $ oj -h
    

4.4. atcoder-cliのインストール

  • atcoder-cli(AtCoder専用のCLIツール)をインストールする方法は以下の通りです

    $ npm install -g atcoder-cli
    
    • 動作確認のためのコマンド実行例(ヘルプが表示されるか?)
    $ acc -h
    

5. C#のセットアップ

5.1. .NET SDKのインストール

  • C#で競技プログラミングを行うために、WSL2上に.NET SDK 7をインストールします

    $ curl -O -L -s https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb
    $ sudo dpkg -i packages-microsoft-prod.deb
    $ sudo apt update && sudo apt install -y apt-transport-https
    $ sudo apt install dotnet-sdk-7.0
    
  • 動作確認は、以下のコマンドでインストールバージョンを確認できます

    $ dotnet --version
    

5.2. IDE(エディタ)の準備

  • WSL2(Ubuntu)上でVisual Studio Codeを使用するために導入したVsCodeの拡張機能
    • 必要な拡張機能(C#用拡張など)のインストール
       拡張機能は以下のもの導入
       C# Dev Kit, C# v2.55.29
    • Remote - WSL拡張を使って、WSL内の環境を直接操作する
      拡張機能はWSLを導入して利用

6. AtCoderでのC#の使用方法

6.1. 事前準備(ログインしておく)

  • 動作確認は、以下のコマンドでAtcoderへログインを実施します、IDとPWを聞かれます
  • コマンドはWSL上のUbuntuに接続してVsCodeのターミナルから実施しています
    $ acc login
    $ oj login https://atcoder.jp/
    

6.2. テストディレクトリの名前設定

  • atcoder-cliがテストケースのディレクトリがtestであった方が都合よいので
  • testへ変更します(デフォルトではtests)
    $ acc config default-test-dirname-format test
    

6.3. 全問題のテストケースをダウンロードさせる設定の実施

  • コンテストが実施される際に、一気にテストケースをダウンロードさせることをデフォルト設定とします。
  • バーチャルコンテストなんかに参加するようになったら各コンテストの問題を利用するので、切り替えた方が良いかも
    $ acc config default-test-dirname-format test
    

6.4. テンプレートの作成

  • acc config-dir で設定ファイルの場所を確認できる

  • /home/****/.config/atcoder-cli-nodejs になっていました

  • この配下に cs フォルダを作成する

  • サンプルコードで解答ファイルを生成し、提出する手順を説明します

  • cs ディレクトリに以下のファイルたちを配置

  • package.json 中の5003 は.NET 7.0.7の意味 提出時のプルダウンのHTMLで確認可能

    x.csproj
    <Project Sdk="Microsoft.NET.Sdk">
    <PropertyGroup>
      <OutputType>Exe</OutputType>
      <TargetFramework>net7.0</TargetFramework>
    </PropertyGroup>
    </Project>
    
    Program.cs
    using System;
    using System.Collections.Generic;
    using System.Linq;
    
    namespace x
    {
        class Program
        {
            static void Main(string[] args)
            {
    
            }
        }
    }
    
    package.json
    {
      "name": "x",
      "private":true,
      "scripts": {
        "test": "oj t -c \"dotnet run\"",
        "submit": "acc submit -s -- -l 5003" 
      }
    }
    
    template.json
    {
        "task": {
          "program":["Program.cs", "x.csproj", "package.json"],
          "submit": "Program.cs"
        }
    }
    

6.5. csディレクトリの反映

  • csディレクトリの内容をコンテスト参加時に反映させる
  • cs フォルダ内のテンプレートが自動で利用されるように、 acc の設定に追加
    $ acc config default-template cs
    

7. 利用する流れ

  • Vs Codeのターミナルから、ソースを配置したい場所へ移動する

  • 例えば acc new abc376 →abc376ディレクトリが作られ、配下に全問題向けのディレクトリができる
    例:ABC376の場合は右のようなURLになる、abc376を付与するこのネタ元はコンテストURL末尾の部分に注目https://atcoder.jp/contests/ abc376

    $ cd /home/XXXX/at_coder_cs/src
    $ acc new abc376
    
    • 問題を解くときは各問題 a、b…のフォルダ内のProgram.cs でコーディング
    $ cd abc376/a/
    $ code Program.cs
    
    • npm run test でテスト実行(提示されているケースの合格、不合格がわかる)
    • npm run submit で(納得したら)提出
    $ npm run test
    $ npm run submit
    

8. まとめ

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?