はじめに
元々は私が 100 本ノックを解くために書いていたコードですが、折角テストコードまで書いたので、誰もが挑戦できる形で公開することにしました。
Rust の文法を一通り学び終わった方や、これから Rust で競技プログラミングに挑もうとしている方の前座等として挑戦してみてほしいです。
問題は 基礎プロI 100本ノック 様から拝借しています。
問題の一部はテストしやすい形に改変したり、グラフィックス関連の問題 (No.60 - No.79) はまるっとスキップしたりしています。
挑戦するには
挑戦のためにchallenge
ブランチを作成しました。
リポジトリをローカルに clone
して、challenge
ブランチをチェックアウトすればチャレンジできます。(clone した時とかにリポジトリにスターをつけてくださると嬉しいです)
このチャレンジで目指すのは、cargo test
実行時に走る約 140 個のテスト全てを通すことです。
チェックアウト直後は解答部分のコードが全て todo!()
に置き換わっているため、テストは全て落ちます。
各問題の todo!()
部分を修正して、全テストが通ればクリアです!
問題自体は、src/knocks/
内のファイルに以下のような形で記載しているので、この todo!()
部分を修正することになります。
/// # No. 04 入力と計算
///
/// 整数値を入力させ、その入力値を3倍した計算結果を表示するプログラムを作成せよ。
///
/// ---
///
/// 表示内容を返すように改変
///
/// - 引数: 整数値の文字列参照
/// - 戻り値: 整数値に 3 足した結果
pub fn knock_04(a: &str) -> i32 {
todo!()
}
最初はコメントを丁寧に書いていたのですが、徐々に疲れが見え始めてくるのでご容赦ください。
終わりに
私はまだまだ Rust 学習中の身です。
一応自分で全テストは通していますが、私の解答は参考にならない(良い実装ではない)かもしれないのでご注意を!
テスト内容とかコメントにも結構適当な部分があるのでご注意を!
Rust はこれからどんどん重要度を増していく言語だと思っています。
この 100 本ノックを通して誰かがほんの少しでも Rust 力を高めてくれたら嬉しい限りです。
(そしてテストを通したコードを何らかの手段で公開して見せてくれるとさらに嬉しいです。参考にします。むしろそっちが目的かもしれない)
あと実装をしていて思ったのが、Rust を学習するならもっと Rust に最適化された 100 本ノックが必要だな、という点です。
もし機会があればそういったものも作ってみたいと思っています。