Last active
December 5, 2021 10:14
-
-
Save djfm/4ffd6702dff5d59204ed14570e9fbef5 to your computer and use it in GitHub Desktop.
This file contains hidden or 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
const digits = [0, 1, 2, 5, 8] | |
const isAmbiNumber = (number) => { | |
// return true if all digits of number are in digits array | |
const digitsOfNumber = number.toString().split(''); | |
return digitsOfNumber.every(digit => digits.includes(parseInt(digit))); | |
} | |
const isPalindrome = (string) => { | |
const reversed = string.split('').reverse().join(''); | |
return string === reversed; | |
} | |
const isValidCalendarDate = (year, month, day) => { | |
const date = new Date(year, month - 1, day); | |
const str = date.toLocaleString('fr-FR'); | |
return str.startsWith(`${day.toString().padStart(2, '0')}/${month.toString().padStart(2, '0')}/${year}`); | |
}; | |
// for all dates between now and year 10000 | |
for (let year = new Date().getFullYear(); year <= 10000; year++) { | |
if (!isAmbiNumber(year)) { | |
continue; | |
} | |
// for all months in a year | |
for (let month = 1; month <= 12; month++) { | |
if (!isAmbiNumber(month)) { | |
continue; | |
} | |
// for all days in a month | |
for (let day = 1; day <= 31; day++) { | |
const date = new Date(year, month, day); | |
if (!isValidCalendarDate(year, month, day)) { | |
continue; | |
} | |
if (!isAmbiNumber(day)) { | |
continue; | |
} | |
const strDay = day.toString().padStart(2, '0'); | |
const strMonth = month.toString().padStart(2, '0'); | |
const dateString = `${year}${strMonth}${strDay}`; | |
if (isPalindrome(dateString)) { | |
console.log(`Ambi-palindrome-date: ${year} ${strMonth} ${strDay}`); | |
} | |
} | |
} | |
} | |
/** | |
Output: | |
Ambi-palindrome-date: 2021 12 02 | |
Ambi-palindrome-date: 2050 05 02 | |
Ambi-palindrome-date: 2080 08 02 | |
Ambi-palindrome-date: 2101 10 12 | |
Ambi-palindrome-date: 2110 01 12 | |
Ambi-palindrome-date: 2111 11 12 | |
Ambi-palindrome-date: 2120 02 12 | |
Ambi-palindrome-date: 2121 12 12 | |
Ambi-palindrome-date: 2150 05 12 | |
Ambi-palindrome-date: 2180 08 12 | |
Ambi-palindrome-date: 2201 10 22 | |
Ambi-palindrome-date: 2210 01 22 | |
Ambi-palindrome-date: 2211 11 22 | |
Ambi-palindrome-date: 2220 02 22 | |
Ambi-palindrome-date: 2221 12 22 | |
Ambi-palindrome-date: 2250 05 22 | |
Ambi-palindrome-date: 2280 08 22 | |
Ambi-palindrome-date: 5001 10 05 | |
Ambi-palindrome-date: 5010 01 05 | |
Ambi-palindrome-date: 5011 11 05 | |
Ambi-palindrome-date: 5020 02 05 | |
Ambi-palindrome-date: 5021 12 05 | |
Ambi-palindrome-date: 5050 05 05 | |
Ambi-palindrome-date: 5080 08 05 | |
Ambi-palindrome-date: 5101 10 15 | |
Ambi-palindrome-date: 5110 01 15 | |
Ambi-palindrome-date: 5111 11 15 | |
Ambi-palindrome-date: 5120 02 15 | |
Ambi-palindrome-date: 5121 12 15 | |
Ambi-palindrome-date: 5150 05 15 | |
Ambi-palindrome-date: 5180 08 15 | |
Ambi-palindrome-date: 5201 10 25 | |
Ambi-palindrome-date: 5210 01 25 | |
Ambi-palindrome-date: 5211 11 25 | |
Ambi-palindrome-date: 5220 02 25 | |
Ambi-palindrome-date: 5221 12 25 | |
Ambi-palindrome-date: 5250 05 25 | |
Ambi-palindrome-date: 5280 08 25 | |
Ambi-palindrome-date: 8001 10 08 | |
Ambi-palindrome-date: 8010 01 08 | |
Ambi-palindrome-date: 8011 11 08 | |
Ambi-palindrome-date: 8020 02 08 | |
Ambi-palindrome-date: 8021 12 08 | |
Ambi-palindrome-date: 8050 05 08 | |
Ambi-palindrome-date: 8080 08 08 | |
Ambi-palindrome-date: 8101 10 18 | |
Ambi-palindrome-date: 8110 01 18 | |
Ambi-palindrome-date: 8111 11 18 | |
Ambi-palindrome-date: 8120 02 18 | |
Ambi-palindrome-date: 8121 12 18 | |
Ambi-palindrome-date: 8150 05 18 | |
Ambi-palindrome-date: 8180 08 18 | |
Ambi-palindrome-date: 8201 10 28 | |
Ambi-palindrome-date: 8210 01 28 | |
Ambi-palindrome-date: 8211 11 28 | |
Ambi-palindrome-date: 8220 02 28 | |
Ambi-palindrome-date: 8221 12 28 | |
Ambi-palindrome-date: 8250 05 28 | |
Ambi-palindrome-date: 8280 08 28 | |
*/ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment