むむむ。なんだろう、PowerShell最高かっ。
わたしにとっては要するに
補完機能のあるVBSがふぁーすといんぷれっしょん
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つできます。
text.txtが数字の読み込み用
resultで結果の出力
テキスト読み込みはあえてのstreamで。
Paizaでよく見る形式だと思われます。
ワンライナーとかなにそれおいしいの。
しばらくこの形式でいこうかと思います。
今回出気になる点は1つ。
数字を1000とか増やしてみると
想像以上に遅いこと
あんまり早くないとは聞いてましたけど。
それにしたって。。。でした。
もうしばらく使ってみて考えます!