Kali ini, soal yang aing bakal selesaikan dengan menggunakan bahasa Phyton adalah soal Postman tepatnya soal No. 2448 kategori Ad-Hoc. Soalnya bisa kalian lihat langsung disini. Oh yah, mungkin ada sedikit perbedaan antara jawaban aing dengan jawaban yang seharusnya. Tapi itu tidak masalah, selama tujuan dari program tersebut tercapai. Oh yah, jawaban aing bisa kalian kembangkan kalau mau.
Mungkin kalian belum ngerti soalnya karena pake bahasa inggris. Jadi begini, intinya soal ini menghitung waktu tercepat seorang tukang pos atau postman mengantarkan orderan (surat atau barang) ke rumah-rumah yang ada di suatu kompleks. Rumah-rumah tersebut memiliki nomor dan rumah-rumah tersebut tersusun secara berurutan dari nomor yang paling kecil sampai yang paling besar. Setiap orderan harus diantar sesuai nomor yang tertera pada orderan. Adapun, ada juga aturan lain yakni si tukang pos harus mengirim orderan sesuai urutan orderan tersebut. Jadi, misalkan ada 3 rumah dengan nomor masing-masing 1, 3, 4. Trus, ada 10 surat yang harus dikirim dengan urutan 1, 3, 4, 4, 1, 3, 1, 3, 1, 4. Si tukang pos harus mengikuti urutan pemberian orderan tersebut. Jadi, dia pertama2 harus pergi ke rumah no. 1, lalu no. 3, lalu no. 4 dan memberikan dua surat, lalu balik lagi ke rumah no. 1, ke rumah no. 3 lagi, lalu ke rumah no. 1 lagi, lalu balik lagi ke rumah no. 4. Misalkan saja sekali berpindah dari satu rumah ke rumah lain membutuhkan waktu sebesar satu satuan. Nah, setelah itu dihitunglah waktu totalnya si tukang pos menyelesaikan pekerjaanya. Kira-kira seperti itu. Yah, kalo yu ngerti englisy, silahkan baca saja soalnya di situs aslinya.
Okey langsung saja qta ke kunci jawabannya. Jawaban ini adalah jawaban versi aing. Silahkan dijadikan bahan pembelajaran atau bahkan dikembangkan. Oh yah, bahasa pemrograman yang aing gunakan adalah Phyton 3.
print("""Program tukang pos
Uri No. 2448, yay~!!""")
print()
def bacamn(q, ba, bb):
b = -1
while (b < ba) or (b > bb):
try:
b = int(input(q))
except ValueError:
print("Harap Masukkan dengan bener!")
continue
else:
if (b < ba) or (b > bb):
print("Harap Masukkan dengan bener!")
return(b)
def emulagi(pek,p,r,r2):
emu = bacamn(r2 + str(a+1) + " : ", 0, 10**9)
temu = 0
for q in ListM:
if emu == q:
temu = 1
if temu == p :
pek.append(emu)
else:
print(r)
emulagi(pek,p,r,r2)
M = bacamn("Masukkan jumlah rumah : ", 1, 45000)
N = bacamn("Masukkan jumlah orderan : ", 1, 45000)
print()
ListM = []
ListN = []
for a in range(0,M):
emulagi(ListM,0,"Harap masukkan nomor rumah yang berbeda!","Masukkan nomor rumah ke-")
ListM = sorted(ListM)
print("Nomor rumah yang tersedia : " + str(ListM))
print()
for a in range(0,N):
emulagi(ListN,1,"Harap masukkan nomor orderan sesuai nomor rumah yang ada!","Masukkan nomor orderan ke-")
print("Urutan Orderan : " + str(ListN))
print()
DictM = {}
for diki in range(0, M):
DictM[ListM[diki]]= diki + 1
Listbaru = []
for diki in range(0, N):
Listbaru.append(DictM[ListN[diki]])
jumlah = Listbaru[0] - 1
for rumah in range(1, N):
jumlah = jumlah + abs(Listbaru[rumah] - Listbaru[rumah - 1])
print("Waktu yang dibutuhkan : " + str(jumlah))
Selesai deh . Fyuh , capek juga ngewarnainnya. Semoga bermanfaat eaa. Kalo ada yang pen ditanyakan mohon tanyakan ke aing di kolom komentar. Semoga dengan sedikit ilmu tentang pemrograman ini bisa membuat kita semua mampu berfikir kreatif, efektif, dan efisien dalam menyelesaikan masalah. Sampai jumpa di postingan selanjutnya. Bye~
Jangan lupa juga
Baca web novel keren, Start Point
Ketahui apa itu The Little Red Book
Ketahui alasan kenapa bayi selalu menangis
No comments:
Post a Comment