yanlinlin82 在"用R搬运汉诺塔盘子(递归演示)"
  1. 看到有人讨论递归,就想起这个用于讨论递归的经典问题:
    三根柱子,N个大小不同的盘子,大盘子不能叠到小盘子上,每次只能把某根柱子的最上面的一个盘子移动到另一个柱子的最上面,开始所有盘子都在{dy}根柱子处,求解从把所有盘子移动到另一根柱子的方法。详细内容可参考:

    直接贴代码(很简单,我就不写注释了):

    hanoi <>function(n) {
            tower <>list(1:nNULLNULL)
            color <>rainbow(n)
            bgcolor <>par('bg')
            if (bgcolor == 'transparent'bgcolor <>'white'

            draw.hanoi <>function() {
                    for (i in 1:3) {
                            screen(i)
                            plot(c(-nn), c(0n + 2), type = 'n'xlab = ''ylab = '')
                            rect(-n0nn + 2border = bgcolorcol = bgcolor)
                            if (length(tower[[i]]) > 0) {
                                    barplot(rev(tower[[i]]), add = TRUEhoriz = TRUEcol = color[rev(tower[[i]])])
                                    barplot(-rev(tower[[i]]), add = TRUEhoriz = TRUEcol = color[rev(tower[[i]])])
                            }
                    }
            }   

            move.hanoi <>function(kfromtovia) {
                    if (k > 1) {
                            move.hanoi(k - 1fromviato)
                            move.hanoi(1fromtovia)
                            move.hanoi(k - 1viatofrom)
                    } else {
                            cat('Move 'tower[[from]][1], ' from 'LETTERS[from], ' to 'LETTERS[to], '\n')
                            tower[[to]] <>c(tower[[from]][1], tower[[to]])
                            tower[[from]] <>tower[[from]][-1]
                            draw.hanoi()
                            Sys.sleep(.5)
                    }
            }   

            close.screen(all = TRUE)
            split.screen(c(1,3))

            draw.hanoi()
            move.hanoi(n123)
    }

    hanoi(7)

    这段代码我只在Linux下测试通过,效果凑合,Windows下没测试。

  2. 回复 的 :收录请自便,我一向支持copyleft
    回复 的 :点鼠标很容易实现,用locator()就足够,但那样就不是在演示递归了。
    回复 的 :这个程序只是很浅显地使用了barplot(这是我找到的最接近盘子的图),要论道图形,还真只有谢老大有资格。
    回复 的 :说来惭愧,眼看天气越来越暖和了,离暑假也越来越近了,可我至今还没想清楚可以演讲些什么,似乎我总在瞎折腾各种东西,却没有一个方面研究得深入的。

  3. 回复 的 :你直接加入,当我们的领导吧。要弄的好看一些的话,还得设置盘子的大小等等。光是柱形图貌似还韵味不足。我觉得该游戏应该既让玩家玩得高兴,也让玩家知道{zy}的步骤。

    回复 的 :强烈支持,暑假里大家都稍微闲了点,尤其是大四毕业生。当然,现在有时间的可以早些准备。

    回复 的 :既然要出书,那么书的定位、架构、内容、格式、作者等等都应该仔细斟酌斟酌了。cos上的优秀帖子还是有限,并且有些还不太适合放在书里面,比如大段大段的code。要出本像样的书,估计还得费很大功夫,并且出的书应该和现有的中文版有所区别。我觉得大家可以分成小团队,各个小团队负责一块,以已有的外文R书籍、理论书籍为主要参考。

您必须才能回复。

郑重声明:资讯 【yanlinlin82 在"用R搬运汉诺塔盘子(递归演示)"】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——