1/11 レコードとオブジェクト(2),その他


補足


試験について

  • 2017年1月25日(水) 3限(13:10-)
  • 試験時間: 60分(予定)
  • 持ち込み: 不可
  • 出題範囲: 教科書1~7章ただし,以下は試験範囲から外す
  • 問題形式: 記述式、プログラムを解答するものを含む
  • ITC-LMSの掲示板の書き込み期限を1/26 0:00 までに変更しました.

    授業アンケート


    前回の感想,質問より

    Q.
    このプログラムとは全く別のことですが、alignのみを仕上げた後に、ターミナルで
    ruby check.rb ex07.rb
    
    としたときに、
    テストデータファイルとして ex07.rb を使います...
    ファイル align.rb を読み込みます...
    
    Ex7.4      [対象のメソッド: align          ] => PASS
    
    で止まってしまったのですが、どうしてなのか見当がつきませんでした。
    A.
    tracebackの穴埋めをしない状態でcheck.rb を動かすと,関数align_dp の動作チェックをする際に,tracebackの中で無限ループに入ってしまったものと思われます.

    前回の課題について

  • traceback の典型的な解は以下のようなもの.
    def traceback(a, s, t)
      u = ""
      v = ""
      i = s.length()
      j = t.length()
      while i > 0 || j > 0
        if j > 0 && a[i][j] == a[i][j - 1] + g()
          u = "-" + u
          v = t[j - 1 .. j - 1] + v
          j = j - 1 # go left
        else if i > 0 && j > 0 && a[i][j] == a[i - 1][j - 1] + q(s[i - 1], t[j - 1])
    
            u = s[i - 1 .. i - 1] + u
            v = t[j - 1 .. j - 1] + v
            i = i - 1 
            j = j - 1 # go up left
    
          else
            if i > 0 && a[i][j] == a[i - 1][j] + g()
    
              u = s[i - 1] + u
              v = "-" + v
              i = i - 1 # go up
    
            end
          end
        end
      end
      [u, v]
    end
    
    上のプログラムでは,文字列sからi - 1文字目の1文字だけからなる部分文字列を取り出すのに s[i - 1 .. i - 1] と書いているが,現在のRuby 言語仕様では s[i - 1] のように書いても同じ意味になる.

    また,tracebackの中で3方向に分岐しているが,「alignで作成された正しい配列aが与えられれば,必ず3方向に分岐するので,最後のifはいらない」,「正しくない配列aが与えられた時は例外処理をおこなうのが良い」と指摘した人はあり正しいが,わかりやすさを重視して穴埋めプログラムは作られている.


    今日の練習,投票

    講義資料


    講義フォルダの作成


    配付プログラムのダウンロード


    投票システム

    vote.rbをダウンロードして(「リンク先のファイルを別名で保存」で,ホームフォルダの下のalgo16を選択(なければ作る).".txt"を「追加しない」を選ぶ),ホームディレクトリに保存します.ドックからターミナルを起動して,
    cd algo16
    
    を済ませてから,
    ruby vote.rb 選択肢番号
    
    のように使います.

    irbを使いながら(一旦終了せずに),投票システムも使うには,ターミナルのメニューバーの「シェル」->「新規タブ」を選ぶか,[Command]+[T]で別のタブを開いて(あるいは[Command]+[N]で別のウィンドウを開いて),投票システムを使うことをお勧めします.このあたりのことは,「はいぱーワークブック」15.4 ターミナルの便利な使い方に書いてあるので参考にしてください.


    テキストの補足


    今日の課題



    自宅で自習をする人のために

    アルゴリズム入門共通資料の中に講義で使うRuby言語の処理系のインストール法があります.