fix : QUI logic is done (working)
This commit is contained in:
parent
2669f234dd
commit
c68db27cad
@ -93,39 +93,44 @@ export class SelectionService {
|
|||||||
const dashIndex = numbers.indexOf('-');
|
const dashIndex = numbers.indexOf('-');
|
||||||
const group1 = dashIndex === -1 ? numbers : numbers.slice(0, dashIndex);
|
const group1 = dashIndex === -1 ? numbers : numbers.slice(0, dashIndex);
|
||||||
const group2 = dashIndex === -1 ? [] : numbers.slice(dashIndex + 1);
|
const group2 = dashIndex === -1 ? [] : numbers.slice(dashIndex + 1);
|
||||||
const group1Count = group1.includes('F') ? 12 : group1.filter(n => typeof n === 'number').length;
|
const group1_is_field = group1.includes('F');
|
||||||
const group2Count = group2.includes('F') ? 12 : group2.filter(n => typeof n === 'number').length;
|
const group2_is_field = group2.includes('F');
|
||||||
|
const group1Numbers = group1.filter(n => typeof n === 'number') as number[];
|
||||||
|
const group2Numbers = group2.filter(n => typeof n === 'number') as number[];
|
||||||
|
|
||||||
let combinations = 0;
|
let combinations = 0;
|
||||||
|
|
||||||
if (isBoxed) {
|
if (isBoxed) {
|
||||||
const allNums = [...group1, ...group2].filter(n => typeof n === 'number') as number[];
|
const allNums = [...group1, ...group2].filter(n => typeof n === 'number') as number[];
|
||||||
const uniqueCount = new Set(allNums).size + (group1.includes('F') || group2.includes('F') ? 12 : 0);
|
const uniqueCount = new Set(allNums).size + (group1_is_field || group2_is_field ? 12 : 0);
|
||||||
combinations = uniqueCount >= 2 ? (uniqueCount * (uniqueCount - 1)) / 2 : 0;
|
combinations = uniqueCount >= 2 ? (uniqueCount * (uniqueCount - 1)) / 2 : 0;
|
||||||
} else {
|
} else if (group1_is_field && group2_is_field) {
|
||||||
if (group1.includes('F') && group2.includes('F')) {
|
combinations = (12 * 11) / 2; // C(12,2)
|
||||||
combinations = (12 * 11) / 2; // nC2 for 12 runners
|
} else if (group1_is_field || group2_is_field) {
|
||||||
} else if (group1.includes('F') || group2.includes('F')) {
|
const fieldSide = group1_is_field ? group1Numbers : group2Numbers;
|
||||||
const nonFieldGroup = group1.includes('F') ? group2 : group1;
|
const nonFieldNumbers = (group1_is_field ? group2 : group1).filter(n => typeof n === 'number') as number[];
|
||||||
const nonFieldNumbers = nonFieldGroup.filter(n => typeof n === 'number') as number[];
|
const pairSet = new Set<string>();
|
||||||
combinations = (12 * nonFieldNumbers.length) / 2;
|
const fieldNumbers = fieldSide.length > 0 ? fieldSide : Array.from({ length: 12 }, (_, i) => i + 1);
|
||||||
if (nonFieldNumbers.length > 0) {
|
for (let j of nonFieldNumbers) {
|
||||||
const unique = new Set(nonFieldNumbers);
|
for (let i of fieldNumbers) {
|
||||||
combinations = unique.size * 11; // Each number pairs with 11 others
|
if (i !== j) {
|
||||||
}
|
let min = Math.min(i, j);
|
||||||
} else {
|
let max = Math.max(i, j);
|
||||||
const numGroup1 = group1.filter(n => typeof n === 'number') as number[];
|
pairSet.add(`${min},${max}`);
|
||||||
const numGroup2 = group2.filter(n => typeof n === 'number') as number[];
|
|
||||||
const pairSet = new Set<string>();
|
|
||||||
for (let a of numGroup1) {
|
|
||||||
for (let b of numGroup2) {
|
|
||||||
if (a === b) continue;
|
|
||||||
let key = a < b ? `${a},${b}` : `${b},${a}`;
|
|
||||||
pairSet.add(key);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
combinations = pairSet.size;
|
|
||||||
}
|
}
|
||||||
|
combinations = pairSet.size;
|
||||||
|
} else {
|
||||||
|
const pairSet = new Set<string>();
|
||||||
|
for (let a of group1Numbers) {
|
||||||
|
for (let b of group2Numbers) {
|
||||||
|
if (a === b) continue;
|
||||||
|
let key = a < b ? `${a},${b}` : `${b},${a}`;
|
||||||
|
pairSet.add(key);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
combinations = pairSet.size;
|
||||||
}
|
}
|
||||||
|
|
||||||
updated.numbers = [...group1, '-', ...group2];
|
updated.numbers = [...group1, '-', ...group2];
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user