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.