我正在使用Firefox 3.5.7并且在Firebug中我正在尝试测试array.reduceRight函数,它适用于简单的数组,但是当我尝试类似的东西时,我得到了一个NaN.为什么?
>>> var details = [{score : 1}, {score: 2}, {score: 3}];
>>> details
[Object score=1, Object score=2, Object score=3]
>>> details.reduceRight(function(x, y) {return x.score + y.score;}, 0)
NaN
Run Code Online (Sandbox Code Playgroud)
我也试过map,至少我可以看到每个元素的.score组件:
>>> details.map(function(x) {console.log (x.score);})
1
2
3
[undefined, undefined, undefined]
Run Code Online (Sandbox Code Playgroud)
我在https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/reduceRight上阅读了文档,但显然我无法在我的详细信息数组中总结所有得分值.为什么?
当我通过一个空列表时,我试图返回1而不是None reduce(mul, a).我的代码:
from operator import mul
def product_list(a):
for b in a:
b = reduce(mul, a)
if b == None:
return 1
return b
print product_list([])
Run Code Online (Sandbox Code Playgroud)
无论我在哪里放置if语句来捕获空白列表,我仍然会收到None作为输出.我还在学习基础知识,但这对我来说毫无意义.我甚至试过了
from operator import mul
def product_list(a):
if a == None:
return 1
else:
for b in a:
b = reduce(mul, a)
if b == None or a == None:
return 1
return b
print product_list([])
Run Code Online (Sandbox Code Playgroud)
只是为了看看它是否会捕获None并返回1. reduce()不按我认为的方式行事,或者我的代码中是否存在明显的错误,禁止返回1并强制返回None?
我上了课
case class PlaceHolder(time: Long, a: Int, b: Int)
Run Code Online (Sandbox Code Playgroud)
我有一个PlaceHolder对象列表,我想创建一个对象,其中包含字段a和所有值的总和b.我不在乎time.我相信它可以通过折叠/缩小操作来完成,但无法用两个字段来计算它是如何做到的.
scala> val range = 1 to 10
range: scala.collection.immutable.Range.Inclusive = Range(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
scala> val placeholders = for{ i <- range} yield PlaceHolder(i,i,i)
placeholders: scala.collection.immutable.IndexedSeq[PlaceHolder] = Vector(PlaceHolder(1,1,1), PlaceHolder(2,2,2), PlaceHolder(3,3,3), PlaceHolder(4,4,4), PlaceHolder(5,5,5), PlaceHolder(6,6,6), PlaceHolder(7,7,7), PlaceHolder(8,8,8), PlaceHolder(9,9,9), PlaceHolder(10,10,10))
Run Code Online (Sandbox Code Playgroud) 从正确的方式绘制以在Swift中的Array中找到max,我试图在Swift数组中找到最左边的位置reduce.我原以为这会起作用:
var a = [CGPoint(x:1,y:1),CGPoint(x:2,y:2),CGPoint(x:0,y:0)]
var leftMost = a.reduce(CGPoint(x:CGFloat.max,y:CGFloat.max)) {min($0.x,$1.x)}
Run Code Online (Sandbox Code Playgroud)
但是,我收到此错误:
`Type 'CGPoint' does not conform to protocol 'Comparable'
Run Code Online (Sandbox Code Playgroud)
当然,我不是在比较一个CGPoint,我正在比较一点.x,那应该是一个CGFloat.
想法?
所以我试图重新实现该reduce方法,因此它可以添加一些通常可以使用的数字reduce,例如:
(reduce + [1 2 3]) ;; 6
(newRd + [1 2 3]) ;; 6
Run Code Online (Sandbox Code Playgroud)
所以我想也许可以使用递归函数来完成,每次调用时都会添加向量的第一个元素,并为向量的其余部分再次执行.像这样的东西:
(defn newRd [list]
(let [sum 0]
(if (not= 0 (count list))
(+ sum (first list))
(newRd (rest list))
)
)
)
Run Code Online (Sandbox Code Playgroud)
我想我没有正确地进行本地存储.任何建议或更好的方法?
NVIDIA建议的简化方法使用__syncthreads()内部条件分支,例如:
if (blockSize >= 512) { if (tid < 256) { sdata[tid] += sdata[tid + 256]; } __syncthreads(); }
Run Code Online (Sandbox Code Playgroud)
要么
for (unsigned int s=blockDim.x/2; s>32; s>>=1)
{
if (tid < s)
sdata[tid] += sdata[tid + s];
__syncthreads();
}
Run Code Online (Sandbox Code Playgroud)
在第二个例子中__syncthreads()是内部for循环体,它也是一个条件分支.
然而,一些在做题提高的问题,__syncthreads()内部条件的分支(例如我能已经下降线程后使用__syncthreads()?和条件syncthreads和死锁(或没有)),答说,__syncthreads()在条件分支可能导致陷入僵局.因此,NVIDIA建议的缩减方法可能会陷入僵局(如果相信答案所依据的文档).
此外,如果_syncthreads()不能在条件分支内部使用,那么我担心许多基本操作被阻止,减少只是一个例子.
那么如何在不使用__syncthreads()条件分支的情况下减少CUDA 呢?或者它是文档中的错误?
我有以下内容
t <- structure(list(name = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L), .Label = c("Alice", "Bob",
"Jane Doe", "John Doe"), class = "factor"), school = structure(c(1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 4L, …Run Code Online (Sandbox Code Playgroud) 我做了一个函数来检查数字是否是素数,如果没有,则返回数字,否则(如果是素数)它返回0.
var maybePrimeNumber = [5, 8, 11, 14, 17, 20, 23, 28, 31]; //numbers to test
function isNotPrime(integer){
var prime = true; //start off assuming that it is a prime nr for now
var returnNumber = 0; //to be returned at the end
for(i = 2; i<integer; i++){ //go from 2 up to the number,
if(integer % i === 0){ //if the number is divisible by any nr between 2 and itself,
prime = false; //then say that it isn't …Run Code Online (Sandbox Code Playgroud) 我正在尝试了解reduce的工作原理
var expense = [
{
item: 'Bed',
cost: 1499,
date: '02-23-2018'
},
{
item: 'Phone',
cost: 2499,
date: '02-23-2018'
},
{
item: 'Book',
cost: 400,
date: '02-23-2018'
},
{
item: 'Mattress',
cost: 700,
date: '02-23-2018'
},
{
item: 'Food',
cost: 300,
date: '02-23-2018'
}
];
var totalExpense = expense.reduce(function(a,b){
console.log(a.cost, b.cost);
return a.cost + b.cost;
});
console.log(totalExpense);
Run Code Online (Sandbox Code Playgroud)
这将totalExpense设为NaN。
输出:-
1499 2499
undefined 400
undefined 700
undefined 300
NaN
Run Code Online (Sandbox Code Playgroud)
当我使用简单的费用数组执行相同的操作时,它可以正常工作。
尝试创建一个函数来检查一个大数字(即,每个数字都小于或等于其右边的数字,例如123、059等)。
问题如下:
const n = parseInt(readline());
if (n.toString().length === 1)
console.log('true');
else
{
var z = n.toString().split('');
console.log(z.reduce((a, b) => b > a));
}
Run Code Online (Sandbox Code Playgroud)
该测试失败:01223047(应返回false时返回true)。
它在许多其他测试中都起作用,但是没有这个值。难道不应该减少测试每一对并返回true / false吗?如果有一个假,它应该返回假,对吗?我使用reduce不正确吗?我可以使用另一个功能来简化此测试,而不是编写循环吗?