このディレクトリの索引
#  C#,C#の宿題片付けます。#699
#  [1] 授業単元:プログラミング実習 
#  [2] 問題文(含コード&リンク): 
#  1.acをabbに置き換える最小のレーヴェンシュタイン距離を求めよ 
#  2.1をもとにdiffツールを作成せよ。なお、出力時の形式は以下のとおりとする 
#  ac  
#   ^ 
#   
#  abb 
#   || 
#  

レーベンシュタイン距離(_文字列1,_文字列2,_レーベンシュタイン距離) :-
        編集距離(_文字列1,_文字列2,_レーベンシュタイン距離).

編集距離(S1,S2,_編集距離) :-
        atom_chars(S1,LX),
        atom_chars(S2,LY),
        ならびの編集距離(LX,LY,Len),
        length(Len,_編集距離),!.

ならびの編集距離([],LY,LY).
ならびの編集距離(LX,[],LX).
ならびの編集距離(LX,LY,Len) :-
        append(L0,L1,L2,LX),
        \+(L1 = []),
        append(L01,L1,L21,LY),
        append(L01,L21,LYR),
        append(L0,Len1,Len),
        ならびの編集距離(L2,LYR,Len1).
ならびの編集距離(LX,LY,LZ) :-
        append(LX,LY,LZ).

append([],L2,L3,L4) :-
append(L2,L3,L4).

append([U|L1],L2,L3,[U|L4]) :-
append(L1,L2,L3,L4).