12/14 アルゴリズムと計算量(3)・数値計算(1)


前回までの補足


前回の感想,質問より

Q.
allcodeのsimplesortにmin_indexの定義が入っていませんね…。
A.
教科書およびallcodeでは自分の力で関数を一から書くような課題になっ ていますが,この講義では第5章の練習,投票などで 難易度を下げるために,穴埋めにしたり関数の定義を与えたりしています.自 信がある人は一から書いても良いと思いますが,行き詰った場合はこの講義の ページから各章のページをたどって見るとヒントになることもあると思います.
Q.
講義についてですが、たまに時間をオーバーしてしまって五時間目に差し支えるのをやめてほしいです。 掲示板への書き込みをもう少し早くできるようにしてください。
A.
時間オーバに関しては気をつけます.なお,掲示板への書き込みは こちらの指示がある前に書きこんでも構いません.
Q. 配列同士をベクトルみたいに足し合わせる方法はあるのでしょうか?(例えば、(1、0、0)+(0、1、 0)=(1、1、0)のように)
A.
a=[1,0,0]
b=[0,1,0]
c=a+b
でよさそうな気がしますが,配列に対する演算子「+」はRuby言語では連結を表すので,
[1, 0, 0, 0, 1, 0]
となってしまいますね.短く書くとすると,
a=[1,0,0]
b=[0,1,0]
c=a.zip(b).map {|x,y| x+y}
で目的は達成できますが,この構文の説明は講義の範囲を超えるので,省略します. 気になったら, Rubyリファレンスマニュアルでも読んでみてください.
Q.
プログラムの任意の範囲をコメントアウトする方法はあるのでしょうか?(C言語の/*~*/のように)
A.
Rubyリファレンスマニュアル:字句構造によれば,埋め込みドキュメント
=begin
the everything between a line beginning with `=begin' and
that with `=end' will be skipped by the interpreter.
=end
で複数行のコメントアウトはできるようです.ただし,任意の範囲(行の途中から途中まで)のコメントアウトの方法はなさそうです.

Q.
数列の番号が0から始まるせいですごく混乱します。なぜ1番目を0番目としたのでしょうか……。
A.
配列や文字列の添字を0からスタートするか,1からスタートするかは 昔から論争のたねになっており,プログラミング言語でも分かれています. 教育用のプログラミング言語としては,1からスタートした方が良いとい う指摘もありますが,Rubyは 現在使われている多くのプログラミング言 語(C, Java等)にそろえて,0からスタートするようにしたのだと思います.
Q.
今日の講義では、画像作品の投票をしたが、どの作品もレベルが高くすばらしいと思った。
Q.
図を書くプログラムはプログラムの難解さと見た目の美しさが必ずしも比例しないと実感しました。
Q.
周りの画像が複雑なものが多くてびっくりしました
A.
11/16の課題は熱心に取り組んで くれた人が多かったようで,レベルが高いものが多かったですね.ペイントソ フトで簡単に書けそうな絵を作るプログラムが複雑だったり,簡潔なプログラ ムから芸術的な絵が生まれたり,プログラミング以外の点でもセンスが問われ た課題だったと思います.

投票システム

vote.rbをダウンロードして,ホームディレクトリに保存してください.ドックからターミナルを起動して,
ruby vote.rb 選択肢番号
のように使います.

今日の練習,投票

関連リンク


教科書の補足


今日の課題