Berita:

Update RPN OJ forum! Petualangan keenam kelompok Trihörrèan di Kerajaan Líghtran berlanjut. Sanggupkah mereka mengakhiri masalah di Líghtran? Baca rangkuman kisah maraton sesi terakhir di sini dan lanjutkan petualangan mereka.

Main Menu

Buat program yuk!

Dimulai oleh Èxsharaèn, 04 November 2006, 08:41:59

« sebelumnya - berikutnya »

0 Anggota dan 4 Pengunjung sedang melihat topik ini.

Èxsharaèn

Berikut aku tuliskan beberapa contoh soal lomba pemrograman, salah satunya adalah geMasTIK 2009.

Ini adalah soal nomor 1, yang sayangnya sudah ada di Internet. Soal aslinya bisa dilihat di sini, sementara salah satu jawabannya (dalam C++) ada di sini.

Problem 1: LCD Display
Tampilan angka atau huruf pada papan peraga digital merupakan masalah yang menarik untuk diprogram. Pada masalah ini, anda hanya diminta menampilkan angka digital saja. Angka disusun oleh segmen "-" dan segmen "|". Tulislah program yang menampilkan bilangan (barisan angka) dalam gaya LCD display.

Input:
Masukan dibaca dari file. File terdiri dari beberapa baris, pada tiap baris terdapat bilangan yang akan ditampilkan. Tiap baris berisi integer s dan integer n, dimana n adalah bilangan yang ditampilkan (0 <= n <= 99.999.999) dan s adalah ukuran angka yang ditampilkan (1 <= s <= 10). File masukan ditandai dengan baris terakhir yang berisi dua buah angka 0 untuk mengakhiri pembacaan. Dua buah nol ini tidak diproses.

Output:
Setiap angka dicetak dalam gaya LCD display dengan menggunakan s buah karakter "-" untuk segmen horizontal dan s buah karakter "|" untuk karakter vertikal. Tiap angka membutuhkan tepat s + 2 kolom dan 2s + 3 baris. Setiap angka dipisahkan oleh satu spasi, dan setiap output bilangan dipisahkan oleh satu baris kosong.

Sample Input:
2  12345
3  67890
0  0

Sample Output
   --  --        --
|    |   | |  | |
|    |   | |  | |
   --  --   --   --
| |      |    |    |
| |      |    |    |
   --  --        --

---  ---   ---   ---   ---
|        | |   | |   | |   |
|        | |   | |   | |   |
|        | |   | |   | |   |
---        ---   ---
|   |    | |   |     | |   |
|   |    | |   |     | |   |
|   |    | |   |     | |   |
---        ---   ---   ---


Coba dijawab dulu ;)

[spoiler=Petunjuk]
Salah satu pendekatannya seperti ini. Secara umum, karakter LCD itu dibentuk dari 7 garis tegak dan mendatar seperti berikut:

-0-
|   |
1   2
|   |
-3-
|   |
4   5
|   |
-6-


Contoh! Angka 0 dibentuk dari garis 0, 1, 2, 4, 5, dan 6. Angka 1 dibentuk dari garis 2 dan 5. Demikian seterusnya. Nah, pembentukan karakter ini bisa kita simpan dalam sebuah Hash :) misalkan saja formatnya seperti ini:

karakter => [Array berukuran 7 yang memuat informasi garis yang terpakai untuk membuat karakter tersebut]

Secara urut, isi elemen array dengan angka 1 jika garis itu digunakan. Kalau tidak, isi dengan 0.

Misalnya:

"0" => [1, 1, 1, 0, 1, 1, 1]

berarti angka "0" memerlukan garis 0, 1, 2, 4, 5, dan 6. Garis 3 tidak diperlukan karena nilainya 0.

Nah, dengan pendekatan ini, coba buat programnya :) jika mau, teruskan untuk karakter huruf ;)
[/spoiler]
Jangan lupa ikutan serunya petualangan Our Journey!
~ A, èxshna il utnön qu our journey shallaran a èndh... ~

Profiles
About.me https://about.me/hoshiro.exsharaen