IMPLEMENTASI ALGORITMA LAYER-BY-LAYER UNTUK MENYELESAIKAN RUBIK S CUBE DALAM KODE PROGRAM

dokumen-dokumen yang mirip
Penggunaan Algoritma Branch and Bound dan Program Dinamis Dalam Pemecahan Masalah Rubik s Cube

Penerapan Algoritma Greedy dan Backtrackng Dalam Penyelesaian Masalah Rubik s Cube

BAB 3 ANALISIS DAN PERANCANGAN PROGRAM. analisis, desain/perancangan, kode, dan pengujian/implementasi. Tahap analisis

Aplikasi Graf Breadth-First Search Pada Solver Rubik s Cube

IMPLEMENTASI ALGORITMA GREEDY PADA PERMAINAN OTHELLO

BAB IV IMPLEMENTASI DAN PENGUJIAN

Penerapan Algoritma Greedy dalam Permainan Tetris

IMPLEMENTASI ALGORITMA GREEDY PADA PERMAINAN CONGKLAK

PENERAPAN ALGORITMA GREEDY DALAM PENCARIAN SOLUSI TERBAIK PADA PERMAINAN TETRIS

Pencarian Solusi Optimal dalam Permainan Congklak dengan Program Dinamis

BAB I PENDAHULUAN. Dalam dunia hiburan, kata game sudah tidak asing lagi ditelinga kita.

Penyelesaian Permainan Sliding Puzzle 3x3 Menggunakan Algoritma Greedy Dengan Dua Fungsi Heuristik

Aplikasi Algoritma Greedy untuk Pergerakan Musuh pada Permainan Pac-Man

Algoritma Rubik Cipher

Penyelesaian Blindfold Rubik dengan Visualisasi Graf

Penerapan Algoritma Greedy dalam Permainan Bantumi

Penggunaan Algoritma Greedy untuk menyelesaikan Permainan Othello

Pemanfaatan Algoritma Runut-Balik dalam Menyelesaikan Puzzle NeurOn dalam Permainan Logical Cell

Implementasi Pohon Keputusan untuk Membangun Jalan Cerita pada Game Engine Unity

Penggunaan Algoritma Greedy Dalam Perancangan Papan Teka Teki Silang

Solusi Terbaik Permainan Rocket Mania Deluxe dengan Pendekatan Algoritma BFS dan Algoritma Greedy

Penerapan Algoritma Genetika pada Permainan Rubik s Cube

Algoritma Penentuan Graf Bipartit

Penerapan Algoritma Greedy untuk Permainan Flood It

PERBANDINGAN APLIKASI ALGORITMA BRUTE-FORCE DAN KOMBINASI ALGORITMA BREADTH FIRST SEARCH DAN GREEDY DALAM PENCARIAN SOLUSI PERMAINAN TREASURE HUNT

Perbandingan Algoritma Depth-First Search dan Algoritma Hunt-and-Kill dalam Pembuatan Labirin

Penerapan Prinsip Greedy dalam Permainan Kartu Hearts

Penggunaan Algoritma Brute Force dan Greedy dalam Permainan Atomas

II. DASAR TEORI I. PENDAHULUAN

Penerapan Algoritma Greedy pada Intelegensia Buatan untuk Transfer Pemain dalam Permainan Simulasi Sepakbola

APLIKASI PEMROGRAMAN DINAMIS UNTUK MEMAKSIMALKAN PELUANG MEMENANGKAN PERMAINAN PIG

BAB I PENDAHULUAN. berguna untuk membantu manusia dalam melakukan pekerjaan tertentu, misalnya. dan pekerjaan yang memerlukan tenaga besar.

Penerapan Algoritma Greedy dalam Permainan Connect 4

Algoritma Greedy untuk Pengambilan Keputusan dalam Permainan Kartu Hearts

Penerapan strategi BFS untuk menyelesaikan permainan Unblock Me beserta perbandingannya dengan DFS dan Branch and Bound

Penerapan Algoritma Greedy dalam Pembuatan Artificial Intelligence Permainan Reversi

Penerapan Algoritma Brute Force dan Backtracking pada Permainan Skycraper

Penggunaan Algoritma Runut-balik Pada Pencarian Solusi dalam Persoalan Magic Square

