Hatena::Grouppowershell

CX's PowerShell Diary

 | 

2010-09-05

丸に挑戦(その2)

09:07 | 丸に挑戦(その2) - CX's PowerShell Diary を含むブックマーク はてなブックマーク - 丸に挑戦(その2) - CX's PowerShell Diary

コマンドプロンプト(cmd.exe)で以下のコマンドを実行すると丸とSin/Cos 曲線を描きます。

PowerShell ^&{$r=6;$m=$r*2+1;$n=$m*2;$s=New-Object 'String[,]'($n+1),($n+1);for($x=0;$x-lt$n;$x++){for($y=0;$y-lt$n;$y++){if($y-eq$m-and$x-lt$m){$c='┬'}elseif($y-lt$m-and$x-eq$m){$c='├'}elseif($x-ge$m-and$y-ge$m){$c=' '}else{$c='┼'}$s[$x,$y]=$c}}for($t=0;$t-le$m;$t++){$x=$r-([Math]::Sin($t*3.14/$r)*$r);$y=$r+([Math]::Cos($t*3.14/$r)*$r);$s[$x,$y]='○';$s[($m+$t),$x]='○';$s[$y,($m+$t)]='○'}for($y=0;$y-lt$n;$y++){$l='';for($x=0;$x-lt$n;$x++){$l+=$s[$x,$y]}$l}}

サンプル説明

# 係数を設定します
$r = 6
$m = $r*2+1
$n = $m*2
# 方眼紙を作成します
$strMatrix = New-Object "String[,]" ($n+1),($n+1)
for ($x = 0; $x -lt $n; $x++) {
    for ($y = 0; $y -lt $n; $y++) {
        if ( $y -eq $m -and $x -lt $m ) {
            $c = "┬";
        }
        elseif ( $y -lt $m -and $x -eq $m ) {
            $c = "├";
        }
        elseif ( $x -ge $m -and $y -ge $m ) {
            $c = " ";
        }
        else {
            $c = "┼";
        }
        $strMatrix[$x,$y] = $c
    }
}
# 方眼紙に○をプロットします
for ($t = 0; $t -le $m; $t++) {
    $x = $r-([Math]::Sin($t*3.14/$r)*$r);
    $y = $r+([Math]::Cos($t*3.14/$r)*$r);
    $strMatrix[$x,$y] = "○";
    $strMatrix[($m+$t),$x] = "○";
    $strMatrix[$y,($m+$t)] = "○";
}
# 方眼紙を描画します
for ($y = 0; $y -lt $n; $y++) {
    $strLine = "";
    for ($x = 0; $x -lt $n; $x++) {
        $strLine += $strMatrix[$x,$y];
    }
    $strLine
}

実行結果

┼┼┼┼┼┼○┼┼┼┼┼┼├┼┼○┼┼┼┼┼┼┼┼┼
┼┼┼○┼┼┼┼┼○┼┼┼├┼○┼○┼┼┼┼┼┼┼┼
┼┼┼┼┼┼┼┼┼┼┼┼┼├┼┼┼┼┼┼┼┼┼┼┼┼
┼○┼┼┼┼┼┼┼┼┼○┼├○┼┼┼○┼┼┼┼┼┼┼
┼┼┼┼┼┼┼┼┼┼┼┼┼├┼┼┼┼┼┼┼┼┼┼┼┼
┼┼┼┼┼┼┼┼┼┼┼┼┼├┼┼┼┼┼┼┼┼┼┼┼┼
○┼┼┼┼┼┼┼┼┼┼┼○○┼┼┼┼┼○┼┼┼┼┼○
┼┼┼┼┼┼┼┼┼┼┼┼┼├┼┼┼┼┼┼┼┼┼┼┼┼
┼┼┼┼┼┼┼┼┼┼┼┼┼├┼┼┼┼┼┼┼┼┼┼┼┼
┼○┼┼┼┼┼┼┼┼┼○┼├┼┼┼┼┼┼○┼┼┼○┼
┼┼┼┼┼┼┼┼┼┼┼┼┼├┼┼┼┼┼┼┼┼┼┼┼┼
┼┼┼○┼┼┼┼┼○┼┼┼├┼┼┼┼┼┼┼○┼○┼┼
┼┼┼┼┼┼○┼┼┼┼┼┼├┼┼┼┼┼┼┼┼○┼┼┼
┬┬┬┬┬┬┬┬┬┬┬┬○             
┼┼┼┼┼┼┼┼┼┼┼○┼             
┼┼┼┼┼┼┼┼┼○┼┼┼             
┼┼┼┼┼┼○┼┼┼┼┼┼             
┼┼┼○┼┼┼┼┼┼┼┼┼             
┼○┼┼┼┼┼┼┼┼┼┼┼             
○┼┼┼┼┼┼┼┼┼┼┼┼             
┼○┼┼┼┼┼┼┼┼┼┼┼             
┼┼┼○┼┼┼┼┼┼┼┼┼             
┼┼┼┼┼┼○┼┼┼┼┼┼             
┼┼┼┼┼┼┼┼┼○┼┼┼             
┼┼┼┼┼┼┼┼┼┼┼○┼             
┼┼┼┼┼┼┼┼┼┼┼┼○        

このコードは JavaScript 版の「丸に挑戦」の PowerShell 移植版です。

参考情報

 |