[R-es] Ayuda erreficando un código
Marcelino de la Cruz
marcelino.delacruz en upm.es
Vie Sep 27 10:29:57 CEST 2013
A ver esto:
p<- c(1,5,2,3,4,6,8,7)
!any(match((2:length(p))-(1:(length(p)-1)), p[-length(p)]-p[-1]))
Saludos,
Marcelino
El 27/09/2013 10:05, Rafael Garcia Leiva escribió:
> 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]]
>
>
>
> _______________________________________________
> R-help-es mailing list
> R-help-es en r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>
Más información sobre la lista de distribución R-help-es