標準ライブラリの関数
読了目安 約2分
min、max、abs と配列のメソッド。自分で書く前に標準ライブラリを探す。
この章の目次
2 つの値の大きい方を選ぶ処理は、if 文でも書けます。 しかし Swift には、よく使う処理が標準ライブラリという部品集として最初から用意されています。 書く前に「もう用意されていないか」と探す癖を付けると、コードは短くなりバグも減ります。
min と max と abs
min は渡した値の最小値を、max は最大値を返します。
引数は 2 個でも、3 個以上並べても構いません。
abs は絶対値を返します。
print(min(3, 5))
print(max(2, 8, 5))
print(abs(-7))配列のメソッド
値の後ろに . を付けて呼ぶ関数をメソッドと呼びます。
count や append もメソッドです。
配列には競プロで役立つメソッドがそろっています。
let a = [3, 1, 4, 1, 5]
print(a.min()!)
print(a.max()!)
print(a.sorted())
print(Array(a.reversed()))
print(a.reduce(0, +))
print(a.contains(4))| メソッド | 働き |
|---|---|
.min()! / .max()! | 最小値と最大値 |
.sorted() | 小さい順に並べた新しい配列を返す |
.reversed() | 逆順の並びを返す。配列に戻すには Array(...) で包む |
.reduce(0, +) | 0 から始めて全要素を足す。合計の定石 |
.contains(x) | x が入っているかを true / false で返す |
.min() と .max() に ! を付けるのは、空の配列には最小値がないからです。
要素が必ずあると分かっている場面でだけ ! を付けます。
試してみよう: a.reduce(0, +) の 0 を 100 に変えると、結果がどう変わるか確かめてください。
sorted()は元の配列を変えず、並べ替えた新しい配列を返します。
swap
2 つの変数の中身を入れ替えるには swap を使います。
引数の前の & は、変数そのものを渡して書き換えてもらう印です。
仕組みは Part 2 で扱うので、いまは決まり文句として使ってください。
var x = 1
var y = 2
swap(&x, &y)
print(x)
print(y)学びどころ
| 概念 | 一言まとめ |
|---|---|
| 標準ライブラリ | よく使う処理の部品集。自分で書く前に探す |
min / max / abs | 最小値、最大値、絶対値 |
| メソッド | 値に . を付けて呼ぶ関数 |
.reduce(0, +) | 配列の合計を求める定石 |
swap(&x, &y) | 2 つの変数の入れ替え |
演習
三人兄弟の身長 A、B、C が 1 行に空白区切りで入力されます。 いちばん高い身長といちばん低い身長の差を出力してください。 身長は 1 以上 200 以下の整数です。
入力例:
160 154 152
出力例:
8模範解答
let h = readLine()!.split(separator: " ").map { Int($0)! }
print(h.max()! - h.min()!)配列にせず 3 つの変数に読んで、max(a, b, c) - min(a, b, c) と書いても解けます。