{"id":17959906,"url":"https://github.com/dargones/reversi","last_synced_at":"2025-04-03T18:21:15.227Z","repository":{"id":104892402,"uuid":"148666087","full_name":"Dargones/reversi","owner":"Dargones","description":"This repository stores code that can be used to solve\\analyze the Reversi board game","archived":false,"fork":false,"pushed_at":"2019-01-31T01:59:56.000Z","size":1449,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-02-09T06:41:26.391Z","etag":null,"topics":["game-analysis","minimax","othello","reversi"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Dargones.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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,"publiccode":null,"codemeta":null}},"created_at":"2018-09-13T16:26:35.000Z","updated_at":"2019-01-31T01:59:57.000Z","dependencies_parsed_at":null,"dependency_job_id":"e5593ef5-c68b-49fa-a0b7-b36fd7fd7d34","html_url":"https://github.com/Dargones/reversi","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dargones%2Freversi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dargones%2Freversi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dargones%2Freversi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dargones%2Freversi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Dargones","download_url":"https://codeload.github.com/Dargones/reversi/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247052618,"owners_count":20875685,"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":["game-analysis","minimax","othello","reversi"],"created_at":"2024-10-29T11:04:43.909Z","updated_at":"2025-04-03T18:21:15.210Z","avatar_url":"https://github.com/Dargones.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Reversi Game Analyzer\nThe code in this repository allows to analyze the [Reversi (aka. Othello)](https://en.wikipedia.org/wiki/Reversi) \nboard game, which is a perfect information, zero-sum, two-player strategy game played on an 8x8 board. \nThe ultimate goal of this project is to find a winner in a perfectly played game (the number of possible positions \nin Reversi is estimated to be close to, though somewhat higher than that in Checkers). \n\nThe current algorithm solves the 6x6 version of Reversi in 6-10 hours depending on the hardware configuration. It took\n[Feinstein](https://www.ics.uci.edu/~eppstein/cgt/othello.html) approximately 1.5 weeks to achieve the same result. \nWhile I do have access to more computational power, my code seems to be more efficient than his (i.e. I had to analyse\nsignificantly fewer moves to achieve the result). \n\n## The algorithm \n\nThe current algorithm takes into account symmetries, employs multithreading, and uses minimax search to train a series\nof models (as described in [Engel, 2015](https://www.cs.umd.edu/sites/default/files/scholarly_papers/Engel.pdf)) to \nevaluate the possible moves and speed up the analysis. A very simple neural-network architecture is currently used to \ntrain the models, but a somewhat more complex CNN architecture would probably be used in the future (as described in \n[Liskowski *et al.*, 2018](https://arxiv.org/pdf/1711.06583.pdf)) with a different machine-learning library.\n\nRun the main in Main.java to launch the program (for 6x6 version of Reversi). The logger will report the number of\nmoves analysed and the branching factors. It will also print every state analysed (up\nuntil a certain depth in a game tree, which is currently set to 13, see TRACE_LEVEL in \nStateAnalyzer.java). After completion, the winner (white) will be reported.\n\n## Dependencies\n\n- log4j\n- weka 3.8.3 - will probably be replaced with deeplearning4j in the future\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdargones%2Freversi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdargones%2Freversi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdargones%2Freversi/lists"}