ArgumentError: wrong number of arguments (given 1, expected 0) from /home/5073280264/algo16/gjp.rb:6:in `length' from /home/5073280264/algo16/gjp.rb:6:in `maxrow' from (irb):27 from /usr/local/bin/irb:11:in `<main>'このようなものでした。つまり、lengthの引数が0であるべきところが1であるというエラーでした。a.lengthのあとの-1が引数として認識されてしまったようです。
a.length-1と書いたり,「-」の両側に入れて
a.length - 1とした場合,どちらでも
a.length()-1と解釈されるようですね.
a.length -1のように,「-」の前に空白を入れて,後ろには入れない場合のみにこの問題が発生するようです.
表の一番左の列は,i = 0 の場合のAから見た勝率になります.i = 0 ということは「Aがあと0勝でシリーズに勝つ」すなわち,「Aは既にシリーズの勝ちを決めている状態」なので,Aからみた勝率は1になります.
「あと0勝」という状況を考えないで求めることもできますが,考えた方が簡潔になるので,教科書ではそのようにしています.
#a[i][k]の絶対値が最大となるi>=kを探す def maxrow(a,k) max_i=k for i in (k+1)..(a.length()-1) if abs(a[max_i][k]) < abs(a[i][k]) max_i=i end end max_i end
mkdir algo16のようにします.そして,ターミナルを開くたびに
cd algo16と入力してからirbを動かしてください.詳しくは,はいぱーワークブック「14.4 コマンドを使ったファイル操作」を参照してください.
cd algo16 unzip allcode.zipを実行するか,Finderでalgo16のフォルダの下のallcode.zipをダブルクリックすると,algo16の下にすべての配付プログラムが展開されます.
cd algo16を済ませてから,
ruby vote.rb 選択肢番号のように使います.
irbを使いながら(一旦終了せずに),投票システムも使うには,ターミナルのメニューバーの「シェル」->「新規タブ」を選ぶか,[Command]+[T]で別のタブを開いて(あるいは[Command]+[N]で別のウィンドウを開いて),投票システムを使うことをお勧めします.このあたりのことは,「はいぱーワークブック」の15.4 ターミナルの便利な使い方に書いてあるので参考にしてください.
irb(main):003:0> a = 0.5 => 0.5 irb(main):004:0> printf("%064b\n",[a].pack("E").unpack("Q")[0]) 0011111111100000000000000000000000000000000000000000000000000000 => nil逆の変換は以下のようにやる.
b = "0011111111100000000000000000000000000000000000000000000000000000" [b.to_i(2)].pack("Q").unpack("E")単精度表現は
irb(main):005:0> printf("%032b\n",[0.5].pack("e").unpack("L")[0]) 00111111000000000000000000000000 => nilと
irb(main):006:0> ["00111111000000000000000000000000".to_i(2)].pack("L").unpack("e") => [0.5]
isrb(main):004:0> Dir.chdir("./algo16")のように,Dirクラスのchdirメソッドを使うと良いようです.Windows版のisrbで起動後にカレントディレクトリが変わってしまうという症状が出る場合は,これで対応できます.
cd ~/algo16と入力してください.これらの機能を使うと,irbを抜けずにvoteできます.
ターミナルの基本的な使い方は,はいぱーワークブックの15.2 ターミナルの基本的な使い方を,より高度な使い方は,15.4 ターミナルの便利な使い方を参照してください.
cdというコマンドと「~」の意味は,はいぱーワークブックの14.4 コマンドを使ったファイル操作の14.4.1 ディレクトリを読むと分かります.
iruby notebookを実行すると,Webブラウザ上で対応するタブが開きます.
include(Math)を入力するように書いています. 毎回入力するのが面倒な場合は,ホームディレクトリの下に「.irbrc」というテキストファイルを作り,その中に
include(Math)と書いておくと,irb起動時にこのファイルの中身を実行してくれるので,毎回指定しなくても大丈夫です.ただし,このファイルの実行中にエラーが出ないように正しく記述剃る必要があります.また,
Math.sqrt(2)のような形で指定すれば,
include(Math)は不要です.
cp -rp /home/5320954122/Ruby ~/Library/Application\ Support/mi/mode/を実行してからmiを立ち上げるとRubyモードが利用可能なモードとして加わります.
の画面が出るので,モードを「Ruby」にして,改行コードを「LF(UNIX)」にして,ウィンドウを閉じてください.以降は,ファイル作成のさいに,「ファイル」->「新規」->「Ruby」で作成すると正しい改行コードが設定されているはずです.
ruby check.rb ex01.rbと実行すると,関数を与えた時の入力と出力があっていることが確認できます. 詳しくは,補足説明 (練習問題確認プログラムの使い方)を御覧ください.