Ngày trong phạm vi?


9

Đưa ra một MM/DDngày ( 12/24) và phạm vi ngày bắt đầu / kết thúc ( 11/01 - 06/24), hãy tìm hiểu xem ngày đó có nằm trong khoảng ngày được liệt kê hay không.

Phạm vi ngày có thể là tuần tự ( 05/01 - 11/01) hoặc bao quanh năm tới ( 11/01 - 05/01).

Ví dụ:

  • 12/24là trong 11/01 - 06/24= Đúng
  • 06/24là trong 11/01 - 06/24= Đúng
  • 06/24là trong 06/24 - 06/24= Đúng
  • 06/24là trong 11/01 - 06/23= Sai
  • 07/24là trong 11/01 - 06/24= Sai
  • 07/24là trong 05/01 - 11/01= Đúng
  • 07/24là trong 07/23 - 07/20= Đúng

Năm không có vấn đề. Phạm vi ngày và / hoặc ngày được giả sử để áp dụng cho bất kỳ năm nào trong quá khứ hoặc tương lai.

Ngày kết thúc sẽ luôn luôn sau ngày bắt đầu. Nếu ngày kết thúc nhỏ hơn số ngày bắt đầu, chúng tôi cho rằng chúng tôi sẽ kết thúc năm tới.

Ba biến đầu vào có thể thông qua bất kỳ phương thức nào (args, HTTP, stdin, v.v.) và ở bất kỳ định dạng nào (chuỗi, JSON, mảng, v.v.)

Phản hồi có thể booleanhoặc bất kỳ dạng nào của chuỗi có / không / đúng / vv ... Mã ngắn nhất sẽ thắng.

Bạn không thể đơn giản chuyển đối số cho hàm tích hợp.


Thay vào đó chúng ta có thể lấy kết quả là một chuỗi các chuỗi không? Tức ['MM', 'DD']
Ông Xcoder

Đề nghị trường hợp thử nghiệm:11/01 - 06/24 includes 06/24?
Ông Xcoder

@ Mr.Xcoder bạn đang hình dung một cái gì đó như ['06', '24']nếu khác []hay ý bạn là gì?
Xeoncross

1
Đối với trường hợp thử nghiệm thứ hai của bạn, giả sử chúng ta đang nói chuyện trong năm nay 2017và năm tới 2018. Làm thế nào chúng ta phải xác định 06/24phương tiện 2018đó và do đó nên Truethay vì 2017Falsevì nó là trước đây 11/01?
admBorkBork

1
" date > start & date < end" - Sau đó, một số trường hợp thử nghiệm của bạn là sai. Tôi nghĩ những gì bạn có nghĩa là start<=date<=end.
Xù xì

Câu trả lời:



4

JavaScript (ES6), 26 20 byte

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

Đầu ra là 0nếu anằm trong phạm vi b... c, 1nếu không. Chỉnh sửa: Đã lưu 6 byte nhờ @nwellnhof.


1
Thế còn (a,b,c)=>b>c^b>a^a>c?
nwellnhof

@nwellnhof Tôi không thể tin rằng tôi đã bỏ lỡ điều đó - nỗ lực đầu tiên của tôi là b>a^a>c, nhưng sau đó tôi đã bỏ qua cách khắc phục đơn giản ...
Neil

Bạn nên cập nhật số byte.
nwellnhof

@nwellnhof Xin lỗi, tôi vẫn quay cuồng vì sốc!
Neil


2

JavaScript (ES6), 31 byte

Lấy đầu vào là 3 chuỗi ở MM/DDđịnh dạng: date , Range_from , Range_to . Trả về một boolean.

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

Các trường hợp thử nghiệm


Nhờ MM/DDđịnh dạng, bạn chỉ có thể sử dụng sắp xếp chuỗi. Ý tưởng tốt.
Xeoncross


1

Perl 6 , 33 31 29 byte

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

Hãy thử trực tuyến!

Đưa ra một danh sách chứa bắt đầu, ngày và kết thúc.

-2 byte nhờ Ramillies.


Và ở đây, bạn có thể lưu 2 byte bằng cách lấy 1 đối số danh sách thay thế. Sau đó @_[0]có thể được viết như .[0][(whatever)] @_như [(whatever)] $_. Bạn sẽ chỉ cần gọi nó như thế nào $f(($s,$d,$e)).
Ramillies

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.