2

これは非常に具体的な質問ですが、私が探しているものについても非常に具体的な詳細があります。私は現在、これを達成するための良い方法を持っていません(そして見つけることができません)。できれば助けてください。

私は常に4つのアイテムを含む整数リストを持っており、アイテムの3つは常に同じ桁で終わります。一意の最後の桁を持つ1つのアイテムをどのように抽出する必要があります。一意のアイテムがリスト内の同じ場所にあるとは限らず、リスト内のすべての数値は0〜40の値になります(つまり、1〜2桁)。

リストの内容の例:12、22、27、32。27を返すか抽出するメソッドが必要です。

例2:4,13,23,33。私は4を返す必要があります。

解決策は、リストから3つの繰り返される最後の桁の数字を削除するか、場合によっては一意の値を持つ標準のint変数のみを作成する必要があります。

文字列に変換してその文字を収集し、整数の長さ(桁数)をテストし、最後の桁だけを別のリストといくつかの比較コードに追加するこのばかげた関数を試してみました。それは本当にばかげています。私が試してみるべきアイデアをご存知の場合は、事前にお知らせください。

4

5 に答える 5

4

numbers整数の反復可能性があると仮定します。

int unique = numbers.GroupBy(i => i % 10).Single(g => g.Count() == 1).Single();

これにより、番号が最後の桁でグループ化され、単一のメンバーを持つ唯一のグループが引き出され、その唯一のメンバーが返されます。

于 2012-01-19T02:02:41.423 に答える
1

number % 10の最後の桁が表示されnumberます。

于 2012-01-19T01:52:00.870 に答える
0

このような特定の形式の場合は、数字の残りのmod10で単純なif-then-elseネットワークを使用するだけです。

if(arem10==brem10) { return( (arem10==crem10) ? d : c); }
if(arem10==crem10) { return(b); }
return(a);
于 2012-01-19T01:57:49.977 に答える
0

ここにいくつかの単純なifがありますが、おそらく派手なLINQ*を探しています:)

*LINQは実際にはかなり派手です

//compare first to second
if((list[0] - list[1]) % 10 != 0)
{
    //they're not the same, see if first and third are different
    if((list[0] - list[2])% 10 != 0)
    {
        return list[0]; //yes, so first is the odd one
    }
    else
    {
        return list[1]; //no, so second is the odd one
    }
}

//first two are same, so check if third is the odd one
if((list[0] - list[2]) % 10 != 0)
    return list[2]; //yes it is

//only fourth remains
return list[3];
于 2012-01-19T02:03:37.293 に答える
0

これを解決するためにC#で使用できる余りの計算があると確信しています。Cでは%です。例:15%10は5を与えます。

ここで、a、b、c、dの4つの余りがあると仮定します。

If a==b:
    if c==b:
        return d
    else:
        return c
else:
    if a==c:
        return b
    else:
        return a

4つだけではなくたくさんの数字がある場合。

def func(x):
    if len(x)<3:
       return NULL
    if x[0]!=x[1]:
        if x[0]==x[2]:
            return x[1]
        else:
            return x[0]
    for i in 2:(len(x)-1) :
        if x[0]!=x[i]:
            return x[i]
    return NULL
于 2012-01-19T01:52:49.347 に答える