#powershell 汉洛塔
#可变长数组Collections.ArrayList操作
#递归函数
#文字排版和配色
function hanoi($n)
{
$global:num=0
$global:arraya=New-Object Collections.ArrayList
$global:arrayb=New-Object Collections.ArrayList
$global:arrayc=New-Object Collections.ArrayList
$global:arraya.addrange(1..$n)
Write-Host $("初始状态:").PadLeft(13) -NoNewline
Write-Host ($global:arraya -join ",").PadRight(9) -NoNewline
Write-Host ($global:arrayb -join ",").PadRight(9) -NoNewline
Write-Host ($global:arrayc -join ",").PadRight(9)
function go($n,$a,$b,$c)
{ if($n -eq 1){   $global:num++if($a -eq "a" -and $c -eq "b"){$s1="a";$a1="-->     ";$s2="b  ";$a2="";$s3=""$global:arrayb.Insert(0,$global:arraya[0])$global:arraya.Removeat(0)}if($a -eq "a" -and $c -eq "c"){$s1="a";$a1="";$s2="---->";$a2="";$s3="c"$global:arrayc.Insert(0,$global:arraya[0])$global:arraya.Removeat(0)            }if($a -eq "b" -and $c -eq "a"){$s1="a";$a1="<--     ";$s2="b  ";$a2="";$s3=""$global:arraya.Insert(0,$global:arrayb[0])$global:arrayb.Removeat(0)            }if($a -eq "b" -and $c -eq "c"){$s1=" ";$a1="";$s2="b  ";$a2="-->";$s3="c"$global:arrayc.Insert(0,$global:arrayb[0])$global:arrayb.Removeat(0)            }if($a -eq "c" -and $c -eq "a"){$s1="a";$a1="";$s2="<----";$a2="";$s3="c"$global:arraya.Insert(0,$global:arrayc[0])$global:arrayc.Removeat(0)           }if($a -eq "c" -and $c -eq "b"){$s1=" ";$a1="";$s2="b  ";$a2="<--";$s3="c"$global:arrayb.Insert(0,$global:arrayc[0])$global:arrayc.Removeat(0)      }  Write-Host $("第$num`步:").PadLeft(15) -NoNewlineWrite-Host "$($s1)" -ForegroundColor 3 -NoNewline -BackgroundColor 15Write-Host "$($a1.PadLeft(17))" -ForegroundColor 1 -NoNewline -BackgroundColor 15Write-Host "$($s2.PadRight(12))" -ForegroundColor 9 -NoNewline -BackgroundColor 15Write-Host "$($a2.PadLeft(6))" -ForegroundColor 1 -NoNewline -BackgroundColor 15Write-Host "$($s3.PadLeft(12))" -ForegroundColor 12 -BackgroundColor 15Write-Host $("当前状态:").PadLeft(13) -NoNewlineWrite-Host ($global:arraya -join ",").PadRight(18) -NoNewlineWrite-Host ($global:arrayb -join ",").PadRight(12) -NoNewlineWrite-Host ($global:arrayc -join ",").PadLeft(18)}else{go ($n-1) $a $c $bgo 1 $a $b $cgo ($n-1) $b $a $c}}
go $n "a" "b" "c"
}hanoi 4

