Slide Photo

Sabtu, 24 Agustus 2013

Apa Itu CP (Competitive Programming) ?

Hi,Readers
sesuai janji saya di posting sebelumnya,saya akan menginformasikan apa sih itu CP (Competitive Programming).nah,saya dapat sumber dari Fasilkom UI.Informasi ini saya dapatkan karena saya sedang berkompetisi di COMPFEST 2013 yang merupakan acara rutin tahunan yang diselenggarakan oleh Mahasiswa Fasilkom UI.smoga informasi ini dapat menambah wawasan kita.(sedikit saya ringkas karena belum saatnya masuk ke dunia coding)


oke ini informasi dari Fasilkom UI :

Competitive programming (CP) adalah suatu kompetisi di mana para kontestan dihadapkan pada suatu persoalan, lalu menjawabnya melalui program yang ditulis dengan bahasa pemrograman tertentu, dan menghasilkan output tertentu berdasarkan input yang diberikan oleh grader. Grader adalah suatu sistem yang dapat mengoreksi hasil output suatu program yang telah kita kumpulkan. Tujuan dalam CP adalah mendapatkan status Accepted pada grader, artinya output yang dihasilkan sesuai dengan yang diharapkan grader setelah grader memasukkan input ke program kita. Tidak hanya program kita harus benar, tetapi program kita harus efisien dalam penggunaan memori dan waktu keluarnya output.

Bagaimana kompetisi CP berjalan?
Para kontestan diberikan beberapa soal. Dari soal tersebut, kontestan diminta untuk membuat sebuah program dengan bahasa pemrograman yang telah ditentukan (C/C++/Java untuk tingkat mahasiswa, dan Pascal/C/C++/Java untuk SMA/sederajat). Kontestan tidak akan tahu input apa yang akan diberikan oleh grader. Maka dari itu, kontestan harus berusaha membuat program yang dapat menangani semua input sesuai batasan input yang ada.

Ada beberapa hal yang perlu diperhatikan pada saat menuliskan kode untuk CP:

● Semua program harus mendapatkan masukan dari standard input dan menulis keluaran ke standard output. Dengan kata lain program akan membaca dan menulis dari command line. Program yang membaca file atau menggunakan GUI untuk membaca/memperlihatkan masukan dan keluaran tidak akan diterima oleh online grader.

● Kode yang dibuat tidak perlu memberikan keluaran atau masukan tambahan di luar format yang diberikan. Program tidak perlu mengeluarkan pesan untuk meminta masukan dan tidak perlu memberikan penjelasan untuk hasil yang dikeluarkan (Contoh: “Masukan bilangan:” atau “Hasil dari penjumlahan adalah”).

● Pada online grader, masukan dan keluaran akan dipisahkan ke tempat yang berbeda sehingga tidak perlu memisahkan kedua bagian tersebut pada kode program.

● Perhatikan kompleksitas algoritma dan penggunaan memori program anda. Program anda tidak hanya harus benar, tetapi juga efisien. Program dengan kompleksitas atau penggunaan memori yang melebihi batas tidak akan mendapatkan accepted. 

● File yang akan diunggah atau di-upload ke grader adalah kode program yang berada dalam satu file dengan ekstensi .c/.cpp/.pas/.java dan bukan file executable dengan ekstensi .exe/.jar/.class

● Keluaran dari program harus diakhiri dengan baris baru. Gunakan writeln pada Pascal dan System.out.println pada Java untuk menulis baris baru. Pada C/C++ atau Java jika menulis sebuah baris menggunakan printf jangan lupa untuk menambahkan ‘\n’ pada keluaran terakhir.

Hasil dari penilaian grader :
Ketika anda mengumpulkan program ke grader, program anda akan segera dinilai apakah benar, salah, atau yang lainnya. Berikut ini adalah beberapa umpan balik yang mungkin:

● Accepted
Artinya program anda menghasilkan output yang benar (sama dengan keinginan pembuat soal) tanpa melebihi batas waktu dan memori yang diberikan. Untuk contoh solusi diatas, semuanya mendapatkan Accepted.

● Wrong answer 
Artinya program yang dikumpulkan tidak menghasilkan output yang benar (sama dengan keinginan pembuat soal) tetapi tanpa melebihi batas waktu dan memori yang diberikan.

● Time limit exceeded
Artinya program yang dikumpulkan berjalan melebihi batas waktu yang diberikan. Mungkin saja karena kompleksitas program anda terlalu besar, kurang efisien, atau terjadi infinite loop ketika program anda berjalan.

● Memory limit exceeded
Program yang dikumpulkan telah menggunakan memori melebihi dari batas yang ditentukan. Misalnya dengan membuat array terlalu besar atau proses rekursi terlalu dalam.

● Compile error
Terjadi error pada saat grader hendak melakukan kompilasi terhadap program yang
dikumpulkan. Biasanya karena terdapat kesalahan sintaks penulisan program.

● Runtime error
Terjadi error pada saat program yang dikumpulkan diberikan input dan dijalankan. Error
tersebut mungkin saja disebabkan karena akses elemen di luar batas array, melakukan
pembagian terhadap nol dalam perhitungan, terjadi stack overflow.

● Pending
Artinya grader sedang sibuk dan pengumpulan anda dalam antrian grading. Jika dalam
jangka waktu lama masih dalam verdict ini, ada kemungkinan server grader sedang
down.

oke,itu sekian dari pembahasan dari Fasilkom UI.Makasi ya atas infonya ya ^_^ +Fasilkom UI

saya menambahkan sedikit,
soal yang diberikan ini terbilang Unik,jadi yang bermain adalah Logika kita dan juga dibantu oleh Ilmu Matematika.kita bisa memecahkan masalah tersebut dengan coding.dan apabila berhasil,ini bisa kita terapkan untuk membantu pekerjaan kita.jadi banggalah menjadi Programmer :D

oke agar rasa penasaran tak menghantui,ini contoh soal CP yang saya buat :


terdapat sebuah problem,kemudian sesi pemasukan (Format Masukan),sesi pengeluaran (Format Keluaran),
Contoh,Penjelasan(bila dilampirkan),dan Batasan.

tentu dalam bekerja,kita perlu bekerja secara tepat dan juga efisien,sama juga dengan coding.hal ini membuat kita untuk berlatih cara mengertikan suatu masalah,cara memecahkan suatu masalah dan bagaiman ini bisa diterapkan untuk membantu pekerjaan kita.

dengan CP ini,seseorang pasti merasa tertantang dan ingin menjadi lebih baik dari yang dengan disalurkan sebuah pertandingan/kompetisi.inilah membuat coding semakin menarik dan FUN.

sekian dari postingan saya.apabila ada salah informasi atau definisi dalam posting,harap maklumi karena posting ini berdasar dari pemikiran saya dan beberapa sumber terpercaya.posting selanjutnya,saya akan membahas bagaimana cara mengeksekusi sebuah perintah komputer dengan salah satu bahasa pemrograman yang paling dasar untuk dipelajari.yaitu bahasa Pascal.yang pertama kali kita belajar cara eksekusi input dan output pada compiler yang menyusun sintaks pascal.(sekarang mulai terjun ke dunia coding).

Salam MastA_13

Tidak ada komentar:

Posting Komentar