Ruby - Enumerable - collect

Sort by

recency

|

101 Discussions

|

  • + 0 comments
    def rot13(secret_messages)
      secret_messages.collect{|value| 
        value.bytes.each_index{|index|
          code = value.getbyte(index)
          value.setbyte(index, (code+13)) if( code > 64 && code < 78 || code > 96 && code < 110)
          value.setbyte(index, (code-13)) if( code > 77 && code < 91 || code > 109 && code < 123)
        }
      }
      secret_messages
    end
    
    
    
  • + 0 comments

    def rot13(secret_messages) secret_messages.collect{|value| value.bytes.each_index{|index| code = value.getbyte(index) value.setbyte(index, (code+13)) if( code > 64 && code < 78 || code > 96 && code < 110) value.setbyte(index, (code-13)) if( code > 77 && code < 91 || code > 109 && code < 123) } } secret_messages end

  • + 0 comments
    def rot13(secret_messages)
        secret_messages.map {
            |msg| decipher_message(msg)
        }
    end
    
    def decipher_message(msg)
        msg.chars.map { |c|
            case c
                when 'a'..'m', 'A'..'M'
                    (c.ord + 13).chr
                when 'n'..'z', 'N'..'Z'
                    (c.ord - 13).chr
                else
                    c
            end
        }.join
    end
    
  • + 1 comment

    I found that it can be done using .tr ? any ideas?

    def rot13(secret_messages)
       secret_messages.map do |word|
         word.tr("a-z", "n-za-m")
       end
     end
    
  • + 0 comments
    def rot13(secret_messages)
        secret_messages.map do |str|
            str.chars.map{|char| char.ord.between?(65,90) || char.ord.between?(97,122) ? cipher(char) : char }.join
        end
    end
    
    def cipher(char)
        13.times {char.next!}
        return char.size > 1 ? char[1] : char
    end