Introduction to SPOJ and DITTOSTR Problem Solution

Assalamualaikum...

Selamat pagi menjelang siang, para pembaca. Kali ini, saya akan menyapa Anda semua dengan bahasan seputar pemrograman. Selamat menyimak.

Setelah diperkenalkan oleh dosen saya beberapa bulan lalu, kini saya akan memperkenalkan Sphere Online Judge kepada Anda semua. Ya, Sphere Online Judge atau SPOJ adalah sebuah situs internet yang menyediakan ribuan soal untuk dipecahkan melalui sebuah program dan bertindak sebagai penilai program tersebut. SPOJ akan memberi nilai atau keputusan dalam bentuk :
  • Accepted. Ini akan diberikan apabila program kita menghasilkan keluaran yang benar dalam rentang waktu dibawah rentang waktu yang ditetapkan.
  • Time Limit Exceeded. Ini akan diberikan apabila program kita menghasilkan keluaran lebih lama daripada rentang waktu yang ditetapkan (misalnya dalam waktu 10 detik dari yang seharusnya 1 detik).
  • Runtime Error. Ini akan diberikan apabila sistem SPOJ tidak bisa mengeksekusi program kita karena terdapat kesalahan dalam program, umumnya berupa kesalahan sintaks.
  • Wrong Answer. Ini akan diberikan apabila program kita tidak menghasilkan keluaran yang sesuai dengan yang diharapkan. 

Tampilan homepage SPOJ (Sumber : Dokumen pribadi)

Untuk dapat mengerjakan soal-soal di SPOJ, Anda harus membuat akun terlebih dahulu. Selanjutnya, Anda sudah mulai dapat mengerjakan soal-soal yang ada di SPOJ. Anda dapat memilih soal-soal dasar (basics) terlebih dahulu untuk mengasah pemahaman Anda mengenai dasar-dasar pemrograman. Jika Anda ingin tantangan yang lebih, Anda dapat mencoba soal-soal dalam kategori classical, challenge, partial, tutorial, dan riddle. Sebagai informasi tambahan, poin hanya diberikan apabila Anda dapat menjawab soal-soal classical dan challenge.

Tampilan laman soal-soal classical (Sumber : Dokumen pribadi)

Anda tidak perlu khawatir dengan ketersediaan bahasa pemrograman untuk membuat program. SPOJ mendukung banyak bahasa pemrograman, seperti keluarga bahasa C, Phyton, Fortran, Java, Lisp, Pascal, Perl, dan lain-lain. Hanya saja, tidak semua soal di SPOJ mendukung semua bahasa tersebut karena itu bergantung pada pembuat soal. Untuk mengatasinya, Anda dapat memodifikasi program dengan bahasa pemrograman tertentu yang sudah Anda buat ke bahasa lainnya. Setiap bahasa pemrograman hanya berbeda sintaks, tetapi yang terpenting adalah algoritma yang sudah Anda tentukan pada program Anda.

Ya, demikian pengenalan secara singkat mengenai SPOJ. Berikutnya, saya akan membahas sebuah soal di SPOJ yang menjadi tugas kuliah saya beberapa waktu yang lalu. Soal tersebut berjudul "DITTOSTR - Ditto and String" yang dapat Anda akses di sini. Soal ini menyatakan bahwa Anda harus membuat program yang mengubah masukan berupa kumpulan karakter (huruf) yang mengandung huruf vokal kecil (lowercase) menjadi kumpulan karakter (huruf) yang mengandung huruf vokal yang sudah dikapitalkan (huruf vokal yang sudah kapital pada masukan dan huruf konsonan baik kecil maupun kapital dibiarkan apa adanya). Misalkan masukan adalah AaijEcpe, maka keluarannya adalah AAIjEcpE.

Oke, setelah dua artikel sebelumnya mengenai pemrograman, saya harap Anda sudah memperoleh pemahaman yang cukup baik mengenai pemrograman. Oleh karena itu, Anda seharusnya sudah siap dengan program untuk soal DITTOSTR tersebut karena soal ini melibatkan hal baru dalam pembahasan kita, yaitu string. Berikut adalah kode program untuk soal di atas.


#include <stdio.h>

int main ()
{
int c = 0;
char ch, s[1000];
gets(s);
while (s[c] != '\0') {
ch = s[c];
if (ch=='a') s[c]='A';
else if (ch=='e') s[c]='E';
else if (ch=='i') s[c]='I';
else if (ch=='o') s[c]='O';
else if (ch=='u') s[c]='U';
c++;
}
printf("%s\n", s);
return 0;
}

Anda boleh mengambil, memodifikasi, dan menerapkan hasil modifikasi kode program di atas sebagai sarana belajar. Tentu saja, saya mengharapkan Anda dapat memahami algoritma pada kode program di atas dan tidak hanya sekadar meng-copy paste. Selamat dan semangat belajar pemrograman!


Wassalamualaikum...

Dramaga, 21 November 2016

Komentar