diff --git a/solutions.ts b/solutions.ts index ffc56a4..f39e84a 100644 --- a/solutions.ts +++ b/solutions.ts @@ -149,18 +149,33 @@ const f3 = (ar: AR): AR => { const rand:AR = [15, 30, 80, 68, 73, 26, 53, 62, 66, 51, 29, 39, 18, 9, 4, 17, 84, 89, 1, 28, 13, 44, 49, 92, 97, 63, 2, 65, 93, 10, 69, 91, 76, 0, 36, 46, 47, 90, 41, 33, 23, 56, 8, 24, 52, 32, 71, 70, 60, 94, 75, 35, 38, 27, 77, 19, 55, 14, 3, 83, 59, 79, 11, 98, 45, 67, 86, 42, 20, 12, 5, 96, 40, 31, 57, 21, 6, 81, 25, 34, 78, 72, 64, 43, 99, 87, 54, 74, 82, 22, 16, 50, 7, 95, 58, 85, 61, 88, 37, 48, 15, 30, 80, 68, 73, 26, 53, 62, 66, 51, 29, 39, 18, 9, 4, 17, 84, 89, 1, 28, 13, 44, 49, 92, 97, 63, 2, 65, 93, 10, 69, 91, 76, 0, 36, 46, 47, 90, 41, 33, 23, 56, 8, 24, 52, 32, 71, 70, 60, 94, 75, 35, 38, 27, 77, 19, 55, 14, 3, 83, 59, 79, 11, 98, 45, 67, 86, 42, 20, 12, 5, 96, 40, 31, 57, 21, 6, 81, 25, 34, 78, 72, 64, 43, 99, 87, 54, 74, 82, 22, 16, 50, 7, 95, 58, 85, 61, 88, 37, 48, 15, 30, 80, 68, 73, 26, 53, 62, 66, 51, 29, 39, 18, 9, 4, 17, 84, 89, 1, 28, 13, 44, 49, 92, 97, 63, 2, 65, 93, 10, 69, 91, 76, 0, 36, 46, 47, 90, 41, 33, 23, 56, 8, 24, 52, 32, 71, 70, 60, 94, 75, 35, 38, 27, 77, 19, 55, 14, 3, 83, 59, 79, 11, 98, 45, 67, 86, 42, 20, 12, 5, 96, 40, 31, 57, 21, 6, 81, 25, 34, 78, 72, 64, 43, 99, 87, 54, 74, 82, 22, 16, 50, 7, 95, 58, 85, 61, 88, 37, 48, 15, 30, 80, 68, 73, 26, 53, 62, 66, 51, 29, 39, 18, 9, 4, 17, 84, 89, 1, 28, 13, 44, 49, 92, 97, 63, 2, 65, 93, 10, 69, 91, 76, 0, 36, 46, 47, 90, 41, 33, 23, 56, 8, 24, 52, 32, 71, 70, 60, 94, 75, 35, 38, 27, 77, 19, 55, 14, 3, 83, 59, 79, 11, 98, 45, 67, 86, 42, 20, 12, 5, 96, 40, 31, 57, 21, 6, 81, 25, 34, 78, 72, 64, 43, 99, 87, 54, 74, 82, 22, 16, 50, 7, 95, 58, 85, 61, 88, 37, 48, 15, 30, 80, 68, 73, 26, 53, 62, 66, 51, 29, 39, 18, 9, 4, 17, 84, 89, 1, 28, 13, 44, 49, 92, 97, 63, 2, 65, 93, 10, 69, 91, 76, 0, 36, 46, 47, 90, 41, 33, 23, 56, 8, 24, 52, 32, 71, 70, 60, 94, 75, 35, 38, 27, 77, 19, 55, 14, 3, 83, 59, 79, 11, 98, 45, 67, 86, 42, 20, 12, 5, 96, 40, 31, 57, 21, 6, 81, 25, 34, 78, 72, 64, 43, 99, 87, 54, 74, 82, 22, 16, 50, 7, 95, 58, 85, 61, 88, 37, 48, 15, 30, 80, 68, 73, 26, 53, 62, 66, 51, 29, 39, 18, 9, 4, 17, 84, 89, 1, 28, 13, 44, 49, 92, 97, 63, 2, 65, 93, 10, 69, 91, 76, 0, 36, 46, 47, 90, 41, 33, 23, 56, 8, 24, 52, 32, 71, 70, 60, 94, 75, 35, 38, 27, 77, 19, 55, 14, 3, 83, 59, 79, 11, 98, 45, 67, 86, 42, 20, 12, 5, 96, 40, 31, 57, 21, 6, 81, 25, 34, 78, 72, 64, 43, 99, 87, 54, 74, 82, 22, 16, 50, 7, 95, 58, 85, 61, 88, 37, 48, 15, 30, 80, 68, 73, 26, 53, 62, 66, 51, 29, 39, 18, 9, 4, 17, 84, 89, 1, 28, 13, 44, 49, 92, 97, 63, 2, 65, 93, 10, 69, 91, 76, 0, 36, 46, 47, 90, 41, 33, 23, 56, 8, 24, 52, 32, 71, 70, 60, 94, 75, 35, 38, 27, 77, 19, 55, 14, 3, 83, 59, 79, 11, 98, 45, 67, 86, 42, 20, 12, 5, 96, 40, 31, 57, 21, 6, 81, 25, 34, 78, 72, 64, 43, 99, 87, 54, 74, 82, 22, 16, 50, 7, 95, 58, 85, 61, 88, 37, 48, 15, 30, 80, 68, 73, 26, 53, 62, 66, 51, 29, 39, 18, 9, 4, 17, 84, 89, 1, 28, 13, 44, 49, 92, 97, 63, 2, 65, 93, 10, 69, 91, 76, 0, 36, 46, 47, 90, 41, 33, 23, 56, 8, 24, 52, 32, 71, 70, 60, 94, 75, 35, 38, 27, 77, 19, 55, 14, 3, 83, 59, 79, 11, 98, 45, 67, 86, 42, 20, 12, 5, 96, 40, 31, 57, 21, 6, 81, 25, 34, 78, 72, 64, 43, 99, 87, 54, 74, 82, 22, 16, 50, 7, 95, 58, 85, 61, 88, 37, 48, 15, 30, 80, 68, 73, 26, 53, 62, 66, 51, 29, 39, 18, 9, 4, 17, 84, 89, 1, 28, 13, 44, 49, 92, 97, 63, 2, 65, 93, 10, 69, 91, 76, 0, 36, 46, 47, 90, 41, 33, 23, 56, 8, 24, 52, 32, 71, 70, 60, 94, 75, 35, 38, 27, 77, 19, 55, 14, 3, 83, 59, 79, 11, 98, 45, 67, 86, 42, 20, 12, 5, 96, 40, 31, 57, 21, 6, 81, 25, 34, 78, 72, 64, 43, 99, 87, 54, 74, 82, 22, 16, 50, 7, 95, 58, 85, 61, 88, 37, 48, 15, 30, 80, 68, 73, 26, 53, 62, 66, 51, 29, 39, 18, 9, 4, 17, 84, 89, 1, 28, 13, 44, 49, 92, 97, 63, 2, 65, 93, 10, 69, 91, 76, 0, 36, 46, 47, 90, 41, 33, 23, 56, 8, 24, 52, 32, 71, 70, 60, 94, 75, 35, 38, 27, 77, 19, 55, 14, 3, 83, 59, 79, 11, 98, 45, 67, 86, 42, 20, 12, 5, 96, 40, 31, 57, 21, 6, 81, 25, 34, 78, 72, 64, 43, 99, 87, 54, 74, 82, 22, 16, 50, 7, 95, 58, 85, 61, 88, 37, 48, 15, 30, 80, 68, 73, 26, 53, 62, 66, 51, 29, 39, 18, 9, 4, 17, 84, 89, 1, 28, 13, 44, 49, 92, 97, 63, 2, 65, 93, 10, 69, 91, 76, 0, 36, 46, 47, 90, 41, 33, 23, 56, 8, 24, 52, 32, 71, 70, 60, 94, 75, 35, 38, 27, 77, 19, 55, 14, 3, 83, 59, 79, 11, 98, 45, 67, 86, 42, 20, 12, 5, 96, 40, 31, 57, 21, 6, 81, 25, 34, 78, 72, 64, 43, 99, 87, 54, 74, 82, 22, 16, 50, 7, 95, 58, 85, 61, 88, 37, 48, 15, 30, 80, 68, 73, 26, 53, 62, 66, 51, 29, 39, 18, 9, 4, 17, 84, 89, 1, 28, 13, 44, 49, 92, 97, 63, 2, 65, 93, 10, 69, 91, 76, 0, 36, 46, 47, 90, 41, 33, 23, 56, 8, 24, 52, 32, 71, 70, 60, 94, 75, 35, 38, 27, 77, 19, 55, 14, 3, 83, 59, 79, 11, 98, 45, 67, 86, 42, 20, 12, 5, 96, 40, 31, 57, 21, 6, 81, 25, 34, 78, 72, 64, 43, 99, 87, 54, 74, 82, 22, 16, 50, 7, 95, 58, 85, 61, 88, 37, 48, 15, 30, 80, 68, 73, 26, 53, 62, 66, 51, 29, 39, 18, 9, 4, 17, 84, 89, 1, 28, 13, 44, 49, 92, 97, 63, 2, 65, 93, 10, 69, 91, 76, 0, 36, 46, 47, 90, 41, 33, 23, 56, 8, 24, 52, 32, 71, 70, 60, 94, 75, 35, 38, 27, 77, 19, 55, 14, 3, 83, 59, 79, 11, 98, 45, 67, 86, 42, 20, 12, 5, 96, 40, 31, 57, 21, 6, 81, 25, 34, 78, 72, 64, 43, 99, 87, 54, 74, 82, 22, 16, 50, 7, 95, 58, 85, 61, 88, 37, 48, 15, 30, 80, 68, 73, 26, 53, 62, 66, 51, 29, 39, 18, 9, 4, 17, 84, 89, 1, 28, 13, 44, 49, 92, 97, 63, 2, 65, 93, 10, 69, 91, 76, 0, 36, 46, 47, 90, 41, 33, 23, 56, 8, 24, 52, 32, 71, 70, 60, 94, 75, 35, 38, 27, 77, 19, 55, 14, 3, 83, 59, 79, 11, 98, 45, 67, 86, 42, 20, 12, 5, 96, 40, 31, 57, 21, 6, 81, 25, 34, 78, 72, 64, 43, 99, 87, 54, 74, 82, 22, 16, 50, 7, 95, 58, 85, 61, 88, 37, 48, 15, 30, 80, 68, 73, 26, 53, 62, 66, 51, 29, 39, 18, 9, 4, 17, 84, 89, 1, 28, 13, 44, 49, 92, 97, 63, 2, 65, 93, 10, 69, 91, 76, 0, 36, 46, 47, 90, 41, 33, 23, 56, 8, 24, 52, 32, 71, 70, 60, 94, 75, 35, 38, 27, 77, 19, 55, 14, 3, 83, 59, 79, 11, 98, 45, 67, 86, 42, 20, 12, 5, 96, 40, 31, 57, 21, 6, 81, 25, 34, 78, 72, 64, 43, 99, 87, 54, 74, 82, 22, 16, 50, 7, 95, 58, 85, 61, 88, 37, 48, 15, 30, 80, 68, 73, 26, 53, 62, 66, 51, 29, 39, 18, 9, 4, 17, 84, 89, 1, 28, 13, 44, 49, 92, 97, 63, 2, 65, 93, 10, 69, 91, 76, 0, 36, 46, 47, 90, 41, 33, 23, 56, 8, 24, 52, 32, 71, 70, 60, 94, 75, 35, 38, 27, 77, 19, 55, 14, 3, 83, 59, 79, 11, 98, 45, 67, 86, 42, 20, 12, 5, 96, 40, 31, 57, 21, 6, 81, 25, 34, 78, 72, 64, 43, 99, 87, 54, 74, 82, 22, 16, 50, 7, 95, 58, 85, 61, 88, 37, 48, 15, 30, 80, 68, 73, 26, 53, 62, 66, 51, 29, 39, 18, 9, 4, 17, 84, 89, 1, 28, 13, 44, 49, 92, 97, 63, 2, 65, 93, 10, 69, 91, 76, 0, 36, 46, 47, 90, 41, 33, 23, 56, 8, 24, 52, 32, 71, 70, 60, 94, 75, 35, 38, 27, 77, 19, 55, 14, 3, 83, 59, 79, 11, 98, 45, 67, 86, 42, 20, 12, 5, 96, 40, 31, 57, 21, 6, 81, 25, 34, 78, 72, 64, 43, 99, 87, 54, 74, 82, 22, 16, 50, 7, 95, 58, 85, 61, 88, 37, 48, 15, 30, 80, 68, 73, 26, 53, 62, 66, 51, 29, 39, 18, 9, 4, 17, 84, 89, 1, 28, 13, 44, 49, 92, 97, 63, 2, 65, 93, 10, 69, 91, 76, 0, 36, 46, 47, 90, 41, 33, 23, 56, 8, 24, 52, 32, 71, 70, 60, 94, 75, 35, 38, 27, 77, 19, 55, 14, 3, 83, 59, 79, 11, 98, 45, 67, 86, 42, 20, 12, 5, 96, 40, 31, 57, 21, 6, 81, 25, 34, 78, 72, 64, 43, 99, 87, 54, 74, 82, 22, 16, 50, 7, 95, 58, 85, 61, 88, 37, 48, 15, 30, 80, 68, 73, 26, 53, 62, 66, 51, 29, 39, 18, 9, 4, 17, 84, 89, 1, 28, 13, 44, 49, 92, 97, 63, 2, 65, 93, 10, 69, 91, 76, 0, 36, 46, 47, 90, 41, 33, 23, 56, 8, 24, 52, 32, 71, 70, 60, 94, 75, 35, 38, 27, 77, 19, 55, 14, 3, 83, 59, 79, 11, 98, 45, 67, 86, 42, 20, 12, 5, 96, 40, 31, 57, 21, 6, 81, 25, 34, 78, 72, 64, 43, 99, 87, 54, 74, 82, 22, 16, 50, 7, 95, 58, 85, 61, 88, 37, 48, 15, 30, 80, 68, 73, 26, 53, 62, 66, 51, 29, 39, 18, 9, 4, 17, 84, 89, 1, 28, 13, 44, 49, 92, 97, 63, 2, 65, 93, 10, 69, 91, 76, 0, 36, 46, 47, 90, 41, 33, 23, 56, 8, 24, 52, 32, 71, 70, 60, 94, 75, 35, 38, 27, 77, 19, 55, 14, 3, 83, 59, 79, 11, 98, 45, 67, 86, 42, 20, 12, 5, 96, 40, 31, 57, 21, 6, 81, 25, 34, 78, 72, 64, 43, 99, 87, 54, 74, 82, 22, 16, 50, 7, 95, 58, 85, 61, 88, 37, 48, 15, 30, 80, 68, 73, 26, 53, 62, 66, 51, 29, 39, 18, 9, 4, 17, 84, 89, 1, 28, 13, 44, 49, 92, 97, 63, 2, 65, 93, 10, 69, 91, 76, 0, 36, 46, 47, 90, 41, 33, 23, 56, 8, 24, 52, 32, 71, 70, 60, 94, 75, 35, 38, 27, 77, 19, 55, 14, 3, 83, 59, 79, 11, 98, 45, 67, 86, 42, 20, 12, 5, 96, 40, 31, 57, 21, 6, 81, 25, 34, 78, 72, 64, 43, 99, 87, 54, 74, 82, 22, 16, 50, 7, 95, 58, 85, 61, 88, 37, 48, 15, 30, 80, 68, 73, 26, 53, 62, 66, 51, 29, 39, 18, 9, 4, 17, 84, 89, 1, 28, 13, 44, 49, 92, 97, 63, 2, 65, 93, 10, 69, 91, 76, 0, 36, 46, 47, 90, 41, 33, 23, 56, 8, 24, 52, 32, 71, 70, 60, 94, 75, 35, 38, 27, 77, 19, 55, 14, 3, 83, 59, 79, 11, 98, 45, 67, 86, 42, 20, 12, 5, 96, 40, 31, 57, 21, 6, 81, 25, 34, 78, 72, 64, 43, 99, 87, 54, 74, 82, 22, 16, 50, 7, 95, 58, 85, 61, 88, 37, 48, 15, 30, 80, 68, 73, 26, 53, 62, 66, 51, 29, 39, 18, 9, 4, 17, 84, 89, 1, 28, 13, 44, 49, 92, 97, 63, 2, 65, 93, 10, 69, 91, 76, 0, 36, 46, 47, 90, 41, 33, 23, 56, 8, 24, 52, 32, 71, 70, 60, 94, 75, 35, 38, 27, 77, 19, 55, 14, 3, 83, 59, 79, 11, 98, 45, 67, 86, 42, 20, 12, 5, 96, 40, 31, 57, 21, 6, 81, 25, 34, 78, 72, 64, 43, 99, 87, 54, 74, 82, 22, 16, 50, 7, 95, 58, 85, 61, 88, 37, 48, 15, 30, 80, 68, 73, 26, 53, 62, 66, 51, 29, 39, 18, 9, 4, 17, 84, 89, 1, 28, 13, 44, 49, 92, 97, 63, 2, 65, 93, 10, 69, 91, 76, 0, 36, 46, 47, 90, 41, 33, 23, 56, 8, 24, 52, 32, 71, 70, 60, 94, 75, 35, 38, 27, 77, 19, 55, 14, 3, 83, 59, 79, 11, 98, 45, 67, 86, 42, 20, 12, 5, 96, 40, 31, 57, 21, 6, 81, 25, 34, 78, 72, 64, 43, 99, 87, 54, 74, 82, 22, 16, 50, 7, 95, 58, 85, 61, 88, 37, 48]; +type ScoreTable = { + name: string, + score: number, + function: Function +}; + +const getFastest = (score1: ScoreTable, score2: ScoreTable): number => { + return score1.score - score2.score; +} type Testable = (ar: AR) => AR; -const testFn = (fnArray: Array, rand: AR): void => { - const score: { [ key: string ]: number } = {}; +const testFn = (fnArray: Array, rand: AR): ScoreTable => { + const scoreList: Array = []; fnArray.forEach((fnc: Testable): void => { const data = [...rand]; const start: number = new Date().getTime() as number; fnc(data); const end: number = new Date().getTime() as number; - score[fnc.name] = end - start; + scoreList.push({ + name: fnc.name, + score: end - start, + function: fnc + }); }); - console.log(score); + console.log(scoreList); + scoreList.sort(getFastest) + return scoreList[0]; }; -testFn([f3, f2, f1], rand); +console.log('the winer is:', testFn([f3, f2, f1], rand));