#' Resuelve el juego torre de hanoi
#'
#' Mueve los discos de la torre de inicio hacia la torre de fin, usando la auxiliar como
#' intermediario, simulando el juego torre de hanoi.
#'
#' @param cant.discos
#' entero no negativo
#' @param origen
#' vector de enteros
#' @param destino
#' vector de enteros sin elementos
#' @param auxiliar
#' vector de enteros sin elementos
#'
#' @return
#' lista de 3 elementos, siendo origen, destino y auxiliar respectivamente
#' @export
#'
#' @examples
#' torre_hanoi(3, c(1,2,3), c(), c())
torre_hanoi <- function(cant.discos, origen, destino, auxiliar)
{
if ( cant.discos%%1 != 0 || cant.discos <= 0)
{
return(F)
}
if( (!is.numeric(origen) && !is.null(origen)) || (!is.numeric(destino) && !is.null(destino))
|| (!is.numeric(auxiliar) && !is.null(auxiliar)) )
{
return(F)
}
if(cant.discos == 1)
{
destino <- c(origen[1], destino)
origen <- origen[-1]
}
else if (cant.discos > 1)
{
list.aux <- torre_hanoi(cant.discos - 1, origen, auxiliar, destino)
origen <- list.aux[["origen"]]
destino <- list.aux[["auxiliar"]]
auxiliar <- list.aux[["destino"]]
destino <- c(origen[1], destino)
origen <- origen[-1]
list.aux <- torre_hanoi(cant.discos - 1, auxiliar, destino, origen)
origen <- list.aux[["auxiliar"]]
destino <- list.aux[["destino"]]
auxiliar <- list.aux[["origen"]]
}
return(list("origen" = origen, "destino" = destino, "auxiliar" = auxiliar))
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.