2015-11-05 1 views
-2

Сгенерированный код в sudo и необходимые указания, передающие его рубину.Получить четные цифры из диапазона: Sudo to Ruby

Sudo:

Numbers = array containing 1-10 
Even_numbers = empty array 

Newmethoddeclaration 
For each num in Numbers 
     If num % 2 == 0 
     Add num to even_numbers 
Print even_numbers. 

Ruby:

+4

Вы имеете в виду псевдокод? – bob0the0mighty

+0

Ваш вопрос совершенно неясен. Что [тэг: sudo] имеет к этому отношение? Это недопустимый синтаксис [tag: sudo], ни для файла '/ etc/sudoers', ни для утилиты' sudo'. –

ответ

0

Вы имели его в ваших глазах, и могли бы найти ответ с некоторыми дополнительными исследованиями. Но здесь вы идете:

numbers = (1..10) 
even_numbers = [] 

numbers.each do |n| 
    even_numbers << n if n % 2 == 0 
end 

puts even_numbers 

Это, безусловно, может быть упрощено с некоторыми рубинового сахара, однако это очень читаемый и должны быть понятны. Может быть, вы мотивированы, чтобы сделать это один лайнер ... пока кто-то взял удовольствие от него: .select(&:even) :)

+0

Спасибо за вашу перспективу. Я согласен, и я застрял в конвертации, поэтому попросил помощи. – HJ4

4

После будет немного короче ..

(1..10).select(&:even?) 

=> [2,4,6,8,10] 
+0

Перечисления легко, в моих трех лучших любимых функциях в рубине. Надеюсь, этот лакомый кусочек может быть полезен для OP, чтобы идти по правильному пути. –

0

Если ваша цель состоит в том, чтобы просто получить даже номера, вы можете просто создать экземпляр массива конечного результата, используя блок инициализатора:

Array.new(5) {|i| 2 * (i + 1)} 
=> [2, 4, 6, 8, 10] 

или если вы хотите обобщить:

def even_array_to(n) 
    Array.new(n/2) {|i| 2 * (i + 1)} 
end 

even_array_to 10 
=> [2, 4, 6, 8, 10]