Java 8、109 106 101 90 75 74 71 66バイト
a->{int s=0,p=0;for(int i:a){s+=i;p|=1<<i;}return s<7&p==14?24:s;}
@OlivierGrégoireのおかげで-12バイト。@Nevayの
おかげで-31バイト。
説明:
ここで試してみてください。
a->{ // Method with integer-array parameter and boolean return-type
int s=0, // Sum-integer, starting at 0
p=1; // Product-integer, starting at 1
for(int i:a){ // Loop over the input-array
s+=i; // Add current item to sum
p|=1<<i; // Take 1 bitwise left-shifted with `i`, and bitwise-OR it with `p`
} // End of loop
return p==14 // If `p` is now exactly 14 (`0b1110`)
&s<7? // and the sum is 6 or lower:
24 // Return 24
: // Else:
s; // Return the sum
} // End of method
(非効率)が()で、合計が6以下()の[1,2,3]場合にのみ(任意の順序で)可能な結果になるという証明:ここで試してみてください。p0b1110p==14s<7
p==14(は、0b1110入力値が32のカバーの値を法ときに限り)真と評価1、2及び3及び他の値(含まないp|=1<<i)(各値は1+回発生しなければなりません)。一致p==14する入力の合計は、(with )6を除くすべての入力よりも大きくなります。ネヴァイ1,2,3s=a*1+b*2+c*3+u*32a>0,b>0,c>0,u>=0
古い71バイトの答え:
a->{int s=0,p=1;for(int i:a){s+=i;p*=i;}return a.length==3&p==s?s*4:s;}
ゼロ以外の自然数が与えられた3つの任意の数について、[1,2,3]その積(1+2+3 == 1*2*3)(正の合計)に等しい合計を持つのは(任意の順序で)だけです:
合計が Leo Kurlandchik&Andrzej Nowickiによる積
(非効率的)唯一の[1,2,3](任意の順序で)であり、[0,0,0]負でない数と3の長さで可能な結果になることの証明:ここで試してください。
だから、s*4意志はなり6*4 = 24ため[1,2,3]、と0*4 = 0のために[0,0,0]。