Menulis fungsi atau program yang mengambil input string penuh dieja, nama-nama bulan bahasa Inggris dalam kasus judul: January
, February
, March
, dll (null / CR / LF dihentikan OK, dibatasi dengan beberapa karakter non-alpha jika Anda memilih demikian) dan baik
membandingkan dua input, mengembalikan nilai Kebenaran jika input kedua lebih besar (dalam urutan bulan) dari yang pertama. Nilai yang sama menghasilkan nilai Falsey
atau mengurutkan urutan acak (daftar, string terbatas, dll.) dari mereka dalam urutan kronologis
(Inti dari tantangan adalah mendefinisikan metode / ekspresi yang memberikan jenis leksikografi yang benar. Beberapa bahasa mungkin memiliki jawaban yang lebih pendek dengan satu atau yang lain)
Anda tidak dapat menggunakan metode penguraian waktu internal (mis. strptime
) Untuk menerjemahkan nama bulan menjadi angka atau pemetaan nama bulan yang sudah dilakukan sebelumnya. Gunakan properti dari string itu sendiri, tabel pencarian pelit yang Anda tentukan, atau sesuatu yang pintar.
Contoh
Contoh-contoh yang berfungsi, meskipun yang pertama dilarang oleh aturan ...
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')
Versi di bawah ini OK, karena kami memberi kode informasi itu
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]
Atau Anda bisa melakukan fungsi sortir
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])
Contoh tes
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
yang merupakan daftar semua nama Bulan, saya ingin melarang months[x] < months[y]
sebagai jawaban. Daftar nama bulan memiliki beberapa fitur yang lebih aneh (panjang bervariasi, kesamaan) yang membuat tantangan lebih mudah / lebih sulit daripada string yang dihasilkan secara acak.