def merge(a,b) c = make1d(a.length()+b.length()) ia=0 ib=0 ic=0 while ia < a.length() && ib < b.length() if a[ia] < b[ib] c[ic] = a[ia] ia = ia + 1 ic = ic + 1 else c[ic] = b[ib] ib = ib + 1 ic = ic + 1 end end while ia < a.length() c[ic] = a[ia] ia = ia + 1 ic = ic + 1 end while ib < b.length() c[ic] = b[ib] ib = ib + 1 ic = ic + 1 end c end強調されている穴埋め部分のwhile文の繰り返しはどちらかは1回も繰り返し部分を実行しないことになる.これが気になって,以下のようにまずは条件判断をおこなう書き方をしている人もいた.
if ia < a.length() for i in 0..(a.length() - ia - 1) c[ic + i] = a[ia + i] end else for i in 0..(b.length() - ib - 1) c[ic + i] = b[ib + i] end endまた,配列の一部(range)を置き換えるための代入文を使って以下のように書いた人もいた.
if ia == a.length() c[ic..c.length() - 1] = b[ib..b.length() - 1] else c[ic..c.length() - 1] = a[ia..a.length() - 1] 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):020:0> a = 0.5 => 0.5 irb(main):021:0> [a].pack("E").unpack("Q")[0].to_s(2) => "11111111100000000000000000000000000000000000000000000000000000"
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と実行すると,関数を与えた時の入力と出力があっていることが確認できます. 詳しくは,補足説明 (練習問題確認プログラムの使い方)を御覧ください.