freeCodeCamp/curriculum/challenges/spanish/08-coding-interview-prep/algorithms/pairwise.spanish.md

3.2 KiB

id title localeTitle challengeType
a3f503de51cfab748ff001aa Pairwise Por pares 5

Description

Dado una matriz arr , encuentre pares de elementos cuya suma sea igual al segundo argumento arg y devuelva la suma de sus índices. Puede usar varios pares que tengan los mismos elementos numéricos pero diferentes índices. Cada par debe usar los índices disponibles más bajos posibles. Una vez que se ha utilizado un elemento, no puede reutilizarse para emparejarse con otro elemento. Por ejemplo, por pairwise([1, 1, 2], 3) crea un par [2, 1] usando el 1 en el índice 0 en lugar del 1 en el índice 1, porque 0 + 2 <1 + 2. Por ejemplo, por pairwise([7, 9, 11, 13, 15], 20) devuelve 6 . Los pares que suman 20 son [7, 13] y [9, 11] . Luego podemos escribir la matriz con sus índices y valores.
Índice 0 1 2 3 4
Valor 7 9 11 13 15
A continuación tomaremos sus índices correspondientes y los añadiremos. 7 + 13 = 20 → Índices 0 + 3 = 3
9 + 11 = 20 → Índices 1 + 2 = 3
3 + 3 = 6 → Volver 6 Recuerda usar Read-Search-Ask si te atascas. Trate de emparejar el programa. Escribe tu propio código.

Instructions

Tests

tests:
  - text: ' <code>pairwise([1, 4, 2, 3, 0, 5], 7)</code> debe devolver 11.'
    testString: 'assert.deepEqual(pairwise([1, 4, 2, 3, 0, 5], 7), 11, "<code>pairwise([1, 4, 2, 3, 0, 5], 7)</code> should return 11.");'
  - text: ' <code>pairwise([1, 3, 2, 4], 4)</code> debe devolver 1.'
    testString: 'assert.deepEqual(pairwise([1, 3, 2, 4], 4), 1, "<code>pairwise([1, 3, 2, 4], 4)</code> should return 1.");'
  - text: ' <code>pairwise([1, 1, 1], 2)</code> debe devolver 1.'
    testString: 'assert.deepEqual(pairwise([1, 1, 1], 2), 1, "<code>pairwise([1, 1, 1], 2)</code> should return 1.");'
  - text: ' <code>pairwise([0, 0, 0, 0, 1, 1], 1)</code> debe devolver 10.'
    testString: 'assert.deepEqual(pairwise([0, 0, 0, 0, 1, 1], 1), 10, "<code>pairwise([0, 0, 0, 0, 1, 1], 1)</code> should return 10.");'
  - text: ' <code>pairwise([], 100)</code> debe devolver 0.'
    testString: 'assert.deepEqual(pairwise([], 100), 0, "<code>pairwise([], 100)</code> should return 0.");'

Challenge Seed

function pairwise(arr, arg) {
  return arg;
}

pairwise([1,4,2,3,0,5], 7);

Solution

function pairwise(arr, arg) {
  var sum = 0;
  arr.forEach(function(e, i, a) {
    if (e != null) {
      var diff = arg-e;
      a[i] = null;
      var dix = a.indexOf(diff);
      if (dix !== -1) {
        sum += dix;
        sum += i;
        a[dix] = null;
      }
    }
  });
  return sum;
}

pairwise([1,4,2,3,0,5], 7);