SMIC:
私は正確性を検証したい、以下のようなファイルを持っています。ファイルは、いくつかのデータを処理するための参照ファイルとして使用されます。私は、このファイルのコーラ、COLBおよびCOLCと私の入力データと一致し、上から最初の試合のOUTAを返します。ワイルドカードは「*」何かを一致させます。例えば、私の入力データがある場合X4 Y2 Z3
、それはファイルから13を返します。
Seq ColA ColB ColC OutA
1 X1 Y1 Z1 10
2 X2 Y2 * 11
3 X3 * Z2 12
4 * Y2 Z3 13
5 * * Z4 14
6 * Y3 Z4 15
7 * * * 16
今、ファイルが使用されるか、または到達可能なことはありませんいくつかのエントリを持つことができます。私が受け取った場合たとえば、X9 Y3 Z4
私の入力として、それは5行目と一致し、行6はまた、私の入力と一致するものの、6行目を見てすることはありません。私たちは、行5の位置と行6を交換する場合、期待どおり、それが動作します。私は私の実際のプロセスが実行される前に、このような到達不能レコードを検索します。
ファイル内のようなエントリを見つける方法上の任意のアイデア。私は、アルゴリズムを探しています。なお、私はこの例では、列数と行数が減少しています。実際のファイルは約10列と50行があります。
デビッドEisenstat:
ワイルドカード(具体的には、各列に、リテラルとして表示されない有効なシンボルが存在する)すべての文字列と一致すると仮定すると、それは最初に一致するかどうかを何秒マッチのスーパーセットを参照する行の各ペアをチェックすればよいです。第二列リテラルを有し、最初の行が同じリテラルまたはワイルドカードを有し、第2行は、ワイルドカードを持っている場合、最初の行は、ワイルドカードを持っている場合、これは、列毎に、場合にのみケースです。