Point calculation

This commit is contained in:
2022-07-03 18:27:59 +02:00
parent 3c920dad02
commit e06d33da06

View File

@ -161,7 +161,8 @@ namespace WinGreed
} }
string outPut = CheckForDifferentOutCome(numbers); string outPut = CheckForDifferentOutCome(numbers);
txtMaxValue.Text = outPut;
txtMaxValue.Refresh();
numbers.ForEach(x => Debug.Write($"{x}, ")); numbers.ForEach(x => Debug.Write($"{x}, "));
Debug.WriteLine(" -"); Debug.WriteLine(" -");
@ -170,7 +171,140 @@ namespace WinGreed
private string CheckForDifferentOutCome(List<int> numbers) private string CheckForDifferentOutCome(List<int> numbers)
{ {
throw new NotImplementedException(); var outPut = "";
var sum = 0;
numbers.Sort();
sum = CheckForDoubleTriple(numbers);
sum += CheckForTripleDouble(numbers);
sum += CheckForSerial(numbers);
sum += CheckForThreeOrMore(numbers);
outPut=sum.ToString();
return outPut;
}
private int CheckForSerial(List<int> numbers)
{
for(int i = 0; i < numbers.Count; i++)
{
if(numbers[i] != i + 1)
{
return 0;
}
}
return 1500;
}
private int CheckForThreeOrMore(List<int> numbers)
{
var result = 0;
var ones = 0;
var twos = 0;
var threes = 0;
var fours = 0;
var fives = 0;
var sixs = 0;
if(numbers.Count > 2)
{
foreach(var number in numbers)
{
switch (number)
{
case 1:
{
ones++;
break;
}
case 2:
{
twos++;
break;
}
case 3:
{
threes++;
break;
}
case 4:
{
fours++;
break;
}
case 5:
{
fives++;
break;
}
case 6:
{
sixs++;
break;
}
default:
break;
}
}
result += NumberCounts(ones, 1);
result += NumberCounts(twos, 2);
result += NumberCounts(threes, 3);
result += NumberCounts(fours, 4);
result += NumberCounts(fives, 5);
result += NumberCounts(sixs, 6);
}
return result;
}
public int NumberCounts(int value,int nmbr)
{
if (value > 2)
{
var back = nmbr*(nmbr==1?1000:100);
if (value > 3)
{
back *= 2;
}
if (value > 4)
{
back *= 2;
}
if (value > 5)
{
back *= 2;
}
return back;
}
return 0;
}
private int CheckForTripleDouble(List<int> numbers)
{
if (numbers.Count == 6
&& numbers[0] == numbers[1]
&& numbers[2] == numbers[3]
&& numbers[4] == numbers[5]
&& numbers[1] != numbers[2]
&& numbers[3] != numbers[4]
&& numbers[0] != numbers[5])
{
return 1500;
}
return 0;
}
private int CheckForDoubleTriple(List<int> numbers)
{
if(numbers.Count == 6
&& numbers[0] == numbers[2]
&& numbers[3] == numbers[5]
&& numbers[2] != numbers[3])
{
return 1500;
}
return 0;
} }
private void btnDiceTmpl_Click(object sender, EventArgs e) private void btnDiceTmpl_Click(object sender, EventArgs e)