ปัญหาการจัดการวันที่อื่น: P
งาน
เขียนโปรแกรมหรือฟังก์ชั่นที่คำนวณความแตกต่างระหว่างวันที่สองวันที่กำหนดโดยผู้ใช้
อินพุตและเอาต์พุต
คล้ายกับก่อนหน้านี้หนึ่งปัจจัยการผลิตเป็นสองYYYYMMDD
s, คั่นด้วยช่องว่าง, เครื่องหมายจุลภาคหรือเครื่องหมายลบ
,
-
ตัวอย่างของค่าอินพุต:
20100101-20010911
20110620-20121223
19000101 20101010
33330101,19960229
00010101 99991231
เอาท์พุทเป็นจำนวนเต็มซึ่งเป็นความแตกต่างระหว่างวันที่สองวัน
ยกตัวอย่างเช่นการป้อนข้อมูล20110101-20100101
อัตราผลตอบแทน365
และอัตราผลตอบแทน33320229 17000101
596124
คุณสามารถทดสอบผลลัพธ์ ที่นี่ ที่นี่ (ดูความคิดเห็นของ rintaun ด้านล่าง) หากสองวันเหมือนกันโปรแกรมควรกลับ0
มาถ้าวันนั้นถูกต้อง (ดูคะแนน )
การ จำกัด
แน่นอนคุณจะต้องไม่ใช้ใด ๆชนิดของฟังก์ชั่น / ระดับ / ... ซึ่งจะเกี่ยวข้องกับการประทับเวลาหรือวันและคุณควรใช้ปฏิทินเกรกอเรียน
คะแนน
หากรหัสของคุณไม่ได้ จำกัดscore = -∞
อยู่
ค่าเริ่มต้นbonus
คือ 1
- หากรหัสของคุณทำงานโดยไม่คำนึงถึงคำสั่งของปัจจัยการผลิต (ตัวอย่างเช่น
20100101,20110101
ผลตอบแทน365
หรือ)-365
bonus+=1
- หากรหัสของคุณสามารถจัดการกับปีที่ 0
bonus+=0.5
, - หากรหัสของคุณตระหนักถึงเดือนไม่ถูกต้อง (ระหว่างวันที่ 1 ~ 12) / วัน (ระหว่างวันที่ 1 ~ 31) เช่น
20109901
หรือ34720132
และพิมพ์E
(และยุติโปรแกรมหรือผลตอบแทนสิ่งที่ต้องการ)0
bonus+=1
- โดยไม่คำนึงถึงกฎข้างต้นถ้ารหัสของคุณตระหนักถึงวันที่ไม่ถูกต้องเช่น
20100230
,20100229
หรือ20111131
, และพิมพ์E
(และยุติโปรแกรมหรือผลตอบแทนสิ่งที่ต้องการ)0
bonus+=1
- โดยไม่คำนึงถึงข้างต้นทั้งสองกฎถ้ารหัสของคุณตระหนักถึงสายป้อนไม่ถูกต้องเช่น
20100101|20100202
หรือ2010010120100202
และพิมพ์E
(และยุติโปรแกรมหรือผลตอบแทนสิ่งที่ต้องการ)0
bonus+=1
score = floor(-4.2*code.length/bonus)
. รหัสที่มีคะแนนสูงสุดชนะ หากรหัสสองอันดับแรกมีคะแนนเท่ากันรหัสนั้นก็จะเป็นโบนัสที่มีรางวัลสูงสุด หากรหัสสองอันดับแรกมีทั้งคะแนนและโบนัสเท่ากันรหัสนั้นที่มีคะแนนโหวตสูงสุดจะเป็นฝ่ายชนะ
(ครบกำหนด: เมื่อมีมากกว่า 5 รหัสที่มีคะแนนมากกว่า (หรือเท่ากัน) +1
)
20040229
มันเป็นเรื่องที่ไม่ถูกต้องซึ่งแตกต่างจาก : P
365*4 + 2 + 2
= 1464 ขอบคุณสำหรับข้อมูล!