だいぶ前に書いたものを見て思い出したりしつつ最低限のものを書いてみました。 (他所に書いていたものを引っ越してきました。元の公開日は 2024-02-12 です。) コード 一番ベーシックな動的計画法のものを書いてみました。より改良された手法もあるようですが本記事では扱いません。 後で自分が見て思い出しやすいように少し冗長に書いています。「理解のためのリファクタリング」を自分なりに行った状態です。 # diff.rb class Diff def initialize(xs_a, xs_b) @xs_a = [nil] + xs_a @xs_b = [nil] + xs_b @table = Array.new(@xs_a.size) { Array.new(@xs_b.size) } end def no_edit?(ai, bi) @xs_a[ai] == @xs_b[bi] end
