2017-05-03 53 views
0

在已經創建了一個簡化的查找表,陣列值,該值是真或假用於查找

對於陣列樣品(查找表),我想值設定爲真或假。用戶將輸入響應數組。程序然後將數組與樣本進行比較以獲得序列相等性。任何想法如何我可以做到這一點。

//Note code has been simplified 

// Array for look up 
bool [] firstArray = new bool []{true,false| true}; 


//.................... 


//array for response 
bool [] sampl = new bool[] {true,false}; 

if(sample.SequenceEqual(sampl)) 
{ 
    Console.WriteLine("There are equal"); 

//Output should be true 
} 
+2

'如果(sample.SequenceEqual(SAMPL))'這裏是'sample'的定義是什麼? – fubo

+0

@fubo檢查'array for response'後的行 – Michael

+1

請更正您的問題並添加更多詳細信息 –

回答

0

有很多方法可以做到這一點。一種方法是遍歷兩個數組,並對每個數組的值進行投影。下面的代碼將通過兩個陣列運行,並通過各指標在數組中比較項目的值存儲bool

var zipped = firstArray.Zip(sampl, (a, b) => (a == b)); 

現在,我們可以檢查是否有屬於不同的項目。

var hasDiiff = zipped.Any(x=> x == false); 

請注意,如果你的陣列不具有相同的長度,當第一個結束Zip將停止。

你可以做整個事情在一個行,如果你想:

var hasDiff = first array.Zip(sampl, (a, b) => (a == b)) 
     .Any(x=> x == false); 

見我的回答here如何Zip作品進行了深入的解釋。

0

false| true值是true所以你的firstArray定義,其實這相當於:

bool [] firstArray = new bool []{true, true}; 

你需要做的是建立一套規則,你匹配:

Func<bool, bool>[] rules = new Func<bool, bool>[] { x => x == true, x => true }; 

然後,你可以這樣做:

bool[] sampl = new bool[] { true, false }; 

if (rules.Zip(sampl, (r, s) => r(s)).All(x => x)) 
{ 
    Console.WriteLine("There are equal"); 

    //Output should be true 
} 

如果你想讓它讀取更容易一些,你可以這樣做:

Func<bool, bool> trueOnly = x => x == true; 
Func<bool, bool> falseOnly = x => x == false; 
Func<bool, bool> trueOrFalse = x => true; 

Func<bool, bool>[] rules = new Func<bool, bool>[] { trueOnly, trueOrFalse };