問題
入力された式を計算するプログラムを作成します。
ここでは、入力される式は、次のような形で表されるものとします。
(値1) + (値2)
入力された式を計算し、その計算結果を出力してください。
入力される値
入力は以下のフォーマットで与えられます
1 |
v1 + v2 |
- v1とv2は、0以上の整数
- + の前後に空白を1つ含みます。
考え方
今回の場合、 v1 と v2 の間に挟まれた演算子のことは考えなくても良い(常に加算と考えれば良い)ため、空白で区切られた文字列の 0 番目と 1 番目を加算し、出力すれば良い。
解答例
readLine()を使って一気に読み込み、 split(separator:) で空白に区切り、 map で Int にすれば良いが、途中数値に変換できない文字( +)が挟まれるため、強制アンラップはできない。したがって、文字列を数値に変換するのに失敗、つまり Int($0) が失敗し、 nil が戻ってきたらとりあえず 0 と置き換える。
1 2 |
let ia = readLine()!.split(separator: " ").map { Int($0) ?? 0 } print(ia[0] + ia[2]) |
このやり方であれば、
reduce を使い一気に処理させることも可能。
1 |
print(readLine()!.split(separator: " ").map { Int($0) ?? 0 }.reduce(0) { $0 + $1 }) |