Tanggal dalam rentang?


9

Diberi MM/DDtanggal ( 12/24) dan rentang tanggal mulai / berakhir ( 11/01 - 06/24), cari tahu apakah tanggal tersebut dalam rentang tanggal yang tercantum.

Rentang tanggal dapat berurutan ( 05/01 - 11/01) atau beralih ke tahun berikutnya ( 11/01 - 05/01).

Contoh:

  • 12/24ada di 11/01 - 06/24= True
  • 06/24ada di 11/01 - 06/24= True
  • 06/24ada di 06/24 - 06/24= True
  • 06/24dalam 11/01 - 06/23= Salah
  • 07/24dalam 11/01 - 06/24= Salah
  • 07/24ada di 05/01 - 11/01= True
  • 07/24ada di 07/23 - 07/20= True

Tahun tidak mater. Tanggal dan / atau rentang tanggal diasumsikan berlaku untuk tahun lalu atau masa depan.

Tanggal akhir akan selalu setelah tanggal mulai. Jika tanggal akhir secara numerik lebih kecil dari tanggal mulai, kami anggap kami akan kembali ke tahun berikutnya.

Tiga variabel input dapat melalui metode apa saja (args, HTTP, stdin, dll.) Dan dalam format apa pun (string, JSON, array, dll.)

Respons dapat berupa booleanatau bentuk apa pun dari string ya / tidak / benar / dll. Kode terpendek menang.

Anda tidak bisa hanya meneruskan args ke fungsi bawaan.


Bisakah kita mengambil hasilnya sebagai array dari string? Yaitu ['MM', 'DD']?
Tn. Xcoder

Saran uji kasus:11/01 - 06/24 includes 06/24?
Tn. Xcoder

@ Mr.Xcoder apakah Anda membayangkan sesuatu seperti ['06', '24']apakah benar []atau apa maksud Anda?
Xeoncross

1
Untuk uji kasus kedua Anda, misalkan kita berbicara tahun ini 2017dan tahun depan 2018. Bagaimana kita seharusnya menentukan 06/24cara itu 2018dan dengan demikian seharusnya Truelebih daripada 2017dan Falsekarena itu sebelumnya 11/01?
AdmBorkBork

1
" date > start & date < end" - Lalu beberapa test case Anda salah. Saya pikir apa yang Anda maksud adalah start<=date<=end.
Shaggy

Jawaban:



4

JavaScript (ES6), 26 20 byte

(a,b,c)=>b>c^b>a^a>c

Output adalah 0jika aterletak dalam jangkauan b... c, 1jika tidak. Sunting: Disimpan 6 byte berkat @nwellnhof.


1
Bagaimana dengan (a,b,c)=>b>c^b>a^a>c?
nwellnhof

@nwellnhof Aku tidak percaya aku melewatkan itu - usaha pertamaku adalah b>a^a>c, tapi aku kemudian mengabaikan perbaikan sederhana ...
Neil

Anda harus memperbarui jumlah byte.
nwellnhof

@nwellnhof Maaf, saya masih belum pulih dari keterkejutan!
Neil


2

JavaScript (ES6), 31 byte

Mengambil input sebagai 3 string dalam MM/DDformat: date , range_from , range_to . Mengembalikan boolean.

(a,b,c)=>!(b<c?a<b|a>c:a<b&a>c)

Uji kasus


Berkat MM/DDformat Anda bisa menggunakan penyortiran string. Ide bagus.
Xeoncross


1

Perl 6 , 33 31 29 byte

{.[0]>.[2]??![>] $_!![<=] $_}

Cobalah online!

Mengambil daftar yang berisi awal, tanggal, dan akhir.

-2 byte terima kasih kepada Ramillies.


Dan di sini, Anda dapat menyimpan 2 byte dengan mengambil argumen daftar 1 sebagai gantinya. Maka @_[0]dapat ditulis sebagai .[0]dan [(whatever)] @_sebagai [(whatever)] $_. Anda hanya perlu menyebutnya seperti $f(($s,$d,$e)).
Ramillies

1

Perl 5 , 60 byte

59 byte kode +1 -a

$F[1]=~s/./2/if$F[1]le$F[0];say($F[2]le$F[1]&&$F[2]ge$F[0])

Cobalah online!

Memasukkan: start_date end_date target_date

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.