Skip to content

Commit e0998aa

Browse files
250441100018_FiorenzaClarabelleQuenettaSianturi_Modul6_AsprakKakSalman
1 parent b039ae5 commit e0998aa

File tree

3 files changed

+221
-0
lines changed

3 files changed

+221
-0
lines changed
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
pengunjung = []
2+
3+
def tambah(pengunjung):
4+
id_antrian = len(pengunjung) + 1
5+
nama_pengunjung = input("nama pengunjung: ")
6+
nama_santri = input("nama santri yang dijenguk: ")
7+
daerah_asal = input("daerah asal pengunjung (sumatra, kalimantan, atau jawa): ")
8+
9+
pengunjung.append([id_antrian, nama_pengunjung, nama_santri, daerah_asal])
10+
print(f"ID antrian: {id_antrian}")
11+
print(f"nama pengunjung: {nama_pengunjung}")
12+
print(f"nama santri: {nama_santri}")
13+
print(f"daerah asal: {daerah_asal}")
14+
15+
def tampilkan_list(pengunjung):
16+
grouped = {"sumatra": [], "kalimantan": [], "jawa": []}
17+
18+
for pengunjung in pengunjung:
19+
grouped[pengunjung[3]].append(pengunjung)
20+
21+
for daerah in ["sumatra", "kalimantan", "jawa"]:
22+
if grouped[daerah]:
23+
print(f"Pengunjung dari {daerah}:")
24+
for pengunjung in grouped[daerah]:
25+
print(f"id {pengunjung[0]}, nama pengunjung: {pengunjung[1]}, nama santri yang di jenguk: {pengunjung[2]}, asal daerah: {pengunjung[3]}")
26+
27+
def hapus(pengunjung):
28+
id_input = input("masukan ID Antrian yang ingin dihapus: ")
29+
id_antrian = int(id_input)
30+
for item in pengunjung:
31+
if item[0] == id_antrian:
32+
pengunjung.remove(item)
33+
print(f"Data kunjungan dengan ID Antrian {id_antrian} berhasil dihapus.")
34+
break
35+
else:
36+
print("ID antrian tidak ditemukan.")
37+
38+
39+
def menu():
40+
while True:
41+
print("\n=====sistem kunjungan santri=====")
42+
print("1. tambah pengunjung")
43+
print("2. menampilkan daftar pengunjung")
44+
print("3. hapus pengunjung")
45+
print("4. keluar")
46+
pilihan = input("silahakan pilih (1-4): ")
47+
print()
48+
if pilihan == "1":
49+
tambah(pengunjung)
50+
elif pilihan == "2":
51+
tampilkan_list(pengunjung)
52+
elif pilihan == "3":
53+
hapus(pengunjung)
54+
elif pilihan == "4":
55+
print("sistem selesai")
56+
break
57+
else:
58+
print("silahkan pilih dari 1-4")
59+
60+
menu()
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
def gabungantuple(pertama, kedua):
2+
gabungan = pertama + kedua
3+
print("gabuangan angka pertama dan kedua: ",gabungan)
4+
5+
t = []
6+
for angka in gabungan:
7+
ada = False
8+
for u in t:
9+
if u == angka:
10+
ada = True
11+
break
12+
if not ada:
13+
t.append(angka)
14+
15+
for i in range(len(t) - 1):
16+
for j in range(i + 1, len(t)):
17+
if t[i] < t[j]:
18+
temp = t[i]
19+
t[i] = t[j]
20+
t[j] = temp
21+
22+
return tuple(t)
23+
24+
pertama = (1,5,9,3,0)
25+
print("angka pertama: ",pertama)
26+
kedua = (3,8,6,7,9)
27+
print("angka kedua: ",kedua)
28+
hasil = gabungantuple(pertama, kedua)
29+
print("Hasil akhir:", hasil)
Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
numbers = []
2+
3+
def is_number(s):
4+
if s == '':
5+
return False
6+
for char in s:
7+
if char < '0' or char > '9':
8+
return False
9+
return True
10+
11+
def tambah_angka():
12+
angka_str = input("masukkan angka yang ingin ditambahkan: ")
13+
if not is_number(angka_str):
14+
print("input harus berupa angka positif")
15+
return
16+
angka = int(angka_str)
17+
if angka <= 0:
18+
print("input harus berupa angka positif")
19+
return
20+
numbers.append(angka)
21+
print(f"angka {angka} berhasil ditambahkan")
22+
23+
def tampilkan_list():
24+
if not numbers:
25+
print("List kosong")
26+
else:
27+
print("Daftar angka:", numbers)
28+
29+
def ubah_angka():
30+
tampilkan_list()
31+
if not numbers:
32+
return
33+
index_input = input("masukkan indeks angka yang ingin diubah (dimulai dari 0): ")
34+
if not is_number(index_input):
35+
print("indeks harus berupa angka")
36+
return
37+
index = int(index_input)
38+
if 0 <= index < len(numbers):
39+
angka_input = input("masukkan angka baru: ")
40+
if not is_number(angka_input):
41+
print("angka baru harus berupa angka positif")
42+
return
43+
angka_baru = int(angka_input)
44+
if angka_baru <= 0:
45+
print("angka baru harus berupa angka positif")
46+
return
47+
numbers[index] = angka_baru
48+
print(f"angka di indeks {index} berhasil diubah menjadi {angka_baru}")
49+
else:
50+
print("indeks tidak valid")
51+
52+
def hapus_angka():
53+
tampilkan_list()
54+
if not numbers:
55+
return
56+
index_input = input("masukkan indeks angka yang ingin dihapus (dimulai dari 0): ")
57+
if not is_number(index_input):
58+
print("indeks harus berupa angka")
59+
return
60+
index = int(index_input)
61+
if 0 <= index < len(numbers):
62+
angka = numbers.pop(index)
63+
print(f"angka {angka} di indeks {index} berhasil dihapus")
64+
else:
65+
print("indeks tidak valid")
66+
67+
def find_subset(nums, target):
68+
def melihat(start, current_sum, path):
69+
if current_sum == target:
70+
return path[:]
71+
for i in range(start, len(nums)):
72+
if current_sum + nums[i] <= target:
73+
path.append(nums[i])
74+
result = melihat(i + 1, current_sum + nums[i], path)
75+
if result is not None:
76+
return result
77+
path.pop()
78+
return None
79+
return melihat(0, 0, [])
80+
81+
def cek_partition():
82+
if not numbers:
83+
print("list kosong, tidak dapat dicek")
84+
return
85+
total = sum(numbers)
86+
if total % 2 != 0:
87+
print("total penjumlahan ganjil, tidak dapat dibagi rata")
88+
return
89+
target = total // 2
90+
dp = [False] * (target + 1)
91+
dp[0] = True
92+
for num in numbers:
93+
for j in range(target, num - 1, -1):
94+
dp[j] = dp[j] or dp[j - num]
95+
if dp[target]:
96+
subset1 = find_subset(numbers, target)
97+
if subset1 is not None:
98+
subset2 = numbers[:]
99+
for item in subset1:
100+
subset2.remove(item)
101+
print(f"dapat dibagi menjadi dua bagian {subset1} dan {subset2}")
102+
else:
103+
print("dapat dibagi menjadi dua bagian dengan jumlah sama")
104+
else:
105+
print("tidak dapat dibagi menjadi dua bagian dengan jumlah sama")
106+
107+
def menu():
108+
while True:
109+
print("\n===== Program Pengelolaan Angka =====")
110+
print("1. Tambah angka")
111+
print("2. Tampilkan daftar angka")
112+
print("3. Ubah angka")
113+
print("4. Hapus angka")
114+
print("5. Cek apakah dapat dibagi menjadi dua bagian dengan jumlah sama")
115+
print("6. Keluar")
116+
pilihan = input("Pilih menu (1-6): ")
117+
if pilihan == "1":
118+
tambah_angka()
119+
elif pilihan == "2":
120+
tampilkan_list()
121+
elif pilihan == "3":
122+
ubah_angka()
123+
elif pilihan == "4":
124+
hapus_angka()
125+
elif pilihan == "5":
126+
cek_partition()
127+
elif pilihan == "6":
128+
break
129+
else:
130+
print("pilihan tidak ada silakan pilih lagi")
131+
132+
menu()

0 commit comments

Comments
 (0)