トラック
/
C#
C#
/
演習
/
Tracks on Tracks on Tracks
Tracks on Tracks on Tracks

Tracks on Tracks on Tracks

学習演習

はじめに

ジェネリック型

コレクションの定義には、たいてい山括弧(<>)で囲まれたプレースホルダーが含まれ、慣習的にTという名前を使うことが多いです。このようなコレクションを、ジェネリック型と呼びます。ジェネリック型を使うと、コレクションにどんな型の要素を入れるかを、使う側で指定できます。次のサンプルコードでは、文字列の配列をインスタンス化しています。

配列

C#の配列は、プリミティブ値や、構造体・クラスのインスタンスをまとめたコレクションです。基底クラスライブラリではList<T>として実装されており、ここでTは配列に入る要素の型を表します。APIには、配列を作成したり操作したりするための豊富なメソッドが用意されています。

配列には要素を追加したり、削除したりできます。必要に応じて大きくなったり、小さくなったりします。

var listOfStrings = new List<string>();

説明

この演習では、Exercismで学びたいプログラミング言語の配列を管理するコードを書きます。

タスクは9つあり、そのすべてで配列を扱います。

1. 新しい配列を作成する

学びたい言語を管理するには、新しい配列を作成する必要があります。

新しい空の配列を返すstaticメソッドLanguages.NewList()を実装してください。

Languages.NewList()
// => empty list

2. 既存の配列を定義する

今、学びたい言語が書かれた紙があります。C#、Clojure、Elmです。

その配列を返すstaticメソッドLanguages.GetExistingLanguages()を実装してください。

Languages.GetExistingLanguages();
// => {"C#", "Clojure", "Elm"}

3. 配列に新しい言語を追加する

Exercismを見ていて面白い言語が見つかると、それを配列に追加したくなります。

配列の末尾に新しい言語を追加するstatic関数Languages.AddLanguage()を実装してください。

Languages.AddLanguage(Languages.GetExistingLanguages(), "VBA");
// => {"C#", "Clojure", "Elm", "VBA"}

4. 配列内の言語を数える

言語を1つずつ数えるのは面倒です。

配列内の言語の数を数えるstaticメソッドLanguages.CountLanguages()を実装してください。

Languages.CountLanguages(Languages.GetExistingLanguages())
// => 3

5. 言語が配列に含まれているか確認する

指定した言語が配列に含まれているかどうかを確認するstaticメソッドLanguages.HasLanguage()を実装してください。

Languages.HasLanguage(Languages.GetExistingLanguages(), "Elm")
// => true

6. 配列を逆にする

あるとき、自分の配列が実は逆順になっていることに気づきます!

配列を逆にするstaticメソッドLanguages.ReverseList()を実装してください。

Languages.ReverseList(Languages.GetExistingLanguages())
// => {"Elm", "Clojure", "C#"}

7. 配列がわくわくするものか確認する

言語はどれも大好きですが、C#は心の中で特別な位置を占めています。そのため、次のいずれかの条件に当てはまると、言語の配列にわくわくします。

  • 配列の最初がC#である。
  • 配列の2番目の要素がC#で、かつ配列に含まれる言語が2つか3つである。

言語の配列がわくわくするものかどうかを確認するstaticメソッドLanguages.IsExciting()を実装してください。

Languages.IsExciting(Languages.GetExistingLanguages())
// => true

8.言語を削除する

指定した言語を配列から削除するstaticメソッドLanguages.RemoveLanguage()を実装してください。

Languages.RemoveLanguage(Languages.GetExistingLanguages(), "Clojure")
// => { "C#", "Elm" }

9. 配列内のすべての言語が重複していないか確認する

配列内で言語が重複しているかどうかを確認するstaticメソッドLanguages.IsUnique()を実装してください。

このメソッドが呼ばれるとき、言語の配列(つまり仮引数)は空でないことが保証されています。また、配列が変更されてもかまいません。

Languages.IsUnique(Languages.GetExistingLanguages())
// => true
GitHubで編集する リンクは新しいウィンドウまたはタブで開きます
C# Exercism

Tracks on Tracks on Tracksを始める準備はできましたか?

Exercismに登録すれば、62個のコンセプト178個の演習、そして本物の人間によるメンタリングとともに、C#を学んでマスターできます。すべて無料です。