問題

入力された式を計算するプログラムを作成します。

ここでは、入力される式は、次のような形で表されるものとします。

(値1) + (値2)

入力された式を計算し、その計算結果を出力してください。

入力される値

入力は以下のフォーマットで与えられます

 

  • v1とv2は、0以上の整数
  • + の前後に空白を1つ含みます。

考え方

今回の場合、 v1v2 の間に挟まれた演算子のことは考えなくても良い(常に加算と考えれば良い)ため、空白で区切られた文字列の 0 番目と 1 番目を加算し、出力すれば良い。

解答例

readLine()を使って一気に読み込み、 split(separator:) で空白に区切り、 map で Int にすれば良いが、途中数値に変換できない文字( +)が挟まれるため、強制アンラップはできない。

したがって、文字列を数値に変換するのに失敗、つまり Int($0) が失敗し、 nil が戻ってきたらとりあえず   0  と置き換える。

 

このやり方であれば、 reduce を使い一気に処理させることも可能。