A non-empty array A consisting of N integers is given. A pair of integers (P, Q), such that 0 ≤ P < Q < N, is called a slice of array A (notice that the slice contains at least two elements). The average of a slice (P, Q) is the sum of A[P] + A[P + 1] + ... + A[Q] divided by the length of the slice. To be precise, the average equals (A[P] + A[P + 1] + ... + A[Q]) / (Q − P + 1).
For example, array A such that:
A[0] = 4 A[1] = 2 A[2] = 2 A[3] = 5 A[4] = 1 A[5] = 5 A[6] = 8contains the following example slices:
- slice (1, 2), whose average is (2 + 2) / 2 = 2;
- slice (3, 4), whose average is (5 + 1) / 2 = 3;
- slice (1, 4), whose average is (2 + 2 + 5 + 1) / 4 = 2.5.
The goal is to find the starting position of a slice whose average is minimal.
Write a function:
function solution(A);
that, given a non-empty array A consisting of N integers, returns the starting position of the slice with the minimal average. If there is more than one slice with a minimal average, you should return the smallest starting position of such a slice.
For example, given array A such that:
A[0] = 4 A[1] = 2 A[2] = 2 A[3] = 5 A[4] = 1 A[5] = 5 A[6] = 8the function should return 1, as explained above.
Write an efficient algorithm for the following assumptions:
- N is an integer within the range [2..100,000];
- each element of array A is an integer within the range [−10,000..10,000].
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
var result = A.reduce(function (a, b, bIndex) {
var l, m, n, o
n = {
start: (a.start || 0),
index: bIndex,
value: b,
sum: l = (a.sum || a) + b,
count: m = (a.count || 1) + 1,
avg: l / m
}
o = {
start: a.index,
index: bIndex,
value: b,
sum: l = (a.value || a) + b,
count: m = 2,
avg: l / m
}
return n.avg < o.avg ? n : o
})
}
Invalid result type, integer expected, 'undefined' found Perhaps you are missing a 'return'?
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
var result = A.reduce(function (a, b, bIndex) {
var l, m, n, o
n = {
start: (a.start || 0),
index: bIndex,
value: b,
sum: l = (a.sum || a) + b,
count: m = (a.count || 1) + 1,
avg: l / m
}
o = {
start: a.index,
index: bIndex,
value: b,
sum: l = (a.value || a) + b,
count: m = 2,
avg: l / m
}
return n.avg < o.avg ? n : o
})
return result.start
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
var result = A.reduce(function (a, b, bIndex) {
var l, m, n, o
n = {
start: (a.start || 0),
index: bIndex,
value: b,
sum: l = (a.sum || a) + b,
count: m = (a.count || 1) + 1,
avg: l / m
}
o = {
start: a.index,
index: bIndex,
value: b,
sum: l = (a.value || a) + b,
count: m = 2,
avg: l / m
}
console.log(bIndex, n, o)
return n.avg < o.avg ? n : o
})
return result.start
}
1 { start: 0, index: 1, value: 2, sum: 6, count: 2, avg: 3 } { start: undefined, index: 1, value: 2, sum: 6, count: 2, avg: 3 } 2 { start: 0, index: 2, value: 2, sum: 8, count: 3, avg: 2.6666666666666665 } { start: 1, index: 2, value: 2, sum: 4, count: 2, avg: 2 } 3 { start: 1, index: 3, value: 5, sum: 9, count: 3, avg: 3 } { start: 2, index: 3, value: 5, sum: 7, count: 2, avg: 3.5 } 4 { start: 1, index: 4, value: 1, sum: 10, count: 4, avg: 2.5 } { start: 3, index: 4, value: 1, sum: 6, count: 2, avg: 3 } 5 { start: 1, index: 5, value: 5, sum: 15, count: 5, avg: 3 } { start: 4, index: 5, value: 5, sum: 6, count: 2, avg: 3 } 6 { start: 4, index: 6, value: 8, sum: 14, count: 3, avg: 4.666666666666667 } { start: 5, index: 6, value: 8, sum: 13, count: 2, avg: 6.5 }
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
var result = A.reduce(function (a, b, bIndex) {
var l, m, n, o
n = {
index: bIndex,
value: b,
start: (a.start || 0),
sum: l = (a.sum || a) + b,
count: m = (a.count || 1) + 1,
avg: l / m
}
o = {
index: bIndex,
value: b,
start: a.index,
sum: l = (a.value || a) + b,
count: m = 2,
avg: l / m
}
console.log(n, o)
return n.avg < o.avg ? n : o
})
return result.start
}
{ index: 1, value: 2, start: 0, sum: 6, count: 2, avg: 3 } { index: 1, value: 2, start: undefined, sum: 6, count: 2, avg: 3 } { index: 2, value: 2, start: 0, sum: 8, count: 3, avg: 2.6666666666666665 } { index: 2, value: 2, start: 1, sum: 4, count: 2, avg: 2 } { index: 3, value: 5, start: 1, sum: 9, count: 3, avg: 3 } { index: 3, value: 5, start: 2, sum: 7, count: 2, avg: 3.5 } { index: 4, value: 1, start: 1, sum: 10, count: 4, avg: 2.5 } { index: 4, value: 1, start: 3, sum: 6, count: 2, avg: 3 } { index: 5, value: 5, start: 1, sum: 15, count: 5, avg: 3 } { index: 5, value: 5, start: 4, sum: 6, count: 2, avg: 3 } { index: 6, value: 8, start: 4, sum: 14, count: 3, avg: 4.666666666666667 } { index: 6, value: 8, start: 5, sum: 13, count: 2, avg: 6.5 }
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
var result = A.reduce(function (a, b, bIndex) {
var l, m, n, o
n = {
index: bIndex,
value: b,
start: (a.start || 0),
sum: l = (a.sum || a) + b,
count: m = (a.count || 1) + 1,
avg: l / m
}
o = {
index: bIndex,
value: b,
start: a.index,
sum: l = (a.value || a) + b,
count: m = 2,
avg: l / m
}
console.log(JSON.stringify({n, o}, null, ' '))
return n.avg < o.avg ? n : o
})
return result.start
}
{ "n": { "index": 1, "value": 2, "start": 0, "sum": 6, "count": 2, "avg": 3 }, "o": { "index": 1, "value": 2, "sum": 6, "count": 2, "avg": 3 } } { "n": { "index": 2, "value": 2, "start": 0, "sum": 8, "count": 3, "avg": 2.6666666666666665 }, "o": { "index": 2, "value": 2, "start": 1, "sum": 4, "count": 2, "avg": 2 } } { "n": { "index": 3, "value": 5, "start": 1, "sum": 9, "count": 3, "avg": 3 }, "o": { "index": 3, "value": 5, "start": 2, "sum": 7, "count": 2, "avg": 3.5 } } { "n": { "index": 4, "value": 1, "start": 1, "sum": 10, "count": 4, "avg": 2.5 }, "o": { "index": 4, "value": 1, "start": 3, "sum": 6, "count": 2, "avg": 3 } } { "n": { "index": 5, "value": 5, "start": 1, "sum": 15, "count": 5, "avg": 3 }, "o": { "index": 5, "value": 5, "start": 4, "sum": 6, "count": 2, "avg": 3 } } { "n": { "index": 6, "value": 8, "start": 4, "sum": 14, "count": 3, "avg": 4.666666666666667 }, "o": { "index": 6, "value": 8, "start": 5, "sum": 13, "count": 2, "avg": 6.5 } }
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
var result = A.reduce(function (a, b, bIndex) {
var l, m, n, o, p
n = {
index: bIndex,
value: b,
start: (a.start || 0),
sum: l = (a.sum || a) + b,
count: m = (a.count || 1) + 1,
avg: l / m
}
o = {
index: bIndex,
value: b,
start: a.index,
sum: l = (a.value || a) + b,
count: m = 2,
avg: l / m
}
p = n.avg < o.avg ? n : o
console.log(JSON.stringify({n, o, p}, null, ' '))
})
return result.start
}
/tmp/solution.js:10 start: (a.start || 0), ^ TypeError: Cannot read property 'start' of undefined at /tmp/solution.js:10:22 at Array.reduce (native) at solution (/tmp/solution.js:5:20) at __solution_func (/tmp/solution.js:28:12) at run (/tmp/exec.js:219:22) at main (/tmp/exec.js:238:5) at Object.<anonymous> (/tmp/exec.js:241:1) at Module._compile (module.js:556:32) at Object.Module._extensions..js (module.js:565:10) at Module.load (module.js:473:32)stdout:
{ "n": { "index": 1, "value": 2, "start": 0, "sum": 6, "count": 2, "avg": 3 }, "o": { "index": 1, "value": 2, "sum": 6, "count": 2, "avg": 3 }, "p": { "index": 1, "value": 2, "sum": 6, "count": 2, "avg": 3 } }
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
var result = A.reduce(function (a, b, bIndex) {
var l, m, n, o, p
n = {
index: bIndex,
value: b,
start: (a.start || 0),
sum: l = (a.sum || a) + b,
count: m = (a.count || 1) + 1,
avg: l / m
}
o = {
index: bIndex,
value: b,
start: a.index,
sum: l = (a.value || a) + b,
count: m = 2,
avg: l / m
}
p = n.avg < o.avg ? n : o
console.log(JSON.stringify({n, o, p}, null, ' '))
return p
})
return result.start
}
{ "n": { "index": 1, "value": 2, "start": 0, "sum": 6, "count": 2, "avg": 3 }, "o": { "index": 1, "value": 2, "sum": 6, "count": 2, "avg": 3 }, "p": { "index": 1, "value": 2, "sum": 6, "count": 2, "avg": 3 } } { "n": { "index": 2, "value": 2, "start": 0, "sum": 8, "count": 3, "avg": 2.6666666666666665 }, "o": { "index": 2, "value": 2, "start": 1, "sum": 4, "count": 2, "avg": 2 }, "p": { "index": 2, "value": 2, "start": 1, "sum": 4, "count": 2, "avg": 2 } } { "n": { "index": 3, "value": 5, "start": 1, "sum": 9, "count": 3, "avg": 3 }, "o": { "index": 3, "value": 5, "start": 2, "sum": 7, "count": 2, "avg": 3.5 }, "p": { "index": 3, "value": 5, "start": 1, "sum": 9, "count": 3, "avg": 3 } } { "n": { "index": 4, "value": 1, "start": 1, "sum": 10, "count": 4, "avg": 2.5 }, "o": { "index": 4, "value": 1, "start": 3, "sum": 6, "count": 2, "avg": 3 }, "p": { "index": 4, "value": 1, "start": 1, "sum": 10, "count": 4, "avg": 2.5 } } { "n": { "index": 5, "value": 5, "start": 1, "sum": 15, "count": 5, "avg": 3 }, "o": { "index": 5, "value": 5, "start": 4, "sum": 6, "count": 2, "avg": 3 }, "p": { "index": 5, "value": 5, "start": 4, "sum": 6, "count": 2, "avg": 3 } } { "n": { "index": 6, "value": 8, "start": 4, "sum": 14, "count": 3, "avg": 4.666666666666667 }, "o": { "index": 6, "value": 8, "start": 5, "sum": 13, "count": 2, "avg": 6.5 }, "p": { "index": 6, "value": 8, "start": 4, "sum": 14, "count": 3, "avg": 4.666666666666667 } }
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
var result = A.reduce(function (a, b, bIndex) {
var l, m, n, o, p
n = {
index: bIndex,
value: b,
start: (a.start || 0),
sum: l = (a.sum || a) + b,
count: m = (a.count || 1) + 1,
avg: l / m
}
o = {
index: bIndex,
value: b,
start: a.index,
sum: l = (a.value || a) + b,
count: m = 2,
avg: l / m
}
p = n.avg < o.avg ? n : o
p = a.count && a.avg < p.avg ? a : p
console.log(JSON.stringify({n, o, p}, null, ' '))
return p
})
return result.start
}
{ "n": { "index": 1, "value": 2, "start": 0, "sum": 6, "count": 2, "avg": 3 }, "o": { "index": 1, "value": 2, "sum": 6, "count": 2, "avg": 3 }, "p": { "index": 1, "value": 2, "sum": 6, "count": 2, "avg": 3 } } { "n": { "index": 2, "value": 2, "start": 0, "sum": 8, "count": 3, "avg": 2.6666666666666665 }, "o": { "index": 2, "value": 2, "start": 1, "sum": 4, "count": 2, "avg": 2 }, "p": { "index": 2, "value": 2, "start": 1, "sum": 4, "count": 2, "avg": 2 } } { "n": { "index": 3, "value": 5, "start": 1, "sum": 9, "count": 3, "avg": 3 }, "o": { "index": 3, "value": 5, "start": 2, "sum": 7, "count": 2, "avg": 3.5 }, "p": { "index": 2, "value": 2, "start": 1, "sum": 4, "count": 2, "avg": 2 } } { "n": { "index": 4, "value": 1, "start": 1, "sum": 5, "count": 3, "avg": 1.6666666666666667 }, "o": { "index": 4, "value": 1, "start": 2, "sum": 3, "count": 2, "avg": 1.5 }, "p": { "index": 4, "value": 1, "start": 2, "sum": 3, "count": 2, "avg": 1.5 } } { "n": { "index": 5, "value": 5, "start": 2, "sum": 8, "count": 3, "avg": 2.6666666666666665 }, "o": { "index": 5, "value": 5, "start": 4, "sum": 6, "count": 2, "avg": 3 }, "p": { "index": 4, "value": 1, "start": 2, "sum": 3, "count": 2, "avg": 1.5 } } { "n": { "index": 6, "value": 8, "start": 2, "sum": 11, "count": 3, "avg": 3.6666666666666665 }, "o": { "index": 6, "value": 8, "start": 4, "sum": 9, "count": 2, "avg": 4.5 }, "p": { "index": 4, "value": 1, "start": 2, "sum": 3, "count": 2, "avg": 1.5 } }
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
var result = A.reduce(function (a, b, bIndex) {
var l, m, n, o, p
n = {
index: bIndex,
value: b,
start: (a.start || 0),
sum: l = (a.sum || a) + b,
count: m = (a.count || 1) + 1,
avg: l / m
}
o = {
index: bIndex,
value: b,
start: a.index,
sum: l = (a.value || a) + b,
count: m = 2,
avg: l / m
}
p = n.avg < o.avg ? n : o
if ( a.count && a.avg < p.avg ) {
p.best = a
}
console.log(JSON.stringify({n, o, p}, null, ' '))
return p
})
if (result.best && result.best.start != null ) {
return result.best.start
}
else {
return result.start
}
}
{ "n": { "index": 1, "value": 2, "start": 0, "sum": 6, "count": 2, "avg": 3 }, "o": { "index": 1, "value": 2, "sum": 6, "count": 2, "avg": 3 }, "p": { "index": 1, "value": 2, "sum": 6, "count": 2, "avg": 3 } } { "n": { "index": 2, "value": 2, "start": 0, "sum": 8, "count": 3, "avg": 2.6666666666666665 }, "o": { "index": 2, "value": 2, "start": 1, "sum": 4, "count": 2, "avg": 2 }, "p": { "index": 2, "value": 2, "start": 1, "sum": 4, "count": 2, "avg": 2 } } { "n": { "index": 3, "value": 5, "start": 1, "sum": 9, "count": 3, "avg": 3, "best": { "index": 2, "value": 2, "start": 1, "sum": 4, "count": 2, "avg": 2 } }, "o": { "index": 3, "value": 5, "start": 2, "sum": 7, "count": 2, "avg": 3.5 }, "p": { "index": 3, "value": 5, "start": 1, "sum": 9, "count": 3, "avg": 3, "best": { "index": 2, "value": 2, "start": 1, "sum": 4, "count": 2, "avg": 2 } } } { "n": { "index": 4, "value": 1, "start": 1, "sum": 10, "count": 4, "avg": 2.5 }, "o": { "index": 4, "value": 1, "start": 3, "sum": 6, "count": 2, "avg": 3 }, "p": { "index": 4, "value": 1, "start": 1, "sum": 10, "count": 4, "avg": 2.5 } } { "n": { "index": 5, "value": 5, "start": 1, "sum": 15, "count": 5, "avg": 3 }, "o": { "index": 5, "value": 5, "start": 4, "sum": 6, "count": 2, "avg": 3, "best": { "index": 4, "value": 1, "start": 1, "sum": 10, "count": 4, "avg": 2.5 } }, "p": { "index": 5, "value": 5, "start": 4, "sum": 6, "count": 2, "avg": 3, "best": { "index": 4, "value": 1, "start": 1, "sum": 10, "co
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
var result = A.reduce(function (a, b, bIndex) {
var l, m, n, o, p
n = {
index: bIndex,
value: b,
start: (a.start || 0),
sum: l = (a.sum || a) + b,
count: m = (a.count || 1) + 1,
avg: l / m
}
o = {
index: bIndex,
value: b,
start: a.index,
sum: l = (a.value || a) + b,
count: m = 2,
avg: l / m
}
p = n.avg < o.avg ? n : o
if ( a.count && a.avg < p.avg ) {
p.best = a
}
console.log(JSON.stringify({a, n, o, p}, null, ' '))
return p
})
if (result.best && result.best.start != null ) {
return result.best.start
}
else {
return result.start
}
}
{ "a": 4, "n": { "index": 1, "value": 2, "start": 0, "sum": 6, "count": 2, "avg": 3 }, "o": { "index": 1, "value": 2, "sum": 6, "count": 2, "avg": 3 }, "p": { "index": 1, "value": 2, "sum": 6, "count": 2, "avg": 3 } } { "a": { "index": 1, "value": 2, "sum": 6, "count": 2, "avg": 3 }, "n": { "index": 2, "value": 2, "start": 0, "sum": 8, "count": 3, "avg": 2.6666666666666665 }, "o": { "index": 2, "value": 2, "start": 1, "sum": 4, "count": 2, "avg": 2 }, "p": { "index": 2, "value": 2, "start": 1, "sum": 4, "count": 2, "avg": 2 } } { "a": { "index": 2, "value": 2, "start": 1, "sum": 4, "count": 2, "avg": 2 }, "n": { "index": 3, "value": 5, "start": 1, "sum": 9, "count": 3, "avg": 3, "best": { "index": 2, "value": 2, "start": 1, "sum": 4, "count": 2, "avg": 2 } }, "o": { "index": 3, "value": 5, "start": 2, "sum": 7, "count": 2, "avg": 3.5 }, "p": { "index": 3, "value": 5, "start": 1, "sum": 9, "count": 3, "avg": 3, "best": { "index": 2, "value": 2, "start": 1, "sum": 4, "count": 2, "avg": 2 } } } { "a": { "index": 3, "value": 5, "start": 1, "sum": 9, "count": 3, "avg": 3, "best": { "index": 2, "value": 2, "start": 1, "sum": 4, "count": 2, "avg": 2 } }, "n": { "index": 4, "value": 1, "start": 1, "sum": 10, "count": 4, "avg": 2.5 }, "o": { "index": 4, "value": 1, "start": 3, "sum": 6, "count": 2, "avg": 3 }, "p": { "index": 4, "value": 1, "start": 1, "sum": 10, "count": 4, "avg": 2.5 } } { "a": { "index": 4, "value": 1, "start": 1, "sum": 10, "count": 4, "avg": 2
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
var result = A.reduce(function (a, b, bIndex) {
var x, y, z
z = {
index: bIndex,
value: b,
couple: {
start: (a.index || 0),
sum: x = (a.value || a) + b,
count: 2,
avg: x / 2
},
streak: {
start: a.streak && a.streak.start || 0,
sum: x = (a.steak && a.streak.sum || a) + b,
count: y = (a.streak && a.streak.count || 1) + 1,
avg: x / y
}
}
console.log('before', JSON.stringify({z}, null, ' ')
if ( z.couple.avg < z.streak.avg ) {
z.streak = z.couple
}
z.best = a.best || z.streak
if ( a.best && a.best.avg > z.streak.avg ) {
z.best = z.streak
}
console.log('after', JSON.stringify({z}, null, ' ')
return z
})
return result.best.start
}
/tmp/solution.js:23 console.log('before', JSON.stringify({z}, null, ' ') ^ SyntaxError: missing ) after argument list at Object.exports.runInThisContext (vm.js:76:16) at Module._compile (module.js:528:28) at Object.Module._extensions..js (module.js:565:10) at Module.load (module.js:473:32) at tryModuleLoad (module.js:432:12) at Function.Module._load (module.js:424:3) at Module.require (module.js:483:17) at require (internal/module.js:20:19) at main (/tmp/exec.js:235:20) at Object.<anonymous> (/tmp/exec.js:241:1)
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
var result = A.reduce(function (a, b, bIndex) {
var x, y, z
z = {
index: bIndex,
value: b,
couple: {
start: (a.index || 0),
sum: x = (a.value || a) + b,
count: 2,
avg: x / 2
},
streak: {
start: a.streak && a.streak.start || 0,
sum: x = (a.steak && a.streak.sum || a) + b,
count: y = (a.streak && a.streak.count || 1) + 1,
avg: x / y
}
}
console.log('before', JSON.stringify({z}, null, ' '))
if ( z.couple.avg < z.streak.avg ) {
z.streak = z.couple
}
z.best = a.best || z.streak
if ( a.best && a.best.avg > z.streak.avg ) {
z.best = z.streak
}
console.log('after', JSON.stringify({z}, null, ' '))
return z
})
return result.best.start
}
before { "z": { "index": 1, "value": 2, "couple": { "start": 0, "sum": 6, "count": 2, "avg": 3 }, "streak": { "start": 0, "sum": 6, "count": 2, "avg": 3 } } } after { "z": { "index": 1, "value": 2, "couple": { "start": 0, "sum": 6, "count": 2, "avg": 3 }, "streak": { "start": 0, "sum": 6, "count": 2, "avg": 3 }, "best": { "start": 0, "sum": 6, "count": 2, "avg": 3 } } } before { "z": { "index": 2, "value": 2, "couple": { "start": 1, "sum": 4, "count": 2, "avg": 2 }, "streak": { "start": 0, "sum": "[object Object]2", "count": 3, "avg": null } } } after { "z": { "index": 2, "value": 2, "couple": { "start": 1, "sum": 4, "count": 2, "avg": 2 }, "streak": { "start": 0, "sum": "[object Object]2", "count": 3, "avg": null }, "best": { "start": 0, "sum": 6, "count": 2, "avg": 3 } } } before { "z": { "index": 3, "value": 5, "couple": { "start": 2, "sum": 7, "count": 2, "avg": 3.5 }, "streak": { "start": 0, "sum": "[object Object]5", "count": 4, "avg": null } } } after { "z": { "index": 3, "value": 5, "couple": { "start": 2, "sum": 7, "count": 2, "avg": 3.5 }, "streak": { "start": 0, "sum": "[object Object]5", "count": 4, "avg": null }, "best": { "start": 0, "sum": 6, "count": 2, "avg": 3 } } } before { "z": { "index": 4, "value": 1, "couple": { "start": 3, "sum": 6, "count": 2, "avg": 3 }, "streak": { "start": 0, "sum": "[object Object]1", "count": 5, "avg": null } } } after { "z": { "index": 4, "
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
var result = A.reduce(function (a, b, bIndex) {
var f = typeof a === 'number'
var x, y, z
z = {
index: bIndex,
value: b,
couple: {
start: bIndex - 1,
sum: x = (f ? a : a.value) + b,
count: 2,
avg: x / 2
},
streak: {
start: a.streak && a.streak.start || 0,
sum: x = (f ? a : a.streak.sum) + b,
count: y = (f ? 1 : a.streak.count) + 1,
avg: x / y
}
}
console.log('before', JSON.stringify({z}, null, ' '))
if ( z.couple.avg < z.streak.avg ) {
z.streak = z.couple
}
z.best = a.best || z.streak
if ( a.best && a.best.avg > z.streak.avg ) {
z.best = z.streak
}
console.log('after', JSON.stringify({z}, null, ' '))
return z
})
return result.best.start
}
before { "z": { "index": 1, "value": 2, "couple": { "start": 0, "sum": 6, "count": 2, "avg": 3 }, "streak": { "start": 0, "sum": 6, "count": 2, "avg": 3 } } } after { "z": { "index": 1, "value": 2, "couple": { "start": 0, "sum": 6, "count": 2, "avg": 3 }, "streak": { "start": 0, "sum": 6, "count": 2, "avg": 3 }, "best": { "start": 0, "sum": 6, "count": 2, "avg": 3 } } } before { "z": { "index": 2, "value": 2, "couple": { "start": 1, "sum": 4, "count": 2, "avg": 2 }, "streak": { "start": 0, "sum": 8, "count": 3, "avg": 2.6666666666666665 } } } after { "z": { "index": 2, "value": 2, "couple": { "start": 1, "sum": 4, "count": 2, "avg": 2 }, "streak": { "start": 1, "sum": 4, "count": 2, "avg": 2 }, "best": { "start": 1, "sum": 4, "count": 2, "avg": 2 } } } before { "z": { "index": 3, "value": 5, "couple": { "start": 2, "sum": 7, "count": 2, "avg": 3.5 }, "streak": { "start": 1, "sum": 9, "count": 3, "avg": 3 } } } after { "z": { "index": 3, "value": 5, "couple": { "start": 2, "sum": 7, "count": 2, "avg": 3.5 }, "streak": { "start": 1, "sum": 9, "count": 3, "avg": 3 }, "best": { "start": 1, "sum": 4, "count": 2, "avg": 2 } } } before { "z": { "index": 4, "value": 1, "couple": { "start": 3, "sum": 6, "count": 2, "avg": 3 }, "streak": { "start": 1, "sum": 10, "count": 4, "avg": 2.5 } } } after { "z": { "index": 4, "value": 1, "couple": { "start": 3, "sum": 6, "count": 2,
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
var result = A.reduce(function (a, b, bIndex) {
var f = typeof a === 'number'
var x, y, z
z = {
index: bIndex,
value: b,
couple: {
start: bIndex - 1,
sum: x = (f ? a : a.value) + b,
count: 2,
avg: x / 2
},
streak: {
start: a.streak && a.streak.start || 0,
sum: x = (f ? a : a.streak.sum) + b,
count: y = (f ? 1 : a.streak.count) + 1,
avg: x / y
}
}
console.log('before', JSON.stringify({z}, null, ' '))
if ( z.couple.avg < z.streak.avg ) {
z.streak = z.couple
}
z.best = a.best || z.streak
if ( a.best && a.best.avg > z.streak.avg ) {
z.best = z.streak
}
// console.log('after', JSON.stringify({z}, null, ' '))
return z
})
return result.best.start
}
before { "z": { "index": 1, "value": 2, "couple": { "start": 0, "sum": 6, "count": 2, "avg": 3 }, "streak": { "start": 0, "sum": 6, "count": 2, "avg": 3 } } } before { "z": { "index": 2, "value": 2, "couple": { "start": 1, "sum": 4, "count": 2, "avg": 2 }, "streak": { "start": 0, "sum": 8, "count": 3, "avg": 2.6666666666666665 } } } before { "z": { "index": 3, "value": 5, "couple": { "start": 2, "sum": 7, "count": 2, "avg": 3.5 }, "streak": { "start": 1, "sum": 9, "count": 3, "avg": 3 } } } before { "z": { "index": 4, "value": 1, "couple": { "start": 3, "sum": 6, "count": 2, "avg": 3 }, "streak": { "start": 1, "sum": 10, "count": 4, "avg": 2.5 } } } before { "z": { "index": 5, "value": 5, "couple": { "start": 4, "sum": 6, "count": 2, "avg": 3 }, "streak": { "start": 1, "sum": 15, "count": 5, "avg": 3 } } } before { "z": { "index": 6, "value": 8, "couple": { "start": 5, "sum": 13, "count": 2, "avg": 6.5 }, "streak": { "start": 1, "sum": 23, "count": 6, "avg": 3.8333333333333335 } } }
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
var result = A.reduce(function (a, b, bIndex) {
var f = typeof a === 'number'
var x, y, z
z = {
index: bIndex,
value: b,
couple: {
start: bIndex - 1,
sum: x = (f ? a : a.value) + b,
count: 2,
avg: x / 2
},
streak: {
start: a.streak && a.streak.start || 0,
sum: x = (f ? a : a.streak.sum) + b,
count: y = (f ? 1 : a.streak.count) + 1,
avg: x / y
}
}
// console.log('before', JSON.stringify({z}, null, ' '))
if ( z.couple.avg < z.streak.avg ) {
z.streak = z.couple
}
z.best = a.best || z.streak
if ( a.best && a.best.avg > z.streak.avg ) {
z.best = z.streak
}
// console.log('after', JSON.stringify({z}, null, ' '))
return z
})
return result.best.start
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
var result = A.reduce(function (a, b, bIndex) {
var f = typeof a === 'number'
var x, y, z
z = {
index: bIndex,
value: b,
couple: {
start: bIndex - 1,
sum: x = (f ? a : a.value) + b,
count: 2,
avg: x / 2
},
streak: {
start: a.streak && a.streak.start || 0,
sum: x = (f ? a : a.streak.sum) + b,
count: y = (f ? 1 : a.streak.count) + 1,
avg: x / y
}
}
// console.log('before', JSON.stringify({z}, null, ' '))
if ( z.couple.avg < z.streak.avg ) {
z.streak = z.couple
}
z.best = a.best || z.streak
if ( a.best && a.best.avg > z.streak.avg ) {
z.best = z.streak
}
// console.log('after', JSON.stringify({z}, null, ' '))
return z
})
return result.best.start
}
/tmp/solution.js:5 var result = A.reduce(function (a, b, bIndex) { ^ TypeError: Reduce of empty array with no initial value at Array.reduce (native) at solution (/tmp/solution.js:5:20) at __solution_func (/tmp/solution.js:37:12) at run (/tmp/exec.js:219:22) at main (/tmp/exec.js:238:5) at Object.<anonymous> (/tmp/exec.js:241:1) at Module._compile (module.js:556:32) at Object.Module._extensions..js (module.js:565:10) at Module.load (module.js:473:32) at tryModuleLoad (module.js:432:12)
function result: 0
function result: 0
function result: 0
function result: 0
function result: 0
function result: 0
[]
[1, 1]
[1, 1, 2]
[1, 1, 1, 1]
[1, 1, 2, 2]
[1, 2, 1, 2]
[1, 2, 10, 1, 2, 10]
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
if ( A.length < 2 ) return null
var result = A.reduce(function (a, b, bIndex) {
var f = typeof a === 'number'
var x, y, z
z = {
index: bIndex,
value: b,
couple: {
start: bIndex - 1,
sum: x = (f ? a : a.value) + b,
count: 2,
avg: x / 2
},
streak: {
start: a.streak && a.streak.start || 0,
sum: x = (f ? a : a.streak.sum) + b,
count: y = (f ? 1 : a.streak.count) + 1,
avg: x / y
}
}
// console.log('before', JSON.stringify({z}, null, ' '))
if ( z.couple.avg < z.streak.avg ) {
z.streak = z.couple
}
z.best = a.best || z.streak
if ( a.best && a.best.avg > z.streak.avg ) {
z.best = z.streak
}
// console.log('after', JSON.stringify({z}, null, ' '))
return z
})
return result.best.start
}
Invalid result type, integer expected, 'object' found
function result: 0
function result: 0
function result: 0
function result: 0
function result: 0
function result: 0
[]
[1, 1]
[1, 1, 2]
[1, 1, 1, 1]
[1, 1, 2, 2]
[1, 2, 1, 2]
[1, 2, 10, 1, 2, 10]
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
if ( A.length < 2 ) return -1
var result = A.reduce(function (a, b, bIndex) {
var f = typeof a === 'number'
var x, y, z
z = {
index: bIndex,
value: b,
couple: {
start: bIndex - 1,
sum: x = (f ? a : a.value) + b,
count: 2,
avg: x / 2
},
streak: {
start: a.streak && a.streak.start || 0,
sum: x = (f ? a : a.streak.sum) + b,
count: y = (f ? 1 : a.streak.count) + 1,
avg: x / y
}
}
// console.log('before', JSON.stringify({z}, null, ' '))
if ( z.couple.avg < z.streak.avg ) {
z.streak = z.couple
}
z.best = a.best || z.streak
if ( a.best && a.best.avg > z.streak.avg ) {
z.best = z.streak
}
// console.log('after', JSON.stringify({z}, null, ' '))
return z
})
return result.best.start
}
function result: -1
function result: 0
function result: 0
function result: 0
function result: 0
function result: 0
function result: 0
[]
[1, 1]
[1, 1, 2]
[1, 1, 1, 1]
[1, 1, 2, 2]
[1, 2, 1, 2]
[1, 2, 10, 1, 2, 10]
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
if ( A.length < 2 ) return -1
var result = A.reduce(function (a, b, bIndex) {
var f = typeof a === 'number'
var x, y, z
z = {
index: bIndex,
value: b,
couple: {
start: bIndex - 1,
sum: x = (f ? a : a.value) + b,
count: 2,
avg: x / 2
},
streak: {
start: a.streak && a.streak.start || 0,
sum: x = (f ? a : a.streak.sum) + b,
count: y = (f ? 1 : a.streak.count) + 1,
avg: x / y
}
}
// console.log('before', JSON.stringify({z}, null, ' '))
if ( z.couple.avg < z.streak.avg ) {
z.streak = z.couple
}
z.best = a.best || z.streak
if ( a.best && a.best.avg > z.streak.avg ) {
z.best = z.streak
}
console.log('after', JSON.stringify({z}, null, ' '))
return z
})
return result.best.start
}
after { "z": { "index": 1, "value": 2, "couple": { "start": 0, "sum": 6, "count": 2, "avg": 3 }, "streak": { "start": 0, "sum": 6, "count": 2, "avg": 3 }, "best": { "start": 0, "sum": 6, "count": 2, "avg": 3 } } } after { "z": { "index": 2, "value": 2, "couple": { "start": 1, "sum": 4, "count": 2, "avg": 2 }, "streak": { "start": 1, "sum": 4, "count": 2, "avg": 2 }, "best": { "start": 1, "sum": 4, "count": 2, "avg": 2 } } } after { "z": { "index": 3, "value": 5, "couple": { "start": 2, "sum": 7, "count": 2, "avg": 3.5 }, "streak": { "start": 1, "sum": 9, "count": 3, "avg": 3 }, "best": { "start": 1, "sum": 4, "count": 2, "avg": 2 } } } after { "z": { "index": 4, "value": 1, "couple": { "start": 3, "sum": 6, "count": 2, "avg": 3 }, "streak": { "start": 1, "sum": 10, "count": 4, "avg": 2.5 }, "best": { "start": 1, "sum": 4, "count": 2, "avg": 2 } } } after { "z": { "index": 5, "value": 5, "couple": { "start": 4, "sum": 6, "count": 2, "avg": 3 }, "streak": { "start": 1, "sum": 15, "count": 5, "avg": 3 }, "best": { "start": 1, "sum": 4, "count": 2, "avg": 2 } } } after { "z": { "index": 6, "value": 8, "couple": { "start": 5, "sum": 13, "count": 2, "avg": 6.5 }, "streak": { "start": 1, "sum": 23, "count": 6, "avg": 3.8333333333333335 }, "best": { "start": 1, "sum": 4, "count": 2, "avg": 2 } } }
function result: -1
function result: 0
after { "z": { "index": 1, "value": 1, "couple": { "start": 0, "sum": 2, "count": 2, "avg": 1 }, "streak": { "start": 0, "sum": 2, "count": 2, "avg": 1 }, "best": { "start": 0, "sum": 2, "count": 2, "avg": 1 } } }
function result: 0
after { "z": { "index": 1, "value": 1, "couple": { "start": 0, "sum": 2, "count": 2, "avg": 1 }, "streak": { "start": 0, "sum": 2, "count": 2, "avg": 1 }, "best": { "start": 0, "sum": 2, "count": 2, "avg": 1 } } } after { "z": { "index": 2, "value": 2, "couple": { "start": 1, "sum": 3, "count": 2, "avg": 1.5 }, "streak": { "start": 0, "sum": 4, "count": 3, "avg": 1.3333333333333333 }, "best": { "start": 0, "sum": 2, "count": 2, "avg": 1 } } }
function result: 0
after { "z": { "index": 1, "value": 1, "couple": { "start": 0, "sum": 2, "count": 2, "avg": 1 }, "streak": { "start": 0, "sum": 2, "count": 2, "avg": 1 }, "best": { "start": 0, "sum": 2, "count": 2, "avg": 1 } } } after { "z": { "index": 2, "value": 1, "couple": { "start": 1, "sum": 2, "count": 2, "avg": 1 }, "streak": { "start": 0, "sum": 3, "count": 3, "avg": 1 }, "best": { "start": 0, "sum": 2, "count": 2, "avg": 1 } } } after { "z": { "index": 3, "value": 1, "couple": { "start": 2, "sum": 2, "count": 2, "avg": 1 }, "streak": { "start": 0, "sum": 4, "count": 4, "avg": 1 }, "best": { "start": 0, "sum": 2, "count": 2, "avg": 1 } } }
function result: 0
after { "z": { "index": 1, "value": 1, "couple": { "start": 0, "sum": 2, "count": 2, "avg": 1 }, "streak": { "start": 0, "sum": 2, "count": 2, "avg": 1 }, "best": { "start": 0, "sum": 2, "count": 2, "avg": 1 } } } after { "z": { "index": 2, "value": 2, "couple": { "start": 1, "sum": 3, "count": 2, "avg": 1.5 }, "streak": { "start": 0, "sum": 4, "count": 3, "avg": 1.3333333333333333 }, "best": { "start": 0, "sum": 2, "count": 2, "avg": 1 } } } after { "z": { "index": 3, "value": 2, "couple": { "start": 2, "sum": 4, "count": 2, "avg": 2 }, "streak": { "start": 0, "sum": 6, "count": 4, "avg": 1.5 }, "best": { "start": 0, "sum": 2, "count": 2, "avg": 1 } } }
function result: 0
after { "z": { "index": 1, "value": 2, "couple": { "start": 0, "sum": 3, "count": 2, "avg": 1.5 }, "streak": { "start": 0, "sum": 3, "count": 2, "avg": 1.5 }, "best": { "start": 0, "sum": 3, "count": 2, "avg": 1.5 } } } after { "z": { "index": 2, "value": 1, "couple": { "start": 1, "sum": 3, "count": 2, "avg": 1.5 }, "streak": { "start": 0, "sum": 4, "count": 3, "avg": 1.3333333333333333 }, "best": { "start": 0, "sum": 4, "count": 3, "avg": 1.3333333333333333 } } } after { "z": { "index": 3, "value": 2, "couple": { "start": 2, "sum": 3, "count": 2, "avg": 1.5 }, "streak": { "start": 0, "sum": 6, "count": 4, "avg": 1.5 }, "best": { "start": 0, "sum": 4, "count": 3, "avg": 1.3333333333333333 } } }
function result: 0
after { "z": { "index": 1, "value": 2, "couple": { "start": 0, "sum": 3, "count": 2, "avg": 1.5 }, "streak": { "start": 0, "sum": 3, "count": 2, "avg": 1.5 }, "best": { "start": 0, "sum": 3, "count": 2, "avg": 1.5 } } } after { "z": { "index": 2, "value": 10, "couple": { "start": 1, "sum": 12, "count": 2, "avg": 6 }, "streak": { "start": 0, "sum": 13, "count": 3, "avg": 4.333333333333333 }, "best": { "start": 0, "sum": 3, "count": 2, "avg": 1.5 } } } after { "z": { "index": 3, "value": 1, "couple": { "start": 2, "sum": 11, "count": 2, "avg": 5.5 }, "streak": { "start": 0, "sum": 14, "count": 4, "avg": 3.5 }, "best": { "start": 0, "sum": 3, "count": 2, "avg": 1.5 } } } after { "z": { "index": 4, "value": 2, "couple": { "start": 3, "sum": 3, "count": 2, "avg": 1.5 }, "streak": { "start": 3, "sum": 3, "count": 2, "avg": 1.5 }, "best": { "start": 0, "sum": 3, "count": 2, "avg": 1.5 } } } after { "z": { "index": 5, "value": 10, "couple": { "start": 4, "sum": 12, "count": 2, "avg": 6 }, "streak": { "start": 3, "sum": 13, "count": 3, "avg": 4.333333333333333 }, "best": { "start": 0, "sum": 3, "count": 2, "avg": 1.5 } } }
[]
[1, 1]
[1, 1, 2]
[1, 1, 1, 1]
[1, 1, 2, 2]
[1, 2, 1, 2]
[1, 2, 10, 1, 2, 10]
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
if ( A.length < 2 ) return -1
var result = A.reduce(function (a, b, bIndex) {
var f = typeof a === 'number'
var x, y, z
z = {
index: bIndex,
value: b,
couple: {
start: bIndex - 1,
sum: x = (f ? a : a.value) + b,
count: 2,
avg: x / 2
},
streak: {
start: a.bestStreak && a.bestStreak.start || 0,
sum: x = (f ? a : a.bestStreak.sum) + b,
count: y = (f ? 1 : a.bestStreak.count) + 1,
avg: x / y
}
}
z.bestStreak = z.couple.avg < z.streak.avg
? z.couple
: z.streak
z.best = !a.best || z.bestStreak.avg < a.best.avg
? z.bestStreak
: a.best
console.log('after', JSON.stringify({z}, null, ' '))
return z
})
return result.best.start
}
after { "z": { "index": 1, "value": 2, "couple": { "start": 0, "sum": 6, "count": 2, "avg": 3 }, "streak": { "start": 0, "sum": 6, "count": 2, "avg": 3 }, "bestStreak": { "start": 0, "sum": 6, "count": 2, "avg": 3 }, "best": { "start": 0, "sum": 6, "count": 2, "avg": 3 } } } after { "z": { "index": 2, "value": 2, "couple": { "start": 1, "sum": 4, "count": 2, "avg": 2 }, "streak": { "start": 0, "sum": 8, "count": 3, "avg": 2.6666666666666665 }, "bestStreak": { "start": 1, "sum": 4, "count": 2, "avg": 2 }, "best": { "start": 1, "sum": 4, "count": 2, "avg": 2 } } } after { "z": { "index": 3, "value": 5, "couple": { "start": 2, "sum": 7, "count": 2, "avg": 3.5 }, "streak": { "start": 1, "sum": 9, "count": 3, "avg": 3 }, "bestStreak": { "start": 1, "sum": 9, "count": 3, "avg": 3 }, "best": { "start": 1, "sum": 4, "count": 2, "avg": 2 } } } after { "z": { "index": 4, "value": 1, "couple": { "start": 3, "sum": 6, "count": 2, "avg": 3 }, "streak": { "start": 1, "sum": 10, "count": 4, "avg": 2.5 }, "bestStreak": { "start": 1, "sum": 10, "count": 4, "avg": 2.5 }, "best": { "start": 1, "sum": 4, "count": 2, "avg": 2 } } } after { "z": { "index": 5, "value": 5, "couple": { "start": 4, "sum": 6, "count": 2, "avg": 3 }, "streak": { "start": 1, "sum": 15, "count": 5, "avg": 3 }, "bestStreak": { "start": 1, "sum": 15, "count": 5, "avg": 3 }, "best": { "start": 1,
function result: -1
function result: 0
after { "z": { "index": 1, "value": 1, "couple": { "start": 0, "sum": 2, "count": 2, "avg": 1 }, "streak": { "start": 0, "sum": 2, "count": 2, "avg": 1 }, "bestStreak": { "start": 0, "sum": 2, "count": 2, "avg": 1 }, "best": { "start": 0, "sum": 2, "count": 2, "avg": 1 } } }
function result: 0
after { "z": { "index": 1, "value": 1, "couple": { "start": 0, "sum": 2, "count": 2, "avg": 1 }, "streak": { "start": 0, "sum": 2, "count": 2, "avg": 1 }, "bestStreak": { "start": 0, "sum": 2, "count": 2, "avg": 1 }, "best": { "start": 0, "sum": 2, "count": 2, "avg": 1 } } } after { "z": { "index": 2, "value": 2, "couple": { "start": 1, "sum": 3, "count": 2, "avg": 1.5 }, "streak": { "start": 0, "sum": 4, "count": 3, "avg": 1.3333333333333333 }, "bestStreak": { "start": 0, "sum": 4, "count": 3, "avg": 1.3333333333333333 }, "best": { "start": 0, "sum": 2, "count": 2, "avg": 1 } } }
function result: 0
after { "z": { "index": 1, "value": 1, "couple": { "start": 0, "sum": 2, "count": 2, "avg": 1 }, "streak": { "start": 0, "sum": 2, "count": 2, "avg": 1 }, "bestStreak": { "start": 0, "sum": 2, "count": 2, "avg": 1 }, "best": { "start": 0, "sum": 2, "count": 2, "avg": 1 } } } after { "z": { "index": 2, "value": 1, "couple": { "start": 1, "sum": 2, "count": 2, "avg": 1 }, "streak": { "start": 0, "sum": 3, "count": 3, "avg": 1 }, "bestStreak": { "start": 0, "sum": 3, "count": 3, "avg": 1 }, "best": { "start": 0, "sum": 2, "count": 2, "avg": 1 } } } after { "z": { "index": 3, "value": 1, "couple": { "start": 2, "sum": 2, "count": 2, "avg": 1 }, "streak": { "start": 0, "sum": 4, "count": 4, "avg": 1 }, "bestStreak": { "start": 0, "sum": 4, "count": 4, "avg": 1 }, "best": { "start": 0, "sum": 2, "count": 2, "avg": 1 } } }
function result: 0
after { "z": { "index": 1, "value": 1, "couple": { "start": 0, "sum": 2, "count": 2, "avg": 1 }, "streak": { "start": 0, "sum": 2, "count": 2, "avg": 1 }, "bestStreak": { "start": 0, "sum": 2, "count": 2, "avg": 1 }, "best": { "start": 0, "sum": 2, "count": 2, "avg": 1 } } } after { "z": { "index": 2, "value": 2, "couple": { "start": 1, "sum": 3, "count": 2, "avg": 1.5 }, "streak": { "start": 0, "sum": 4, "count": 3, "avg": 1.3333333333333333 }, "bestStreak": { "start": 0, "sum": 4, "count": 3, "avg": 1.3333333333333333 }, "best": { "start": 0, "sum": 2, "count": 2, "avg": 1 } } } after { "z": { "index": 3, "value": 2, "couple": { "start": 2, "sum": 4, "count": 2, "avg": 2 }, "streak": { "start": 0, "sum": 6, "count": 4, "avg": 1.5 }, "bestStreak": { "start": 0, "sum": 6, "count": 4, "avg": 1.5 }, "best": { "start": 0, "sum": 2, "count": 2, "avg": 1 } } }
function result: 0
after { "z": { "index": 1, "value": 2, "couple": { "start": 0, "sum": 3, "count": 2, "avg": 1.5 }, "streak": { "start": 0, "sum": 3, "count": 2, "avg": 1.5 }, "bestStreak": { "start": 0, "sum": 3, "count": 2, "avg": 1.5 }, "best": { "start": 0, "sum": 3, "count": 2, "avg": 1.5 } } } after { "z": { "index": 2, "value": 1, "couple": { "start": 1, "sum": 3, "count": 2, "avg": 1.5 }, "streak": { "start": 0, "sum": 4, "count": 3, "avg": 1.3333333333333333 }, "bestStreak": { "start": 0, "sum": 4, "count": 3, "avg": 1.3333333333333333 }, "best": { "start": 0, "sum": 4, "count": 3, "avg": 1.3333333333333333 } } } after { "z": { "index": 3, "value": 2, "couple": { "start": 2, "sum": 3, "count": 2, "avg": 1.5 }, "streak": { "start": 0, "sum": 6, "count": 4, "avg": 1.5 }, "bestStreak": { "start": 0, "sum": 6, "count": 4, "avg": 1.5 }, "best": { "start": 0, "sum": 4, "count": 3, "avg": 1.3333333333333333 } } }
function result: 0
after { "z": { "index": 1, "value": 2, "couple": { "start": 0, "sum": 3, "count": 2, "avg": 1.5 }, "streak": { "start": 0, "sum": 3, "count": 2, "avg": 1.5 }, "bestStreak": { "start": 0, "sum": 3, "count": 2, "avg": 1.5 }, "best": { "start": 0, "sum": 3, "count": 2, "avg": 1.5 } } } after { "z": { "index": 2, "value": 10, "couple": { "start": 1, "sum": 12, "count": 2, "avg": 6 }, "streak": { "start": 0, "sum": 13, "count": 3, "avg": 4.333333333333333 }, "bestStreak": { "start": 0, "sum": 13, "count": 3, "avg": 4.333333333333333 }, "best": { "start": 0, "sum": 3, "count": 2, "avg": 1.5 } } } after { "z": { "index": 3, "value": 1, "couple": { "start": 2, "sum": 11, "count": 2, "avg": 5.5 }, "streak": { "start": 0, "sum": 14, "count": 4, "avg": 3.5 }, "bestStreak": { "start": 0, "sum": 14, "count": 4, "avg": 3.5 }, "best": { "start": 0, "sum": 3, "count": 2, "avg": 1.5 } } } after { "z": { "index": 4, "value": 2, "couple": { "start": 3, "sum": 3, "count": 2, "avg": 1.5 }, "streak": { "start": 0, "sum": 16, "count": 5, "avg": 3.2 }, "bestStreak": { "start": 3, "sum": 3, "count": 2, "avg": 1.5 }, "best": { "start": 0, "sum": 3, "count": 2, "avg": 1.5 } } } after { "z": { "index": 5, "value": 10, "couple": { "start": 4, "sum": 12, "count": 2, "avg": 6 }, "streak": { "start": 3, "sum": 13, "count": 3, "avg": 4.333333333333333 }, "bestStreak": { "start": 3, "sum": 13, "count":
[]
[1, 1]
[1, 1, 2]
[1, 1, 1, 1]
[1, 1, 2, 2]
[1, 2, 1, 2]
[1, 2, 10, 1, 2, 10]
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
if ( A.length < 2 ) return -1
var result = A.reduce(function (a, b, bIndex) {
var f = typeof a === 'number'
var x, y, z
z = {
index: bIndex,
value: b,
couple: {
start: bIndex - 1,
sum: x = (f ? a : a.value) + b,
count: 2,
avg: x / 2
},
streak: {
start: a.bestStreak && a.bestStreak.start || 0,
sum: x = (f ? a : a.bestStreak.sum) + b,
count: y = (f ? 1 : a.bestStreak.count) + 1,
avg: x / y
}
}
z.bestStreak = z.couple.avg < z.streak.avg
? z.couple
: z.streak
z.best = !a.best || z.bestStreak.avg < a.best.avg
? z.bestStreak
: a.best
console.log(JSON.stringify({z}, null, ' '))
return z
})
return result.best.start
}
{ "z": { "index": 1, "value": 2, "couple": { "start": 0, "sum": 6, "count": 2, "avg": 3 }, "streak": { "start": 0, "sum": 6, "count": 2, "avg": 3 }, "bestStreak": { "start": 0, "sum": 6, "count": 2, "avg": 3 }, "best": { "start": 0, "sum": 6, "count": 2, "avg": 3 } } } { "z": { "index": 2, "value": 2, "couple": { "start": 1, "sum": 4, "count": 2, "avg": 2 }, "streak": { "start": 0, "sum": 8, "count": 3, "avg": 2.6666666666666665 }, "bestStreak": { "start": 1, "sum": 4, "count": 2, "avg": 2 }, "best": { "start": 1, "sum": 4, "count": 2, "avg": 2 } } } { "z": { "index": 3, "value": 5, "couple": { "start": 2, "sum": 7, "count": 2, "avg": 3.5 }, "streak": { "start": 1, "sum": 9, "count": 3, "avg": 3 }, "bestStreak": { "start": 1, "sum": 9, "count": 3, "avg": 3 }, "best": { "start": 1, "sum": 4, "count": 2, "avg": 2 } } } { "z": { "index": 4, "value": 1, "couple": { "start": 3, "sum": 6, "count": 2, "avg": 3 }, "streak": { "start": 1, "sum": 10, "count": 4, "avg": 2.5 }, "bestStreak": { "start": 1, "sum": 10, "count": 4, "avg": 2.5 }, "best": { "start": 1, "sum": 4, "count": 2, "avg": 2 } } } { "z": { "index": 5, "value": 5, "couple": { "start": 4, "sum": 6, "count": 2, "avg": 3 }, "streak": { "start": 1, "sum": 15, "count": 5, "avg": 3 }, "bestStreak": { "start": 1, "sum": 15, "count": 5, "avg": 3 }, "best": { "start": 1, "sum": 4, "count": 2
function result: -1
function result: 0
{ "z": { "index": 1, "value": 1, "couple": { "start": 0, "sum": 2, "count": 2, "avg": 1 }, "streak": { "start": 0, "sum": 2, "count": 2, "avg": 1 }, "bestStreak": { "start": 0, "sum": 2, "count": 2, "avg": 1 }, "best": { "start": 0, "sum": 2, "count": 2, "avg": 1 } } }
function result: 0
{ "z": { "index": 1, "value": 1, "couple": { "start": 0, "sum": 2, "count": 2, "avg": 1 }, "streak": { "start": 0, "sum": 2, "count": 2, "avg": 1 }, "bestStreak": { "start": 0, "sum": 2, "count": 2, "avg": 1 }, "best": { "start": 0, "sum": 2, "count": 2, "avg": 1 } } } { "z": { "index": 2, "value": 2, "couple": { "start": 1, "sum": 3, "count": 2, "avg": 1.5 }, "streak": { "start": 0, "sum": 4, "count": 3, "avg": 1.3333333333333333 }, "bestStreak": { "start": 0, "sum": 4, "count": 3, "avg": 1.3333333333333333 }, "best": { "start": 0, "sum": 2, "count": 2, "avg": 1 } } }
function result: 0
{ "z": { "index": 1, "value": 1, "couple": { "start": 0, "sum": 2, "count": 2, "avg": 1 }, "streak": { "start": 0, "sum": 2, "count": 2, "avg": 1 }, "bestStreak": { "start": 0, "sum": 2, "count": 2, "avg": 1 }, "best": { "start": 0, "sum": 2, "count": 2, "avg": 1 } } } { "z": { "index": 2, "value": 1, "couple": { "start": 1, "sum": 2, "count": 2, "avg": 1 }, "streak": { "start": 0, "sum": 3, "count": 3, "avg": 1 }, "bestStreak": { "start": 0, "sum": 3, "count": 3, "avg": 1 }, "best": { "start": 0, "sum": 2, "count": 2, "avg": 1 } } } { "z": { "index": 3, "value": 1, "couple": { "start": 2, "sum": 2, "count": 2, "avg": 1 }, "streak": { "start": 0, "sum": 4, "count": 4, "avg": 1 }, "bestStreak": { "start": 0, "sum": 4, "count": 4, "avg": 1 }, "best": { "start": 0, "sum": 2, "count": 2, "avg": 1 } } }
function result: 0
{ "z": { "index": 1, "value": 1, "couple": { "start": 0, "sum": 2, "count": 2, "avg": 1 }, "streak": { "start": 0, "sum": 2, "count": 2, "avg": 1 }, "bestStreak": { "start": 0, "sum": 2, "count": 2, "avg": 1 }, "best": { "start": 0, "sum": 2, "count": 2, "avg": 1 } } } { "z": { "index": 2, "value": 2, "couple": { "start": 1, "sum": 3, "count": 2, "avg": 1.5 }, "streak": { "start": 0, "sum": 4, "count": 3, "avg": 1.3333333333333333 }, "bestStreak": { "start": 0, "sum": 4, "count": 3, "avg": 1.3333333333333333 }, "best": { "start": 0, "sum": 2, "count": 2, "avg": 1 } } } { "z": { "index": 3, "value": 2, "couple": { "start": 2, "sum": 4, "count": 2, "avg": 2 }, "streak": { "start": 0, "sum": 6, "count": 4, "avg": 1.5 }, "bestStreak": { "start": 0, "sum": 6, "count": 4, "avg": 1.5 }, "best": { "start": 0, "sum": 2, "count": 2, "avg": 1 } } }
function result: 0
{ "z": { "index": 1, "value": 2, "couple": { "start": 0, "sum": 3, "count": 2, "avg": 1.5 }, "streak": { "start": 0, "sum": 3, "count": 2, "avg": 1.5 }, "bestStreak": { "start": 0, "sum": 3, "count": 2, "avg": 1.5 }, "best": { "start": 0, "sum": 3, "count": 2, "avg": 1.5 } } } { "z": { "index": 2, "value": 1, "couple": { "start": 1, "sum": 3, "count": 2, "avg": 1.5 }, "streak": { "start": 0, "sum": 4, "count": 3, "avg": 1.3333333333333333 }, "bestStreak": { "start": 0, "sum": 4, "count": 3, "avg": 1.3333333333333333 }, "best": { "start": 0, "sum": 4, "count": 3, "avg": 1.3333333333333333 } } } { "z": { "index": 3, "value": 2, "couple": { "start": 2, "sum": 3, "count": 2, "avg": 1.5 }, "streak": { "start": 0, "sum": 6, "count": 4, "avg": 1.5 }, "bestStreak": { "start": 0, "sum": 6, "count": 4, "avg": 1.5 }, "best": { "start": 0, "sum": 4, "count": 3, "avg": 1.3333333333333333 } } }
function result: 0
{ "z": { "index": 1, "value": 2, "couple": { "start": 0, "sum": 3, "count": 2, "avg": 1.5 }, "streak": { "start": 0, "sum": 3, "count": 2, "avg": 1.5 }, "bestStreak": { "start": 0, "sum": 3, "count": 2, "avg": 1.5 }, "best": { "start": 0, "sum": 3, "count": 2, "avg": 1.5 } } } { "z": { "index": 2, "value": 10, "couple": { "start": 1, "sum": 12, "count": 2, "avg": 6 }, "streak": { "start": 0, "sum": 13, "count": 3, "avg": 4.333333333333333 }, "bestStreak": { "start": 0, "sum": 13, "count": 3, "avg": 4.333333333333333 }, "best": { "start": 0, "sum": 3, "count": 2, "avg": 1.5 } } } { "z": { "index": 3, "value": 1, "couple": { "start": 2, "sum": 11, "count": 2, "avg": 5.5 }, "streak": { "start": 0, "sum": 14, "count": 4, "avg": 3.5 }, "bestStreak": { "start": 0, "sum": 14, "count": 4, "avg": 3.5 }, "best": { "start": 0, "sum": 3, "count": 2, "avg": 1.5 } } } { "z": { "index": 4, "value": 2, "couple": { "start": 3, "sum": 3, "count": 2, "avg": 1.5 }, "streak": { "start": 0, "sum": 16, "count": 5, "avg": 3.2 }, "bestStreak": { "start": 3, "sum": 3, "count": 2, "avg": 1.5 }, "best": { "start": 0, "sum": 3, "count": 2, "avg": 1.5 } } } { "z": { "index": 5, "value": 10, "couple": { "start": 4, "sum": 12, "count": 2, "avg": 6 }, "streak": { "start": 3, "sum": 13, "count": 3, "avg": 4.333333333333333 }, "bestStreak": { "start": 3, "sum": 13, "count": 3, "avg": 4.333333333333
[]
[1, 1]
[1, 1, 2]
[1, 1, 1, 1]
[1, 1, 2, 2]
[1, 2, 1, 2]
[1, 2, 10, 1, 2, 10]
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
if ( A.length < 2 ) return -1
var result = A.reduce(function (a, b, bIndex) {
var f = typeof a === 'number'
var x, y, z
z = {
index: bIndex,
value: b,
couple: {
start: bIndex - 1,
sum: x = (f ? a : a.value) + b,
count: 2,
avg: x / 2
},
streak: {
start: a.bestStreak && a.bestStreak.start || 0,
sum: x = (f ? a : a.bestStreak.sum) + b,
count: y = (f ? 1 : a.bestStreak.count) + 1,
avg: x / y
}
}
z.bestStreak = z.couple.avg < z.streak.avg
? z.couple
: z.streak
z.best = !a.best || z.bestStreak.avg < a.best.avg
? z.bestStreak
: a.best
// console.log(JSON.stringify({z}, null, ' '))
return z
})
return result.best.start
}
function result: -1
function result: 0
function result: 1
function result: 1
function result: 1
function result: 1
function result: 1
[]
[1, 1]
[20, 1, 1, 2]
[20, 1, 1, 1, 1]
[20, 1, 1, 2, 2]
[20, 1, 2, 1, 2]
[20, 1, 2, 10, 1, 2, 10]
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
if ( A.length < 2 ) return -1
var result = A.reduce(function (a, b, bIndex) {
var f = typeof a === 'number'
var x, y, z
z = {
index: bIndex,
value: b,
couple: {
start: bIndex - 1,
sum: x = (f ? a : a.value) + b,
count: 2,
avg: x / 2
},
streak: {
start: a.bestStreak && a.bestStreak.start || 0,
sum: x = (f ? a : a.bestStreak.sum) + b,
count: y = (f ? 1 : a.bestStreak.count) + 1,
avg: x / y
}
}
z.bestStreak = z.couple.avg < z.streak.avg
? z.couple
: z.streak
z.best = !a.best || z.bestStreak.avg < a.best.avg
? z.bestStreak
: a.best
// console.log(JSON.stringify({z}, null, ' '))
return z
})
return result.best.start
}
function result: -1
function result: 0
function result: 1
function result: 1
function result: 1
function result: 1
function result: 1
[]
[1, 1]
[20, 1, 1, 2]
[20, 1, 1, 1, 1]
[20, 1, 1, 2, 2]
[20, 1, 2, 1, 2]
[20, 1, 2, 10, 1, 2, 10]
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
if ( A.length < 2 ) return -1
var result = A.reduce(function (a, b, bIndex) {
var f = typeof a === 'number'
var x, y, z
z = {
index: bIndex,
value: b,
couple: {
start: bIndex - 1,
sum: x = (f ? a : a.value) + b,
count: 2,
avg: x / 2
},
streak: {
start: a.bestStreak && a.bestStreak.start || 0,
sum: x = (f ? a : a.bestStreak.sum) + b,
count: y = (f ? 1 : a.bestStreak.count) + 1,
avg: x / y
}
}
z.bestStreak = z.couple.avg < z.streak.avg
? z.couple
: z.streak
z.best = !a.best || z.bestStreak.avg < a.best.avg
? z.bestStreak
: a.best
// console.log(JSON.stringify({z}, null, ' '))
return z
})
return result.best.start
}
The solution obtained perfect score.