2

楽しみのために、ルビーで単純なリート(1337)ジェネレーターを作成しています

だから私はこのようなことをしていますが、うまくいきますが、あまり効率的ではありません。

    def leet
       words = words.gsub(/a/, '4')
       words = words.gsub(/e/, '3')
       words = words.gsub(/i/, '1')
       words = words.gsub(/o/, '0')
       words = words.gsub(/s/, '5')
       words = words.gsub(/t/, '7')
       puts words
    end

ここで助けてもらえますか?:) ありがとう!

4

3 に答える 3

7
def leet(word)
  puts word.gsub(/[aeiost]/,'a'=>'4','e'=>'3','i'=>'1','o'=>'0','s'=>'5','t'=>'7')
end
于 2012-06-18T00:03:58.543 に答える
5
def leet s
  s.tr 'aeiost', '431057'
end
于 2012-06-18T00:56:07.200 に答える
4

メガのより一般的なバージョン:

class Leet
    @@map = {
        'a' => '4',
        'e' => '3',
        'i' => '1',
        'o' => '0',
        's' => '5',
        't' => '7'
    }
    @@re = Regexp.union(@@map.keys)

    def self.speak(str)
        str.gsub(@@re, @@map)
    end
end

puts Leet.speak('leet')
# l337

必要に応じて調整@@mapし、離れて行きます。

于 2012-06-18T00:11:29.497 に答える