APLIKASI TUTORIAL CARA CEPAT DAN MAHIR BERMAIN RUBIK S CUBE

I. PENDAHULUAN. Aljabar dapat didefinisikan sebagai manipulasi dari simbol-simbol. Secara historis

Studi dan Analisis Mengenai Teknik Steganalisis Terhadap Pengubahan LSB Pada Gambar: Enhanced LSB dan Chi-square

Penerapan Algoritma Greedy Pada Permainan Kartu Truf

Penerapan Algoritma Greedy untuk Permainan Halma

Algoritma Prim sebagai Maze Generation Algorithm

Penyelesaian Sum of Subset Problem dengan Dynamic Programming

PENERAPAN ALGORITMA BACKTRACKING PADA PERMAINAN WORD SEARCH PUZZLE

ANALISIS PENYELESAIAN RUBIK 2X2 MENGGUNAKAN GRUP PERMUTASI

Penentuan Langkah dengan Greedy dalam Permainan Ludo

APLIKASI ALGORITMA GREEDY DALAM PERMAINAN CAPSA BANTING

PENCARIAN SOLUSI TTS ANGKA DENGAN ALGORITMA RUNUT BALIK BESERTA PENGEMBANGANNYA

1. Skema warnanya, terutama oppositenya. Ini penting, Jadi tau warna ini berlawanan dengan warna apa.

SOLUSI PERMAINAN CHEMICALS DENGAN ALGORITMA RUNUT BALIK

Penerapan Algoritma BFS dan DFS dalam Mencari Solusi Permainan Rolling Block

PERBANDINGAN ALGORITMA GREEDY DAN BRUTE FORCE DALAM SIMULASI PENCARIAN KOIN

Penerapan DFS dan BFS dalam Pencarian Solusi Game Japanese River IQ Test

Implementasi Pencocokan String Tidak Eksak dengan Algoritma Program Dinamis

Aplikasi Teori Graf dalam Permainan Instant Insanity

Analisis Permainan FLIP Menggunakan Algoritma Program Dinamis

Penerapan Algoritma Runut-Balik (Backtracking) pada Permainan Nurikabe

Penyelesaian Berbagai Permasalahan Algoritma dengan Kombinasi Algoritma Brute Force dan Greedy

Penggunaan Algoritma Backtracking pada Permainan Mummy Maze

Penggunaan Algoritma Greedy untuk Menyelesaikan Permainan UNO Kartu (Klasik)

Perbandingan Algoritma Dijkstra dan Algoritma Floyd-Warshall dalam Penentuan Lintasan Terpendek (Single Pair Shortest Path)

PENGGUNAAN ALGORITMA BRANCH AND BOUND UNTUK MENYELESAIKAN PERSOALAN PENCARIAN JALAN (PATH-FINDING)

Pengaplikasian Pohon dalam Sistem Repository Ubuntu Linux

Penerapan Algoritma Runut-Balik untuk Menyelesaikan Permainan Pencarian Kata

Penerapan Algoritma Greedy dalam Pencarian Rantai Penjumlahan Terpendek

Eksplorasi Algoritma Brute Force, Greedy, dan Dynamic Programming untuk Persoalan Integer Knapsack

ENKRIPSI CITRA BITMAP MELALUI SUBSTITUSI WARNA MENGGUNAKAN VIGENERE CIPHER

Penyelesaian Persoalan Penukaran Uang dengan Program Dinamis

Penyelesaian Game Lights Out dengan Algoritma Runut Balik

Penerapan Algoritma Greedy pada Permainan Kartu 100

Penggunaan Algoritma DFS dalam Pencarian Strategi Permainan Catur

BAB I PENDAHULUAN 1.1 Latar Belakang

Penerapan Pohon dengan Algoritma Branch and Bound dalam Menyelesaikan N-Queen Problem

Pendekatan Algoritma Divide and Conquer pada Hierarchical Clustering

LOGIKA PERMAINAN UNO KARTU

IF3051 Strategi Algoritma Penerapan Algoritma Greedy untuk Peletakan Tanaman dalam Game Harvest Moon: Back to Nature

Aplikasi Algoritma Greedy dalam Permainan Kartu Truf

