Category Archives: Pembahasan

Peluang, Peluang, Peluang…. Probabilitas

Jarang-jarang masukin sesuatu yang berguna di blog. Ini termasuk tulisan pertama dalam dua tahun ini yang bukan opini.

Apa itu “peluang”? Menurut KBBI:

pe·lu·ang 1 n kesempatan: – yg baik jangan disia-siakan; 2 a terhenti atau senggang (tt angin, pekerjaan, dsb).

Wew. Agak kurang berhubungan dengan “peluang” yang kumaksud.

“Peluang” yang kumaksud adalah yang terjemahannya “probability”. Yoa, sepertinya di KBBI, “probability” diterjemahkan sebagai “probabilitas”. Trus kenapa di textbook terjemahan malah jadi “peluang” ya….

pro·ba·bi·li·tas n kemungkinan.

Ok. Masalah bahasa cukup sampai situ. Mari lanjut ke pembahasannya.

Tapi… er… mungkin ini baru pengertiannya aja. Tentang operasinya, perhitungan-perhitungannya… cari waktu minat lagi :D

Read more »

Kerusuhan Geng Motor di Bandung? Go On Boys!!!

Geng motor ditangkepin dan ditelanjangi malem-malem. Adem banget kan, guys??

Geng motor di Bandung rusuh (lagi) pada hari Sabtu, 24 September 2010 mulai jam 20:30 di area Cihampelas. Akibatnya para polisi terpaksa menutup jalan Cihampelas untuk menghalangi para anggota geng yang berusaha kabur. Sayangnya, yang di blokir cuma jalan menuju Cipaganti, ke atas Cihampelas, dan ke Pasteur. Memang masih ada jalan lagi? Ada!

Garis merah : Di blokir; Lingkar merah: Tembus

Ya ampun pak polisi…. niat gak sih….

Tapi seenggaknya, penangkapan bisa terus berjalan. Mungkin sama dengan para polisinya, orang-orang geng motor nya juga gak tau jalan itu ada. Huahahahahahaha

Ayo anak-anak, upacara mau segera dimulaaaaiii!!!! :D

Ayo semuanya!!! Gabung ke geng moto!!! Asik loh, banyak kegiatannya: mulai dari main pukul-pukulan, bacok-bacokkan, dan kemudian ngumpul bareng di penjara setempat dan makan-makan gratis!!! Huahahahahahahahahahaha

Kutipan: Kenapa Yahudi Pintar???

Dikutip dari note di Facebook. Link aslinya di http://www.facebook.com/note.php?note_id=124045347607271


Bangsa Yahudi adalah salah satu bangsa yang menguasai dunia karena kecerdasan dan kelicikannya baik dari segi sains, bisnis, maupun teknologi.

Allah Ta’ala memang telah menganugrahkan kepada bangsa Yahudi suatu kelebihan berupa otak yang cemerlang. Dan sungguh sangat menarik mengetahui kenapa orang Yahudi begitu pintar dan mempunyai kelebihan dibanding bangsa-bangsa lain di atas dunia ini. Tentu saja dalam hal ini hanyalah sebatas kelebihan dalam hal urusan keduniawian…

“dan Facebook yang sedang kita gunakan ini pun adalah hasil karya mereka”…

Berikut ini sebuah artikel yang akan memaparkan sedikit sebab dari fenomena kelebihan mereka ini. Read more »

Pembahasan: Kriptografi

Nah, berhubung ternyata gak ada yang ngebahas soal gw, gw jadi terdorong untuk ngebahas soal gw sendiri yang tentang kriptografi. Positif thinking aja, mungkin anak-anak osn kompi lain lagi sibuk menghadapi nasib… eh, pelatnas.

Kenapa gw bahas soal ini di blog gw sendiri dan bukannya di blog osn kompi? Yah, alasannya sederhana aja, gw cuma mau mempromosikan blog gw ini. Jadi jangan marah yaaa…

Oke, kita mulai pembahasan ini dengan melihat contoh testcase kita:
Input:
agung
keren
agung
cool
agung utama
ganteng

Output:
KKLRT
CUIYI
GGHGK ATNFE

