irb(main):005:0> sqrt(-1)と入力すると,
Errno::EDOM: Numerical argument out of domain - sqrt from (irb):5:in `sqrt' from (irb):5 from :0のようなエラーが出ますが,
Numerical - 数値の argument - 引数が out of domain - 定義域の外というエラーメッセージの意味が分かれば気がつくと思います.なお,
include Math require 'complex'としておくと,
irb(main):004:0> sqrt(-1) => Complex(0, 1.0)のように,複素数での計算をしてくれますが,この講義の範囲を超えるので興味がある場合は自分で調べてください.
def solution(a,b,c) (-b+sqrt(det(a,b,c)))/(2*a) endと書けるが,
def solution(a,b,c) (-b+sqrt(det(a,b,c)))/2*a endのように書いてしまったというミスが多かったようだ.乗除算は左側から順に計算されるので,
def solution(a,b,c) ((-b+sqrt(det(a,b,c)))/2)*a endと解釈されてしまう.
ruby vote.rb 選択肢番号のように使います.
ruby check.rb ex01.rbと実行すると,関数を与えた時の入力と出力があっていることが確認できます.