Gmailなどはメアドの文字列に "." をいくつ挟み込んでも同じとみなされる。どうせならバリエーションを沢山作ってみた。
ruby で文字列をズラす
name = "takuya" (1...name.size).to_a.combination(1).to_a.flatten.each{|e| puts name.clone.insert(e,".")} t.akuya ta.kuya tak.uya taku.ya takuy.a
複数個挟み込む
これを応用すると、文字の一つ一つに、文字を出来る限り挟みこむ事ができた
name = "takuya" puts name.size.times.map{|len| (1...name.size).to_a.combination(len).to_a.map{|e| str=name; e.each_with_index{|pos,idx| str= str.clone.insert(pos+idx,".") }; str } }; #実行結果 takuya t.akuya ta.kuya tak.uya taku.ya takuy.a t.a.kuya t.ak.uya t.aku.ya t.akuy.a ta.k.uya ta.ku.ya ta.kuy.a tak.u.ya tak.uy.a taku.y.a t.a.k.uya t.a.ku.ya t.a.kuy.a t.ak.u.ya t.ak.uy.a t.aku.y.a ta.k.u.ya ta.k.uy.a ta.ku.y.a tak.u.y.a t.a.k.u.ya t.a.k.uy.a t.a.ku.y.a t.ak.u.y.a ta.k.u.y.a t.a.k.u.y.a
たのしい。Array#combination、Enumerable#with_indexが 採用されたのでずいぶんコードが楽になった。
String#insert の挙動については、以前書いたモンキーパッチ参照