Algoritma kriptografi ini (yang notabane disebut “Vigenere Chiper”) untuk dipemograman sebenatnya sederhana:
1. Input plain text.
2. Input sandi.
3. Rubah huruf pertama plain text dengan huruf pertama sandi sesuai tabel.
4. Kalau bertemu spasi, jangan di proses, dan sandi dimulai lagi dari huruf pertama.
5. Kalau sudah sampai ke huruf akhir sandi, kembalikan ke huruf pertama sandi.
Baca soal lagi kalau tidak mengerti dengan algoritmanya.

Gak sulit kan? Tapi yang terlihat ternyata tidak semudah kelihatannya. Coba lihat lagi poin ke 3. Kita diminta mencocokan dengan tabel. Sekedar cerita, dulu gw bikin kodenya pakai array 2 dimensi, jadi keluaran sandi[huruf plain, huruf sandi] adalah hasilnya. Cara ini bisa dibuat untuk enkripsi, tapi gimana dengan dekripsi? Silahkan coba sendiri.

Kalau pakai array juga memakan memori banyak. Satu variabel char sudah 1 byte. Kalau ada 26 huruf berarti ada 26 X 26 variabel char (676 variabel). Kelihatannya sedikit, tapi tidak efektif. Jadi marilah kita tinggalkan cara ini.

Coba perhatikan tabel kriptografi ini. Kalau diperhatikan, sebenarnya chiper text merupakan hasil increment dari plain text. contoh: ‘A’ dengan sandi ‘A’ menghasilkan ‘A’ lagi. ‘A’ dengan sandi ‘B’ menghasilkan ‘B’. Kalau ‘F’ dengan sandi ‘L’ akan menghasilkan ‘Q’ (huruf ‘F’ naik sebanyak ‘L’ – 1 kali).

Sekarang, dalam pascal kita bisa tulis:
////////////////////////////////////////////////////////
var
input : string; //variabel untuk plain text
sandi : string; //variabel untuk sandi
i,j,k : byte; //variabel untuk (i)iterasi, (j)panjang sandi, dan (k)hurufsandi

begin
repeat //untuk perulangan

readln(input); //input plain
if input = ” then exit; //kalau kosong, selesai

readln(sandi); //input sandi

j := length(sandi); //simpan panjang sandi
input := upcase(input); //jadikan input huruf besar
sandi := upcase(sandi); //jadikan sandi huruf besar
k := 1; //simpan huruf ke berapa sandi akan dipakai

for i := 1 to length(input) do
begin
if input[i] = ‘ ‘ then begin k := 1; continue; end;
//kalau huruf spasi, jangan diproses
input[i] := chr( ord(input[i]) + ord(sandi[k]) – 65 );
//huruf input dinaikan sebanyak huruf sandi dikurangi 65(ASCII dari ‘A’)
if ord(input[i]) > ord(‘Z’) then
input[i] := chr( ord(input[i]) – 26 );
//Kalau lebih dari Z maka kurangi 26 huruf
k := k + 1;
//Gunakan huruf sandi berikutnya
if k > j then k := 1;
//Kalau lebih panjang dari sandi itu sendiri, kembalikan ke huruf pertama
end;

writeln(input); //cetak hasilnya

until input = ”;

end.
////////////////////////////////////////////////////////

Dari logika tadi, maka untuk mendekrip bisa kita rubah sedikit kodenya. Dimana setiap simbol dibalik.
////////////////////////////////////////////////////////
var
input : string; //variabel untuk plain text
sandi : string; //variabel untuk sandi
i,j,k : byte; //variabel untuk (i)iterasi, (j)panjang sandi, dan (k)hurufsandi

begin
repeat //untuk perulangan

readln(input); //input plain
if input = ” then exit; //kalau kosong, selesai

readln(sandi); //input sandi

j := length(sandi); //simpan panjang sandi
input := upcase(input); //jadikan input huruf besar
sandi := upcase(sandi); //jadikan sandi huruf besar
k := 1; //simpan huruf ke berapa sandi akan dipakai

for i := 1 to length(input) do
begin
if input[i] = ‘ ‘ then begin k := 1; continue; end;
//kalau huruf spasi, jangan diproses
input[i] := chr( ord(input[i]) – ord(sandi[k]) + 65 );
//huruf input diturunkan sebanyak huruf sandi ditambah 65(ASCII dari ‘A’)
if ord(input[i]) <> j then k := 1;
//Kalau lebih panjang dari sandi itu sendiri, kembalikan ke huruf pertama
end;

writeln(input); //cetak hasilnya

until input = ”;

end.
////////////////////////////////////////////////////////

Sebenarnya untuk tugas yang sekarang kode ini sudah cukup, karena testcase sudah pasti tidak memiliki karakter lain selain alphabet dan spasi. Tapi sebenarnya dalam Vigenere Chiper, ada kemungkinan kalau input memiliki karakter khusus (seperti “‘!@#$%^&* dll). Maka, ada baiknya kita melakukan pengecualian proses untuk karakter-karakter tersebut. Kalau gw lebih suka pakai tipe set.
var
…..
himp : Set of char;
…..

jadi kode enkrip:
////////////////////////////////////////////////////////
var
input : string; //variabel untuk plain text
sandi : string; //variabel untuk sandi
i,j,k : byte; //variabel untuk (i)iterasi, (j)panjang sandi, dan (k)hurufsandi
himp : Set of char //variabel himpunan karakter yang diizinkan

begin
repeat //untuk perulangan

readln(input); //input plain
if input = ” then exit; //kalau kosong, selesai

readln(sandi); //input sandi

j := length(sandi); //simpan panjang sandi
input := upcase(input); //jadikan input huruf besar
sandi := upcase(sandi); //jadikan sandi huruf besar
himp := ['A'..'Z']; //krakter yang diizinkan dari A sampai Z
k := 1; //simpan huruf ke berapa sandi akan dipakai

for i := 1 to length(input) do
begin
if input[i] = ‘ ‘ then begin k := 1; continue; end;
//kalau huruf spasi, jangan diproses
if not(input[i] in himp) then continue;
//kalau tidak termasuk huruf yang diizinkan, jangan diproses
input[i] := chr( ord(input[i]) + ord(sandi[k]) – 65 );
//huruf input dinaikan sebanyak huruf sandi dikurangi 65(ASCII dari ‘A’)
if ord(input[i]) > ord(‘Z’) then
input[i] := chr( ord(input[i]) – 26 );
//Kalau lebih dari Z maka kurangi 26 huruf
k := k + 1;
//Gunakan huruf sandi berikutnya
if k > j then k := 1;
//Kalau lebih panjang dari sandi itu sendiri, kembalikan ke huruf pertama
end;

writeln(input); //cetak hasilnya

until input = ”;

end.
////////////////////////////////////////////////////////

dan dekrip:
////////////////////////////////////////////////////////
var
input : string; //variabel untuk plain text
sandi : string; //variabel untuk sandi
i,j,k : byte; //variabel untuk (i)iterasi, (j)panjang sandi, dan (k)hurufsandi
himp : Set of char //variabel himpunan karakter yang diizinkan

begin
repeat //untuk perulangan

readln(input); //input plain
if input = ” then exit; //kalau kosong, selesai

readln(sandi); //input sandi

j := length(sandi); //simpan panjang sandi
input := upcase(input); //jadikan input huruf besar
sandi := upcase(sandi); //jadikan sandi huruf besar
himp := ['A'..'Z']; //krakter yang diizinkan dari A sampai Z
k := 1; //simpan huruf ke berapa sandi akan dipakai

for i := 1 to length(input) do
begin
if input[i] = ‘ ‘ then begin k := 1; continue; end;
//kalau huruf spasi, jangan diproses
if not(input[i] in himp) then continue;
//kalau tidak termasuk huruf yang diizinkan, jangan diproses
input[i] := chr( ord(input[i]) – ord(sandi[k]) + 65 );
//huruf input diturunkan sebanyak huruf sandi ditambah 65(ASCII dari ‘A’)
if ord(input[i]) <> j then k := 1;
//Kalau lebih panjang dari sandi itu sendiri, kembalikan ke huruf pertama
end;

writeln(input); //cetak hasilnya

until input = ”;

end.
////////////////////////////////////////////////////////
Sekarang, kita sudah benar-benar selesai dengan Vigenere Chiper.

Yah, pambahasan ini masih banyak kelemahannya. Pertama, mungkin kurang jelas. Kedua, gw terlalu ganteng (gak nyambung, oon!). Gw menerima segala kritik, saran, dan pujian dari siapa saja (siapa yang mau muji?). Terima Kasih atas perhatiannya, semoga anda yang memperhatikan selalu berbahagia dan yang tidak memperhatikan selalu sengsara (??).

Pembahasan tentang IP converting masih di proses.