55 * @returns
66 */
77export function findLargestNumber ( numbers : number [ ] ) : number {
8- return 0 ;
8+ if ( numbers . length === 0 ) {
9+ return 0 ;
10+ }
11+
12+ let largest = numbers [ 0 ] ;
13+ for ( let i = 1 ; i < numbers . length ; i ++ ) {
14+ if ( numbers [ i ] > largest ) {
15+ largest = numbers [ i ] ;
16+ }
17+ }
18+ return largest ;
919}
1020
1121/**
@@ -16,6 +26,10 @@ export function findLargestNumber(numbers: number[]): number {
1626 * @returns
1727 */
1828export function isPalindrome ( text : string ) : boolean {
29+ const cleaned = text . replace ( / [ ^ a - z A - Z 0 - 9 ] / g, "" ) . toLowerCase ( ) ;
30+
31+ return cleaned === cleaned . split ( "" ) . reverse ( ) . join ( "" ) ;
32+
1933 return false ;
2034}
2135
@@ -34,7 +48,28 @@ export function daysUntilBirthday(
3448 currentMonth : number ,
3549 currentDay : number ,
3650 birthMonth : number ,
37- birthDay : number
51+ birthDay : number ,
3852) : number {
39- return 0 ;
53+ const today = new Date ( ) ;
54+ const currentYear = today . getFullYear ( ) ;
55+
56+ // Create a date for the birthday this year
57+ let nextBirthday = new Date ( currentYear , birthMonth - 1 , birthDay ) ;
58+
59+ // If the birthday has already passed this year, set it for next year
60+ if (
61+ birthMonth < currentMonth ||
62+ ( birthMonth === currentMonth && birthDay < currentDay )
63+ ) {
64+ nextBirthday = new Date ( currentYear + 1 , birthMonth - 1 , birthDay ) ;
65+ }
66+
67+ const currentDate = new Date ( currentYear , currentMonth - 1 , currentDay ) ;
68+
69+ // Calculate the difference in milliseconds and convert to days
70+ const diffTime = nextBirthday . getTime ( ) - currentDate . getTime ( ) ;
71+ const diffDays = Math . ceil ( diffTime / ( 1000 * 60 * 60 * 24 ) ) ;
72+
73+ return diffDays ;
4074}
75+
0 commit comments