簡體   English   中英

最少的代碼,縮短表達

[英]Minimal code, shorten expression

給出以下參數:

boolean a = true ;
boolean b = false ;
boolean c = true ;

我希望此版本的代碼最少:

if ( ( a && ! b) || ( ! a && b) ) {
    z1 += 99 ;
}

if (a ^ b) {
    z1 += 19 ;
}

if ( ( a && b) || ( ! a && ! b) ) {
    z1 += 118;
}

需要修改什么?

第一個條件與第二個條件相同,第三個條件是其他條件的否定,所以我們有

if (a ^ b) {
   z1 += 99 + 19  // = 118
} else {
   z1 += 118
}

我們可以再次縮短,無論a或b是多少,z1都會增加118,所以我們只有

z1 += 118

如果您將來需要弄清楚類似的事情,那么您可能想要嘗試編寫一張表(所有表在數學上都比較正確,但我可能會更正我),該表顯示了所有可能的輸入及其各自的結果。 編寫表格后,您應該能夠快速識別整體邏輯並可能對其進行簡化。

上面的表格可能看起來像這樣;

  a  |  b  |  z1
------------------
  t  |  t  |
  t  |  f  |
  f  |  t  |
  f  |  f  |

遍歷每一行並將z1的效果寫入列中。 如果可能的話,這應該使您可以輕松確定正在發生的事情以及如何縮短它。

if ( ( a && ! b) || ( ! a && b) ) {
}  

您可以使用

if ( a!=b) {
} 

if ( ( a && b) || ( ! a && ! b) ) {}  

您可以使用

if(a==b){}  

if (a ^ b) {}   

可以代替它

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM