Untitled

 avatar
unknown
javascript
3 years ago
1.2 kB
4
Indexable
const fs = require('fs');
const input = fs.readFileSync('input.txt').toString();
const numbers = input.split(',').filter(v => v).map(Number);

const findMinCost = (numbers) => {
  const map = {};

  numbers.forEach((item) => {
    let sum = 0;

    numbers.forEach((pos) => {
      const diff = Math.abs(item - pos);

      sum += diff;
    });

    map[item] = sum;
  })

  return Math.min(...Object.values(map));
}

const findMinCost2 = (numbers) => {
  const map = {};
  const longestDistance = Math.max(...numbers);
  const shortestDistance = Math.min(...numbers);
  const length = Math.abs(longestDistance, shortestDistance);
  const allPos = [...new Array(length).fill(0).map((_, i) => i)];

  allPos.forEach((item, idx1) => {
    map[idx1] = [];
    sum = 0;

    numbers.forEach((pos) => {
      let delta = Math.abs(item - pos);
      const cost = [...new Array(delta).fill(0).map((_, i) => i + 1)].reduce((acc, v) => acc + v, 0);

      map[idx1].push(cost);
    });

    map[idx1] = map[idx1].reduce((acc, a) => acc + a);
  })
  
  return Math.min(...Object.values(map));
}

//a
console.log(findMinCost(numbers))

//b
console.log(findMinCost2(numbers));
Editor is loading...