[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