Analisis Penerapan Algoritma Backtracking Pada Pencarian Jalan Keluar di Dalam Labirin

SOLUSI ALGORITMA BACKTRACKING DALAM PERMAINAN KSATRIA MENYEBRANG KASTIL

Pemanfaatan Algoritma BFS pada Graf Tak Berbobot untuk Mencari Jalur Terpendek

BAB III ALGORITMA PENAMBAHAN FEATURE DAN METODA PENCAHAYAAN

PENYELESAIAN PERMAINAN RUBIK S CUBE DENGAN METODE ALGORITMA GENETIKA

Algoritma Kriptografi Kunci Publik. Dengan Menggunakan Prinsip Binary tree. Dan Implementasinya

Penerapan Algoritma Greedy dalam Permainan MarketGlory

Kompleksitas Algoritma Pengurutan Selection Sort dan Insertion Sort

Implementasi Greedy Dalam Menemukan Rangkaian Logika Minimal Menggunakan Karnaugh Map

TEORI GRAF DALAM MEREPRESENTASIKAN DESAIN WEB

Algoritma Greedy dalam Strategi Permainan Centipede

PENGGUNAAN EXHAUSTIVE SEARCH SEBAGAI SOLUSI PERMAINAN SCRAMBLE

Algoritma Greedy pada Board Game Saboteur

Penggunaan Algoritma Greedy untuk Mencari Solusi Optimal dalam Permainan Brick Breaker

Penerapan Algoritma DFS pada Permainan Sudoku dengan Backtracking

Pemanfaatan Himpunan Dalam Seleksi Citra Digital

PERBANDINGAN ALGORITMA BFS DAN DFS DALAM PEMBUATAN RUTE PERJALANAN OBJEK PERMAINAN 2 DIMENSI

Aplikasi Algoritma Brute Force Pada Knight s Tour Problem

Penerapan Algoritma Greedy Best First Search untuk Menyelesaikan Permainan Chroma Test : Brain Challenge

Kompleksitas Algoritma untuk Penyelesaian Persoalan Penukaran Koin dengan Algoritma Greedy

Penggunaan Brute Force dalam Mencari Pergerakan pada Permainan Pokémon Shuffle

Transkripsi:

IMPLEMENTASI ALGORITMA LAYER-BY-LAYER UNTUK MENYELESAIKAN RUBIK S CUBE DALAM KODE PROGRAM Khandar William Program Studi Teknik Informatika Sekolah Tinggi Teknik Elektro dan Informatika Institut Teknologi Bandung Alamat: Jalan Ganesha No. 10 Bandung e-mail: if16022@students.if.itb.ac.id ABSTRAK Banyak orang menganggap bahwa permainan Rubik s Cube memerlukan IQ yang tinggi untuk menyelesaikannya, padahal sudah terdapat banyak algoritma yang ditemukan untuk menyelesaikan permainan ini, mulai dari yang paling mudah tetapi memakan banyak langkah, hingga yang paling rumit tetapi memakan langkah yang sedikit. Salah satu algoritma paling mudah untuk digunakan adalah algoritma Layer-by-Layer, algoritma ini merupakan salah satu varian dari algoritma Greedy. Makalah ini membahas salah satu cara mengimplementasikan algoritma layer-by-layer dalam bentuk kode program (source code). Bahasa pemrograman yang digunakan dalam makalah ini adalah bahasa C++. Program jadi dan kode sumbernya (source code) dapat diunduh dari pranala (link) yang terdapat di bagian Referensi makalah ini [7]. Makalah ini mengsumsikan bahwa pembaca sudah tidak asing dengan permainan Rubik s Cube. Kata kunci: Rubik s cube, algoritma, layer-by-layer, source code, greedy, implementasi. 1. PENDAHULUAN 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 algoritma 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. 2. DASAR TEORI 2.1 Terminologi yang Dipakai Terminologi yang biasa dipakai untuk menjelaskan suatu algoritma Rubik s Cube sebagai berikut: - Rubik s Cube terdiri atas enam buah sisi: depan (front), belakang (back), kiri (left), kanan (right), atas (up), dan bawah (down). - Gerakan memutar sisi Rubik s Cube searah jarum jam disimbolkan dengan huruf pertama dari nama sisi tersebut dalam bahasa Inggris. Untuk yang berlawanan arah dengan jarum jam, ditambahkan tanda petik ( ). Contohnya, F berarti memutar sisi depan (front) searah jarum jam, sedangkan L berarti memutar sisi kiri (left) berlawanan arah dengan jarum jam. - Gerakan memutar seluruh kubus tidak memiliki notasi yang tetap, sehingga makalah ini menggunakan RotateRight, RotateLeft, RotateUp, dan RotateDown. Nama gerakan tersebut sudah menjelaskan maknanya.

