我有一組布爾值:x1, y1, z1, x2, z2, x3, y3, z3
每一個都是真或假。而不是寫幾十個if語句來檢查的權利真/假的組合,是什麼讓你發現什麼是真正正確的組合絕對是最有效和最快的方式,假?:找到8組布爾值的正確組合的最快方法
if(x1 == true && y1 == true && z1 == true &&
x2 == true && z2 == true &&
x3 == true && y3 == true && z3 == true)
{
//do stuff if this is correct combination
}
else if(x1 == false && y1 == true && z1 == true &&
x2 == true && z2 == true &&
x3 == true && y3 == true && z3 == true)
{
//do stuff if this is correct combination
}
//do on and so forth for the next few dozen lines to check combo's
我在想的循環與for循環,但這似乎也很慢。這將每秒運行幾十次,所以我試圖儘可能地提高效率。
編輯澄清:y2故意刪除。
的原因,我這樣做是因爲我有一個網格,如下所示:
x1, y1 ,z1
x2, y2 ,z2
x3, y3 ,z3
我試圖找到,如果周圍Y2所有的布爾值設置爲true或false,因爲應用到紋理y2在每種情況下都會有所不同。例如,如果x1,y1和z1爲假但其餘爲真,則y2紋理將設置爲特定圖像。如果x3,z1和x2爲假,其餘爲真,則再次將y2設置爲不同的圖像。我試圖找到y2周圍的項目是打開還是關閉,所以我可以爲y2設置正確的紋理。
只是一些語法建議:你可以刪除'== TRUE'只有做好'&& X1 && Y1 &&。 **編輯**:您也可以嘗試使用'&'而不是'&&'作爲'&'更快一些,但if語句失敗可能需要更長的時間 – RononDex
將它們編碼爲'int'並檢查您感興趣的組合的數值?應該表示你編碼一次,然後執行'if(myEncodedFlags == 42)',假設所有可能的組合中只有少數有用的組合。 –
那麼你有512個可能的組合(19683,如果你考慮FileNotFound)。如果每種組合都是有效的,你必須迎合他們。也許有一些可以應用的模式,例如「跳過所有地方!x3」以減少可能性。 – CodeCaster