♜ ¿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:
const 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.
import React, { useState } from 'react';

const generateRandomPermutation = (): number[] => {
    const columns = [0,1,2,3,4,5,6,7];
    for (let i = columns.length - 1; i > 0; i--) {
        const j = Math.floor(Math.random() * (i + 1));
        [columns[i], columns[j]] = [columns[j], columns[i]];
    }
    return columns;
};

const Chessboard: React.FC = () => {
    const [positions, setPositions] = useState(generateRandomPermutation());

    return (
        <div>
            <button onClick={() => setPositions(generateRandomPermutation())} className="mb-4 bg-black text-white p-2 rounded">
                Generar nueva posición
            </button>
            <div className="grid grid-cols-8 gap-1 w-64 h-64">
                {Array.from({ length: 8 }).map((_, row) => (
                    Array.from({ length: 8 }).map((_, col) => (
                        <div
                            key={`${row}-${col}`}
                            className={`w-8 h-8 flex items-center justify-center ${(row + col) % 2 === 0 ? 'bg-white' : 'bg-gray-800'}`}
                        >
                            {positions[row] === col ? '♜' : ''}
                        </div>
                    ))
                ))}
            </div>
        </div>
    );
};

export 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...