commit fc8f48b19b1c683ef35942e96682a62c0b3e9918 Author: 202410715039 ADE KURNIA <202410715039@mhs.ubharajaya.ac.id> Date: Sun May 11 22:43:10 2025 +0700 Upload files to "/" diff --git a/README.md b/README.md new file mode 100644 index 0000000..9811de5 --- /dev/null +++ b/README.md @@ -0,0 +1,41 @@ + +# Program Validasi Nilai Pilihan Ganda + +Program ini digunakan untuk menentukan apakah suatu nilai hasil ujian pilihan ganda mungkin didapatkan berdasarkan aturan penilaian yang diberikan. + +## Penjelasan Singkat + +Pada ujian pilihan ganda, setiap jawaban benar mendapatkan nilai positif (misalnya 5 poin), jawaban salah mengurangi nilai (misalnya -2 poin), dan tidak dijawab tidak menambah atau mengurangi nilai. Program ini mengecek apakah nilai akhir yang diperoleh mungkin dicapai dengan kombinasi jumlah soal tertentu. + +## Aturan + +- Input berupa 4 angka: nilai akhir, jumlah soal, skor jika benar, pengurangan jika salah. +- Program mencoba semua kombinasi kemungkinan jumlah jawaban benar dan salah. +- Hasil program: **YA** jika nilai mungkin dicapai, **TIDAK** jika tidak mungkin. + +## Contoh + +Input: +``` +80 10 5 1 +90 100 1 1 +99 10 5 5 +``` + +Output: +``` +h#1: TIDAK +h#2: YA +h#3: TIDAK +``` + +## Kesimpulan + +Program ini efektif untuk mengecek validitas hasil ujian berdasarkan aturan skor. Hal ini bisa digunakan sebagai alat bantu analisis atau verifikasi skor dalam sistem penilaian otomatis. + +## Contoh Penerapan + +- Sistem ujian berbasis komputer untuk validasi hasil otomatis. +- Audit skor dalam sistem pendidikan. +- Analisis kemungkinan penipuan dalam ujian berdasarkan kombinasi nilai. + diff --git a/nilai_pilihan_ganda.py b/nilai_pilihan_ganda.py new file mode 100644 index 0000000..af05564 --- /dev/null +++ b/nilai_pilihan_ganda.py @@ -0,0 +1,34 @@ + +def is_score_possible(score, total_questions, score_true, score_false): + """Cek apakah skor bisa didapatkan dari kombinasi benar, salah, kosong.""" + for benar in range(total_questions + 1): + for salah in range(total_questions - benar + 1): + kosong = total_questions - benar - salah + total_score = benar * score_true + salah * (-score_false) + if total_score == score: + return "YA" + return "TIDAK" + +def process_data(lines): + results = [] + for line in lines: + nums = list(map(int, line.strip().split())) + if len(nums) != 4: + results.append("FORMAT SALAH") + continue + score, total, benar, salah = nums + hasil = is_score_possible(score, total, benar, salah) + results.append(hasil) + return results + +# Contoh input +data_input = [ + "80 10 5 1", + "90 100 1 1", + "99 10 5 5", +] + +# Proses dan cetak hasil +hasil = process_data(data_input) +for i, res in enumerate(hasil, 1): + print(f"h#{i}: {res}")