Rabu, 27 April 2011

Algoritma Layer by Layer pada Rubik

Algoritma Layer-by-Layer

Rubik’s Cube ditemukan oleh Erno Rubik dan telah dipatenkan atas namanya [5]. Benda ini sekilas terlihat sebagai sebuah kubus yang terdiri atas 27 kubus kecil, padahal sebenarnya hanya terdapat 26 kubus kecil karena kubus kecil yang paling dalam tidak pernah tersentuh. Cara memainkan kubus ini adalah dengan mengacak sisisisinya lalu mengembalikannya ke keadaan tersusun, di mana keenam sisinya memiliki warna yang uniform. Hingga saat ini, banyak orang yang menganggap bahwa Rubik’s Cube hanya dapat diselesaikan oleh orang-orang yang memiliki IQ tinggi, padahal sudah banyak algoritm yang ditemukan untuk menyelesaikan Rubik’s Cube, sehingga siapa pun dapat menyelesaikannya. Salah satu algoritma yang termudah adalah algoritma Layer-by-Layer
yang menyelesaikan Rubik’s Cube mulai layer pertama, kedua, lalu ketiga. Selain itu, ada juga algoritma Fridrich yang memerlukan sekitar 120 algoritma untuk dihapal namun dapat menyelesaikan Rubik’s Cube dalam rata-rata 50 gerakan. Karena solusi Rubik’s Cube telah ditemukan dalam bentuk algoritma, maka program komputer untuk menyelesaikannya pun dapat dibuat. Makalah ini membahas bagaimana cara membuat program komputer yang mengimplementasikan algoritma Layer-by-Layer
untuk menyelesaikan Rubik’s Cube.

Secara garis besar, algoritma Layer-by-Layer dapat ditulis sebagai berikut :
1. Selesaikan layer pertama/atas.
a. Bentuk cross di sisi atas, sesuaikan dengan warna keempat sisi di samping.
b. Isi keempat sudut atas dengan kubus yang sesuai.
2. Selesaikan layer kedua/tengah.
a. Isi keempat kubus pada layer kedua dengan kubus yang sesuai.
3. Selesaikan layer ketiga/bawah.
a. Bentuk cross di sisi bawah, tanpa merusak kedua layer di atas.
b. Tempatkan keempat sudut bawah di tempat sebenarnya, disesuaikan dengan warna dari ketiga sisi yang bersisian dengannya.
c. Bentuk supaya sisi bawah memiliki warna yang uniform.
d. Pertukarkan kubus-kubus yang belum sesuai pada tempatnya


Referensi :
http://www.informatika.org/

Rekursi

Rekursi adalah konsep pengulangan yang penting dalam ilmu komputer. Konsep ini dapat digunakan untuk merumuskan solusi sederhana dalam sebuah permasalahan yang sulit untuk diselesaikan secara iteratif dengan menggunakan loop for, while do. Pada saat tertentu konsep ini dapat digunakan untuk mendefinisikan permasalahan dengan konsisten dan sederhana. Pada saat yang lain, rekursi dapat membantu untuk mengekspresikan algoritma dalam sebuah rumusan yang menjadikan tampilan algoritma tersebut mudah untuk dianalisa.
Rekursi adalah cara untuk menetapkan proses dengan dirinya sendiri. Lebih jelasnya (dan untuk menghalaukan penampilan kesirkularan dalam definisi), langkah-langkah "rumit" dari proses dijelaskan dengan langkah-langkah yang lebih "sederhana", dan kejadian yang paling "sederhana" diberi secara gamblang. Dalam bahasa pemrograman, rekursi berarti memanggil suatu fungsi dari dalam fungsi itu sendiri.
Rekursi merupakan teknik pemrograman yang menyebabkan suatu fungsi/prosedur memanggil dirinya sendiri. Pemanggilan diri sendiri ini berlangsung terus menerus sampai batas terkecil yang nilai dari fungsi tersebut disebutkan secara eksplisit. Salah satu contoh dari penerapan rekursi adalah perhitungan faktorial.

Referensi :
http://bc-omu.blogspot.com/

Subrutin

Prosedur
Prosedur adalah suatu program terpisah dalam blok sendiri yang berfungsi sebagai subprogram (program bagian). Prosedur diawali dengan kata cadangan Procedure di dalam bagian deklarasi prosedur. Prosedur dipanggil dan digunakan di dalam blok program yang lainnya dengan menyebutkan judul prosedurnya.
Prosedur banyak digunakan pada program yang terstruktur, karena:
1.Merupakan penerapan konsep program modular, yaitu memecah-mecah program yang rumit menjadi program-program bagian yang lebih sederhana dalam bentuk prosedur-prosedur.
2.Untuk hal-hal yang sering dilakukan berulang-ulang, cukup diruliskan sekali saja dalam prosedur dan dapat dipanggil atau dipergunakan sewaktu-waltu bila diperlukan.

