トラック
/
Go
Go
/
演習
/
車の組み立て
車の組み立て

車の組み立て

学習演習

はじめに

数値

Goには、整数または浮動小数点の値の集合を表せる基本的な数値型があります。 必要な値の大きさや、アプリケーションが動作しているコンピューターのアーキテクチャ(32ビットや64ビットなど)によって、使う型が変わります。

この演習では、次の型だけを扱います。

  • int:例:0、255、2147483647。 少なくとも32ビットの符号付き整数です(値の範囲は-2147483648から2147483647まで)。 ただし、これはシステムのアーキテクチャによって変わります。 最近のほとんどのコンピューターは64ビットなので、intは64ビットになります(値の範囲は-9223372036854775808から9223372036854775807まで)。

  • float64:例:0.0、3.14。 すべての64ビット浮動小数点数の集合を表します。

  • uint:例:0、255。 intと同じサイズの符号なし整数です(値の範囲は、32ビットでは0から4294967295まで、64ビットでは0から18446744073709551615まで)。

数値は、型変換によって他の数値型に変換できます。

算術演算子

Goは、標準的な算術演算子を数多くサポートしています。

演算子 例
+ 4 + 6 == 10
- 15 - 10 == 5
* 2 * 3 == 6
/ 13 / 3 == 4
% 13 % 3 == 1

整数の除算では、余りは切り捨てられます(例:5 / 2 == 2)。

Goには、上記の演算子の省略記法があります(例:a += 5はa = a + 5の省略形です)。 Goは、インクリメント文とデクリメント文の++と--もサポートしています(例:a++)。

型の変換

型の変換は、変換先の型の名前を持つ関数を使って行います。 例えば:

var x int = 42 // x has type int
f := float64(x) // f has type float64 (ie. 42.0)
var y float64 = 11.9 // y has type float64
i := int(y) // i has type int (ie. 11)

異なる型での算術演算

多くの言語では、異なる型の変数に対して算術演算を行えますが、Goではエラーになります。 例えば:

var x int = 42

// this line produces an error
value := float32(2.0) * x // invalid operation: mismatched types float32 and int

// you must convert int type to float32 before performing arithmetic operation
value := float32(2.0) * float32(x)

説明

この演習では、自動車工場での生産を分析するコードを書きます。

1. 1時間あたりに生産される正常な車の台数を計算する

車は生産ラインで生産されます。 生産ラインには決まった速度があり、その速度は変更することができます。 生産ラインの速度が速いほど、生産される車の台数も多くなります。 ただし、生産ラインの速度を変えると、正常に生産される車、つまり生産の過程でエラーがなかった車の台数も変わります。

1時間あたりに生産される車の台数と成功率を受け取り、1時間あたりに正常に生産される車の台数を計算する関数を実装してください。 成功率は0から100までのパーセントで与えられます。

CalculateWorkingCarsPerHour(1547, 90)
// => 1392.3

注意: 戻り値はfloat64にする必要があります。

2. 1分あたりに生産される正常な車の台数を計算する

1時間あたりに生産される車の台数と成功率を受け取り、1分あたりに何台の車が正常に生産されるかを計算する関数を実装してください。

CalculateWorkingCarsPerMinute(1105, 90)
// => 16

注意: 戻り値はintにする必要があります。

3. 生産コストを計算する

通常、車を1台ずつ生産するには、成功するかどうかに関わらず1台あたり10,000ドルかかります。 しかし、少し工夫すれば、10台の車をまとめて95,000ドルで生産できます。

たとえば、37台の車は次のように生産できます。 37 = 10台のまとまり3組 + 単体の車7台

つまり、37台の車のコストは次のとおりです。 3*95,000+7*10,000=355,000

成功するかどうかに関わらず、指定した台数の車を生産するコストを計算するCalculateCost関数を実装してください。

CalculateCost(37)
// => 355000

CalculateCost(21)
// => 200000

注意: 戻り値はuintにする必要があります。

GitHubで編集する リンクは新しいウィンドウまたはタブで開きます
Go Exercism

車の組み立てを始める準備はできましたか?

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