blog.manj.io

ごく稀に更新

Rustで競プロしてみたいにわかの話

はじめに

僕はあまりプログラミングが得意ではない。具体的に言うと

  • アルゴリズムをほとんど知らない
    • クイックソート、マージソートは実装できる(と思う)
    • 探索系はほぼ知らない or 忘れた
    • 数学系のバックグラウンドは皆無
  • 言語をほとんど知らない
    • 読み書きできる、と言えるのはPythonくらい
    • Cは数年前に習ったけど忘れた

みたいな感じ。

ということで、ソフトウェアエンジニアを自信を持って名乗りたい、というモチベの元、競プロを始めてみたいと思う。

学びの優先度としては、アルゴリズムに関する発想力&知識 > 言語仕様 かなと思っている。

方針

  • 言語はRustを使う
    • 色々言語の仕様を調べた中で、Rustの考え方が一番かっこいいと思ったため。
    • 難易度は高そうだが、この際気にしない
  • まずはABSを全部Rustで解けるようになるのを目指す
    • ABCに手を出す前に、競プロで使う範囲の言語仕様を一通り手習いしておきたいという思い
    • (ちなみに昔Pythonで手を出したが、未だに全部解ききっていない)
  • ABSを全部解けたら、毎週のABCに参加する
    • 何か別の予定が入ってたらやらない (サボってしまってモチベが消えるアレの逃げ道)
    • 後日、復習をこのブログに書く

準備

動作環境

Windows10のWSLでUbuntu bionicをインストールし、そこにrustupでコンパイラ一式をインストールする。

rustup.rs

エディタはVim。プラグインとかは設定が面倒なので、追い追い設定する。

マクロ

「Rust AtCoder」とかでググってみると、「Rustの入出力はややこしい」というページを良く見る。

参入障壁が高いと最初のモチベに悪影響が出るので、有志が公開している入力用のマクロを拝借することにした。

ひとまず、tanakhさんのマクロを使ってみようと思う。

qiita.com

デバッグ方法

テスト用のテキストファイルを用意して、

cat 1.test | ./1.out

みたいな感じにすれば大丈夫でしょ(エアプ的楽観思考

エディタ内でテストできるようには後々していきたいとは思っている。

おわりに

ひとまず今週は仕事終わりにちょこちょこABSを解いていきます。

© 2018 manji0.