Last active
November 7, 2018 16:41
-
-
Save everm1nd/7115e48a9c547160756393667e878abe to your computer and use it in GitHub Desktop.
[WIP] Simple Time Difference Kata done by students: https://www.codewars.com/kata/simple-time-difference/train/javascript
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// https://www.codewars.com/kata/simple-time-difference/train/javascript | |
function solve(arr){ | |
return arr.map(convertTimeToMinutes).sort((a, b) => a - b); | |
// const day = convertTimeToMinutes('24:00') | |
// const firstTime = convertTimeToMinutes(arr[0]) | |
// const nextDayTime = firstTime + day | |
// return convertMinutesToTime(nextDayTime - firstTime - 1) | |
} | |
function calculateDistances(element, index, array) { | |
const next = array[index + 1] | |
const prev = array[index - 1] | |
const current = element | |
return next - current | |
} | |
function convertTimeToMinutes(timeString) { | |
const hoursAndMins = timeString.split(':').map((elem) => parseInt(elem)); | |
const minutes = hoursAndMins[0] * 60 + hoursAndMins[1]; | |
return minutes | |
} | |
function convertMinutesToTime(totalMinutes) { | |
const hours = Math.floor(totalMinutes / 60) | |
const minutes = totalMinutes - hours * 60 | |
const format = (number) => number < 10 ? `0${number}` : `${number}` | |
return format(hours) + ':' + format(minutes) | |
} | |
////////// | |
describe("Basic tests", function(){ | |
Test.assertEquals(solve(["14:51"]), "23:59"); | |
Test.assertEquals(solve(["23:00","04:22","18:05","06:24"]),"11:40"); | |
// Test.assertEquals(solve(["21:14", "15:34", "14:51", "06:25", "15:30"]),"09:10"); | |
}); | |
describe("time to integer converter", function(){ | |
Test.assertEquals(convertTimeToMinutes("01:10"), 70); | |
Test.assertEquals(convertTimeToMinutes("00:00"), 0); | |
}); | |
describe("integer to time converter", function(){ | |
Test.assertEquals(convertMinutesToTime(70), "01:10"); | |
Test.assertEquals(convertMinutesToTime(0), "00:00"); | |
}); | |
describe("calculate distances", function(){ | |
Test.assertEquals(calculateDistances(['00:10','01:15']), 65); | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment