Merupakan project menggunakan bahasa pemrograman Python untuk membuat algoritma 15-Puzzle solver menggunakan strategi branch and bound. Proyek ini dibuat untuk pemenuhan tugas kecil 3 IF2211 Strategi Algoritma.
Fifteen Puzzle merupakan permainan menyusun puzzle 15 block dalam 16 buah tile, dimana pemain hanya boleh untuk menggeser block yang tersedia melalui tile kosong. Pustaka ini merupakan program implementasi penyelesaian puzzle tersebut menggunakan strategi branch and bound. Pustaka ini juga dilengkapi visualisasi yang dapat digunakan dalam menampilkan pergeseran secara interaktif.
- Python >= 3.7 + tkinter (optional, untuk GUI)
Program ini memerlukan tkinter untuk menjalankan GUI. Install tkinter disini.
-
[RECOMMENDED] Gunakan virtual environment Python baru.
-
Change directory ke folder project ini.
-
Install package dengan command berikut:
pip install .
Untuk pengembangan, jalankan
pip install -e .
sehingga package terinstall dalam edit mode.
Package dapat digunakan sebagai module python yang bisa diimport oleh program lain.
Terdapat tiga kelas utama, yakni Visualizer
, Solver
, dan Puzzle
.
-
Visualizer
dapat digunakan untuk menampilkan UI interaktif menggunakan implementasi dari solver. -
Solver
dapat digunakan untuk menyelesaikan persoalan 15-puzzle. -
Puzzle
digunakan untuk internal solver dalam menampung data/node yang perlu untuk solver.
Untuk dokumentasi lebih lanjut, lihat docstring dari masing-masing kelas/fungsi yang akan digunakan.
Beberapa sample program yang dapat digunakan sebagai referensi:
- Menyelesaikan instansi persoalan fifteen puzzle dari string.
from FifteenPuzzleSolver.solver import Solver print(Solver("3 1 2 4\n- 5 7 8\n10 6 11 12\n9 13 14 15"))
- Menyelesaikan instansi persoalan fifteen puzzle dari file.
from FifteenPuzzleSolver.solver import Solver with open("test/berhasil1.txt", "r") as f: print(Solver(f.read()))
- Menampilkan GUI dari solver.
from FifteenPuzzleSolver.Visualizer import Visualizer Visualizer()
Package ini juga dilengkapi dengan driver program utama yang dapat dijalankan pada command line. Untuk melihat argumen lebih lengkap, jalankan command berikut:
python -m FifteenPuzzleSolver -h
Berikut argumen lengkap untuk menjalankan python -m FifteenPuzzleSolver
:
usage: __main__.py [-h] [-f FILE] [-g] [-i]
Main driver of Fifteen Puzzle Solver. It will generate a solution path for the problem instantiation. You can supply manually the initial state of the puzzle to show in GUI by specify -i/--input and -g/--gui.
options:
-h, --help show this help message and exit
-f FILE, --file FILE input file path.
-g, --gui show GUI visualizer.
-i, --input get puzzle from input.
Beberapa contoh command yang dapat dieksekusi:
- Menjalankan solver untuk input berupa file di CLI.
python -m FifteenPuzzleSolver -f test/berhasil1.txt
- Menjalankan solver untuk input berupa keyboard di CLI.
python -m FifteenPuzzleSolver
- Menjalankan solver untuk input berupa file di GUI.
python -m FifteenPuzzleSolver -f test/berhasil1.txt -g
- Menjalankan solver untuk input berupa keyboard di GUI.
python -m FifteenPuzzleSolver -i -g
- Tampilkan GUI solver saja.
python -m FifteenPuzzleSolver -g
Amar Fadil [13520103]
Halo, saya Amar Fadil, mahasiswa IF dengan NIM 13520103, adalah seorang software engineer yang suka ngoprek grafika komputer, computer security, dan competitive programming (maybe). Berkuliah dalam program studi/jurusan Teknik Informatika (IF) pada fakultas Sekolah Teknik Elektro dan Informatika (STEI) di Institut Teknologi Bandung (ITB), saya bercita-cita untuk mengembangkan industri digital kreatif di Indonesia :D