No Programming, No Life

新しいNPNLです。http://d.hatena.ne.jp/fumokmm/ から引っ越してきました。

Re:ピラミッドを作る, 横向きのピラミッドを作る

お題:
Server error
Server error
投稿:
Server error
Server error


縦向きと横向きのピラミッドを作るお題を解いてみました。
両方とも、今さら感がありますが、気にせず投稿。

投稿したコード

(動作確認: Groovy Version: 1.5.7 JVM: 1.6.0_10)

// 縦向きピラミッド
def pyramidVertical(num) {
   (1..num).collect{ '*' * (it * 2 -1) }.with{
      delegate*.center(delegate*.size().max())
   }.join('\n')
}

// 横向きピラミッド
def pyramidHorizontal(num){
   def adder = { base, add -> [add, base, add].join('\n') }
   ((num - 1)..1).inject('*' * num){ rslt, it -> adder(rslt, '*' * it) }
}

println pyramidVertical(4)   // 縦向き
println pyramidHorizontal(4) // 横向き

出力結果

縦向き


*
***
*****
*******

横向き


*
**
***
****
***
**
*

考察

とりあえず、既出で色々出ていたので、まだ出ていないアイデアで書いてみました。
縦向きはcollectしてcenterして、それをwithで繋いで頑張りました。
横向きはただinjectが使いたかっただけです(笑) 出来上がった文字列の前後に*を足していく感じです。