0

Python プログラムを C# に変換しようとしています。ここで何が行われているのかわかりません。

def mincost(alg):
    parts = alg.split(' ')
    return sorted([cost(0, parts, 'G0 '),cost(1, parts, 'G1 ')], key=operator.itemgetter(1))[0]

def cost(grip, alg, p = '', c = 0.0, rh = True):
    if (len(alg) == 0):
        return (postProcess(p),c)

postprocess文字列を返します

costsorted() 関数で使用される複数のパラメータを返しますか? これらの複数の値は sorted() 関数でどのように使用されていますか?

何をしkey=operator.itemgetter(1)ますか?これがソートの基本なので、この場合は の複数の値が返され、costの値が使用されますc

C#でこれを行う方法はありますか?

4

1 に答える 1

0

そこの使い方はsortedちょっと変です。これは単純な if ステートメントで簡単に置き換えることができます。さらに奇妙なのは、return タプルの 2 番目の値としてcost返されることです。cではmincost、デフォルトではない のcost値で呼び出されることはありません。そのため、ソートは常に非常に冗長になります。しかし、コスト関数についてはいくつかの欠けている部分があると思います。cc0.0

それでも、次のように機能を実装できます。

string MinCost (string alg) {
    List<string> parts = alg.split(" ");
    Tuple<string, double> cost1 = Cost(0, parts, "G0 ");
    Tuple<string, double> cost2 = Cost(1, parts, "G1 ");

    if (cost1[1] < cost2[1])
        return cost1[0];
    else
        return cost2[0];
}

Tuple<string, double> Cost (int grip, List<string> alg, string p="", double c=0.0, bool rh=True) {
    if (alg.Count == 0)
        return new Tuple<string, double>(PostProcess(p), c);

    // ... there should be more here
}

(未テスト)

于 2012-11-11T17:25:02.040 に答える