From 37e066d0fb92b21c69914e1128c527ca777509d6 Mon Sep 17 00:00:00 2001 From: karthik Date: Tue, 29 Jul 2025 23:17:09 +0530 Subject: [PATCH] fix : TAN logic is done (normal,field and BOX) --- .../selection.service/selection.service.ts | 68 ++++--------------- 1 file changed, 14 insertions(+), 54 deletions(-) diff --git a/btc-UI/src/app/components/selection.service/selection.service.ts b/btc-UI/src/app/components/selection.service/selection.service.ts index 91e5f10..ae763e4 100644 --- a/btc-UI/src/app/components/selection.service/selection.service.ts +++ b/btc-UI/src/app/components/selection.service/selection.service.ts @@ -111,7 +111,7 @@ export class SelectionService { const nonFieldNumbers = (group1_is_field ? group2 : group1).filter(n => typeof n === 'number') as number[]; const pairSet = new Set(); const fieldNumbers = fieldSide.length > 0 ? fieldSide : Array.from({ length: 12 }, (_, i) => i + 1); - for (let j of nonFieldNumbers) { + for (let j of nonFieldNumbers) { for (let i of fieldNumbers) { if (i !== j) { let min = Math.min(i, j); @@ -148,9 +148,6 @@ export class SelectionService { const group1 = dashIndices.length > 0 ? numbers.slice(0, dashIndices[0]) : numbers; const group2 = dashIndices.length > 0 ? numbers.slice(dashIndices[0] + 1, dashIndices[1] || numbers.length) : []; const group3 = dashIndices.length > 1 ? numbers.slice(dashIndices[1] + 1) : []; - const group1Count = group1.includes('F') ? 12 : group1.filter(n => typeof n === 'number').length; - const group2Count = group2.includes('F') ? 12 : group2.filter(n => typeof n === 'number').length; - const group3Count = group3.includes('F') ? 12 : group3.filter(n => typeof n === 'number').length; let combinations = 0; @@ -162,56 +159,19 @@ export class SelectionService { combinations = allNums.length >= 3 ? this.calculatePermutationsN(allNums.length, 3) : 0; } } else { - if (group1.includes('F') && group2.includes('F') && group3.includes('F')) { - combinations = 12 * 11 * 10; // nP3 - } else if (group1.includes('F') || group2.includes('F') || group3.includes('F')) { - const counts = [group1Count, group2Count, group3Count]; - combinations = counts.reduce((acc, count) => acc * count, 1); - if (group1.includes('F') && !group2.includes('F') && !group3.includes('F')) { - const numGroup2 = group2.filter(n => typeof n === 'number') as number[]; - const numGroup3 = group3.filter(n => typeof n === 'number') as number[]; - combinations = 0; - for (let i = 1; i <= 12; i++) { - for (const j of numGroup2) { - for (const k of numGroup3) { - if (i !== j && i !== k && j !== k) combinations++; - } - } - } - } else if (group2.includes('F') && !group1.includes('F') && !group3.includes('F')) { - const numGroup1 = group1.filter(n => typeof n === 'number') as number[]; - const numGroup3 = group3.filter(n => typeof n === 'number') as number[]; - combinations = 0; - for (const i of numGroup1) { - for (let j = 1; j <= 12; j++) { - for (const k of numGroup3) { - if (i !== j && i !== k && j !== k) combinations++; - } - } - } - } else if (group3.includes('F') && !group1.includes('F') && !group2.includes('F')) { - const numGroup1 = group1.filter(n => typeof n === 'number') as number[]; - const numGroup2 = group2.filter(n => typeof n === 'number') as number[]; - combinations = 0; - for (const i of numGroup1) { - for (const j of numGroup2) { - for (let k = 1; k <= 12; k++) { - if (i !== j && i !== k && j !== k) combinations++; - } - } - } - } - } else { - const numGroup1 = group1.filter(n => typeof n === 'number') as number[]; - const numGroup2 = group2.filter(n => typeof n === 'number') as number[]; - const numGroup3 = group3.filter(n => typeof n === 'number') as number[]; - for (const a of numGroup1) { - for (const b of numGroup2) { - if (b === a) continue; - for (const c of numGroup3) { - if (c === a || c === b) continue; - combinations++; - } + // Define possible values for each group: 'F' means all runners (1 to 12), else only selected numbers + const runners = Array.from({ length: 12 }, (_, i) => i + 1); + const group1Vals = group1.includes('F') ? runners : group1.filter(n => typeof n === 'number') as number[]; + const group2Vals = group2.includes('F') ? runners : group2.filter(n => typeof n === 'number') as number[]; + const group3Vals = group3.includes('F') ? runners : group3.filter(n => typeof n === 'number') as number[]; + + combinations = 0; + for (const i of group1Vals) { + for (const j of group2Vals) { + if (i === j) continue; + for (const k of group3Vals) { + if (i === k || j === k) continue; + combinations++; } } }