Update README.md

This commit is contained in:
202410715241 NABILAH PUTRI AZZAHRAH 2025-05-08 12:50:24 +07:00
parent 2e534bf084
commit 132df26640

View File

@ -12,16 +12,16 @@ Sebaliknya, tanggal dianggap ambigu ("TIDAK") jika:
# Strategi Umum # Strategi Umum
Fungsi ini memiliki beberapa langkah kunci untuk melakukan evaluasi tanggal: Fungsi ini memiliki beberapa langkah kunci untuk melakukan evaluasi tanggal:
1. Deteksi nama bulan: 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: 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 /). 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: 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: 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. 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 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). adalah hari (misalnya, 13/02/1998).
# Penjelasan Langkah demi Langkah dalam Kode # Penjelasan Langkah demi Langkah dalam Kode
1. Mengimpor dan Memulai Fungsi 1. Mengimpor dan Memulai Fungsi
@ -29,9 +29,11 @@ def evaluasi_tanggal(tanggal_list):
hasil = [] hasil = []
nama_bulan = ['jan', 'feb', 'mar', 'apr', 'may', 'jun', nama_bulan = ['jan', 'feb', 'mar', 'apr', 'may', 'jun',
'jul', 'aug', 'sep', 'oct', 'nov', 'dec'] 'jul', 'aug', 'sep', 'oct', 'nov', 'dec']
nama_bulan adalah daftar singkatan nama bulan dalam bahasa Inggris. nama_bulan adalah daftar singkatan nama bulan dalam bahasa Inggris.
hasil akan menyimpan pasangan (tanggal, status) yang menunjukkan hasil akan menyimpan pasangan (tanggal, status) yang menunjukkan
apakah tanggal tersebut ambigu atau tidak. apakah tanggal tersebut ambigu atau tidak.
2. Mengevaluasi Setiap Tanggal 2. Mengevaluasi Setiap Tanggal
for tanggal in tanggal_list: for tanggal in tanggal_list:
tgl_lower = tanggal.lower() tgl_lower = tanggal.lower()
@ -40,6 +42,7 @@ for tanggal in tanggal_list:
hasil.append((tanggal, "YA")) hasil.append((tanggal, "YA"))
continue continue
Pengecekan nama bulan: Jika tanggal mengandung nama bulan (misalnya mar untuk Maret), maka langsung dianggap tidak ambigu ("YA"). Pengecekan nama bulan: Jika tanggal mengandung nama bulan (misalnya mar untuk Maret), maka langsung dianggap tidak ambigu ("YA").
3. Memproses Format Tanggal 3. Memproses Format Tanggal
parts = tanggal.replace("/", "-").split("-") parts = tanggal.replace("/", "-").split("-")
try: try:
@ -49,45 +52,63 @@ except ValueError:
continue continue
Normalisasi pemisah: Tanggal diubah agar hanya menggunakan tanda - sebagai pemisah. 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"). 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 5. Identifikasi Tahun
tahun = next((x for x in parts_int if x > 999), None) tahun = next((x for x in parts_int if x > 999), None)
if not tahun: if not tahun:
hasil.append((tanggal, "TIDAK")) hasil.append((tanggal, "TIDAK"))
continue 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. 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 6. Memisahkan Hari dan Bulan
lainnya = [x for x in parts_int if x != tahun] lainnya = [x for x in parts_int if x != tahun]
# DEBUG PRINT # DEBUG PRINT
print(f"Evaluasi: {tanggal} -> lainnya: {lainnya}") print(f"Evaluasi: {tanggal} -> lainnya: {lainnya}")
lainnya: Menyimpan dua bagian lainnya (hari dan bulan) selain tahun. lainnya: Menyimpan dua bagian lainnya (hari dan bulan) selain tahun.
7. Evaluasi Ambiguitas 7. Evaluasi Ambiguitas
if all(x <= 12 for x in lainnya): if all(x <= 12 for x in lainnya):
hasil.append((tanggal, "TIDAK")) hasil.append((tanggal, "TIDAK"))
else: else:
hasil.append((tanggal, "YA")) 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"). 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 8. Hasil Evaluasi
return hasil return hasil
Mengembalikan daftar hasil evaluasi, yang berisi pasangan (tanggal, status). Mengembalikan daftar hasil evaluasi, yang berisi pasangan (tanggal, status).
# Contoh Data Uji dan Hasil Evaluasi # Contoh Data Uji dan Hasil Evaluasi
Data Uji: Data Uji:
tanggal_data = [ tanggal_data = [
"15/02/1998", # YA "15/02/1998", # YA
"04/05/2010", # TIDAK "04/05/2010", # TIDAK
"1-3-2004", # TIDAK "1-3-2004", # TIDAK
"2011-08-22", # YA "2011-08-22", # YA
"23-mar-2000", # YA "23-mar-2000", # YA
"04/07/2010", # TIDAK "04/07/2010", # TIDAK
"1965-3-4" # TIDAK "1965-3-4" # TIDAK
] ]
Hasil Evaluasi: Hasil Evaluasi:
15/02/1998: YA 15/02/1998: YA
04/05/2010: TIDAK 04/05/2010: TIDAK
1-3-2004: TIDAK 1-3-2004: TIDAK
2011-08-22: YA 2011-08-22: YA
23-mar-2000: YA 23-mar-2000: YA
04/07/2010: TIDAK 04/07/2010: TIDAK
1965-3-4: TIDAK 1965-3-4: TIDAK
Kesimpulan Kesimpulan
Fungsi evaluasi_tanggal berhasil mendeteksi tanggal yang ambigu dan tidak ambigu Fungsi evaluasi_tanggal berhasil mendeteksi tanggal yang ambigu dan tidak ambigu
berdasarkan: berdasarkan: