平衡比率【难度:3级】:
答案1:
using System;
using System. Linq;
public class Kata {
public static int NextProduct ( int [ ] desiredRatio, int [ ] actualStock)
{
var desired = desiredRatio. Select ( i = > ( ( double ) i) / desiredRatio. Sum ( ) ) . ToList ( ) ;
var actual = actualStock. Select ( i = > ( ( double ) i) / actualStock. Sum ( ) ) . ToList ( ) ;
if ( desired. SequenceEqual ( actual) )
{
return - 1 ;
}
double maxDiff = 0 ;
int maxDiffIndex = - 1 ;
for ( int i = 0 ; i < desiredRatio. Length; i++ )
{
if ( desired[ i] > actual[ i] )
{
var diff = desired[ i] - actual[ i] ;
if ( maxDiff <= diff)
{
maxDiff = diff;
maxDiffIndex = i;
}
}
}
return maxDiffIndex;
}
}
答案2:
using System;
using System. Linq;
public class Kata
{
public static int NextProduct ( int [ ] dr, int [ ] ast)
{
Console. WriteLine ( string . Join ( "," , dr. Select ( x = > x) ) ) ;
Console. WriteLine ( string . Join ( "," , ast. Select ( x = > x) ) ) ;
int maxD = dr. Sum ( ) ;
int maxS = ast. Sum ( ) ;
dr = dr. Select ( x = > x * 100 / maxD) . ToArray ( ) ;
ast = ast. Select ( x = > x * 100 / maxS) . ToArray ( ) ;
int r = dr[ 0 ] - ast[ 0 ] ;
int ans = 0 ;
int j = 0 ;
if ( dr[ 0 ] - ast[ 0 ] == 0 ) j++ ;
for ( int i = 1 ; i < dr. Length; i++ )
{
int temp =