{"id":18938732,"url":"https://github.com/bilalm04/maze-runner-take-two","last_synced_at":"2026-05-05T02:37:46.617Z","repository":{"id":233423413,"uuid":"787178088","full_name":"BilalM04/maze-runner-take-two","owner":"BilalM04","description":"A Java program to find the path of various textual mazes, as well as verify paths and conduct benchmarking.","archived":false,"fork":false,"pushed_at":"2024-04-16T03:14:27.000Z","size":141,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-12-31T22:10:43.329Z","etag":null,"topics":["gof-patterns","java","junit","maven","oop","uml"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/BilalM04.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2024-04-16T03:13:37.000Z","updated_at":"2024-08-29T02:17:21.000Z","dependencies_parsed_at":"2024-04-16T06:06:45.718Z","dependency_job_id":"be1519ad-1b87-4d40-8d1d-8eef622b283c","html_url":"https://github.com/BilalM04/maze-runner-take-two","commit_stats":null,"previous_names":["bilalm04/maze-runner-take-two"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BilalM04%2Fmaze-runner-take-two","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BilalM04%2Fmaze-runner-take-two/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BilalM04%2Fmaze-runner-take-two/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BilalM04%2Fmaze-runner-take-two/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/BilalM04","download_url":"https://codeload.github.com/BilalM04/maze-runner-take-two/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239937700,"owners_count":19721484,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["gof-patterns","java","junit","maven","oop","uml"],"created_at":"2024-11-08T12:15:18.746Z","updated_at":"2026-03-22T07:30:18.991Z","avatar_url":"https://github.com/BilalM04.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Maze Runner, Take Two\n\n  * **Student**: [Mohammad Bilal](bilalm14@mcmaster.ca)\n  * **Program**: B. Eng. In Software Engineering\n  * **Course code**: SFWRENG 2AA4\n  * **Course Title**: Software Design I - Introduction to Software Development \n  * Term: *Level II - Winter 2024*\n\n## Business Logic Specification\n\nThis program explores a maze, finding a path from an entry point to an exit one.\n\n- The maze is stored in a text file, with `#` representing walls and `␣` (_empty space_) representing passages.\n- You’ll find examples of such mazes in the [`examples`](./examples) directory. \n    - You can also use the [Maze Generator](https://github.com/ace-lectures/maze-gen) to generate others.\n- The Maze is surrounded by walls on its four borders, except for its entry/exit points.\n    - Entry and exit points are always located on the East and West border.\n    - The maze is not directed. As such, exit and entry can be interchanged.\n- At the beginning of the exploration, we're located on the entry tile, facing the opposite side (e.g., if entering by the eastern entry, you're facing West).\n- The program generates a sequence of instructions to reach the opposite exit (i.e., a \"path\"):\n    - `F` means 'move forward' according to your current direction\n    - `R` means 'turn right' (does not move, just change direction), and `L` means ‘turn left’. \n- A canonical path contains only `F`, `R` and `L` symbols\n- A factorized path squashes together similar instructions (i.e., `FFF` = `3F`, `LL` = `2L`).\n- Spaces are ignored in the instruction sequence (only for readability: `FFLFF` = `FF L FF`)\n- The program takes as input a maze and prints the path on the standard output.\n    - There are two maze algorithms available: BFS and Right Hand Rule\n- The program can take a path as input and verify if it's a legit one.\n- The program can benchmark and compare the efficiency of two algorithms.\n\n## How to run this software?\n\nTo build the program, simply package it with Maven:\n\n```\nbilal@mohd % mvn -q clean package \n```\n\n#### Command line arguments\n\n- `-i MAZE_FILE`: specifies the filename to be used;\n- `-p PATH_SEQUENCE`: activates the path verification mode to validate that PATH_SEQUENCE is correct for the maze\n- `-m {righthand, bfs}`: specifies which path computation method to use. (default is right hand)\n- `-b {righthand, bfs}`: activates the benchmark mode and specifies which path computation method to use as the baseline.\n\n#### Examples\n\nWhen no logs are activated, the programs only print the computed path on the standard output.\n\n```\nbilal@mohd % java -jar target/mazerunner.jar -i ./examples/straight.maz.txt -m righthand\n4F\nbilal@mohd %\n```\n\nIf a given path is correct, the program prints the message `correct path` on the standard output.\n\n```\nbilal@mohd % java -jar target/mazerunner.jar -i ./examples/straight.maz.txt -p 4F\ncorrect path\nbilal@mohd %\n```\n\nIf a given path is incorrect, the program prints the message `incorrect path` on the standard output.\n\n```\nbilal@mohd % java -jar target/mazerunner.jar -i ./examples/straight.maz.txt -p 3F\ninccorrect path\nbilal@mohd %\n```\n\nIf a baseline is specified, the program prints the benchmark results on the standard output.\n\n```\nbilal@mohd % java -jar target/mazerunner.jar -i ./examples/huge.maz.txt -m bfs -b righthand\nTime spent loading the maze: 2.86 ms\nMethod Time: 9.80 ms\nBaseline Time: 6.46 ms\nSpeedup: 35.87\nbilal@mohd %\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbilalm04%2Fmaze-runner-take-two","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbilalm04%2Fmaze-runner-take-two","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbilalm04%2Fmaze-runner-take-two/lists"}