เขียนฟังก์ชั่นหรือโปรแกรมที่ใช้ปัจจัยการผลิตสายเต็มสะกดชื่อภาษาอังกฤษเดือนในกรณีที่ชื่อเรื่อง: January
, February
, March
ฯลฯ (null / CR / LF ยกเลิกตกลงคั่นด้วยกับบางส่วนของตัวละครที่ไม่ใช่อัลฟาดังนั้นหากคุณเลือก) และทั้ง
เปรียบเทียบสองอินพุตคืนค่าจริงถ้าอินพุทที่สองมากกว่า (เรียงตามลำดับเดือน) มากกว่าอินพุทแรก ค่าที่เท่ากันส่งผลให้ค่า Falsey
หรือเรียงลำดับตามลำดับ (รายการ, สตริงที่คั่น, ฯลฯ ) ของลำดับตามลำดับเวลา
(ปมของความท้าทายคือการกำหนดวิธีการ / การแสดงออกที่ให้เรียงลำดับพจนานุกรมที่ถูกต้องบางภาษาอาจมีคำตอบที่สั้นกว่ากับหนึ่งหรืออื่น ๆ )
คุณไม่สามารถใช้วิธีการแยกวิเคราะห์ภายในเวลาใดก็ได้ (เช่นstrptime
) เพื่อแปลชื่อเดือนเป็นตัวเลขหรือการทำแผนที่กระป๋องของชื่อเดือน ใช้คุณสมบัติของสตริงเองตารางการค้นหาที่คุณกำหนดหรือสิ่งที่ฉลาด
ตัวอย่าง
ตัวอย่างการใช้งานแม้ว่ากฎข้อแรกจะถูกห้ามใช้ ...
import datetime
def is_later_month(a, b):
'''
Example of prohibited code because it relies on language
features about how to parse month names
'''
return datetime.strptime(a, '%B') < datetime.strptime(b, '%B')
รุ่นด้านล่างนั้นใช้ได้เนื่องจากเราใช้รหัสนั้น
months = {
'January': 1, 'February': 2, 'March': 3,
'April': 4, 'May': 5, 'June': 6,
'July': 7, 'August': 8, 'September': 9,
'October': 10, 'November': 11, 'December': 12,
}
def is_later_month(a, b):
"""
Returns True/False when comparing two months.
"""
return months[a] < months[b]
หรือคุณสามารถทำฟังก์ชั่นการเรียงลำดับ
months = {'as above...'}
def sort_months(l):
"""
Sorts list and returns it. Different input and output than the above,
but equally valid. Sorting versus comparing might be shorter in your
favorite language.
"""
return sorted(l, key=lambda x: months[x])
ตัวอย่างการทดสอบ
assert is_later_month('January', 'February')
assert is_later_month('January', 'December')
assert is_later_month('November', 'December')
assert not is_later_month('July', 'July')
assert not is_later_month('October', 'September')
months
ที่เป็นรายชื่อชื่อ Month ทั้งหมดฉันต้องการห้ามmonths[x] < months[y]
เป็นคำตอบ รายการชื่อเดือนมีคุณสมบัติแปลก ๆ (ความยาวแปรปรวนสามัญ) ที่ทำให้การท้าทายง่ายขึ้น / ยากขึ้นกว่าสตริงที่สร้างแบบสุ่ม