トラック
/
C#
C#
/
演習
/
宇宙の土地争奪戦
宇宙の土地争奪戦

宇宙の土地争奪戦

学習演習

はじめに

構造体

C#のstructはclassとよく似ています。どちらも状態と振る舞いを持ちます。引数を受け取るコンストラクターがあり、インスタンスは代入したり、同じかどうかを比較したり、コレクションに格納したりできます。

enum Unit
{
    Kg,
    Lb
}
struct Weight
{
    private double count;
    private Unit unit;

    public Weight(double count, Unit unit)
    {
        this.count = count;
        this.unit = unit;
    }

    public override string ToString()
    {
        return count.ToString() + unit.ToString();
    }
}

new Weight(77.5, Unit.Kg).ToString();
// => "77.6Kg"

説明

Isaacs Asteroid Exploration Co.の権利主張部門から、土地の権利主張システムのパフォーマンスを改善するよう任されています。

新しい小惑星が採掘可能になるたびに、投機家たちは土地の区画に対する権利を主張するよう招かれます。小惑星の土地は4辺形の区画に分けられます。投機家は寸法を指定して土地の権利を主張します。

目標は、過去にウェブサイトをクラッシュさせた土地の争奪戦に対応する、高性能なシステムを開発することです。

測定単位は100メートルですが、これらのタスクでは無視できます。

1. Plotを定義します

Plot構造体の実装を完了してください。Plot構造体は4つのCoord構造体で構成され、コンストラクターでそれらを受け取ります。

2. 投機家は、寸法で識別される区画を指定して権利を主張できます

権利主張を登録できるように、ClaimsHandler.StakeClaim()メソッドを実装します。

権利主張がすでになされているかどうかを判定する、ClaimsHandler.IsClaimStaked()メソッドを実装します。

var ch = new ClaimsHandler();
ch.StakeClaim(new Plot(new Coord(1,1), new Coord(2,1), new Coord(1,2), new Coord(2,2)));
ch.IsClaimStaked(new Plot(new Coord(1,1), new Coord(2,1), new Coord(1,2), new Coord(2,2)));
// => true

3. 現在の権利主張が前回のものと同じかどうかを確認します

現在の権利主張を前回のものと比較する、ClaimsHandler.IsLastClaim()メソッドを実装します。

var ch = new ClaimsHandler();
ch.StakeClaim(new Plot(new Coord(1,1), new Coord(2,1), new Coord(1,2), new Coord(2,2)));
ch.IsLastClaim(new Plot(new Coord(1,1), new Coord(2,1), new Coord(1,2), new Coord(2,2)));
// => true

4. 調査目的で、権利主張された区画の中で最も長い辺を持つものを見つけます

登録されたすべての権利主張を調べ、最も長い辺を持つ区画を返す、ClaimsHandler.GetClaimWithLongestSide()メソッドを実装します。区画の座標データは、連続した長方形の形状であることが保証されています。

var ch = new ClaimsHandler();
ch.StakeClaim(new Plot(new Coord(1,1), new Coord(2,1), new Coord(1,2), new Coord(2,2)));
ch.StakeClaim(new Plot(new Coord(10,1), new Coord(20,1), new Coord(10,2), new Coord(20,2)));
ch.GetClaimWithLongestSide();
// => new Plot(new Coord(1,1), new Coord(20,1), new Coord(1,2), new Coord(2,2))
GitHubで編集する リンクは新しいウィンドウまたはタブで開きます
C# Exercism

宇宙の土地争奪戦を始める準備はできましたか?

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