Update README.md
This commit is contained in:
parent
2e534bf084
commit
132df26640
33
README.md
33
README.md
@ -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:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user