从Ruby列表中查找neg和pos数字

时间:2014-02-02 02:05:33

标签: ruby

两个数字列表,一个带有输入的pos号,一个 那些是负数(忽略零值数字)

方法:您必须首先构建具有所需输出编号的两个数组 显示其中任何一个

以下代码不是ruby。我怎么能把它转换成红宝石?

# Loop to read input and build the two new arrays
while ($next = <>) {
   if ($next > 0) {
      push @pos_list, $next;
   }
   else {
      if ($next < 0) {
         push @neg_list, $next;
      }
   }
}
# Output the results
print "The array of positive numbers: \n @pos_list \n";
print "\nThe array of negative numbers: \n @neg_list \n";

2 个答案:

答案 0 :(得分:1)

numbers = [4,-2,7,3,0,-8]

pos_list = numbers.select {|x| x > 0}
neg_list = numbers.select {|x| x < 0}

p pos_list # => [4, 7, 3]
p neg_list # => [-2, -8]

numbers是您根据用户输入构建的数字数组。 Array#select返回一个新数组,其中包含导致附加块计算为true的所有元素。请参阅:http://www.ruby-doc.org/core-2.1.0/Array.html#method-i-select

答案 1 :(得分:0)

假设numbers是输入中的数字数组:

pos = []
neg = []
numbers.each do |n|
    pos += n if n > 0
    neg += n if n < 0
end

执行上述代码后,您可以从pos检索正数,从neg检索负数。

填充numbers的方式可能有所不同。一个可能的解决方案是循环并继续要求一个数字:

numbers = []
begin
    current = gets.chomp.to_i
    numbers << current if current > 0
end until current == 0

假设您不希望0成为number的一部分。否则,您必须检查给定的输入以停止循环。或者,您可以使用固定大小的数字。