草庐IT

对位相乘

全部标签

arrays - 如何在 Ruby 中将两个数组相乘?

例如我有两个数组a=[3,2,1]b=[1,2,3]我需要将它们相乘并创建第三个数组c就像这样c=[3*1,2*2,1*3]哪种方法速度最快?我需要为大型阵列执行此操作,时间很重要。 最佳答案 a.zip(b).map{|x,y|x*y}这是有效的,因为zip将两个数组组合成一个包含两个元素数组的数组。即:a=[3,2,1]b=[1,2,3]a.zip(b)#=>[[3,1],[2,2],[1,3]]然后你使用map将元素相乘。这是通过遍历每两个元素数组并将一个元素乘以另一个元素来完成的,map返回结果数组。a.zip(b).map

ruby - 在 Ruby 中将两个数组相乘并获得相乘值之和的有效方法是什么?

在Ruby中将两个数组相乘并获得相乘值之和的有效方法是什么?我在Ruby中有两个数组:array_A=[1,2,1,4,5,3,2,6,5,8,9]array_B=[3,2,4,2,5,1,3,3,7,5,4]我的目标是获取array_A*array_B的总和值,即1*3+2*2+1*4+...+8*5+9*4。因为我需要在我的应用程序中对它们进行数百万次计算,进行此类计算的最有效方法是什么?这就像矩阵计算:1*N矩阵*N*1矩阵或向量点积。 最佳答案 更新我刚刚根据新评论更新了基准。正在关注Joshua'scomment,注入(i

Ruby:将数组的所有元素相乘

假设我有一个数组A=[1,2,3,4,5]如何将所有元素与ruby​​相乘并得到结果?1*2*3*4*5=120如果有元素0怎么办?我怎样才能忽略这个元素? 最佳答案 这是inject的教科书案例(也称为reduce)[1,2,3,4,5].inject(:*)如下所示,为避免出现零,[1,2,3,4,5].reject(&:zero?).inject(:*) 关于Ruby:将数组的所有元素相乘,我们在StackOverflow上找到一个类似的问题: http

Ruby 需要 'file' 和相对位置

所以我正在编写一些rspec测试,我为自己缺乏对Ruby的理解而感到尴尬。我的文件结构如下所示:GUI_Tests/Tests/test_spec.rbGUI_Tests/windows_gui.rbGUI_Tests/upload_tool.rb当我为test_spec.rb文件运行规范时,我需要像这样包含upload_tool文件:spec-r../upload_tool-fstest_spec.rb然后,upload_tool需要windows_gui.rb,如下所示:require'../windows_gui'我的问题是,为什么我必须相对于test_spec.rb(需要../

javascript - 与 boolean 值相乘是否安全(并且更好)?

我有一段代码有很多if和elseif。我现在只是想,在乘法中,true的计算结果为1,false的计算结果为0。用:if(!this._isFetched('studentInfoFetched')){tempAddedTime+=1;estimatedTimePerStudent+=0.04+0.2;}if(formInputValues.student_expiration){tempAddedTime+=(!this._isFetched('studentExpirationFetched'))?14:0;estimatedTimePerStudent+=1;}对于:tempAd

javascript - jQuery - 获取放置元素的相对位置和属性

我有可拖动的元素,可以将其放置在可放置区域中。如果删除了一个元素,则调用drop函数:$('#droppable').droppable({scope:"items",drop:function(event,ui){//thisoneiscalledifanelementisdroppedinthisdroppablearea}});我的可拖动元素:Dragme...$('.drag').draggable({revert:"invalid",scope:"items"});如果元素被放置,我需要知道的是data-noteid的值和可放置区域的相对位置。因此,如果将元素放在左上角,则x

javascript - 为设置为 1 的一对位生成所有组合?

我正在尝试为给定位宽内的一对1生成所有可能的组合。假设位宽为6,即数字32。这就是我想要生成的:000000000011000110001100001111011000011011011110110000110011110110111100111111如果我有变量:vara=1,b=2;num=a|b;并创建一个循环,我将循环遍历width-1次,以及我在哪里移动a和b,我会得到一对的所有组合。在那之后,我几乎陷入困境。有人可以提供一些帮助吗。更新:工作示例基于Barmar的数学方法,这就是我设法实现的vararr=[],arrBits=[];functiongetCombs(pair

Javascript:将两个数组相乘并求和

我有两个长度相等的数组,我需要将每个数组中对应的(按索引)值相乘,然后对结果求和。例如vararr1=[2,3,4,5];vararr2=[4,3,3,1];将得到34(4*2+3*3+4*3+5*1)。什么是最简单易读的写法? 最佳答案 vararr1=[2,3,4,5];vararr2=[4,3,3,1];console.log(arr1.reduce(function(r,a,i){returnr+a*arr2[i]},0));34这显示了计算两个向量点积的“函数式”方法,而不是“命令式”方法。在OP要求的这种简单函数实现中,

javascript - 按相对位置对数组排序

示例对象数组:[{id:'a',beforeId:null},{id:'b',beforeId:'c'},{id:'c',beforeId:'a'},{id:'d',beforeId:'b'}]输出顺序:d-b-c-a;每个元素根据其beforeId属性相对于其他元素排序。我可以创建一个临时数组并对上面的数组进行排序。可以使用array.sort进行排序吗? 最佳答案 您可以使用关系构建一个对象,并通过将对象与beforeId:null一起使用来生成结果,并取消移位结果数组的所有对象。下一个对象是以实际val为键的对象。复杂度:O(

javascript - 使用 JavaScript 将两个输入相乘并显示在文本框中

我是JavaScript的新手,正在寻找一些帮助来做两个数字的简单乘法并将结果显示在另一个文本框中。我一直试图让这个工作好几天都无济于事:(这是基本的HTML以及JavaScript和一个指向fiddle的链接http://jsbin.com/egeKAXif/1/edit我做错了什么?我要编写的应用程序至少有12行,我将如何扩展JavaScript/HTML来适应这一点?每个输入标识符都需要是唯一的吗?感谢任何帮助:)Box1Box2Resultfunctioncalculate(){varmyBox1=document.getElementById('box1').value;va