Палиндромные даты - это даты, которые отображаются в виде палиндромов: последовательность цифр можно читать так же, как и вперёд. Для североамериканского формата даты (MM / DD / YYYY) следующие несколько палиндромных дат:
02/02/2020
12/02/2021
03/02/2030
Соревнование
Создайте функцию, которая возвращает все палиндромные даты в согласованном, общем формате дат (по вашему выбору), которые попадают в диапазон дат ( редактирование: включая сам диапазон ).
правила
- Чтобы квалифицироваться как палиндром, следует проверять только числовые символы даты.
- Дата может быть в любом общем формате (
MM/DD/YYYY
,DD-MM-YYYY
), если она использует две цифры как для месяца и дня, так и четыре для года и использует символ для разделения частей даты. Выходные данные должны сохранять разделительные символы (/
,-
и т. Д.). Ваша функция должна обрабатывать только один отдельный формат даты. Пожалуйста, включите формат в ваш ответ. - Если возвращено более одной даты, они должны быть разделены запятой или новой строкой.
- Кратчайший ответ выигрывает!
пример
date_palindrome('05/02/2050', '12/12/2060')
>>>['05/02/2050', '06/02/2060']
code-golf
date
palindrome
atlasologist
источник
источник
DATE
избегаяto_date()
или мне нужно использовать менее пригодный для игры в гольфVARCHAR2
?Ответы:
MATL,
2423 байтаПринимает ввод в виде массива строк,
{lower, upper}
где находится формат даты'MM/DD/YYYY'
. Вывод также в форматеMM/DD/YYYY
.Попробуйте онлайн
объяснение
источник
Утилиты Bash + GNU,
11684Требуется 64-битная версия даты для данного теста.
Ввод / вывод в
YYYY-MM-DD
формате. Ввод берется из двух строк стандартного ввода, напримеробъяснение
set
сохраняет шаблон команды даты, чтобы к нему можно было получить доступ, используя$@
параметрdate -uf- +%s
преобразует даты конечной точки в количество секунд с начала эпохи Unixjot
интерполирует это, чтобы получить список секунд с начала эпохи, по одному в день, каждый с префиксом@
date -uf- +%F
форматирует каждую запись в списке какYYYY-MM-DD
sed
проверяет палиндромы:h
сохранить строку ввода в буфер хранения:
определить "неназванный" ярлыкs/-|^(.)(.*)\1$/\2/
если тире найден, удалите его или, если первый и последний символы совпадают, удалите ихt
если было совпадение выше, вернитесь к безымянному ярлыку/./d
если остались какие-либо символы, строка не является палиндромом - удалите ее и переходите к следующей строкеg
если мы попали сюда, то удаление строки не произошло, поэтому строка должна быть палиндромом. Получить строку обратно из буфера блокировки и неявно отобразить ее.источник
Python 2, 197 байт
Один байт сохранен благодаря @cat!
Попробуй это здесь!
Формат ввода и вывода есть
YYYY-MM-DD
. Первый уровень назначения - пробелы, второй - табуляция.Ничего особенного здесь не происходит. Использует некоторые
exec
злоупотребления, чтобы преобразовать входные данные вdate
объекты, разделив строку даты-
и разделив список наdate
конструктор. Затем мы просто перебираем все даты в их инклюзивном диапазоне и печатаем палиндромные.источник
from datetime import*
первую строку, чтобы сохранить байта`a+timedelta(d)`
же, какstr(a+timedelta(d))
?repr
обычно это эквивалентно толькоstr
для примитивных типов данных. Дляdate
объектов я получаю,datetime.date(2012, 12, 12)
например.PowerShell v2 +, 127 байт
Принимает входные данные как аргументы командной строки
$args
вMM/DD/YYYY
(или аналогичном) формате и преобразует их в[datetime]
массив, сохраняет их в$a
и$b
. Это шаг настройкиfor
цикла. Условие так долго, как$a
меньше или равно$b
.Каждую итерацию мы устанавливаем
$c
равной-f
упорядоченной строкеyyyyMMdd
стиля на основе$a
. Затем мы сравниваем , если это-eq
UAL в$c
обратном ( с использованием массива присоединиться трюк). Если это так, мы выводим$a
в правильном формате. В любом случае, мы увеличиваем$a
с.AddDays(1)
перейти на следующий день.пример
источник
Юлия, 132 байта
Это функция, которая принимает две строки и возвращает массив строк.
Ungolfed:
Попробуйте онлайн!
источник
JavaScript (ES6),
159154 байтаВвод / вывод в формате ISO. Ungolfed:
источник
TSQL, 88 байт
Использование формата ISO8601 для даты (гггг-мм-дд)
скрипка
источник
Java 7,
436435416 байт * вздох .. *Формат ввода и вывода:
dd-MM-yyyy
Ungolfed & тестовый код:
Попробуй это здесь.
Выход:
источник
Oracle 11: SQL: 246 байт (эй, по крайней мере, я победил Java: P lol)
Выход:
В читаемом формате:
Разъяснение:
Узнал о функции REVERSE сегодня :)
источник
C #,
9794 байтаC # lambda (
Action
) где вводDateTime
и вывод выводятся с использованием.Dump()
метода ( трюк @ EvilFonti ).C #,
115112 байтC # лямбда (
Func
), где входныеDateTime
и выходные данныеstring
.Код:
Попробуйте их онлайн!
источник
VBA,
240193 байтаВот и все в понятном формате. Прецедент:
Без такой избыточности:
источник
Javascript (с использованием внешней библиотеки) (158 байт)
Ссылка на lib: https://github.com/mvegh1/Enumerable
Объяснение кода: Хорошо, я наконец-то использовал здесь настоящий код для игры в гольф. Таким образом, входы a, b являются объектами Date. Создайте диапазон целых чисел от a до b, где a и b преобразуются в целые числа, а расстояние между значениями в диапазоне составляет 86400000, т.е. количество тиков за один день. Сопоставьте каждое значение в диапазоне с объектом даты. Отфильтруйте этот диапазон по предикату, который представляет палиндромные даты. Логика для определения этого проста ... преобразовать строковое представление JSON объекта текущей даты в массив char с использованием библиотеки и отфильтровать нечисловые записи и принять только первые 8 значений (потому что это будет yyyyMMdd ) и сохраните его в переменной z, затем проверьте, эквивалентен ли z обращенному z. Наконец, приведите обратно к собственному массиву JS
Изменить: побрить 2 байта, удалив ненужные парены.
источник
Java, 269 байт
Ungolfed:
источник