#Challenge 19
1 messages · Page 1 of 1 (latest)
He hecho esto (seguramente sea la peor forma, pero estoy aprendiendo todavia XD), pero me da error en los test
||
function learn(time, courses) {
let perf = [];
let poss = [];
courses.forEach((a, _a) => {
courses.forEach((b, _b) => {
if (a !== b) {
let sum = a + b;
if (sum === time) perf.push([_a, _b]);
if (sum <= time) poss.push([_a, _b, sum]);
}
});
});
if (perf.length > 0) {
return perf[0];
} else if (poss.length > 0) {
let item = poss.sort(function (a, b) {
return b[2] - a[2];
})[0];
return [item[0], item[1]];
} else {
return null
}
}
||
Los ejemplos me dan igual todos, no se que me estoy perdiendo
Ah ya esta solucionado, en el primer if estaba comparando los valores en vez de los indices 😅
#19:
export default function learn(time, courses) {
return courses
.flatMap((_, i1) => courses.slice(i1 + 1).map((_, i2) => [i1, i2 + i1 + 1]))
.filter(([i1, i2]) => (courses[i1] + courses[i2]) <= time)
.sort(([i1, i2], [j1, j2]) => courses[j1] + courses[j2] - courses[i1] - courses[i2])[0] ?? null;
}
Mi solución del día
export default function learn(time, courses) {
let pairOfCourses;
for (let i = 0; i < courses.length; i++) {
for (let j = i + 1; j < courses.length; j++) {
const timeToExpend = courses[i] + courses[j]
const maximumPreviousTime = pairOfCourses
? courses[pairOfCourses[0]] + courses[pairOfCourses[1]]
: 0
if (timeToExpend <= time && timeToExpend > maximumPreviousTime) pairOfCourses = [i, j]
}
}
return pairOfCourses ? pairOfCourses : null
}
Reto 19
||```js
export default function learn( time, courses ) {
let maxTotalTime = -1
let maxTotalTimeIndexes = null
for( let i = 0; i < courses.length - 1; ++i ) {
for( let j = i + 1; j < courses.length; ++j ) {
const totalTime = courses[ i ] + courses[ j ]
if( totalTime === time ) return [ i, j ]
if( totalTime < time && totalTime > maxTotalTime ) {
maxTotalTime = totalTime
maxTotalTimeIndexes = [ i, j ]
}
}
}
return maxTotalTimeIndexes
}
Prácticamente hemos calcado las soluciones 😉
Mi solución