Skip to content

Instantly share code, notes, and snippets.

@djfm
Last active December 5, 2021 10:14
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save djfm/4ffd6702dff5d59204ed14570e9fbef5 to your computer and use it in GitHub Desktop.
Save djfm/4ffd6702dff5d59204ed14570e9fbef5 to your computer and use it in GitHub Desktop.
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