Дата в межах діапазону?


9

Враховуючи MM/DDдату ( 12/24) та діапазон дат / час початку / кінця ( 11/01 - 06/24), з’ясуйте, чи дата знаходиться в межах перерахованого періоду дати.

Діапазони дат можуть бути послідовними ( 05/01 - 11/01) або переходити до наступного року ( 11/01 - 05/01).

Приклади:

  • 12/24є в 11/01 - 06/24= Правда
  • 06/24є в 11/01 - 06/24= Правда
  • 06/24є в 06/24 - 06/24= Правда
  • 06/24є в 11/01 - 06/23= хибно
  • 07/24є в 11/01 - 06/24= хибно
  • 07/24є в 05/01 - 11/01= Правда
  • 07/24є в 07/23 - 07/20= Правда

Роки не матер. Дату та / або діапазон дат прийнято застосовувати для будь-якого минулого року чи майбутнього.

Дата закінчення завжди буде після дати початку. Якщо дата закінчення чисельно менша від дати початку, ми припускаємо, що ми завершуємо наступний рік.

Три вхідні змінні можуть бути за допомогою будь-якого методу (args, HTTP, stdin тощо) та будь-якого формату (рядок, JSON, масив тощо).

Відповідь може бути booleanбудь-якою формою рядка так / ні / правильний / тощо. Найкоротший код виграє.

Ви не можете просто передати аргументи до вбудованої функції.


Чи можемо ми взяти результат замість масиву рядків? Тобто ['MM', 'DD']?
Містер Xcoder

Пропозиція тестового випадку:11/01 - 06/24 includes 06/24?
Містер Xcoder

@ Mr.Xcoder, ви зображуєте щось на зразок, ['06', '24']якщо це правильно, []або що ви маєте на увазі?
Xeoncross

1
Припустимо, для вашого другого тестового випадку ми говоримо цього року 2017та наступного року 2018. Як ми повинні визначити, що це 06/24означає, 2018і, таким чином, слід бути, Trueа не 2017тому, Falseщо це раніше 11/01?
AdmBorkBork

1
" date > start & date < end" - Тоді деякі ваші тестові справи помиляються. Я думаю, що ти маєш на увазі start<=date<=end.
Кудлатий

Відповіді:



4

JavaScript (ES6), 26 20 байт

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

Вихід - 0якщо він aлежить в межах b... c, 1якщо ні. Редагувати: Збережено 6 байт завдяки @nwellnhof.


1
Про що (a,b,c)=>b>c^b>a^a>c?
nwellnhof

@nwellnhof Я не можу повірити, що пропустив це - моя найперша спроба була b>a^a>c, але потім я пропустив просте виправлення ...
Ніл

Вам слід оновити кількість байтів.
nwellnhof

@nwellnhof Вибачте, я все ще почувався від шоку!
Ніл

4

Haskell , 28 байт

(a%d)e=((e<a)/=(a<d))==(e<d)

Спробуйте в Інтернеті!

Дякуємо Лео за хитрість прикормувати буленів /=.


Haskell , 33 байти

(a%d)e=show[e>=d,d>a,a>e]!!16>'a'

Спробуйте в Інтернеті!


Ваша showхитрість крута, але ви можете скористатись трьома елементами більш прямим способом за допомогою foldl1: tio.run/…
Лев,

1
@Leo Приємна ідея, вона ще коротше розгорнулася.
xnor

2

JavaScript (ES6), 31 байт

Приймає введення у вигляді 3 рядків у MM/DDформаті: дата , діапазон_від , діапазон_до . Повертається булева.

(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 байти завдяки Раміллі.


І тут ви можете зберегти 2 байти, взявши натомість 1 аргумент списку. Тоді @_[0]можна записати як .[0]і [(whatever)] @_як [(whatever)] $_. Вам просто потрібно буде так називати $f(($s,$d,$e)).
Раміллі

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.