どう書く?面白い。

投稿しない

ただ解くだけで面白いし。

ピラミッドを作る

def f1 n;
  seed=(1..n).map{|i| "*" * (2*i-1))}
  width=seed[-1].length
  seed.each{|e| puts e.center(width)}
end
f1 4
#=>
#   *   
#  ***  
# ***** 
#*******

与えられた文字列でピラミッド

def f2_1(str)
  n=(2*str.length-1)
  (str.length-1).downto(0) {|i| puts str.slice(i..-1).split(//).join(" ").center(n)}
end

def f2_2 str
  seed=(1..str.length).map{|i| str[-i..-1].split(//).join(" ")}
  width=seed.last.length
  seed.each {|e| puts e.center(width)}
end

def f2_3 str
  require "abbrev"
  seed=Abbrev.abbrev(str.reverse).keys.sort.map{|e| e.reverse.split(//).join(" ")}
  width=seed.last.length
  seed.each {|e| puts e.center(width)}
end

(1..3).each{|i| send("f2_"+i.to_s,"hoge")}
#=>
#   e      #   e      #   e   
#  g e     #  g e     #  g e  
# o g e    # o g e    # o g e 
#h o g e   #h o g e   #h o g e
#縦のものを横に変更してます。

abbrevを使ったほうがめんどうになった…。

疑問

そういえば、最初の部分が、

1…"   e   \n"
2…"   e\n"

で少しだけ意味合いが違ってくるかもとか思いました。