Berikut ini adalah pertanyaan dari p123akrdn pada mata pelajaran TI untuk jenjang Sekolah Menengah Atas
Input himpunan: {a, b, c} ← (input)
Himpunan bagian dari {a, b, c} adalah:
{}, {a}, {b}, {c}, {a, b}, {a, c}, {b, c}, {a, b, c}
Jawaban dan Penjelasan
Berikut ini adalah pilihan jawaban terbaik dari pertanyaan diatas.
Kode Proram (Python)
# subset.py
# oleh: HY
from rich.console import Console
from itertools import combinations
console = Console()
def str_to_list(s) -> list:
# Mengembalikan list dari
# string himpunan yang diinputkan
if str(s)[0] != "{" or str(s)[-1] != "}":
raise SystemExit("String masukan invalid.\n")
return [str(item).strip(" ")
for item in str(s).lstrip("{").rstrip("}").split(",")]
def powerset(l) -> list:
# Mengembalikan himpunan kuasa (powerset)
powset = []
for r in range(len(l) + 1):
powset.append(list(combinations(l, r)))
return powset
def list_to_setstr(l) -> str:
# Mengembalikan string dengan format
# himpunan, dari list masukan
return f"{{{', '.join(l)}}}"
### PROGRAM UTAMA ###
if __name__ == '__main__':
print()
strhimpunan = console.input("Input himpunan [bold cyan]{...}[/] : ")
himpunan = str_to_list(strhimpunan)
himpunan_kuasa = powerset(himpunan)
# Output
console.rule(f"Daftar himpunan bagian dari [bold gold3]{strhimpunan}[/]")
for i, h_i in enumerate(himpunan_kuasa):
s = ""
console.print(f'Himpunan bagian yang memiliki {i} anggota:')
for j, himpunan_bagian in enumerate(h_i):
s += f"{{{', '.join(himpunan_bagian)}}}, "
console.print(f'==> [bold gold1]{s.rstrip(", ")}[/]')
print()
### END OF PROGRAM ###
Pembahasan
Untuk menjawab pertanyaan ini, saya memilih menggunakan bahasa pemrograman Python, karena pada Python ada modul itertools yang dapat membantu berbagai macam jenis iterasi, bahkan kombinasi.
Function utama pembentukan himpunan kuasa (himpunan yang berisi semua himpunan bagian dari sebuah himpunan) adalah powerset(l), dengan parameter l bertipe list, dan akan mengembalikan himpunan kuasa dari himpunan elemen-elemen list l.
Function lain, yaitu str_to_list(s)danlist_to_setstr(l) merupakan function pendukung, yang secara berturut-turut berfungsi untuk mengubah string masukan menjadi list, dan menampilkan list dalam bentuk himpunan.
Pada output, daftar himpunan bagian diubah menjadi berkelompok sesuai dengan banyak anggota dari setiap himpunan bagian.
Contoh hasil eksekusi dapat dilihat pada gambar (ada 3 gambar).
- Gambar 1: kasus salah input, dan kasus seperti contoh dalam pertanyaan
- Gambar 2 dan gambar 3: himpunan yang lebih banyak anggotanya
Semoga dengan pertanyaan yang sudah terjawab oleh henriyulianto dapat membantu memudahkan mengerjakan soal, tugas dan PR sekolah kalian.
Apabila terdapat kesalahan dalam mengerjakan soal, silahkan koreksi jawaban dengan mengirimkan email ke yomemimo.com melalui halaman Contact
Last Update: Mon, 31 Oct 22