現在私はjavaScriptで2つの文字列を比べて
その差分を取れるようなプログラムを書きたいのです。

そこでdiffのアルゴリズムをパクれば(失礼)
とてもスマートなものが出来上がるのではないだろうかと
期待してgoogle使って検索してみたりしたのですが、
diffのアルゴリズムらしきもの見つかりませんでした。

そこでどなたかdiffのアルゴリズムについて書かれたURLを
教えていただけないでしょうか?
(・・・できるだけ日本語のページが良いのですが・・・)

このQ&Aに関連する最新のQ&A

A 回答 (1件)

説明しろと言われても困りますが



参考URL:http://hp.vector.co.jp/authors/VA007799/viviProg …
    • good
    • 0
この回答へのお礼

ありがとうございます。
しかしすいません。
私の頭があまり良くない為なんですけど
教えていただいたURLの説明では分かりませんでした。

もう少し易しい日本語で書いてあるページがあったりしたら嬉しいのですが…。

お礼日時:2001/06/05 20:10

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

Qshell diff の使い方について

shellで差分をとりたいとおもっているのですが・・・

aaa.txtの中身
※1 aaaaaa_xxx.c
※2 bbbbbb_yyy.c
.
.
.

bbb.txtの中身
※1 aaaaaa.c
※2 bbbbbb.c
.
.
.

aaa.txt、bbb.txtそれぞれに200近くのファイル名のみが入っています。
両方のテキストファイルを読み込み、それぞれの※1と※1、※2と※2というふうに
差分を見ていきたいと思っています。行はすべてバラバラです。
差分を見たい対象になる基準は・・・
例えば、※1であればaaaaaaの部分が同じなので。
(ディレクトリもそれぞれファイルごとにばらばらです)


ついでに差分の行数も出力したいと考えています。

なにか良い方法を教えていただけませんでしょうか?

shellでつくりたいと思っています。
どうかよろしくお願いいたします。

Aベストアンサー

例を1つだけ説明されてもしょうがないです。すべての場合について言える条件を書かないと、プログラムは作れません。
「バスを除いたファイル名が同じファイル同士を、一対多かもしれないが比較したい」ということだとすると、

while read a
do af=`basename $a`
grep /$af\$ bbb.txt | while read b
do echo === compare $a with $b ===
diff 適当なオプション $a $b
done
done < aaa.txt

>ついでに差分の行数も出力したいと考えています。

「差分の行数」の定義をしないと、何をして良いのか分かりません。
diff の出力の行数でいいなら、
echo === diff output is `diff オプション $a $b` lines ===
とかですが。

Q大至急:Pythonで数値の差分を求める方法

+-にとらわれず差分を正確に求める方法を簡潔に書くにはどうしたらいいのかわかりません。
+-を確認しながらif文で計算式を分けてやっていけばできないことはありませんが正直汚いですし長いです。
なにか簡潔に綺麗に分かりやすく記述する方法はないのでしょうか?

Aベストアンサー

具体的にはどんな数値列に対してどんな結果を求めたいと思っているのでしょうか?

普通「差分」といえば「隣り合った値の差」を意味するし, それでいいなら「+-を確認しながらif文で計算式を分けてやっていけば」なんて面倒な処理は全く必要ないはずですよね.

Q差分コピー

当方初心者です。
バッチファイルで以下のようなことができますでしょうか。

ネットワーク上のPCにあるディレクトリ内のファイルを
ローカルのディレクトリにコピー。

できれば差分だけをコピー

よろしくお願いします。

Aベストアンサー

「差分」の意味にもよるけど xcopy じゃダメ?

Qピックアップシステムのアルゴリズム

Perlで日替わりのピックアップシステムを作っています。

60件(掲載期限が2週間)程度のデータベースの中から、ランダムに
3件のデータ(重複しない)を表示するピックアップシステムを作っ
ています。

なるべく同頻度でデータを表示させたいのですが、randを使うと
同じデータが複数回表示されてしまったりします。

これを防ぐにはどのようなプログラムを組めばいいでしょうか。

Aベストアンサー

データの数が60件しかないため、randをしても偏ってしまうのだと思います。
最近のPerlはsrandは関係ないはずなので、根本的な問題はサンプルの数が少ないことだと思います。

そこでですが、データベースに表示回数のフィールドを用意して、何回ピックしたか保存してみてはどうでしょう。
この値が低いデータを優先的に選択するようにします。

まずは最小値の取得

表示回数が最小値の行数を取得

行数が2以下 YES→ 最小値の行をすべてピック、表示回数が最小値+1の行数を取得 ↓
NO

その行数を最大値としてrandでランダムに行を選択してピック、表示回数を+1し、randの最大値の行数を-1する。 以降3つピックされるまで繰り返す。

これによって、20日で確実に同頻度でデータをピック出来ると思います。

Qアルゴリズムの参考書

情報関係は初心者なんですが、
アルゴリズム関連の参考書(Que,Stack等用いた)をさがしています。

できれば文系向きの、初心者レベルにも理解できる良書がいいです。

どなたか御存じの方、よろしければ御推薦お願いします。

Aベストアンサー

こんにちわ。
私も大して知識が無いのですが、参加させてください。
アルゴリズムと言うと、幅が広過ぎてこれと言う文献を紹介するのは
ちょっと難しいですが、そもそもアルゴリズムって何?とか、
どんな種類があるの?とかその辺から整理することをお勧めします。
私が手っ取り早く勉強した方法は、情報処理2種の資格用の参考書
(特に午前中)を読破しただけです。
情報処理2種の資格は、情報処理全般にわたる一般常識的な知識と
正しい理解を得る為にかなり有効だと思います。
資格をとる、とらないに関わらず、これに関する教本を1冊だけでも
読破するといろいろな知識が備わるので、電車の中ででも読んでみることを
お勧めします。

私は、新星出版社の【第2種 情報処理[午前] 完全合格教本】で
勉強し、資格をとった後もこの本を時々ぺらぺらとめくっています。
(用語辞書代わりとして。)

ちなみに、キューとスタックについて。
 スタックの定義・・・後入れ先出しリスト
           最後に格納されたデータが最初に取り出されるリスト
           (入り口が1つしかない箱に新聞紙をどんどん入れた
           場合、1つづつ取り出すには、最後に入れたものから
           取り出さなくてはならないような仕組み)
 キューの定義 ・・・先入れ先出しリスト
           最初に格納されたデータが最初に取り出されるリスト
           (バスの待ち行列で先に並んだ人から順にバスに
           乗れるような仕組み)
 
 です。参考にならなかったらごめんなさい。

こんにちわ。
私も大して知識が無いのですが、参加させてください。
アルゴリズムと言うと、幅が広過ぎてこれと言う文献を紹介するのは
ちょっと難しいですが、そもそもアルゴリズムって何?とか、
どんな種類があるの?とかその辺から整理することをお勧めします。
私が手っ取り早く勉強した方法は、情報処理2種の資格用の参考書
(特に午前中)を読破しただけです。
情報処理2種の資格は、情報処理全般にわたる一般常識的な知識と
正しい理解を得る為にかなり有効だと思います。
資格をとる、とらな...続きを読む


このカテゴリの人気Q&Aランキング

おすすめ情報