最少的代码,缩短表达

Upv*_*ote 0 java operators comparator

给出以下参数:

boolean a = true ;
boolean b = false ;
boolean c = true ;
Run Code Online (Sandbox Code Playgroud)

我想要这个版本的最小代码:

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

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

if ( ( a && b) || ( ! a && ! b) ) {
    z1 += 118;
}
Run Code Online (Sandbox Code Playgroud)

需要修改什么?

Jul*_*ien 9

第一个条件与第二个条件相同,第三个条件是对其他条件的否定,所以我们有

if (a ^ b) {
   z1 += 99 + 19  // = 118
} else {
   z1 += 118
}
Run Code Online (Sandbox Code Playgroud)

我们可以再次缩短它,无论a或b是什么,z1增加118,所以我们只有

z1 += 118
Run Code Online (Sandbox Code Playgroud)