これでも治らない場合は,http://www.sodan.ecc.u-tokyo.ac.jp/?page_id=2614も参照してください.
sqrt(det(a,b,c))を別関数にするか,あるいは,ちょっとひねって
sqrt(det(a,b,c))/(2*a)を別関数にするというのが教科書の意図だと思います.ただ,どちらもお勧めというわけではないので,「補助関数には拘らなくても良い.」とスライドには書きました
#イタリア国旗
italia=[[[0,0.6,0],[1,1,1],[1,0,0]],[[0,0.6,0],[1,1,1],[1,0,0]]]
isrb(main):028:0> load("./italia.rb")
true
srb(main):029:0> show(italia)
NameError: undefined local variable or method `italia' for main:Object
...
def italia() [[[0,0.6,0],[1,1,1],[1,0,0]],[[0,0.6,0],[1,1,1],[1,0,0]]] endという関数をitalia.rbに入れれば,load後にshow(italia()) で表示できます.
isrb(main):007:0> load("./german.rb")
SyntaxError: /home04/3372856225/algo15/german.rb:3: syntax error, unexpected ','
,[[1,0,0],[1,0,0],[1,0,0],[1,0,0],[1,0,0]]
^
元のファイルは、以下の通りです。どこが間違っているか教えてください。
def german () [[[0,0,0],[0,0,0],[0,0,0],[0,0,0],[0,0,0]] ,[[1,0,0],[1,0,0],[1,0,0],[1,0,0],[1,0,0]] ,[[1,1,0],[1,1,0],[1,1,0],[1,1,0],[1,1,0]]] end
def german () [[[0,0,0],[0,0,0],[0,0,0],[0,0,0],[0,0,0]], [[1,0,0],[1,0,0],[1,0,0],[1,0,0],[1,0,0]], [[1,1,0],[1,1,0],[1,1,0],[1,1,0],[1,1,0]]] end
def quadratic(a, b, c, x) a*(x-solution1(a, b, c))*(x-solution2(a, b, c)) end
quadratic(17.0,3.0,2.0,1.0)のようにf(x)=0に実数解がない二次式を与えた時に,負の数の平方根を取ろうとしてエラーが発生しているようです.
require 'complex' include(Math)と書いておくと,
irb(main):003:0> sqrt(-1) => (0+1.0i)のように,sqrtも複素数で結果を返すようになります.
ruby vote.rb 選択肢番号のように使います.
def max(x,y)
if y < x
return x
end
return y
end
のように書くこともできる.また,returnを使って値を返すのと,「最後の式の値」で値を返すのを混在して
def max(x,y)
if y < x
return x
end
y
end
と書くこともできる.
def sign(x)
if x < 0
-1
elsif 0 < x
1
else
0
end
end
のように書くことができる.