ruby check.rb ex04.rbで動かして,prime.rbに含まれる関数が見つからないというエラーが出ていた人がいた.これに関しては担当者に連絡済で,そのうち修正が入ると思うが,とりあえずは修正版のcheck.rbを ~/algo15 にダウンロードすると直るはずである.また,第4章の「練習 4.13b」の判定結果が「Ex3.14 b」となる不具合も報告された.これも,ex04.rbを ~/algo15 にダウンロードすると直る.
def median(x,y,z) if (y < x && x < z) || (z < x && x < y) x else if (x < y && y < z) || (z < y && y < x) y else z end end endなお,上のプログラムの「<」を「<=」にすると「x, y, zはすべて異なる」という条件を外しても動くようになるが,問題ではそこまでは求めていないので,このままで良い.
def median(x,y,z) include(Math) if (x-y)*(x-z)<0 x else if (z-x)*(z-y)<0 z else y end end endのように短く書くというテクニックを使っている人がいた.
def combination(n,k) if k > n 0 else if k == 0 1 else combination(n-1,k-1) + combination(n-1,k) end end end
def prime(n) load("./sod.rb") include(Math) .... endのように関数定義の中に書いている人がいた.これでも動くが,関数を「実行」するたびにinclude, loadが実行されるので,非効率的である.関数の定義の外に書くと,include, loadが実行されるのは,最初に該当ファイルをloadする時だけなので,そのように書くことを推奨する.
ruby vote.rb 選択肢番号のように使います.
.ai, .ani, .anim, .apng, .art, .bef, .bmf, .bmp, .bsave, .cal, .cdf, .cdr, .cgm, .cgm, .ciff, .cin, .cpc, .djvu, .dng, . dpx, .dxf, .ecw, .emf, .eps, .eva, .exr, .fits, .flic, .fpx, .gerber, .gif, .hdri, .hvif, .icer, .icns, .ico, .ics, .iges, .iges pgml, .ilbm, .jbig, .jbig2, .jng, .jpeg, .jpeg 2000, .jpeg xr, .jpeg-hdr, .jpeg-ls, .miff, .mng, .pbm, .pcx, .pdf, .pgf, .pgm, .pict, .pict, .pictor, .pixel, .png, .postscript, .ppm, .psd, .psp, .rad, .rgbe, .sgi, .svg, .swf, .tga, .tiff, .vml, .wbmp, .webp, .wmf, .x aml, .xar, .xar, .xbm, .xcf, .xpm