Фильтр Ruby для сообщений Trolls в чате (заполнить массив повторными значениями) - PullRequest
0 голосов
/ 23 января 2019

В чате, где я когда-то жил парой троллей, я не могу их отодвинуть, и я устал слушать их песни.Я пишу код для преобразования сообщений троллей в croack croak лягушачий звук.

Вот так."You are dirty sucks. Monkey code. Lamer." => "cro cro croak croakc croakc croak croakc"

Для этого я использую некоторый код и заполняю слово тролля croak некоторым подробным образом x.chars.zip(%w{c r o a k}.cycle).map{|x,y| y}.join. Как заполнить массив повторным значением более лаконичным способом?

Вот код, который я использую:

def troll_filter message
    message.split(" ")
    .map{ |x| 
        x.chars.zip(%w{c r o a k}.cycle).map{|x,y| y}.join 
    }.join(" ")
end

p troll_filter "sucks sucks" # "croak croak"

1 Ответ

0 голосов
/ 23 января 2019

Возможно, я бы использовал gsub, чтобы изменить только текст, а не знаки препинания. Кроме того, map не нужно - просто нужно знать size:

def troll_filter(message)
  message.gsub(/\p{Word}+/) { |x| "croak".each_char.cycle.take(x.size).join }
end

# => "cro cro croak croak. croakc croa. croak."
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...