2016-04-14 12 views
0

Bu soruya/sınava bir röportajda sorulabilecek bir şey olarak baktım. Bunun nasıl yapılacağını görmüyorum ...IF ifadeleri olmadan bir eşleşme bulunsun mu?

Rastgele sayılarla dolu iki diziniz var ve her dizinin paylaştıkları bir numarası var. Numarayı bul ve numarayı çıkar. (NOT: IF ifadelerini kullanmayın)

+1

'System.Linq' ad alanındaki uzantı yöntemlerine bakın. –

cevap

1

olduğunu. Birkaç cevap ile belirtildiği gibi, iki listeyi kesiştirmek için LINQ kullanabilirsiniz.

Diğer cevaplar tam olarak tamamlanmamıştır; Ayrıca tam bir ortak sayı

  • yoktur

    • söylendi yapmanız gerekir çıktı yarı fonksiyonel programlama ruhuyla bu sayı

    Eğer döngüler veya açık olmayan bir açıklamada Bunu yapacağından conditionals: Bu daha sağlam olabilir

    int[] a = { 1, 2, 3 }; 
    int[] b = { 3, 4, 5 }; 
    
    Console.WriteLine(a.Intersect(b).Single()); 
    

    , örneğin

    Console.WriteLine(a.Intersect(b).FirstOrDefault()); 
    

    Bu, kesişme noktasında sıfır veya çok sayıda öğe olduğunda, olduğunda, ancak kesinlikle önkoşulların ihlali bildirilmediğinde katı olarak görülmez - tam olarak bir eşleşme olmalı, başka bir şey istisna oluşturmalıdır.

  • 4

    Intersect'u kullanın. Sanırım bir LINQ sorusu.

    1

    Intersect uzantı yöntemine göz atmak isteyebilirsiniz. Burada

    Biraz örnek: Ne inceledikleri (prosedürel aksine) fonksiyonel programlama yapmak için yetenek

    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); 
    } 
    
    1

    Benzer bir deneyim yaşadım ancak bulmacayı çözmek için birden fazla yol düşünebilmem için yordamsal programlama kullanmalıydım. Yukarıdaki kod

    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++; 
    } 
    

    tüm eşleşmeleri yazdırır: Burada

    süre döngü ile elde kodudur. Yalnızca ilk eşleşmeyi almak için bu döngüden çıkmak için goto'u kullanabilirsiniz. En iyi tavsiye, neler yapabileceğiniz hakkında herhangi bir fikriniz olup olmadığını öğrenmek için bir şeyler yapmanın tüm olası yollarını öğrenin. Asla fazla bilemezsin.

    İlgili konular