この質問/クイズには、インタビューで尋ねられるかもしれないものがあります。これを行う方法が見当たらない...IF文なしの試合を見つけるか?
2つの配列に乱数があり、各配列には共有する番号があります。番号を見つけ、その番号を出力します。 (注意:IFステートメントを使用しないでください)
この質問/クイズには、インタビューで尋ねられるかもしれないものがあります。これを行う方法が見当たらない...IF文なしの試合を見つけるか?
2つの配列に乱数があり、各配列には共有する番号があります。番号を見つけ、その番号を出力します。 (注意:IFステートメントを使用しないでください)
は(手続き型ではなく)関数型プログラミングを行うためにあなたの能力です。いくつかの答えで述べたように、LINQを使って2つのリストを交差させることができます。
その他の回答は完全ではありません。あなたは、正確に一つの共通番号
をすべきではあり
int[] a = { 1, 2, 3 };
int[] b = { 3, 4, 5 };
Console.WriteLine(a.Intersect(b).Single());
これは、より堅牢であることができ、例えば
Console.WriteLine(a.Intersect(b).FirstOrDefault());
交差点にゼロまたは複数の要素がある場合は、 と厳密には、これらは前提条件の違反を報告できません。正確に1つの一致が存在しなければなりません。
Intersectを使用してください。 LINQの質問だと思います。
よく、Intersect拡張メソッドをご覧ください。
ここで少し例:彼らが検討している何
int[] array1 = { 1, 2, 3 };
int[] array2 = { 3, 4, 5 };
// get the shared number(s)
var intersect = array1.Intersect(array2);
foreach (int val in intersect)
{
Console.WriteLine(val);
}
私は同様の経験を持っていましたが、手続き型プログラミングを使用して、パズルを解決する方法が複数考えられるかどうかを判断しなければなりませんでした。上記のコード
int[] array1 = { 1, 2, 3 };
int[] array2 = { 3, 4, 5 };
int x = 0;
int y = 0;
while (x < array1.Length)
{
y=0;
while (y < array2.Length)
{
while (array1[x] == array2[y])
{
Console.WriteLine(String.Format("Matching number is {0}", array1[x]));
break;
}
y++;
}
x++;
}
はすべての一致を出力します。ここでは
は、whileループで達成可能なコードです。最初の試合のみを取得するには、goto
を使用してこれらのループから抜け出すことができます。 最高のアドバイスは、あなたが何ができるか考えてみてください。あまりにも多くを知ることはできません。
'System.Linq'名前空間の拡張メソッドを見てください。 –