Buatlah program yang menerima input berupa “string” dari sebuah himpunan,

Berikut ini adalah pertanyaan dari p123akrdn pada mata pelajaran TI untuk jenjang Sekolah Menengah Atas

Buatlah program yang menerima input berupa “string” dari sebuah himpunan, dan menghasilkan output berupa himpunan-himpunan bagiannya. (bahasa pemrograman bebas)Contoh output:
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

Kode Proram (Python)# subset.py# oleh: HYfrom rich.console import Consolefrom itertools import combinationsconsole = Console()def str_to_list(s) -> list:    # Mengembalikan list dari    # string himpunan yang diinputkan    if str(s)[0] != Kode Proram (Python)# subset.py# oleh: HYfrom rich.console import Consolefrom itertools import combinationsconsole = Console()def str_to_list(s) -> list:    # Mengembalikan list dari    # string himpunan yang diinputkan    if str(s)[0] != Kode Proram (Python)# subset.py# oleh: HYfrom rich.console import Consolefrom itertools import combinationsconsole = Console()def str_to_list(s) -> list:    # Mengembalikan list dari    # string himpunan yang diinputkan    if str(s)[0] != Kode Proram (Python)# subset.py# oleh: HYfrom rich.console import Consolefrom itertools import combinationsconsole = Console()def str_to_list(s) -> list:    # Mengembalikan list dari    # string himpunan yang diinputkan    if str(s)[0] !=

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