Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
Clear&Readable solution in Clear category for [old] Fast Train by SaintDron
function fastTrain(numbers) {
const run = (way, speed, minute) => {
if (!way.length && speed === 1)
times.add(minute);
[-1, 0, 1].forEach(ds => { // current speed change
let nSpeed = speed + ds;
if (nSpeed > 0 && nSpeed <= way.length && way.slice(0, nSpeed).every(v => nSpeed <= v))
run(way.slice(nSpeed), nSpeed, minute + 1);
});
};
let times = new Set(),
way = numbers.reduce((a, c) => a.concat( new Array(c[0]).fill(c[1]) ), []);
run(way, 0, 0);
return Math.min(...times);
}
var assert = require('assert');
if (!global.is_checking) {
console.log('Example:');
console.log(fastTrain([[4, 3]]));
assert.equal(fastTrain([[4, 3]]), 3);
assert.equal(fastTrain([[9, 10]]), 5);
assert.equal(fastTrain([[5, 5], [4, 2]]), 6);
console.log('"Run" is good. How is "Check"?');
}
Nov. 8, 2018
Comments: