using System;publicclassKata{publicstaticdoubleMilkPrice(double litres,double pricePerLitre){double sum =0;while(litres >=2){
pricePerLitre -=0.05;
sum +=2* pricePerLitre;
litres -=2;}if(litres >0)
sum += litres * pricePerLitre;return Math.Round(sum,2);}}
答案3:
using System;publicclassKata{publicstaticdoubleMilkPrice(double litres,double pricePerLitre){double sum =0;double price = pricePerLitre;while(litres >=2){
pricePerLitre -=0.05;
sum += pricePerLitre *2;
litres -=2;}
sum += litres * pricePerLitre;return Math.Round(sum,2);}}
答案4:
using System;publicclassKata{publicstaticdoubleMilkPrice(double litres,double pricePerLitre){double sum =0;if(litres>=2){for(var i=0;i<=litres;i+=2){
pricePerLitre -=0.05;var litresCalc =2;
sum += litresCalc * pricePerLitre;
litres--;
litres--;}}
sum += litres * pricePerLitre;return Math.Round(sum,2);}}
答案5:
using System;publicclassKata{publicstaticdoubleMilkPrice(double litres,double pricePerLitre){double total =0;double discount =0.05;double price = pricePerLitre;while(litres >=2){
price -= discount;
total +=2* price;
litres -=2;}//remining portion
total += litres * price;return Math.Round( total,2);;}}
答案6:
using System;publicclassKata{publicstaticdoubleMilkPrice(double litres,double pricePerLitre){double tot =0;int floored =(int)Math.Floor(litres);int remainder;int result = Math.DivRem(floored,2,out remainder);double remaining = litres-floored+remainder;for(int i =1; i <= result; i++){
pricePerLitre-=0.05;
tot+=(2*pricePerLitre);}
tot+=(remaining*pricePerLitre);return Math.Round(tot,2);}}
答案7:
using System;publicclassKata{publicstaticdoubleMilkPrice(double l,double p){if(l <2)return Math.Round(l * p,2);
p -=0.05;double check =0;double res =0;while(check <= l -2){
res = res +2* p;
check = check +2;
p = p -0.05;}
res = res +(l - check)*(p +0.05);return Math.Round(res,2);}}