2017-02-24 2 views
0

は、私は、マッピングテーブル、M持って(マッピングテーブルに応じて)変更されました:が実際

mapping table

そして、これを使用して、私は私を与える文字列Sに置き換える&を見つける行ってきました変換した文字列S'

S: {"z" "y" "g" "k"} -> S':{"z" "y" "h" "k"}

今、私は私のマッピングtransforかどうかを確認したいです実際にS'に適用されました。私はそうするために思い付いたpsudoコードは次のとおりです。しかし、あなたが見ることができるように、アルゴリズム上記のケースでは動作しません

I. Call function searchCol(x, “h”); // returns true if “h” can be found in column x in M. 

II. If searchCol(x, “h”); returns true { 
    // assume mapping transformation was not applied to S' 
    // S'' after transforming S': {“z”, “y”, “i”, “j”} 
} 

III.If searchCol(x, “h”); returns false { 
    // assume mapping transformation was already applied to S' 
    // do nothing 
} 

IV. // log and continue … 

。誰でもこれについてもっと良い方法を知っていますか?

お気軽にお問い合わせください。

:私のコードベースは、Javaであるとして、あなたは、任意のコード例を提供行う場合は、同じ言語でそれらを掲示している場合、私はそれを好む:)

+0

誰もがこれを言う前に、これは宿題ではありません。私は自分のツールの上にこれを作成して、変更のチェックを自動化しようとしています。 –

答えて

1

あなたの代わりに変換を追跡することができますか?

今すぐ文字列 yxyxyxyxを与え
x -> y 
y -> x 

、それはすでに転換した:それは変換が行われたかどうかを判断することは不可能ですいくつかの例がありますが、このマッピングテーブルを想像?何回ですか?

If the string contains a char that is on the left side and not on the right side, 
then it was not yet transformed. 

しかし、上記の条件が満たされていない場合、あなたは何を確認することはできません。

しかし、あなたのマッピングテーブルは、円の自由であったとしても、あなたが言うことができる唯一のことはあります。

+0

はい、私は質問をしたときに私が考えていたポイントですが、トラックを維持することは私には起こりませんでした。では、この追跡はどのように行うべきですか?おそらく、正確な変換が行われたことを示すログにメタデータを追加する必要がありますか?したがって、ログには 'x-> y'と' y-> x'と表示されます。次に、最初の例では 'y'を逆マップし、2番目の例では逆マップ' x'をチェックします。それとも良い方法がありますか? –

+1

変換を行っている場合は、たとえば、変換カウンターを使用してオブジェクト内のすべての文字列をラップすることができます。変換するたびに、それを増やします。 – fafl

+0

そのヒントをありがとう、はい、私はすべてをやっている。 –