どう書く?
http://ja.doukaku.org/13/nested/
http://shinh.skr.jp/m/?date=20070707#p04
一番普通だと思う、%sと%cを使う方法で書いてみた。
irb(main):004:0> $><<("He"+"%s"*2+", w"+["%c"]*(6/3)*"r"+"d!")%["l"*(8/4),"o",?p-1,?g+5] Hello, world!=> #<IO:0x294e758>
本当にできてるのか怪しいので証明。
irb(main):006:0> a='$><<("He"+"%s"*2+", w"+["%c"]*(6/3)*"r"+"d!")%["l"*(8/4),"o",?p-1,?g+5]'.scan /\w/ => ["H", "e", "s", "2", "w", "c", "6", "3", "r", "d", "l", "8", "4", "o", "p", "1", "g", "5"] irb(main):007:0> a.uniq == a => true
何使ったのかなあ。
irb(main):008:0> a.sort => ["1", "2", "3", "4", "5", "6", "8", "H", "c", "d", "e", "g", "l", "o", "p", "r", "s", "w"]
追記:一応解説。元になったコードはこれです。
$><<"He%s%s, w%cr%cd!"%["ll","o",111,108]
まず%sとlをString#*で。
$><<("He"+"%s"*2+", w%cr%cd!")%["l"*2,"o",111,108]
"%cr%c"はArray#*を使う。
$><<("He"+"%s"*2+", w"+["%c"]*2*"r"+"d!")%["l"*2,"o",111,108]
適当に2を複数作る。
$><<("He"+"%s"*2+", w"+["%c"]*(6/3)*"r"+"d!")%["l"*(8/4),"o",111,108]
111と108を?character+nで作る。
$><<("He"+"%s"*2+", w"+["%c"]*(6/3)*"r"+"d!")%["l"*(8/4),"o",?p-1,?g+5]
できたー。
追々記:http://ja.doukaku.org/comment/298/を勝手にパクらせてもらいました。
$><<"He"+('l'*(?B/?!)+'o, wr').gsub(/(.)(.)(.)(...)(.)/){$1+[$2]*(?a/?.)*([$3]*(?D/?")*$4+$5)}+"d!"