Fungsi
Fungsi hampir sama dengan prosedur, hanya fungsi harus dideklarasikan dengan tipenya. Tipe deklarasi ini menunjukkan tipe hasil dari fungsi. Tipe tersebut ditulis pada akhir deklarasi fungsi yang didahului dengan titik koma.

Referensi :
http://buyungwisnuadjie.files.wordpress.com

Struktur Pengulangan

For
Dalam bahasa pemrograman C++ untuk melakukan perulangan (looping) yang paling umum digunakan adalah pernyataan For. Pernyataan For berguna untuk melakukan perulangan (looping) terhadap satu atau sejumlah pernyataan.

For Bersarang
Kita juga bisa menuliskan pernyataan for di dalam penyataan for. Kontruksi semacam ini sering disebut dengan penyataan for bersarang. Perhatikan contoh berikut:

for x := 1 to 3 do
for y :=1 to 2 do
writeln (x, ‘ ‘ y);

Looping for yang luar (dengan pencacah variabel x) akan menjalankan looping yang dalam (dengan pencacah y) sebanyak 3 kali. Dan pada setiap pengulangan di layar akan dituliskan nilai x dan y. Berikut ini adalah keluaran dari program di atas:
1 1
1 2
2 1
2 2
3 1
3 2
Pada saat x bernilai 1, y diulang sebanyak 2 kali. Jadi pada layar akan tertulis 1 1 dan 1 2. Demikian juga pada saat x bernilai 2, y diulang sebanyak 2 kali. Jadi pada layar akan tertulis 2 1 dan 2 2. Hal yang sama terjadi pada saat x bernilai 3, y diulang sebanyak 2 kali. Sehingga pada layar tertulis 3 1 dan 3 2.

While
Perulangan while memiliki bentuk

while (suatu_kondisi)
perintah

perintah bisa juga berupa blok yang berisi kumpulan perintah-perintah di antara { dan }. perintah ini disebut juga dengan inti perulangan. Inti perulangan akan terus dieksekusi selama suatu_kondisi bernilai true. suatu_kondisi ini disebut juga penguji perulangan.

Repeat – Until
Pernyataan pengulangan ini hampir sama denganpernyataan pengulangan while, dan biasanya digunakanbila jumlah pengulangan belum dapat ditentukan padasaat program ditulis. Perbedaan pernyataan repeat..until dan while terletak pada letak pengecekan kondisi. Jika pada pernyataan while, kondisi dicek pada awal kalang, sedangkan pada pernyataan repeat..until, kondisi dicek pada akhir kalang. Perbedaan yang lain, bila pernyataan while mengulang pernyataan selama kondisi masih terpenuhi, pernyataan repeat..until mengulang pernyataan selam kondisi belum terpenuhi.

Referensi :
http://softekno.blogspot.com/
http://latifrudianto.blogspot.com/

Struktur Percabangan

If…Else

Pernyataan if-else mempunyai sintaks:
if (kondisi)
pernyataan-1
else
pernyataan-2;

Maksud dari pernyataan if-else adalah:
Jika kondisi benar, maka pernyataan-1 dijalankan, Sedangkan jika kondisi bernilai salah, maka pernyataan-2 yang akan dijalankan. Masing-masing pernyataan-1 dan pernyataan-2 dapat berupa sebuah pernyataan tunggal maupun pernyataan majemuk. If… Else berfungsi melibatkan pernyataan majemuk yaitu pernyataan A dan B. Jika pernyataan bukan merupakan pernyataan A, maka yang akan dijalankan merupakan pernyataan B.

If…Else If
Pernyataan untuk if else if hamper sama dengan if else namun disini hanya menambahkan suatu kondisi lagi setelah kondisi yang pertama yaitu pada if pertama

Case
Hampir sama dengan struktur percabangan IF, tetapi lebih cocok digunakan jika kondisi yang diperiksa sangat banyak. Kondisi yang diperiksa harus berupa data ordinal (bertipe integer atau char), dan tidak boleh bertipe real. Menggunakan operator relasional = (sama dengan) untuk melakukan pemeriksaan kondisi.

Referensi :
http://zenkychan.blogspot.com/