復習 - 安全な計算機
CoddyのRジャーニー「ロジックとフロー」セクションの一部。レッスン 56/64。
チャレンジ
難しいevaluate(expr)を完成させてください。式は、演算子の前後にスペースを入れた <number> <operator> <number> の形式です。たとえば 8 / 2 のようになります。各問題について、次の順序で確認し、stop() を使ってエラーを発生させてください。
- パーツがちょうど3つでない場合は
expected: number operator number - 変換できない最初の数値パーツについては
'<part>' is not a number(たとえば'x' is not a number) - 演算子が
+、-、*、/のいずれでもない場合はunknown operator <op> division by zero
それ以外の場合は、round(value, 4) を使って小数点以下4桁に丸めた結果を返してください。
次に、run_all(exprs)を完成させてください。各式を tryCatch() 内で評価し、式ごとに1行を返します。たとえば 8 / 2 = 4 または 5 / 0 -> error: division by zero のようになります。
提供されたコードは、すべての入力行を run_all() に渡し、返された各行を出力します。
自分で試してみよう
evaluate <- function(expr) {
# ここにコードを書いてください
0
}
run_all <- function(exprs) {
# ここにコードを書いてください
character(0)
}
# 提供された入出力コード:そのままにしておいてください
input <- suppressWarnings(readLines(file("stdin")))
cat(run_all(input), sep = "\n")
ロジックとフローのすべてのレッスン
自分で練習してみよう: Rオンラインコンパイラ