Hola a todos,

Después de presentar ayer en las jornadas de usuarios de R de Madrid el
problema de las ocho reinas y su solución con R, unas de las críticas que
recibí es que el código de la solución no iba mucho con el estilo de R. En
concreto, la función que recibe una lista con la posición de las reinas
(ejemplo (1,5,2,3,4,6,8,7)) y calcula si se atacan (comparten la misma
diagonal).

El código es el siguiente:

correcto <- function(p) {
    n <- length(p)
    for(i in 1:(n-1)) {
        for(j in (i+1):n) {
            if(abs(p[j] - p[i]) == abs(j – i))
                return(FALSE)
            }
        }
    return(TRUE)
}

Si algún alma caritativa de la lista me ayudase a "erreficar" el código le
quedaría muy agradecido. De hecho, en la reunión de usuarios se comentó que
seguramente sea posible escribir esta función con una única línea de código
R.

Muchas gracias a todos

Rafael García
Twitter: @rgarcialeiva
Blog: http://mundoalgoritmos.blogspot.com.es/

	[[alternative HTML version deleted]]

