Les dates palindromiques sont des dates qui apparaissent sous forme de palindromes: la chaîne de chiffres peut être lue de la même manière en arrière qu'en avant. Pour le format de date nord-américain (MM / JJ / AAAA), les quelques dates palindromiques suivantes sont:
02/02/2020
12/02/2021
03/02/2030
Le défi
Créez une fonction qui renvoie toutes les dates palindromiques dans un format de date commun et cohérent (de votre choix) qui se situe dans une plage de dates ( modifier: y compris la plage elle-même ).
Règles
- Pour être considéré comme un palindrome, seuls les caractères numériques de la date doivent être vérifiés.
- La date peut être dans n'importe quel format commun (
MM/DD/YYYY
,DD-MM-YYYY
), tant qu'elle utilise deux chiffres pour le mois et le jour et quatre pour l'année, et qu'elle utilise un caractère pour séparer les parties de la date. La sortie doit préserver les caractères seperating (/
,-
, etc.). Votre fonction ne doit gérer qu'un seul format de date distinct. Veuillez inclure le format dans votre réponse. - Si plusieurs dates sont renvoyées, elles doivent être séparées par des virgules ou des sauts de ligne.
- La réponse la plus courte gagne!
Exemple
date_palindrome('05/02/2050', '12/12/2060')
>>>['05/02/2050', '06/02/2060']
code-golf
date
palindrome
atlasologue
la source
la source
DATE
évitant unto_date()
ou dois-je utiliser le moins golfableVARCHAR2
?Réponses:
MATL,
2423 octetsAccepte une entrée sous la forme d'un tableau de chaînes
{lower, upper}
où se trouve le format de date'MM/DD/YYYY'
. La sortie est également au formatMM/DD/YYYY
.Essayez-le en ligne
Explication
la source
Utilitaires Bash + GNU,
11684Nécessite une version 64 bits de la date pour le testcase donné.
Les E / S sont au
YYYY-MM-DD
format. L'entrée provient de deux lignes de stdin, par exempleExplication
set
enregistre le modèle de commande de date afin qu'il soit accessible à l'aide du$@
paramètredate -uf- +%s
convertit les dates des points de terminaison en nombre de secondes depuis l'époque Unixjot
interpole ceci pour donner une liste des secondes de l'époque, une par jour, chacune préfixée de@
date -uf- +%F
formate chaque entrée de liste commeYYYY-MM-DD
sed
vérifie les palindromes:h
enregistrer la ligne d'entrée dans le tampon de maintien:
définir une étiquette "sans nom"s/-|^(.)(.*)\1$/\2/
si un tiret est trouvé, supprimez-le ou si les premier et dernier caractères correspondent, supprimez-lest
s'il y avait une correspondance ci-dessus, revenez à l'étiquette sans nom/./d
s'il reste des caractères, la ligne n'est pas un palindrome - supprimez-la et passez à la ligne suivanteg
si nous sommes arrivés ici, alors aucune suppression de ligne n'a eu lieu, donc la ligne devait être un palindrome. Récupérez la ligne dans le tampon d'attente et affichez-la implicitement.la source
Python 2, 197 octets
Un octet enregistré grâce à @cat!
Essayez-le ici!
Le format d'entrée et de sortie est
YYYY-MM-DD
. Le premier niveau d'intention est les espaces, le second les onglets.Rien de très spécial ici. Utilise certains
exec
abus pour convertir l'entrée endate
objets en divisant la chaîne de date-
et en répartissant la liste dans ledate
constructeur. Ensuite, nous itérons simplement toutes les dates dans leur plage inclusive et imprimons celles qui sont palindromiques.la source
from datetime import*
sur la première ligne pour enregistrer un octet`a+timedelta(d)`
la même chose questr(a+timedelta(d))
?repr
n'est généralement équivalent qu'àstr
des types de données primitifs. Pour lesdate
objets que je reçoisdatetime.date(2012, 12, 12)
par exemple.PowerShell v2 +, 127 octets
Prend les entrées sous forme d'arguments de ligne de commande
$args
auMM/DD/YYYY
format (ou similaire) et les refondes sous forme de[datetime]
tableau, les stockent dans$a
et$b
. C'est l'étape de configuration de lafor
boucle. Le conditionnel est tant qu'il$a
est inférieur ou égal à$b
.À chaque itération, nous définissons
$c
égal à une-f
chaîne deyyyyMMdd
style ormattée , basée sur$a
. Nous comparons ensuite si c'est-eq
ual à$c
inversé (en utilisant une astuce de jointure de tableau). Si c'est le cas, nous sortons$a
au format approprié. De toute façon, nous incrémentons$a
avec.AddDays(1)
pour passer au lendemain.Exemple
la source
Julia, 132 octets
Il s'agit d'une fonction qui accepte deux chaînes et renvoie un tableau de chaînes.
Non golfé:
Essayez-le en ligne!
la source
JavaScript (ES6),
159154 octetsE / S au format ISO. Non golfé:
la source
TSQL, 88 octets
Utilisation du format ISO8601 pour la date (aaaa-mm-jj)
Violon
la source
Java 7,
436435416 octets * soupir .. *Format d'entrée et de sortie:
dd-MM-yyyy
Code non testé et testé:
Essayez-le ici.
Production:
la source
Oracle 11: SQL: 246 octets (hé, au moins j'ai battu Java: P lol)
Production:
Dans un format lisible:
Expliqué:
J'ai appris la fonction REVERSE aujourd'hui :)
la source
C #,
9794 octetsC # lambda (
Action
) où les entrées sontDateTime
et la sortie est imprimée en utilisant le.Dump()
méthode (de @ EvilFonti trick ).C #,
115112 octetsC # lambda (
Func
) où les entrées sontDateTime
et la sortie est unstring
.Code:
Essayez-les en ligne!
la source
VBA,
240193 octetsC'est tout dans un format compréhensible. Cas de test:
Sans autant de redondance:
la source
Javascript (à l'aide d'une bibliothèque externe) (158 octets)
Lien vers la bibliothèque: https://github.com/mvegh1/Enumerable
Explication du code: Ok, j'ai finalement utilisé du code réel pour jouer ici pour une fois. Les entrées a, b sont donc des objets Date. Créez une plage d'entiers de a à b, où a et b sont contraints en entiers, et la distance entre les valeurs de la plage est 86400000, c'est-à-dire la quantité de ticks en une journée. Mappez chaque valeur de la plage à un objet de date. Filtrez cette plage par le prédicat qui représente les dates palindromiques. La logique pour déterminer que c'est simple ... transtypez la représentation sous forme de chaîne JSON de l'objet de date actuel dans un tableau de caractères en utilisant la bibliothèque et filtrez les entrées non numériques, et ne prenez que les 8 premières valeurs (parce que ce serait aaaaMMjj ) et stockez-le dans la variable z, puis vérifiez si z est équivalent à z Inversé. Enfin, restaurez le tableau natif JS
Edit: Rasé 2 octets en supprimant les parenthèses inutiles ..
la source
Java, 269 octets
Non golfé:
la source