Matematika BBFS — Permutasi 2D, 3D, 4D dari Pool Digit
BBFS (Bolak-Balik Full Set) terdengar fancy, tapi underlying-nya adalah konsep matematika klasik: permutasi tanpa pengulangan posisi.
BBFS (Bolak-Balik Full Set) terdengar fancy, tapi underlying-nya adalah konsep matematika klasik: permutasi tanpa pengulangan posisi.
BBFS = Bolak-Balik Full Set. Konsep: ambil pool digit unik (subset dari 0-9), generate semua kemungkinan susunan tanpa pengulangan posisi. Misal pool [1, 2, 3] untuk 2D = 12, 13, 21, 23, 31, 32 (6 line).
Untuk pool n digit unik, total line BBFS k-digit = n × (n-1) × (n-2) × ... × (n-k+1) = n! / (n-k)! (notasi: P(n, k)).
| POOL | BBFS 2D | BBFS 3D | BBFS 4D |
|---|---|---|---|
| 3 digit | 6 | 6 | — |
| 4 digit | 12 | 24 | 24 |
| 5 digit | 20 | 60 | 120 |
| 6 digit | 30 | 120 | 360 |
| 7 digit | 42 | 210 | 840 |
| 8 digit | 56 | 336 | 1.680 |
| 9 digit | 72 | 504 | 3.024 |
| 10 digit | 90 | 720 | 5.040 |
function bbfs4D(pool: number[]): string[] {
const out: string[] = [];
for (let i = 0; i < pool.length; i++) {
for (let j = 0; j < pool.length; j++) {
if (i === j) continue;
for (let k = 0; k < pool.length; k++) {
if (k === i || k === j) continue;
for (let l = 0; l < pool.length; l++) {
if (l === i || l === j || l === k) continue;
out.push(`${pool[i]}${pool[j]}${pool[k]}${pool[l]}`);
}
}
}
}
return out;
}Nested loop dengan exclusion check di tiap level. Time complexity: O(n!) untuk full pool — makanya pool 10 digit (10! / 6! = 5040 line) udah batas atas yang masih reasonable untuk render UI.
Mengapa 6-7 digit jadi sweet spot untuk BBFS 4D? Pertimbangan: coverage vs cost.
BBFS murni hanya generate semua permutasi. Untuk persempit lebih, combine dengan filter:
Combine BBFS 7 digit (840 line) + filter jumlah (mod 10 specific) = ~80-90 line. Add filter shio = ~20-30 line. Inilah workflow tradisional yang dipakai pemain togel berpengalaman.