Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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
Arrays 逻辑或两个数组中的每个条目_Arrays_Ruby_Logic_Addition - Fatal编程技术网

Arrays 逻辑或两个数组中的每个条目

Arrays 逻辑或两个数组中的每个条目,arrays,ruby,logic,addition,Arrays,Ruby,Logic,Addition,说我有这些 a = [0, 1, 0, 0, 0] b = [0, 0, 0, 1, 0] 我想要像c=a | b 得到的答案是c=[0,1,0,1,0]我会这样做: a = [0, 1, 0, 0, 0] b = [0, 0, 0, 1, 0] a.zip(b).map { |a, b| a | b } #=> [0, 1, 0, 1, 0] 我会这样做: a = [0, 1, 0, 0, 0] b = [0, 0, 0, 1, 0] a.zip(b).map { |a, b

说我有这些

a = [0, 1, 0, 0, 0]
b = [0, 0, 0, 1, 0]
我想要像
c=a | b

得到的答案是
c=[0,1,0,1,0]

我会这样做:

a = [0, 1, 0, 0, 0] 
b = [0, 0, 0, 1, 0]

a.zip(b).map { |a, b| a | b }
#=> [0, 1, 0, 1, 0]

我会这样做:

a = [0, 1, 0, 0, 0] 
b = [0, 0, 0, 1, 0]

a.zip(b).map { |a, b| a | b }
#=> [0, 1, 0, 1, 0]

您还可以将数组转换为数字,然后只使用二进制运算符,如果需要执行大量此类操作,应该会更快。 如果需要,可以将结果转换回数组

a = [0, 1, 0, 0, 0]
b = [0, 0, 0, 1, 0]

a_number = a.join.to_i(2)
b_number = b.join.to_i(2)

c_number = a_number | b_number

c_array = c_number.to_s(2).split('').map(&:to_i)
c_array = [0] * (a.size - c_array.size) + c_array if c_array.size < a.size

p c_number.to_s(2)
p c_array
a=[0,1,0,0,0]
b=[0,0,0,1,0]
a_编号=a.连接到i(2)
b_编号=b.连接到i(2)
c_数=a_数| b_数
c_数组=c_编号。到_s(2)。拆分(“”)。映射(&:到_i)
如果c_array.size
您还可以将数组转换为数字,然后只使用二进制运算符,如果需要执行大量此类操作,应该会更快。 如果需要,可以将结果转换回数组

a = [0, 1, 0, 0, 0]
b = [0, 0, 0, 1, 0]

a_number = a.join.to_i(2)
b_number = b.join.to_i(2)

c_number = a_number | b_number

c_array = c_number.to_s(2).split('').map(&:to_i)
c_array = [0] * (a.size - c_array.size) + c_array if c_array.size < a.size

p c_number.to_s(2)
p c_array
a=[0,1,0,0,0]
b=[0,0,0,1,0]
a_编号=a.连接到i(2)
b_编号=b.连接到i(2)
c_数=a_数| b_数
c_数组=c_编号。到_s(2)。拆分(“”)。映射(&:到_i)
如果c_array.size
您正在使用整数的位对数组的元素进行位旋转,这是一种相当迂回的方式。我建议您直接处理整数:

x = 8
y = 2
注:

或者说,

x.to_s(2).rjust(8,"0") #=> "00001000"
y.to_s(2).rjust(8,"0") #=> "00000010"
现在,您只需使用以下工具即可获得所需的结果:

让我们确认一下:

z.to_s(2) #=> "1010"
要检索位
i
i=1
),请使用:

要设置位i,需要使用(发音为“XOR”)。对于
i=1

y = y ^ (1<<1) #=> 0
类似地(
y
现在等于
2

y |=(1“100000010”

您正在使用整数的位对数组的元素进行位旋转,这是一种相当迂回的方式。我建议您直接处理整数:

x = 8
y = 2
注:

或者说,

x.to_s(2).rjust(8,"0") #=> "00001000"
y.to_s(2).rjust(8,"0") #=> "00000010"
现在,您只需使用以下工具即可获得所需的结果:

让我们确认一下:

z.to_s(2) #=> "1010"
要检索位
i
i=1
),请使用:

要设置位i,需要使用(发音为“XOR”)。对于
i=1

y = y ^ (1<<1) #=> 0
类似地(
y
现在等于
2

y |=(1“100000010”

欢迎使用堆栈溢出。请阅读“”。您的问题没有显示任何需要进行的研究或努力。就好像您正在寻找答案,而这不是堆栈溢出的原因。请告诉我们您在哪里搜索了答案以及为什么这些答案对您不起作用,或者向我们展示您尝试编写的内容并解释错误。欢迎使用堆栈溢出。请阅读“”。您的问题没有显示任何需要进行的研究或努力。就好像您正在寻找答案,而这不是堆栈溢出的原因。请告诉我们您在哪里搜索了答案,以及为什么这些答案对您不起作用,或者向我们展示您尝试编写的内容并解释错误。回答很好。+1;与我的想法大致相同我已经说过了。回答得很好。+1;和我本来会说的差不多。
y ^= (1<<1)
y |= (1<<1) #=> 2
y |= (1<<9) #=> 514
y.to_s(2)   #=> "1000000010"