{"id":23734083,"url":"https://github.com/woojiahao/life","last_synced_at":"2025-09-04T09:33:27.643Z","repository":{"id":45236671,"uuid":"442070676","full_name":"woojiahao/life","owner":"woojiahao","description":"Conway's Game of Life Visualization built with Elixir and Scenic","archived":false,"fork":false,"pushed_at":"2021-12-29T07:52:56.000Z","size":1222,"stargazers_count":27,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2023-02-28T06:32:27.540Z","etag":null,"topics":["algorithms","conways-game-of-life","elixir","scenic"],"latest_commit_sha":null,"homepage":"","language":"Elixir","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/woojiahao.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-12-27T06:26:01.000Z","updated_at":"2022-12-10T19:23:37.000Z","dependencies_parsed_at":"2022-09-07T01:13:21.832Z","dependency_job_id":null,"html_url":"https://github.com/woojiahao/life","commit_stats":null,"previous_names":[],"tags_count":null,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/woojiahao%2Flife","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/woojiahao%2Flife/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/woojiahao%2Flife/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/woojiahao%2Flife/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/woojiahao","download_url":"https://codeload.github.com/woojiahao/life/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":231949197,"owners_count":18450456,"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":["algorithms","conways-game-of-life","elixir","scenic"],"created_at":"2024-12-31T05:33:51.543Z","updated_at":"2024-12-31T05:33:52.143Z","avatar_url":"https://github.com/woojiahao.png","language":"Elixir","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Life\n\n[Conway's Game of Life](https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life) visualizer tool built with\n[Elixir](https://elixir-lang.org/) and [Scenic.](https://github.com/boydm/scenic)\n\n## Sample\n\nFlyer Generator\n\n![Flyer Generator](static/flyer_generator.gif)\n\nPulsar Oscillator\n\n![Pulsar Oscillator](static/pulsar.gif)\n\n## Explanation\n\nIn the Game of Life, a board has cells that are either alive or dead. Given a set of rules, the board will change. All\nchanges for a given iteration/tick happen simultaneously on the previous board status. This means that any changes to\nthe cells during the current iteration will not influence the other cells.\n\n## Rules\n\nThe rules of Conway's Game of Life are very simple,\n\n1. any live cell with two or three live neighbors remain alive,\n2. any live cell with fewer than two live neighbors dies (simulating underpopulation),\n3. any live cell with greater than three live neighbors dies (simulating overpopulation),\n4. any dead cell with exactly three live neighbors become a live cell (simulating reproduction)\n\n## Using the visulizer\n\n**Important** Unfortunately, due to limitations of Scenic, the visualizer can only run on Mac OS and Linux.\n\nEnsure that Elixir and any [dependency of Scenic](https://hexdocs.pm/scenic/install_dependencies.html) is installed.\n\n```bash\ngit clone https://github.com/woojiahao/life.git\ncd life/\nmix deps.get\nmix scenic.run\n```\n\nSelect the cells to set them as alive/dead before running.\n\n## Configuration\n\nYou can configure the board size and initial pattern by editing the `config/attrs.exs` file, under the `:attrs` config.\n\n```elixir\nimport Config\n\n# Configure here\nconfig :life, :attrs, %{\n  cell_size: 20,\n  evolution_rate: 100,\n  pattern: :empty\n}\n```\n\n1. `cell_size` -- size of each cell displayed\n2. `evolution_rate` -- speed each iteration occurs, measured in milliseconds\n3. `pattern` -- some default oscillating patterns to get started, includes `:blinker`, `:beacon`, `:pulsar`, `:toad`, `:empty`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwoojiahao%2Flife","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwoojiahao%2Flife","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwoojiahao%2Flife/lists"}