diff --git a/README.md b/README.md index cc9fb4c..d8a28ce 100644 --- a/README.md +++ b/README.md @@ -12,16 +12,16 @@ Sebaliknya, tanggal dianggap ambigu ("TIDAK") jika: # Strategi Umum Fungsi ini memiliki beberapa langkah kunci untuk melakukan evaluasi tanggal: 1. Deteksi nama bulan: -o Jika tanggal mengandung nama bulan (misalnya mar untuk Maret), maka tanggal tersebut langsung dianggap tidak ambigu ("YA"). +Jika tanggal mengandung nama bulan (misalnya mar untuk Maret), maka tanggal tersebut langsung dianggap tidak ambigu ("YA"). 2. Validasi format tanggal: -o Tanggal yang tidak mengandung nama bulan akan diperiksa apakah +Tanggal yang tidak mengandung nama bulan akan diperiksa apakah sesuai dengan format yang dapat diparsing (dengan pemisah - atau /). -o Format yang benar adalah tiga bagian (hari, bulan, tahun) setelah dipecah. +Format yang benar adalah tiga bagian (hari, bulan, tahun) setelah dipecah. 3. Validasi tahun: -o Tahun diidentifikasi sebagai angka lebih besar dari 999. Jika tidak ditemukan angka yang lebih besar dari 999, tanggal tersebut dianggap tidak valid ("TIDAK"). +Tahun diidentifikasi sebagai angka lebih besar dari 999. Jika tidak ditemukan angka yang lebih besar dari 999, tanggal tersebut dianggap tidak valid ("TIDAK"). 4. Pengecekan ambiguitas: -o Jika bagian hari dan bulan keduanya bernilai ≤ 12, maka tanggal dianggap ambigu ("TIDAK"), karena kita tidak bisa memastikan mana yang hari dan mana yang bulan. -o Jika salah satu angka lebih besar dari 12, maka tanggal tersebut dianggap tidak ambigu ("YA"), karena kita bisa memastikan angka lebih besar +Jika bagian hari dan bulan keduanya bernilai ≤ 12, maka tanggal dianggap ambigu ("TIDAK"), karena kita tidak bisa memastikan mana yang hari dan mana yang bulan. +Jika salah satu angka lebih besar dari 12, maka tanggal tersebut dianggap tidak ambigu ("YA"), karena kita bisa memastikan angka lebih besar adalah hari (misalnya, 13/02/1998). # Penjelasan Langkah demi Langkah dalam Kode 1. Mengimpor dan Memulai Fungsi @@ -29,9 +29,11 @@ def evaluasi_tanggal(tanggal_list): hasil = [] nama_bulan = ['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sep', 'oct', 'nov', 'dec'] + nama_bulan adalah daftar singkatan nama bulan dalam bahasa Inggris. hasil akan menyimpan pasangan (tanggal, status) yang menunjukkan apakah tanggal tersebut ambigu atau tidak. + 2. Mengevaluasi Setiap Tanggal for tanggal in tanggal_list: tgl_lower = tanggal.lower() @@ -40,6 +42,7 @@ for tanggal in tanggal_list: hasil.append((tanggal, "YA")) continue Pengecekan nama bulan: Jika tanggal mengandung nama bulan (misalnya mar untuk Maret), maka langsung dianggap tidak ambigu ("YA"). + 3. Memproses Format Tanggal parts = tanggal.replace("/", "-").split("-") try: @@ -49,45 +52,63 @@ except ValueError: continue Normalisasi pemisah: Tanggal diubah agar hanya menggunakan tanda - sebagai pemisah. Konversi menjadi integer: Setiap bagian (hari, bulan, tahun) diubah menjadi angka. Jika ada bagian yang tidak bisa diubah menjadi angka, tanggal dianggap tidak valid ("TIDAK"). + 5. Identifikasi Tahun tahun = next((x for x in parts_int if x > 999), None) if not tahun: hasil.append((tanggal, "TIDAK")) continue Identifikasi tahun: Tahun dipilih sebagai angka yang lebih besar dari 999 (karena tahun pasti lebih besar dari angka bulan atau hari). Jika tidak ditemukan, tanggal dianggap tidak valid. + 6. Memisahkan Hari dan Bulan lainnya = [x for x in parts_int if x != tahun] # DEBUG PRINT print(f"Evaluasi: {tanggal} -> lainnya: {lainnya}") lainnya: Menyimpan dua bagian lainnya (hari dan bulan) selain tahun. + 7. Evaluasi Ambiguitas if all(x <= 12 for x in lainnya): hasil.append((tanggal, "TIDAK")) else: hasil.append((tanggal, "YA")) Pengecekan ambiguitas: Jika kedua angka selain tahun adalah ≤ 12, maka tanggal dianggap ambigu ("TIDAK"), karena kita tidak bisa memastikan mana yang hari dan mana yang bulan. Jika salah satu lebih besar dari 12, maka dianggap tidak ambigu ("YA"). + 8. Hasil Evaluasi return hasil Mengembalikan daftar hasil evaluasi, yang berisi pasangan (tanggal, status). # Contoh Data Uji dan Hasil Evaluasi Data Uji: tanggal_data = [ + "15/02/1998", # YA + "04/05/2010", # TIDAK + "1-3-2004", # TIDAK + "2011-08-22", # YA + "23-mar-2000", # YA + "04/07/2010", # TIDAK + "1965-3-4" # TIDAK ] Hasil Evaluasi: 15/02/1998: YA + 04/05/2010: TIDAK + 1-3-2004: TIDAK + 2011-08-22: YA + 23-mar-2000: YA + 04/07/2010: TIDAK + 1965-3-4: TIDAK + Kesimpulan Fungsi evaluasi_tanggal berhasil mendeteksi tanggal yang ambigu dan tidak ambigu berdasarkan: