我能够使此代码在本地运行,但在黑客级别上失败
我尝试了许多组合,但一定缺少一些东西。
我不明白为什么sum += x
根据输出给出数组错误
我收到此错误:
solution.rb:24:in'+':数组不能被强制为Integer(TypeError)
def diagonalDifference(arr)
arr.each do |e|
p e
end
the_arr = arr.dup
left_to_right(3, the_arr)
end
def left_to_right(the_size, the_data)
sum = 0
(0..the_size-1).each do |diagonal|
this_value = (the_size * diagonal) + diagonal
p "v= " + this_value.to_s
x = the_data[this_value]
p "this_sum= " + x.to_s
sum += x # <-- line 24
end
sum
end
Debug output
[11, 2, 4]
[4, 5, 6]
[10, 8, -12]
"v= 0"
"this_sum= [[11, 2, 4], [4, 5, 6], [10, 8, -12]]"
arr would be a value such as [1,2,3,9,8,7,-4,-5,-4]
问题似乎与
有关the_data[this_value]
我似乎没有得到值,而是得到了一个数组?
答案 0 :(得分:1)
输入是print(len(''.encode('utf16'))) # is 2
print(len(''.encode('utf8'))) # is 0
我猜您想在传递给[[11, 2, 4], [4, 5, 6], [10, 8, -12]]
之前将矩阵更改为数组。您可以使用left_to_right
flatten
答案 1 :(得分:0)
问题似乎出在this one上。
一个人可以如下计算所需值。
def diagonal_difference(arr)
(arr.each_index.sum { |i| arr[i][i] - arr[i][-i-1]}).abs
end
arr = [
[11, 2, 4],
[ 4, 5, 6],
[10, 8, -12]
]
diagonal_difference(arr)
#=> 15