kode program juga. Makalah ini merepresentasikan Rubik s Cube sebagai sebuah larik (array) berdimensi empat yang berisi warna dari tiap sisi kubus kecil. Potongan source code yang menggambarkan hal ini adalah: typedef enum Color {GREEN='G', RED='R', YELLOW='Y', ORANGE='O', WHITE='W', BLUE='B', HIDDEN='H'; class Rubik {...... Color cubes[3][3][3][3];...... ; Makna dari larik ini adalah keenam sisi yang dimiliki oleh tiap-tiap kubus kecil dikelompokkan menjadi tiga, yaitu sisi pada sumbu X, sumbu Y, dan sumbu Z. Gambar 1. Penamaan sisi-sisi pada Rubik s Cube 2.2 Algoritma Layer-by-Layer Secara garis besar, algoritma Layer-by-Layer dapat ditulis sebagai berikut: a. 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. b. Selesaikan layer kedua/tengah. a. Isi keempat kubus pada layer kedua dengan kubus yang sesuai. c. 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. Untuk penjelasan lengkap dari tiap-tiap langkah algoritma ini, akan dijelaskan pada bab tiga disertai dengan potongan source code yang mengimplementasikannya. 3. IMPLEMENTASI 3.1 Representasi Rubik s Cube Untuk dapat mengimplementasikan algoritma ini, harus dibuat dulu representasi dari Rubik s Cube dalam bentuk Gambar 2. Penamaan sumbu pada Rubik s Cube Meskipun sebuah kubus kecil memiliki enam buah sisi, jumlah sisi maksimum yang dapat terlihat hanya tiga, yaitu pada bagian sudut-sudut Rubik s Cube. Karena itu, digunakan representasi larik empat dimensi yang berisi warna di mana masing-masing dimensi memiliki tiga buah properti. Koordinat dari sebuah warna adalah sebagai berikut: cubes[i][j][k][l] i: 0 untuk depan, 1 untuk antara depan dan belakang, 2 untuk belakang j: 0 untuk kiri, 1 untuk antara kiri dan kanan, 2 untuk kanan k: 0 untuk atas, 1 untuk antara atas dan bawah, 2 untuk bawah l: 0 untuk sumbu X, 1 untuk sumbu Y, 2 untuk sumbu Z

Warna ketujuh, yaitu HIDDEN digunakan untuk menandakan bahwa warna kubus kecil pada sumbu tersebut tidak terlihat. Sebagai contoh, pada gambar Rubik s Cube di atas, cubes[0][1][1] akan memiliki warna BLUE pada sumbu X, tetapi HIDDEN untuk sumbu Y dan sumbu Z. Untuk menampilkan Rubik s Cube, digunakan tampilan dalam bentuk dua dimensi, yaitu: Langkah pertama dalam menyelesaikan layer pertama/atas adalah membentuk sebuah cross di sisi atas, seperti pada gambar ini. Gambar 4. Cross yang sukses dibentuk Langkah ini cukup mudah untuk dilakukan sendiri sehingga tidak perlu dijelaskan secara mendalam. Hanya saja, satu hal yang harus diperhatikan, yaitu warna di samping keempat buah ujung cross tersebut harus serupa dengan warna di bawahnya, berikut adalah contoh cross yang salah. Gambar 3. Tampilan dua dimensi Rubik s Cube 3.2 Implementasi Algoritma Layer-by-Layer Implementasi dari algoritma Layer-by-Layer secara garis besar dapat dilihat pada potongan source code berikut: void Rubik::solveCube() { solvefirst(); solvesecond(); solvethird(); void Rubik::solveFirst() { makecrosstop(); fillcornertop(); Gambar 5. Cross yang gagal dibentuk code disertakan pada lampiran, baris 860-865 dan 596-680. Setelah cross berhasil dibentuk, langkah selanjutnya adalah mengisi sudut-sudut bagian atas dengan kubus yang sesuai tanpa merusak cross tersebut. Untuk bagian ini, pertama-tama tempatkan kubus yang seharusnya menjadi sudut tersebut di bagian bawahnya dan putar Rubik s Cube hingga kubus tersebut berada di bawah kiri depan, contoh: void Rubik::solveSecond() { filledgemiddle(); void Rubik::solveThird() { makecrossbottom(); reordercornerbottom(); makefullbottom(); reorderedgebottom(); 3.2.1 Layer Pertama Gambar 6. Tempatkan sudut di bawah tempat sebenarnya Lalu lakukan algoritma berikut berdasarkan letak sisi yang warnanya sama dengan warna cross: - jika menghadap ke depan, F D F - jika menghadap ke kiri, L D L - jika menghadap ke bawah, F D D F D F D F

Gambar 7. Contoh salah satu kasus Lakukan langkah ini hingga keempat sudut tersebut benar pada tempatnya dan selesaikan layer pertama. code, pada baris 881-886 dan 682-715. 3.2.2 Layer Kedua Tidak banyak yang perlu dilakukan di sini, karena hanya tedapat empat buah kubus yang perlu dibenarkan tempatnya, bahkan hanya terdapat dua algoritma yang perlu dihapal. Untuk setiap kubus yang tidak benar letaknya (pada layer kedua), tempatkan kubus yang seharusnya berada pada tempat tersebut di bawah salah satu sisi Rubik s Cube di mana warna sisi kubus tersebut serupa dengan warna sisi kubus di atasnya. Lalu, putar Rubik s Cube hingga sisi tersebut menjadi sisi depan. Sebagai contoh: Gambar 8. Letakkan di bawah salah satu sisi Lakukan algoritma berikut berdasarkan di mana seharusnya kubus bawah tersebut diletakkan: - jika diletakkan di kiri, F D F D F D F D F - jika diletakkan di kanan, F D F D F D F D F Gambar 9. Contoh salah satu kasus Lakukan langkah ini hingga keempat kubus pada layer kedua berada pada tempat sebenarnya. Seandainya ada kubus yang terbalik atau salah tempat pada layer kedua, tempatkan kubus tersebut pada layer ketiga dengan cara menukarnya dengan salah satu kubus di layer ketiga, setelah itu lakukan algoritma di atas seperti biasa, sebagai contoh: Gambar 10. Ada kubus yang terbalik code, baris 888-893 dan 717-766. 3.2.3 Layer Ketiga Layer ketiga adalah layer yang tersusah karena layer ini harus diselesaikan tanpa merusak kedua layer di atasnya. Untuk itu, cukup banyak algoritma yang harus dihapal untuk menyelesaikan layer terakhir ini. Langkah pertama mirip dengan langkah pertama untuk layer pertama, yaitu membentuk cross pada sisi bawah. Jika pada sisi bawah belum terbentuk sebuah cross, ada tiga kondisi yang mungkin terjadi, yaitu: Tabel 1 Kondisi dari cross pada sisi bawah dan solusi Kondisi dua kubus bersebelahan belum membentuk cross Solusi: putar sisi bawah hingga berbentuk seperti gambar, lalu lakukan F D L D L F dua kubus berseberangan belum membentuk cross Solusi: putar sisi bawah hingga berbentuk seperti gambar, lalu lakukan F L D L D F empat kubus belum membentuk cross Solusi: lakukan salah satu algoritma di atas, setelah itu, salah satu kondisi di atas akan terpenuhi Gambar code, pada baris 867-879. Setelah cross terbentuk, letakkan keempat sudut pada layer bawah di tempat yang seharusnya, tetapi tidak perlu menghadap arah yang sebenarnya. Sebagai contoh, sudut merah-putih-biru harus berada di antara sisi merah, putih, dan biru, tetapi ketiga sisi sudut ini tidak perlu menghadap arah yang benar. Cara untuk membenarkan letak keempat sudut ini adalah dengan menukarkan letak dua buah sudut bawah. Hanya diperlukan satu buah algoritma untuk hal ini, algoritma ini menukar letak sudut depan-kiri-bawah

dengan sudut belakang-kiri-bawah tanpa merusak posisi layer pertama dan kedua. Algoritma tersebut adalah R D L D R D L D D code, pada baris 895-905. Setelah keempat sudut berada pada posisi sebenarnya, langkah selanjutnya adalah membuat sisi bawah berwarna serupa. Untuk mempermudah, putar Rubik s Cube ke atas dua kali sehingga sisi bawah kini menjadi sisi atas. Jika sisi atas (tadinya sisi bawah) Rubik s Cube belum berwarna serupa, ada tujuh kasus yang mungkin terjadi, seperti dapat dilihat pada tabel di bawah ini. Jika tidak ada kondisi yang cocok, putar Rubik s Cube ke kiri atau ke kanan hingga sisi atasnya cocok dengan salah satu kondisi di bawah ini. yang masih tidak berada pada tempatnya. Jika masih ada kubus yang salah tempat, ada dua kondisi yang mungkin, yaitu tiga kubus salah tempat atau empat kubus salah tempat. Jika ada tiga kubus salah tempat, ada dua kondisi yang mungkin terjadi, seperti digambarkan pada tabel di bawah. Jika sisi atas tidak cocok dengan kedua gambar ini, putar Rubik s Cube ke kiri atau kanan hingga ada gambar yang cocok. Tabel 3 Kondisi dari sisi atas dengan tiga kubus salah tempat dan solusi Kondisi Solusi R R U F B R R F B U R R Tabel 2 Kondisi dari sisi atas dan solusi Kondisi Solusi R U R U R U U R U U Ini adalah kondisi 1, setelah algoritma ini dilakukan, sisi atas akan langsung serupa R R U F B R R F B U R R Ini adalah kondisi 2, setelah algoritma ini dilakukan, sisi atas akan langsung serupa Jika ada empat kubus yang salah tempat, lakukan salah satu dari algoritma di atas (untuk tiga kubus) dan setelah itu kubus yang salah tempat akan menjadi tiga sehingga algoritma di atas dapat digunakan. Implementasi dari langkah terakhir ini dapat dilihat pada source code, pada baris 942-962. R U R U R U U R U U code, baris 907-940. Langkah terakhir dalam menyelesaikan layer ketiga (yang kini berada di atas) adalah menukar posisi kubus 4. KESIMPULAN Tidak benar anggapan yang mengatakan bahwa diperlukan IQ tinggi untuk menyelesaikan Rubik s Cube. Dengan ditemukannya algoritma seperti Layer-by-Layer, Fridrich, dan Lars Petrus, siapa pun dapat menyelesaikan Rubik s Cube. Bahkan, program untuk menyelesaikannya pun sudah banyak beredar di internet. Program yang dibuat di dalam makalah ini dapat dikategorikan sebagai program yang sangat sederhana karena menggunakan algoritma yang paling sederhana juga, ditambah lagi antarmukanya yang masih text-based. Untuk pengembangan selanjutnya, program ini dapat diberikan antarmuka yang GUI dan tiga dimensi. Source code yang mengimplementasikan algoritma Layer-by-Layer ini sudah terlampir pada makalah ini, tetapi tanpa program utama yang menjalankan antarmukanya. Source code yang lengkap beserta antarmuka dapat diunduh pada pranala yang terdapat pada bagian Referensi [7].

REFERENSI [1] Munir, Rinaldi, Diktat Kuliah IF2251 Strategi Algoritmik, ITB Press, 2007. [2] Weigang, Jim, Implementing Rubik s Cube: An Exercise in Hybrid Programming, Computer Language, January issue, 1986. [3] http://peter.stillhq.com/jasmine/rubikscubesolution.html (tanggal akses: 16 Mei 2008) [4] http://www.ryanheise.com/cube/beginner.html (tanggal akses: 16 Mei 2008) [5] http://patft.uspto.gov/netacgi/nph- Parser?patentnumber=4378116 (tanggal akses: 19 Mei 2008) [6] http://en.wikipedia.org/wiki/rubik%27s_cube (tanggal akses: 19 Mei 2008) [7] http://students.if.itb.ac.id/~if16022/programrubik.zip (source code lengkap program jadinya)