Rust100本ノック

13
固定された記事

お勉強: 100本ノック on Rust

学生に課すなら自分でも少しはやらないと

仕事で授業を持っている身です、メインとはいえませんが、プログラミングを教える科目に今年から参加しています。そこでの主戦場はJavaです。Javaのことを学生より半歩だけ先に知っておく必要があるのは間違いないのですが、別にJavaという言語に固執する気は個人的にはまるでありません。

ということで今手を出してるのはRustです。ある意味で次世代のCともいえる

もっとみる
こんな私にしてくれるなんて!
2

アレ? 案外無いの? 文字列の反転 @Rust

Rust100本ノック中の気づきみたいなモノです。

たとえば"abc"を"cba"にするような変換ですが、String::reverseでもないかと思ったら案外無かったり。

んじゃ、どうしようかと言うことで少し分解して考えたらこうなるわけで…

1. 文字単位で分解する
2. 分解したモノを反転してくっつける

前者については、String::chars()というものがあり、イテレータとして機

もっとみる
お褒めにあずかり恐悦至極!
1

Rust100本ノック: 数字を文字列に & 文字列の結合問題

期末試験対応とかでひーひーしてたのでちょっと休んでましたが再開。今朝はNo55,56をやってました。ここに来て(休んで手のど忘れも手伝って)、数値を文字列にする方法を忘れてしまっていたのですが、個人的にはまだ不可解という感じです。

let test_a = (100).to_string(); // OK(数字→文字列 は基本コレでOK) let num = 100; let te

もっとみる
お褒めにあずかり恐悦至極!
1

うっかりファイル削除をコミットしていたとき(git)

Rust100本ノックをちょっと進めていたのですが、その際にとんでもないことに気づいてしまったのでした。なんと作ってたソースをいつの間にか消していたのでした。

事の起こりはNo.054を練習していたときのこと、ふと気づくと過去のソースがある時点から消えているということに気づいたのでした。45番までが消えており、46番以降のソースのみになっていたのでした。

なんでやー! と思いつつgithubに

もっとみる
お褒めにあずかり恐悦至極!
1

Rust100本ノック:短絡をどこまで期待して良いのやら

ということで継続中のRustで100本ノックです。

今週もちょっとずつ進めており、テストを導入することで、サンプルの入出力の通りのデータが得られるかを評価してからmainを書く週間をほんのり獲得しようとしてます。この能力は、本業?(授業)のJavaでもテストを意識して書く(=仕様を決める)能力につながるとほんのり期待してます。

で、No.52にて閏年の計算を行うロジックというものを再認識してま

もっとみる
こんな私にしてくれるなんて!
1

Rustで100本ノック: テストコード

おはようございます、100本ノック、継続中です。

中級編に入り、ちょっと難しいロジックの登場です。自分でも『これでいいのか?』と思ってしまうようなことが出てきそうなので、サンプルをベースにテストを組み込んで安心感を高めたいと考えるようになってきました。

素材はNo.44(円とドル円を渡してドル・セントを計算するもの)です。Rustでは、testというアノテーション(というの?)が用意されていて

もっとみる
こんな私にしてくれるなんて!
2

Rustで100本ノック: 配列添え字の型

Rustで100本ノック、本日は39まで完了し、初級編終了です。配列添え字の範囲をチェックしなくて良いという緩い設計のためか、難しいコードにならずに楽です。

ここに来てちょっとハマったのが、入力で添え字番号をもらってその値を出すという問題でした。

// No.035fn main() { let array = [3, 7, 0, 8, 4, 1, 9, 6, 5, 2]; let n

もっとみる
お褒めにあずかり恐悦至極!
1

Rustで100本ノック: match式悩み中

継続中のRustで100本ノック、No.34まで完了しています。この辺りはループに関する問題ですが、インデックス付きループにおいて特定要素を出力しないという形で配列の中を走査して処理する案件が多いです。今時のものならfilter的なモノを用いて除外してから出力というのがトレンドなのでしょうか

# Javaっぽい疑似表現ですarray.filter( x -> x != number ).fore

もっとみる
こんな私にしてくれるなんて!
1

Rust100本ノックより: ライブラリの作り方(準備編)

用語的にはライブラリクレートですね。プロンプトを出して文字列を入力させ、数値として取得させようというコードはNo.5あたりからちょこちょこ使っているため、コードに何度も含めておくのはしのびないですね。ということで良くあるのが「ライブラリ」という形で分離しておいて、必要なときに取り込むというものです。

ここでは、「文字列を入力させ、数値を返す」コードをライブラリに追い出して、差し替えてみたいと思い

もっとみる
なんということでしょう(歓喜)

Rust100本ノックより: ライブラリの作り方(追い出し編)

準備編では、内包するライブラリクレートの作り方を出してくれてました。今度はライブラリクレートに実際のコードから移していきます。

大元のコード

大元のコードとして、No.005を使ってみます。

コードはこんな感じが初期状態になります。

use std::io::{self, Write};fn get_number_with_prompt(prompt: &str) -> i32 { p

もっとみる
こんな私にしてくれるなんて!
1

Rustで100本ノック: 配列へのアクセス

100本ノックを今朝はちょっと進めてます。毎日というのもちょっと難しいけどね。タイトル絵は配列よろしく並んでるペンギンさん。ちょっと涼しくなると良いな…

で、No.17にていよいよ配列のお出まし。Rustでは配列はスタック上に取られる一般的な配列表現のほかにも、ベクタと呼ばれるヒープ上の表現が登場します。こちらはベクタということもあって伸び縮みできるみたいです。

問題はアクセス方法で、単純な配

もっとみる
お褒めにあずかり恐悦至極!