#Challenge 19

1 messages · Page 1 of 1 (latest)

sleek spear
#

¡A ver esa magia!

white glade
#

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 😅

jade hemlock
vale girder
#
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;
}
tall socket
kind pine
#

Mi solución del día

cursive holly
#
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
}
daring pasture
#

Reto 19

broken parrot
#

||```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
}

broken parrot
normal ether
near glade
#

Mi solución