powershell 汉洛塔相关推荐

  1. c语言程序代码应缩进几格,汉诺塔c语言程序代码

    汉诺塔c语言程序代码(通过vc++6.0验证)(附讲解) 让我们先看看代码吧 #include int hj(int a,int b, int c,int i) { int t; if(i==1) p ...

  2. 洛谷 P1242 新汉诺塔

    原题链接 题目描述 设有n个大小不等的中空圆盘,按从小到大的顺序从1到n编号.将这n个圆盘任意的迭套在三根立柱上,立柱的编号分别为A.B.C,这个状态称为初始状态. 现在要求找到一种步数最少的移动方案 ...

  3. 汉诺塔(三)_栈的应用

    问题 E: 汉诺塔(三) 时间限制: 3 Sec  内存限制: 128 MB 提交: 2  解决: 2 [提交][状态][讨论版] 题目描述 在印度,有这么一个古老的传说:在世界中心贝拿勒斯(在印度北 ...

  4. 汉诺塔怎么加计数次数c语言,C语言计算汉诺塔最小移动步数 (二)

    前几天写的:C语言计算汉诺塔最小移动步数(一) 当时还不知道用2^n-1这个公式来求解汉诺塔移动步骤.=_= 偶然间在网上发现了这个公式,发现当时写的算法还是比较繁琐的.所以又根据这个公式又写了一个. ...

  5. Ka的递归编程练习 Part4|Hanoi汉诺塔,双色汉诺塔的也有

    1 #include <stdio.h> 2 void hanoi(int s,char a,char b,char c) //a是出发盘,b是中途盘,c是结束盘 3 { 4 if(s== ...

  6. 技术图文:如何实现汉诺塔问题?

    背景 最近在辅导小孩们学习编程,在介绍函数递归时,最典型的就是汉诺塔问题了. 我在这里总结一下,以方便大家的学习. 汉诺塔问题源于印度一个古老传说的益智玩具.大梵天创造世界的时候做了三根金刚石柱子,在 ...

  7. 汉诺塔问题---小昝

    C语言 #include <stdio.h> void move(char A,char C){printf("%c ---> %c\n",A,C); }void ...

  8. 轻松理解汉诺塔问题(图解java描述)

    引言:(易于理解) 汉诺塔看似简单的几行代码,却蕴含着奇妙的算法.我从我个人学习的角度来说.我一开始理解了原理,但是编码不会编,这也就是所谓的眼高手低.多研究多在IDE(eclipse-java,VS ...

  9. 栈与队列5——汉诺塔问题(方案二)

    题目 汉诺塔问题的基础上,增加限制,必须得经过中间,不能直接从左到右或从右到左,求当塔有N层的时候打印最优移动过程和最优移动总步数 要求 法一:递归法 法二:非递归法,用栈来模拟 解析 法二:非递归法 ...

  10. 栈与队列5——汉诺塔问题

    题目 汉诺塔问题的基础上,增加限制,必须得经过中间,不能直接从左到右或从右到左,求当塔有N层的时候打印最优移动过程和最优移动总步数. 要求 法一:递归法 法二:非递归法,用栈来模拟 解析 法一:主要分 ...

最新文章

  1. hbase的shell客户端中不同符号的含义
  2. sqlserver2000 mdf 文件导入
  3. APICloud学习笔记之窗体跳转
  4. mac上使用终端生成RSA公钥和密钥
  5. python正则表达式教程_Python中正则表达式的巧妙使用一文包你必掌握正则,
  6. C#正则表达式提取HTML中IMG标签中的SRC地址
  7. 基于机器学习与BERT的在线招聘欺诈检测平台
  8. [Postgres] Group and Aggregate Data in Postgres
  9. 用数据库表填充下拉列表框
  10. 使用Python对Dicom文件进行读取与写入
  11. web页面和ssh登陆到防火墙
  12. 杜邦线改成焊线_做杜邦线(假)教程
  13. $.ligerDialog弹出对话框
  14. 垃圾小白羊leetcode刷题记录3
  15. 搭建自己的简易服务器(公网)
  16. 软件工程导论课程总结
  17. 华为与「DaoCloud 道客」推出面向元宇宙的云边协同超融合一体机
  18. 销售宝:没有销售技巧,能做软件销售么?大神一针见血解答
  19. 91.91p06xcm71xyz./index.php?,http://email.91dizhi.at.gmail.com.e9p.work/php
  20. python输入数字比大小_Python练习实例47 | 比较任意两个数字的大小

热门文章

  1. C/C++ Linux 键盘检测
  2. so easy(并查集)
  3. 「React 基础」组件生命周期函数componentDidMount()介绍
  4. SpringBoot应用生成RESTful API文档 - Swagger 2.0、OAS 3.0、Springfox、Springdoc、Smart-doc
  5. OAS、Swagger和Springfox
  6. 仓库调用 RAP接口管理平台
  7. 任正非:《一江春水向东流》
  8. Hills And Valleys(贪心/枚举)
  9. Android系统各个版本发布时间
  10. 最全UnityHub下载链接Unity2022~2017各版本+Unity5.x【间歇性更新】