Anda di halaman 1dari 3

Tugas 1 Kode untuk Yuyun

Nama berkas kode sumber : SDA1213T1.java Batas waktu eksekusi program : 2 detik / kasus uji Batas memori program : 32 MiB / kasus uji Pak Gusar sering sekali menonton televisi setiap sore hari di ruang keluarganya. Salah satu acara favoritnya adalah DELETE. DELETE adalah acara hiburan yang menyajikan informasi seputar selebritis di negara asalnya. Namun, pada suatu hari Pak Gusar mendapatkan sebuah berita mencengangkan dari acara tersebut. Seorang aktor komedi yang bernama Arif Achmad secara tiba tiba tertangkap di rumahnya oleh penegak hukum saat dia sedang menikmati acara pesta bersama teman-temannya. Namun karena Pak Gusar seorang penonton setia DELETE, Pak Gusar tahu betul bahwa Arif Achmad masih mempunyai seorang kekasih yang bernama Yuyun Ashar. Seketika itu juga, Pak Gusar ingin memberitahu Yuyun bahwa kekasihnya telah ditangkap oleh penegak hukum. Tetapi, Yuyun sedang berada di luar negeri dan Pak Gusar takut kalau pesan yang akan diberikan akan disadap oleh aparat penegak hukum yang bersangkutan. Akhirnya Pak Gusar memikirkan sebuah cara agar pesan yang ia ingin sampaikan bisa diterima oleh Yuyun, tanpa bisa disadap oleh orang lain. Karena Pak Gusar tahu bahwa ia tidak sanggup membuat teknologi canggih seperti itu, Pak Gusar akhirnya menyerah dan meminta Anda selaku seorang yang ahli di bidang telematika untuk membuatkan ia sebuah program. Teknologi ini harus bisa memberikan pesan tanpa bisa diketahui dan dimengerti oleh orang lain selain si pengirim dan si penerima. Sebagai pakar telematika, anda pasti akan bingung karena terlalu banyak pilihan teknik enkripsi data yang ada. Oleh karena itu, sebagai seorang sahabat yang baik, Pak Gusar akan memilih sendiri teknik enkripsi yang dilakukan dan memberitahukannya kepada Anda secara rahasia. Setelah beberapa hari, akhirnya email yang berisi tentang deskripsi teknologi yang ingin dibuat telah sampai. Berikut adalah isi dari email tersebut : Dear John Doe, Berikut ini adalah deskripsi dari teknologi yang harus dibuat : Anda harus membuat sebuah daftar kamus pokok. Kamus pokok adalah daftar terurut semua karakter yang terdapat di pesan yang ingin dienkripsi. Algoritma yang dibutuhkan dalam teknologi tersebut haruslah mengikuti paten berikut ini, karena hanya inilah metode yang diketahui oleh Arif dan Yuyun. Algoritma yang digunakan bernama LZW (Lempel-Ziv-Welch) yang biasa digunakan untuk kompresi file GIF. Cara kerja algoritma LZW adalah sebagai berikut: Mempersiapkan kamus pokok yang menyimpan entri-entri berupa semua karakter yang ada di teks input. Karakter pada kamus disusun dengan urutan abjad.

1 2 3

Mempersiapkan sebuah variabel Output bertipe string untuk menyimpan output yang awalnya berisi string kosong. 3 Mempersiapkan sebuah variabel S bertipe yang awalnya berisi string kosong. 4 Mempersiakan sebuah variabel c bertipe char untuk membaca karakter pada teks input. 5 Baca sebuah karakter pada teks input, dan simpan ke c. 6 Konkatenasi S dan c (S + c). 7 Jika S + c ada di kamus, maka simpan S + c ke variabel S dan ulangi langkah ke-5. 8 Jika S + c tidak ada di kamus, maka masukkan indeks kamus (berupa angka) untuk S ke variabel Output. Lalu, simpanlah S + c ke dalam kamus. Perbarui nilai S menjadi c (S = c). 9 Lakukan langkah 5-8 sampai semua karakter pada teks input dibaca. 10 Hasil kompresi adalah isi akhir dari variabel Output. 2 Berikut adalah contoh proses kompresi LZW untuk pesan di bawah ini. lala lapar Pertama, buat kamus pokok yang berisi sebagai berikut: alpr Indeks String di dalam Kamus 1 a 2 l 3 p 4 r 5 Perhatikan bahwa karakter pada indeks pertama adalah karakter spasi . Kemudian, langkah-langkah encode pesan dijelaskan pada tabel berikut: Step Kamus tambahan ([indeks]) [String] String Karakter sekarang (s) selanjutnya (c) 1 (6) la l a 2 (7) al a l 3 (8) la la 4 (9) l l 5 (10) lap la p 6 (11) pa p a 7 (12) ar a r r 8

Kode pesan (Output) 3 3 3 3 3 3 3 3

2 2 2 2 2 2 2

6 6 6 6 6 6

1 1 1 1 1

6 6 4 6 4 2 6 4 2 5

Pada step pertama, String sekarang l terdapat di indeks ke 3 pada kamus, maka simpan angka 3 pada output. String sekarang dan karakter selanjutnya yaitu la ditambahkan ke kamus dengan indeks terkecil yang kosong di dalam kamus (indeks ke 6). String la di dalam kamus tambahan ini digunakan di step ke-3 dan ke-5. Perhatikan bahwa penomoran step-step pada tabel ini tidak harus tepat.

Format Masukan
Masukan berupa satu baris yang hanya terdiri dari pesan yang akan dijadikan kode. lala lapar

Format Keluaran
Baris pertama merupakan kamus pokok dari pesan rahasia. Baris kedua adalah pesan rahasia yang sudah menjadi kode bilangan-bilangan yang dipisahkan dengan spasi. alpr 3 2 6 1 6 4 2 5

Catatan: Tidak diperbolehkan untuk: - Menggunakan array (misalkan: Object[]) untuk menyimpan data. - Menggunakan method Arrays.sort() untuk mengurutkan data.

Anda mungkin juga menyukai