הרבה יותר קריא!
אני חושב שאם מתחיל בלהפוך הכל למספרים היית יכול לוותר על הפרמטרים ל sort (ולעבוד עם מיון ברירת המחדל של מספרים)
ועוד אגב זה שאני אוהב לקחת את האיבר האחרון עם slice:
line[line.length - 1] == line.slice(-1)
והטריק הכי אהוב עליי בהקשר הזה נקרא Destructuring כי הוא עוזר לשבור את line אוטומטית כלומר שאפשר לכתוב:
.map(([min, max]) => max - min) // 5
ואפשר גם להגדיר קצת פונקציות עזר ואז מקבלים:
Array.prototype.sum = function() {
return this.reduce((acc, val) => acc + val, 0);
};
Array.prototype.toNumericArray = function() {
return this.map(x => Number(x));
}
function getCheckSum(input){
return input
.split('\n') // 1
.map(line => line.split('\t')) // 2
.map(line => line.toNumericArray())
.map(line => line.sort()) // 3
.map(line => [line[0], line.slice(-1)]) // 4
.map(([min, max]) => max - min) // 5
.sum()
}
console.log(getCheckSum("5\t1\t9\t5\n7\t5\t3\n2\t4\t6\t8"));