日期在范围内?


9

给定MM/DD日期(12/24)和开始/结束日期范围(11/01 - 06/24),请确定日期是否在列出的日期范围内。

日期范围可以是连续的(05/01 - 11/01)或环绕到下一年(11/01 - 05/01)。

例子:

  • 12/2411/01 - 06/24=真
  • 06/2411/01 - 06/24=真
  • 06/2406/24 - 06/24=真
  • 06/2411/01 - 06/23= False
  • 07/2411/01 - 06/24= False
  • 07/2405/01 - 11/01=真
  • 07/2407/23 - 07/20=真

岁月不老。假定日期和/或日期范围适用于过去或将来的任何一年。

结束日期将始终在开始日期之后。如果结束日期在数值上小于开始日期,则假定我们要绕到下一年。

这三个输入变量可以通过任何方法(args,HTTP,stdin等)以及任何格式(字符串,JSON,数组等)使用。

响应可以是boolean或是/是/否/正确/等字符串的任何形式。最短的代码胜出。

您不能简单地将args传递给内置函数。


我们可以将结果作为字符串数组来代替吗?即['MM', 'DD']
Xcoder先生17年

测试案例建议:11/01 - 06/24 includes 06/24?
Xcoder先生17年

@ Mr.Xcoder您是否正在想象类似的['06', '24']东西,[]或者是什么意思?
Xeoncross

1
对于您的第二个测试用例,假设我们正在讨论今年2017和明年2018。我们应该如何确定该06/24手段2018,因此应该True而不是2017False因为它早于11/01
AdmBorkBork

1
date > start & date < end”-那么您的一些测试用例是错误的。我想你的意思是start<=date<=end
毛茸茸的

Answers:



4

JavaScript(ES6),26个 20字节

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

输出0是否ab... 范围内c1如果不在。编辑:感谢@nwellnhof,节省了6个字节。


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

@nwellnhof我不敢相信我会错过-我的第一次尝试是b>a^a>c,但是后来我忽略了简单的解决方法
Neil

您应该更新字节数。
nwellnhof

@nwellnhof对不起,我仍然被震惊吓到了!
尼尔于2009年


2

JavaScript(ES6),31个字节

将输入作为3个字符串,MM/DD格式为:daterange_fromrange_to。返回一个布尔值。

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

测试用例


多亏了MM/DD格式,您可以只使用字符串排序。好主意。
Xeoncross


1

Perl 6的33 31 29个字节

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

在线尝试!

获取包含开始,日期和结束的列表。

-2个字节感谢Ramillies。


在这里,您可以通过使用1个list参数来节省2个字节。然后@_[0]可以写为.[0][(whatever)] @_作为[(whatever)] $_。您只需将其命名为即可$f(($s,$d,$e))
Ramillies

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.