♜ ¿Cuántas formas hay de colocar 8 torres en un tablero de ajedrez?

Fecha de publicación: 2025-05-26
Tablero de ajedrez con torres
Este es un clásico problema de combinatoria: ¿De cuántas maneras distintas se pueden colocar 8 torres en un tablero de ajedrez 8×8 sin que se amenacen entre sí?

La condición clave es que no haya dos torres en la misma fila ni en la misma columna. Así, el problema se reduce a encontrar todas las permutaciones posibles de 8 elementos.

📐 Solución matemática

Como hay 8 filas y 8 columnas, y cada torre debe ocupar una fila y una columna distinta:
El número de formas distintas es simplemente:
ts
1const totalWays = factorial(8); // 8! = 40320
Aquí te muestro un pequeño código de React que genera y muestra una de estas 40,320 configuraciones de manera aleatoria.
tsx
1import React, { useState } from 'react';
2
3const generateRandomPermutation = (): number[] => {
4    const columns = [0,1,2,3,4,5,6,7];
5    for (let i = columns.length - 1; i > 0; i--) {
6        const j = Math.floor(Math.random() * (i + 1));
7        [columns[i], columns[j]] = [columns[j], columns[i]];
8    }
9    return columns;
10};
11
12const Chessboard: React.FC = () => {
13    const [positions, setPositions] = useState(generateRandomPermutation());
14
15    return (
16        <div>
17            <button onClick={() => setPositions(generateRandomPermutation())} className="mb-4 bg-black text-white p-2 rounded">
18                Generar nueva posición
19            </button>
20            <div className="grid grid-cols-8 gap-1 w-64 h-64">
21                {Array.from({ length: 8 }).map((_, row) => (
22                    Array.from({ length: 8 }).map((_, col) => (
23                        <div
24                            key={`${row}-${col}`}
25                            className={`w-8 h-8 flex items-center justify-center ${(row + col) % 2 === 0 ? 'bg-white' : 'bg-gray-800'}`}
26                        >
27                            {positions[row] === col ? '♜' : ''}
28                        </div>
29                    ))
30                ))}
31            </div>
32        </div>
33    );
34};
35
36export default Chessboard;
Este componente muestra un tablero de ajedrez con una torre en cada fila y una columna distinta. Cada vez que presionas el botón, se genera una nueva permutación aleatoria.

🔁 ¿Por qué 8!?

Es como asignar una torre a cada fila, eligiendo en qué columna ponerla. Tienes 8 opciones para la primera torre, 7 para la siguiente... y así hasta que no queden columnas libres.
Este tipo de razonamiento aparece mucho en problemas de ajedrez, como también en el más famoso problema de las 8 reinas. ¡Pero eso te lo dejo para otro post!
Cargando tablero...