วันที่อยู่ในช่วง?


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หรือรูปแบบใด ๆ ของสตริงใช่ / ไม่ใช่ / ถูกต้อง / ฯลฯ รหัสที่สั้นที่สุดชนะ

คุณไม่สามารถส่งผ่าน args ไปยังฟังก์ชันในตัว


เราสามารถรับผลเป็นอาร์เรย์ของสตริงแทนได้หรือไม่? เช่น['MM', 'DD']?
Mr. Xcoder

ข้อเสนอแนะกรณีทดสอบ:11/01 - 06/24 includes 06/24?
Mr. 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ผมคิดว่าสิ่งที่คุณหมายถึงคือ
Shaggy

คำตอบ:



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แต่ฉันก็มองข้ามการแก้ไขที่เรียบง่าย ...
Neil

คุณควรอัปเดตจำนวนไบต์
nwellnhof

@nwellnhof ขออภัยฉันยังคงหมุนจากช็อก!
Neil

4

Haskell , 28 ไบต์

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

ลองออนไลน์!

ขอขอบคุณที่ลีโอสำหรับเคล็ดลับของ xor'ing Booleans /=ด้วย


Haskell , 33 ไบต์

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

ลองออนไลน์!


showเคล็ดลับของคุณเจ๋ง แต่คุณสามารถแฮคเกอร์ทั้งสามองค์ประกอบในแบบที่ตรงกว่าด้วย foldl1: tio.run/…
Leo

1
@Leo ความคิดที่ดีมันยิ่งขยายตัวสั้นลง
xnor

2

JavaScript (ES6), 31 ไบต์

จะเข้าเป็น 3 สายในMM/DDรูปแบบ: วัน , range_from , range_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


และที่นี่คุณสามารถบันทึก 2 ไบต์โดยรับอาร์กิวเมนต์ 1 รายการแทน จากนั้น@_[0]สามารถเขียนเป็น.[0]และเป็น[(whatever)] @_ คุณก็จะต้องเรียกมันเหมือน[(whatever)] $_ $f(($s,$d,$e))
Ramillies

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.