Tanggal palindrom adalah tanggal yang muncul sebagai palindrom: string angka dapat dibaca dengan cara yang sama mundur ke depan. Untuk format tanggal Amerika Utara (MM / DD / YYYY), beberapa tanggal palindromik berikutnya adalah:
02/02/2020
12/02/2021
03/02/2030
Tantangan
Buat fungsi yang mengembalikan semua tanggal palindrom dalam format tanggal yang umum dan konsisten (sesuai pilihan Anda) yang termasuk dalam rentang tanggal ( edit: termasuk kisaran itu sendiri ).
Aturan
- Untuk memenuhi syarat sebagai palindrome, hanya karakter numerik tanggal yang harus diperiksa.
- Tanggal dapat dalam format umum apa pun (
MM/DD/YYYY
,DD-MM-YYYY
), asalkan menggunakan dua digit untuk bulan dan hari dan empat untuk tahun tersebut, dan menggunakan karakter untuk memisahkan bagian-bagian tanggal. Output harus melestarikan karakter Memisahkan (/
,-
, dll). Fungsi Anda hanya perlu menangani satu format tanggal yang berbeda. Harap sertakan format dalam jawaban Anda. - Jika ada lebih dari satu tanggal dikembalikan, mereka harus koma atau baris baru dipisahkan.
- Jawaban terpendek menang!
Contoh
date_palindrome('05/02/2050', '12/12/2060')
>>>['05/02/2050', '06/02/2060']
code-golf
date
palindrome
ahli atlasologi
sumber
sumber
DATE
menghindarito_date()
atau saya harus menggunakan yang kurang golfVARCHAR2
?Jawaban:
MATL,
2423 byteMenerima input dalam bentuk array string di
{lower, upper}
mana format tanggal'MM/DD/YYYY'
. Output dalam formatMM/DD/YYYY
juga.Cobalah secara Online
Penjelasan
sumber
Utilitas Bash + GNU,
11684Membutuhkan versi 64-bit tanggal untuk testcase yang diberikan.
I / O dalam
YYYY-MM-DD
format. Input diambil dari dua baris stdin, misPenjelasan
set
menyimpan templat perintah tanggal sehingga dapat diakses menggunakan$@
parameterdate -uf- +%s
mengonversi tanggal titik akhir ke jumlah detik sejak zaman Unixjot
interpolasi ini untuk memberikan daftar detik-dari-zaman, satu per hari, masing-masing diawali dengan@
date -uf- +%F
memformat setiap entri daftar sebagaiYYYY-MM-DD
sed
memeriksa palindrom:h
simpan baris input ke buffer penahan:
tentukan label "tidak bernama"s/-|^(.)(.*)\1$/\2/
jika tanda hubung ditemukan, hapus atau jika karakter pertama dan terakhir cocok, hapust
jika ada kecocokan di atas, kembali ke label yang tidak disebutkan namanya/./d
jika ada karakter yang tersisa, garis itu bukan palindrom - hapus dan lanjutkan ke baris berikutnyag
jika kita sampai di sini, maka tidak ada penghapusan garis yang terjadi, maka garis itu pasti merupakan palindrom. Dapatkan saluran kembali dari buffer penahan dan tampilkan secara implisit.sumber
Python 2, 197 byte
Satu byte disimpan berkat @cat!
Coba di sini!
Format input dan output adalah
YYYY-MM-DD
. Level niat pertama adalah spasi, yang kedua adalah tab.Tidak ada yang terlalu istimewa terjadi di sini. Menggunakan beberapa
exec
penyalahgunaan untuk mengonversi input kedate
objek dengan memisahkan string tanggal-
dan memecah daftar kedate
konstruktor. Kemudian kami hanya mengulangi semua tanggal dalam kisaran inklusif mereka dan mencetak yang palindromik.sumber
from datetime import*
pada baris pertama untuk menyimpan byte`a+timedelta(d)`
samastr(a+timedelta(d))
?repr
biasanya hanya setara denganstr
untuk tipe data primitif. Untukdate
objek saya dapatkandatetime.date(2012, 12, 12)
misalnya.PowerShell v2 +, 127 byte
Mengambil input sebagai argumen baris perintah
$args
dalamMM/DD/YYYY
(atau serupa) format dan ditampilkan kembali sebagai[datetime]
array, menyimpannya dalam$a
dan$b
. Itulah langkah pengaturanfor
loop. Kondisional asalkan$a
kurang dari atau sama dengan$b
.Setiap iterasi, kami tetapkan
$c
sama dengan-f
stringyyyyMMdd
gaya yang diurut , berdasarkan$a
. Kami kemudian membandingkan apakah itu-eq
ual untuk$c
dibalik (menggunakan trik array-join). Jika demikian, kami menampilkan$a
dalam format yang tepat. Either way, kami bertambah$a
dengan.AddDays(1)
pindah ke hari berikutnya.Contoh
sumber
Julia, 132 byte
Ini adalah fungsi yang menerima dua string dan mengembalikan array string.
Tidak Disatukan:
Cobalah online!
sumber
JavaScript (ES6),
159154 byteI / O dalam format ISO. Tidak Disatukan:
sumber
TSQL, 88 byte
Menggunakan format ISO8601 untuk tanggal (yyyy-mm-dd)
Biola
sumber
Java 7,
436435416 byte * desah .. *Input & Output format:
dd-MM-yyyy
Tidak digabungkan & kode uji:
Coba di sini.
Keluaran:
sumber
Oracle 11: SQL: 246 byte (hei, setidaknya saya mengalahkan Java: P lol)
Keluaran:
Dalam format yang dapat dibaca:
Dijelaskan:
Belajar tentang fungsi REVERSE hari ini :)
sumber
C #,
9794 byteC # lambda (
Action
) di mana inputDateTime
dan output dicetak dengan menggunakan.Dump()
metode (@ EvilFonti ini trik ).C #,
115112 byteC # lambda (
Func
) di mana input beradaDateTime
dan output adalah astring
.Kode:
Cobalah secara online!
sumber
VBA,
240193 byteItu dalam format yang bisa dipahami. Kasus cobaan:
Tanpa banyak redundansi:
sumber
Javascript (menggunakan perpustakaan eksternal) (158 byte)
Tautan ke lib: https://github.com/mvegh1/Enumerable
Penjelasan kode: Ok, saya akhirnya menggunakan beberapa kode golf sebenarnya di sini untuk sekali. Jadi input a, b adalah objek Date. Buat rentang bilangan bulat dari a ke b, di mana a dan b dipaksa ke dalam bilangan bulat, dan jarak antara nilai dalam kisaran adalah 86400000, yaitu jumlah kutu dalam satu hari. Petakan setiap nilai dalam rentang ke objek tanggal. Filter kisaran itu dengan predikat yang mewakili tanggal palindromik. Logika untuk menentukan itu sederhana ... melemparkan representasi string JSON dari objek tanggal saat ini ke array char menggunakan perpustakaan dan menyaring entri non-numerik, dan hanya mengambil 8 nilai pertama (karena yang akan menjadi yyyyMMdd ) dan simpan itu ke dalam variabel z, lalu periksa apakah z sama dengan z Terbalik. Akhirnya, masukkan kembali ke array JS asli
Sunting: Dicukur 2 byte dengan menghapus parens yang tidak perlu ..
sumber
Java, 269 byte
Tidak Disatukan:
sumber