Ruby 迭代固定数组
我有一个19位长的数组(Ruby 迭代固定数组,ruby,arrays,loops,bits,Ruby,Arrays,Loops,Bits,我有一个19位长的数组(array1),初始化为0,还有一个64位长的数组(clave)。我想迭代array164次,同时还检查了clave。我这样做: def fase2 j=0 for i in 0..63 @array1[j]=@array1[18].to_i^@array1[17].to_i^@array1[16].to_i^@array1[13].to_i^@clave[i].to_i j=j+1 if j>19
array1
),初始化为0
,还有一个64位长的数组(clave
)。我想迭代array1
64次,同时还检查了clave
。我这样做:
def fase2
j=0
for i in 0..63
@array1[j]=@array1[18].to_i^@array1[17].to_i^@array1[16].to_i^@array1[13].to_i^@clave[i].to_i
j=j+1
if j>19
j=0
end
end
print @array1
gets
end
有没有更干净的方法来做到这一点…?我可以想出一些改进
@array1
中有什么?整数?考虑调用它<代码> @ int ts /代码>。用复数来称呼数组是件好事。如果可能的话,j
和i
也是如此(0..63)。每个都对0..63中的i执行| i |
,而不是。更像红宝石
j=0
j=0,如果j>19
special_indeces = [18, 17, 16, 13]
... and then in loop ...
xor = special_indeces.reduce do |val, index|
val ^ @array1[index].to_i
end
在最后得到了什么?这有什么意义
祝你好运,这段代码需要认真研究 这是未经测试的,但更多的是如何编写内部循环:
def fase2
@clave.each do |clave|
(0..19).each do |j|
@array1[j] = @array1[18].to_i ^ @array1[17].to_i ^ @array1[16].to_i ^ @array1[13].to_i ^ clave.to_i
end
end
print @array1
gets
end