ケブンッリジ関数
週末の第 34 回 Ruby/Rails 勉強会でこんな演習問題が出るんじゃないかと予想。
Ruby 関西の ML で発言すると、またネタを潰してしまう可能性があるので、誰も見ていないであろう ここで ひっそりとやってみる。
適当にやると、こんな感じ。
class String def cambridge "#{self[0]}" \ "#{self[1..-2].split(//).shuffle.join}" \ "#{self[-1]}" end end "ケンブリッジ".cambridge # => "ケッリブンジ"
これだと、ちゃんと読めない。
「ケブンッリジ」になってないし。
たぶん、2 文字ずつペアで入れ換えるとケブンッリジっぽくなるんだろうな。
class String def cambridge! 1.step(size-1, 2) do |i| self[i], self[i+1] = self[i+1], self[i] if i+1 < size-1 end self end def cambridge self.dup.cambridge! end end "ケンブリッジ".cambridge! # => "ケブンッリジ" "Cambridge".cambridge! # => "Cmarbdige" "This".cambridge # => "Tihs" "is".cambridge # => "is" "a".cambridge # => "a" "pen".cambridge # => "pen" "".cambridge # => ""
できたみたい。
src = "にんげん は たんご の さいしょ の もじと さいごの もじが わかれば あとの もじの じゅんばん が ちがっても なんとなく よめて しまう そうです" dst = src.split(/[^\w]/).map(&:cambridge).join(' ') src # => "にんげん は たんご の さいしょ の もじと さいごの もじが わかれば あとの もじの じゅんばん が ちがっても なんとなく よめて しまう そうです" dst # => "にげんん は たんご の さしいょ の もじと さごいの もじが われかば あとの もじの じんゅばん が ちっがても なとんなく よめて しまう そでうす"