Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
Fast Train solution in Clear category for Fast Train by Atadolfo
var fastTrain = (sections: [number, number][]): number => {
let limits: number[] = sections.reduce((arr: number[], [distance, limit]: [number, number]) => arr.concat(...new Array(distance).fill(limit)), []);
limits[0] = 1;
limits[limits.length - 1] = 1;
let Calculate = (index: number, prevSpeed: number, result: number[]): number[] => {
if (index == limits.length) return result;
let ok: boolean = false, i: number;
for (let speed: number = prevSpeed + 1; !ok && speed >= prevSpeed - 1; speed--) {
for (i = index, ok = true; ok && i < index + speed; i++) ok &&= i < limits.length && speed <= limits[i];
if (ok) {
let ret: number[] = Calculate(index + speed, speed, result.concat(speed));
ok = ret.length != result.length;
result = ret;
}
}
if (!ok) result.length--;
return result;
}
return Calculate(1, 1, [1]).length;
}
Nov. 3, 2020