install.packages("ref")
require("ref")
n=4
Tower <- list(Tower = list(a = n:1, b = numeric(), c = numeric()))
class(Tower) <- "HanoiTower"
move.HTower <- function (Tower, print=FALSE, plot=TRUE, n = 1, from = 1, to = 1) {
if (n == 1) {
nfrom <- length(Tower$Tower[[from]])
Tower$Tower[[to]][length(Tower$Tower[[to]]) + 1] <- Tower$Tower[[from]][nfrom]
length(Tower$Tower[[from]]) <- nfrom - 1
if (print) print.HanoiTower(Tower)
if (plot) plot.HanoiTower(Tower)
}
else {
free <- (1:3)[-c(from, to)]
Tower <- move.HTower(Tower, print, plot, n - 1, from, free)
Tower <- move.HTower(Tower, print, plot, 1, from, to)
Tower <- move.HTower(Tower, print, plot, n - 1, free, to)
}
Sys.sleep(0.5) #readline()
Tower
}
move.HTower(Tower, n=n, from = 1, to = 2)
R语言实现汉诺塔
最新推荐文章于 2020-04-18 16:47:08 发布