/** * 1033. Moving Stones Until Consecutive * https://leetcode.com/problems/moving-stones-until-consecutive/ * Difficulty: Medium * * There are three stones in different positions on the X-axis. You are given three integers a, b, * and c, the positions of the stones. * * In one move, you pick up a stone at an endpoint (i.e., either the lowest or highest position * stone), and move it to an unoccupied position between those endpoints. Formally, let's say the * stones are currently at positions x, y, and z with x < y < z. You pick up the stone at either * position x or position z, and move that stone to an integer position k, with x < k < z and * k != y. * * The game ends when you cannot make any more moves (i.e., the stones are in three consecutive * positions). * * Return an integer array answer of length 2 where: * - answer[0] is the minimum number of moves you can play, and * - answer[1] is the maximum number of moves you can play. */ /** * @param {number} a * @param {number} b * @param {number} c * @return {number[]} */ var numMovesStones = function(a, b, c) { const positions = [a, b, c].sort((x, y) => x - y); const minGap = Math.min(positions[1] - positions[0], positions[2] - positions[1]); const totalGap = positions[2] - positions[0] - 2; const minMoves = positions[1] - positions[0] === 1 && positions[2] - positions[1] === 1 ? 0 : minGap <= 2 ? 1 : 2; const maxMoves = totalGap; return [minMoves, maxMoves]; };