एक समारोह या कार्यक्रम है कि स्ट्रिंग आदानों लेता लिखें, पूरी तरह से लिखे गए, अंग्रेजी महीने के नाम शीर्षक मामले में: January
, February
, March
, आदि (शून्य / सीआर / वामो समाप्त ठीक है, कुछ गैर-अल्फा चरित्र के साथ सीमांकित अगर आपने ऐसा चुना) और या तो
दो इनपुट की तुलना करता है, एक सत्य मान लौटाता है यदि दूसरा इनपुट पहले की तुलना में अधिक (महीने के क्रम में) है। समान मानों का परिणाम एक गलत मूल्य है
या कालानुक्रमिक क्रम में उनमें से एक मनमाना अनुक्रम (सूची, सीमांकित स्ट्रिंग, आदि)
(चुनौती का क्रूस एक ऐसी पद्धति / अभिव्यक्ति को परिभाषित कर रहा है जो सही शाब्दिक रूप देता है। कुछ भाषाओं में एक या दूसरे के साथ छोटा उत्तर हो सकता है)
आप 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
था जो सभी महीने के नामों की एक सूची थी, तो मैं months[x] < months[y]
एक उत्तर के रूप में मना करना चाहता हूं । महीने के नामों की सूची में कुछ और अजीब विशेषताएं (अलग-अलग लंबाई, सामान्यता) हैं जो चुनौती को यादृच्छिक रूप से उत्पन्न स्ट्रिंग्स पर आसान / कठिन बनाती हैं।