Board logo

标题: [转载代码] PowerShell一个小算法题 [打印本页]

作者: DAIC    时间: 2013-10-22 10:15     标题: PowerShell一个小算法题

本帖最后由 DAIC 于 2013-10-22 10:19 编辑

题目很简单, 如图所示:

PS C:\> s-x 1
x
PS C:\> s-x 2
x x
x
x x
PS C:\> s-x 3
x x   x x
x     x
x x   x x
   x x
    x
   x x
x x   x x
x     x
x x   x x

当n = 1时, 输出一个"x", 如果n = 2的话, 就输出

x x
x
x x

以此类推. 下面附上利用递归下降方式编写的PowerShell版本:
  1. function vo($vx = '', $hx = '', $cur, $total) {
  2.     if ($cur -eq 1) {
  3.         if ($vx -eq $hx) {
  4.             Write-Host -No "x";
  5.         }
  6.         else {
  7.             Write-Host -No " ";
  8.         }
  9.         return;
  10.     }
  11.     for ($i = 1; $i -le 3; $i++) {
  12.         $t = $hx
  13.         vo ($vx) ([string]$t + ($i % 2)) ($cur - 1) $total
  14.     }
  15. }
  16. function ho($vx = 1, $hx = 1, $cur, $total) {
  17.     if ($cur -eq 1) {
  18.         for ($i = 1; $i -le 3; $i++) {
  19.             vo ($vx) ($hx) $total $total
  20. ""
  21.             return;
  22.         }
  23.     }
  24.     for ($i = 1; $i -le 3; $i++) {
  25.         $t = $vx
  26.         ho  ([string]$t + ($i % 2)) ($hx) ($cur - 1) $total
  27.     }
  28. }
  29. function s-x($i = 3) {
  30.     if ($i -gt 10) { Write-Warning "Too large"; return }
  31.     if ($i -lt 1) { Write-Warning "Must be a positive number"; return }
  32.     ho -cur $i -total $i
  33. }
复制代码
下面给出n = 4的结果:

PS C:\> s-x 4
x x   x x         x x   x x
x     x           x     x
x x   x x         x x   x x
   x x               x x
    x                 x
   x x               x x
x x   x x         x x   x x
x     x           x     x
x x   x x         x x   x x
         x x   x x
          x     x
         x x   x x
            x x
             x
            x x
         x x   x x
          x     x
         x x   x x
x x   x x         x x   x x
x     x           x     x
x x   x x         x x   x x
   x x               x x
    x                 x
   x x               x x
x x   x x         x x   x x
x     x           x     x
x x   x x         x x   x x

http://blog.chinaunix.net/uid-9781829-id-1997947.html




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2