なずブログ

インフラSE、Java開発、リモートワークエンジニアな人のメモ帳

VBAばっかり使ってる人がPowerShellでFizzBuzzやってみた

f:id:nazuna_0124:20170406201732p:plain

むむむ。なんだろう、PowerShell最高かっ。



わたしにとっては要するに

補完機能のあるVBSがふぁーすといんぷれっしょん



VBSとLinuxJAVAを混ぜて

VBE使って書いてるみたいな。


ほう 経験がいきたな!(職業訓練で全部やった)



最初からこれでよかったという説もあります。



というわけで運が悪いとプログラムで学んでも

たどり着かないことで有名(?)なFizzBuzz問題です。


別の記事にする予定ですが、

Paizaの問題がまともに提出すらできない人

実はこれできるようになると、すらすらいけるはず!



などといいつつ、とりあえずソース。


#1から100まで作成
1..100 > test.txt

#パス明示しなくてもだいじょうぶみたい
$txt = New-Object System.IO.StreamReader("test.txt",[System.Text.Encoding])

#ファイル初期化
echo $null > ./result.txt


    while(($line = $txt.readline()) -ne $null)
    {
        if($line % 5 -eq 0 -and $line % 3 -eq 0) {
        
            $line + " Fizz Buzz"|add-content result.txt
        
        }elseif($line % 3 -eq 0){
        
            $line + " Buzz" |add-content result.txt
    
        }elseif($line % 5 -eq 0){
       
            $line + " Fizz" |add-content result.txt
       
        }else{
        
            $line |add-content result.txt
        }
    
    }

$txt.close |out-null


演算子だけ死ねばいいのにと思いますが

それ以外はPowerShellしらなくてもだいたいわかる仕様。



ファイルに書いて実行するとテキストファイルが2つできます。


f:id:nazuna_0124:20180326024503p:plain



text.txtが数字の読み込み用


f:id:nazuna_0124:20180326024758p:plain



resultで結果の出力

f:id:nazuna_0124:20180326024949p:plain



テキスト読み込みはあえてのstreamで。

Paizaでよく見る形式だと思われます。



ワンライナーとかなにそれおいしいの。

しばらくこの形式でいこうかと思います。



今回出気になる点は1つ。

数字を1000とか増やしてみると

想像以上に遅いこと


あんまり早くないとは聞いてましたけど。

それにしたって。。。でした。



もうしばらく使ってみて考えます!