図形の表示


出典: フリー百科事典『ウィキペディアWikipedia)』
シェルピンスキーのギャスケット - Wikipedia


この図形を表示するスクリプトを作成しました。
作成方法はまず、一次元配列を作成します。要素の値は基本的に「0」に設定しますが、真ん中に一つ「1」を設定します。

X1X2X3X4X5X6X7
0001000
上記のX2〜X6までの要素を一つづつ見ていき、両端の値が同一ならば「0」、異なるならば「1」とした配列を作成します。
X1X2X3X4X5X6X7
0010100
同様に、上記のX2〜X6までの要素を一つづつ見ていき、両端の値が同一ならば「0」、異なるならば「1」とした配列を作成します。
X1X2X3X4X5X6X7
0100010
以下同様




配列を順番に表示させると図形が現れます。
今回は「1」→「*」、「0」→スペース としました。

$ON  = "*";
$OFF = " ";
$Cnum = 101;
Function GetNextCells{
    param ( $Cbf );
    $Caf = @();
    for ( $i = 0; $i -le $Cbf.Length -1; $i++ ){
        if ($i -eq 0){
            $Xm = $OFF;
            $Xp = $Cbf[1];
        }elseif ($i -eq $Cbf.Length -1) {
            $Xm = $Cbf[$Cbf.Length - 2];
            $Xp = $OFF;
        }else{
            $Xm = $Cbf[$i - 1];
            $Xp = $Cbf[$i + 1];
        }
        if ($Xm -eq $Xp){
            $Caf += $OFF;   
        }else{
            $Caf += $ON;
        }
    }
    $Caf;
}
$C = @();
for ( $i = 0; $i -lt $Cnum; $i++ ){
    if ( $i -eq [int](($Cnum-1)/2)){
        $C += $ON;
    }else{
        $C += $OFF;
    }
}
do {
    $Line = "";
    foreach ( $Xi in $C ){
        $Line += $Xi;
    }
    $Line;
    $C = GetNextCells $C;
} while ( $C[0] -ne $ON )