Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ruby中的变量和表达式_Ruby - Fatal编程技术网

ruby中的变量和表达式

ruby中的变量和表达式,ruby,Ruby,我正在尝试创建一个ruby程序,其中输入三个数字并取其和,但如果任何数字相同,则它们不会计入和。 示例(4,5,4)=5 我的问题是我的表情。如果我输入相同的数字,我会得到不同组合的多个输出。示例输入5,5,5=15,5,0 if a != b or c then puts a+b+c elsif b != a or c then puts a+b+c elsif c != a or b then puts a+b+c end if a == b then puts c el

我正在尝试创建一个ruby程序,其中输入三个数字并取其和,但如果任何数字相同,则它们不会计入和。 示例(4,5,4)=5 我的问题是我的表情。如果我输入相同的数字,我会得到不同组合的多个输出。示例输入5,5,5=15,5,0

if a != b or c then
  puts a+b+c
elsif b != a or c then
  puts a+b+c
elsif c != a or b then 
  puts a+b+c
end

if a == b then
  puts c
elsif a == c then
  puts b
elsif b == c then
  puts a
end

if a == b and c then
  puts 0
elsif b == a and c then
  puts 0
elsif c == a and b then
  puts 0
end

用两个漂亮的、不言自明的一句话来解决这个问题

array = [a,b,c]

array = array.keep_if {|item| array.count(item) == 1 }
array.inject(0){|sum,item| sum + item}
-第一行用您的参数创建一个数组。
-第二行仅保留计数等于1的项目(删除多次出现的项目),并将其存储在数组中。
-第三行是所有剩余元素的总和


瞧,ruby方式:)

我会这样做:1对数组排序2迭代数组,对于每个只出现一个元素(它们现在将以相同的数量运行)将其添加到新数组中#3对新数组的内容求和。(#1+#2可以用
可枚举#group#u by
进行简化,后跟
可枚举。选择
和#3可以用
可枚举#reduce
完成)第三行可以写入
数组。注入(0,:+)
。在我看来,这有两个好处:1)你可以看出它只是在添加,而不做任何其他事情,速度要快得多2)它有一个可爱的表情符号。