summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichał Klichowicz <emkael@tlen.pl>2024-02-05 17:55:42 +0100
committerMichał Klichowicz <emkael@tlen.pl>2024-02-05 17:55:42 +0100
commitf7df1821ebca17f1f5ad4cc4a0e922ca59d9d76e (patch)
tree8a6e7daf558acd548fa471cb88e2bb7d7ed8e0e9
parent281f7a14d287e7ed36fee1c0d8a6c6ef60291009 (diff)
Do not analyze a denomination/declarer combo if it's zero-frequency in contracts mode
-rw-r--r--Analizator9000/Analizator9000/Form1.cs33
1 files changed, 23 insertions, 10 deletions
diff --git a/Analizator9000/Analizator9000/Form1.cs b/Analizator9000/Analizator9000/Form1.cs
index d80dcd9..e606777 100644
--- a/Analizator9000/Analizator9000/Form1.cs
+++ b/Analizator9000/Analizator9000/Form1.cs
@@ -379,25 +379,38 @@ namespace Analizator9000
throw new Exception(GetResourceManager().GetString("Form1_analyzeNoDealsError", GetCulture()));
}
List<Contract> cons = new List<Contract>();
- foreach (int i in Enumerable.Range(1, 5))
+ // we run either "old" Accumulator or contract analysis with ScoreAccumulator,
+ // depending on the button of event origin
+ if (sender.GetHashCode().Equals(this.analyzeButton.GetHashCode()))
{
- foreach (int j in Enumerable.Range(1, 4))
+ this.ac = new Accumulator(deals, cons, this);
+ foreach (int i in Enumerable.Range(1, 5))
{
- if (((CheckBox)contractTable.GetControlFromPosition(i, j)).Checked)
+ foreach (int j in Enumerable.Range(1, 4))
{
- cons.Add(new Contract(5 - i, j - 1));
+ if (((CheckBox)contractTable.GetControlFromPosition(i, j)).Checked)
+ {
+ cons.Add(new Contract(5 - i, j - 1));
+ }
}
}
}
+ else
+ {
+ foreach (Contract con in this.contractsToScore)
+ {
+ Contract newCon = new Contract(con.Denomination, con.Declarer);
+ if (!cons.Contains(newCon))
+ {
+ cons.Add(newCon);
+ }
+ }
+ this.ac = new ScoreAccumulator(deals, cons, this.contractsToScore, vulnerabilityBox.SelectedIndex, this);
+ }
if (cons.Count == 0)
{
throw new Exception(GetResourceManager().GetString("Form1_analyzeNoContractsError", GetCulture()));
}
- // we run either "old" Accumulator or contract analysis with ScoreAccumulator,
- // depending on the button of event origin
- this.ac = sender.GetHashCode().Equals(this.analyzeButton.GetHashCode())
- ? new Accumulator(deals, cons, this)
- : new ScoreAccumulator(deals, cons, this.contractsToScore, vulnerabilityBox.SelectedIndex, this);
this.ac.run(10);
}
catch (Exception ex)
@@ -672,7 +685,7 @@ namespace Analizator9000
Contract rowContract = this.getContractFromTableRow(row);
if (rowContract != null)
{
- if (rowContract.Level > 0)
+ if (rowContract.Level > 0 && rowContract.Frequency > 0)
{
this.toggleBoxes(Enumerable.Range(5 - rowContract.Denomination, 1), Enumerable.Range(rowContract.Declarer + 1, 1), false); // forcing analysis of certain denomination-declarer combinations
}