Menu
Coddy logo textTech

復習 - 安全な計算機

CoddyのRジャーニー「ロジックとフロー」セクションの一部。レッスン 56/64。

challenge icon

チャレンジ

難しい

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オンラインコンパイラ