Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
57
Task/Palindrome-dates/JavaScript/palindrome-dates-2.js
Normal file
57
Task/Palindrome-dates/JavaScript/palindrome-dates-2.js
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
(() => {
|
||||
'use strict';
|
||||
|
||||
// ----------------- PALINDROME DATES ------------------
|
||||
|
||||
// palindromeDate :: Int -> [String]
|
||||
const palindromeDate = year => {
|
||||
// Either an empty list, if no palindromic date
|
||||
// can be derived from this year, or a list
|
||||
// containing a palindromic IS0 8601 date.
|
||||
const
|
||||
s = year.toString(),
|
||||
r = reverse(s),
|
||||
iso = [
|
||||
s,
|
||||
r.slice(0, 2),
|
||||
r.slice(2, 4)
|
||||
].join('-');
|
||||
return isNaN(new Date(iso)) ? (
|
||||
[]
|
||||
) : [iso];
|
||||
};
|
||||
|
||||
// ----------------------- TEST ------------------------
|
||||
const main = () => {
|
||||
const
|
||||
xs = enumFromTo(2021)(9999).flatMap(
|
||||
palindromeDate
|
||||
);
|
||||
return [
|
||||
`Count of palindromic dates [2021..9999]: ${
|
||||
xs.length
|
||||
}`,
|
||||
'',
|
||||
`First 15: ${'\n' + xs.slice(0, 15).join('\n')}`,
|
||||
'',
|
||||
`Last 15: ${'\n' + xs.slice(-15).join('\n')}`
|
||||
].join('\n');
|
||||
};
|
||||
|
||||
// ----------------- GENERIC FUNCTIONS -----------------
|
||||
|
||||
// enumFromTo :: Int -> Int -> [Int]
|
||||
const enumFromTo = m =>
|
||||
n => Array.from({
|
||||
length: 1 + n - m
|
||||
}, (_, i) => m + i);
|
||||
|
||||
// reverse :: [a] -> [a]
|
||||
const reverse = xs =>
|
||||
'string' !== typeof xs ? (
|
||||
xs.slice(0).reverse()
|
||||
) : xs.split('').reverse().join('');
|
||||
|
||||
// MAIN ---
|
||||
return main();
|
||||
})();
|
||||
Loading…
Add table
Add a link
Reference in a new issue