{"id":20425406,"url":"https://github.com/catseye/hunter","last_synced_at":"2026-04-22T05:34:23.913Z","repository":{"id":142239923,"uuid":"4757684","full_name":"catseye/HUNTER","owner":"catseye","description":"MIRROR of https://codeberg.org/catseye/HUNTER : An Essies entry based on mazespace-rewriting and critter-style message passing [BSD license]","archived":false,"fork":false,"pushed_at":"2014-08-19T11:09:31.000Z","size":168,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-05T04:45:11.975Z","etag":null,"topics":["esolang","esoteric-language","esoteric-programming-language","interrodent-communication","maze-solver","mazespace-rewriting"],"latest_commit_sha":null,"homepage":"https://catseye.tc/node/HUNTER","language":"Perl","has_issues":false,"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/catseye.png","metadata":{"files":{"readme":"README.markdown","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}},"created_at":"2012-06-23T01:27:11.000Z","updated_at":"2023-11-03T11:00:23.000Z","dependencies_parsed_at":"2023-03-12T22:26:03.210Z","dependency_job_id":null,"html_url":"https://github.com/catseye/HUNTER","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/catseye/HUNTER","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/catseye%2FHUNTER","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/catseye%2FHUNTER/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/catseye%2FHUNTER/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/catseye%2FHUNTER/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/catseye","download_url":"https://codeload.github.com/catseye/HUNTER/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/catseye%2FHUNTER/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32122767,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-22T00:31:26.853Z","status":"online","status_checked_at":"2026-04-22T02:00:05.693Z","response_time":58,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["esolang","esoteric-language","esoteric-programming-language","interrodent-communication","maze-solver","mazespace-rewriting"],"created_at":"2024-11-15T07:13:11.744Z","updated_at":"2026-04-22T05:34:23.891Z","avatar_url":"https://github.com/catseye.png","language":"Perl","funding_links":[],"categories":[],"sub_categories":[],"readme":"Concurrent Maze Space Transformation (with Authentic Interrodent Communication) in the HUNTER Programming Language\r\n------------------------------------------------------------------------------------------------------------------\r\n\r\nIt is perceived that one of the biggest problems in maintaining interest\r\nin programming is the above linear growth of boredom compared to the\r\nusefulness of the program, resulting in an acute loss of enthusiasm on\r\nthe part of the programmers and ultimately the abandonment of the\r\nsoftware.\r\n\r\nThis document intends to address that by introducing a language with new\r\nmodels for sharing, flow control, and data manipulation, which make all\r\ndependencies in a program globally accessible and radically oblique at\r\nthe language level.\r\n\r\nWe introduce the language, which is a deterministic particle automaton\r\nbased on mazespace-rewriting and critter-style message passing and,\r\nbeing ASCII art, is inherently graphical in notation...\r\n\r\nThe HUNTER Programming Language\r\n===============================\r\n\r\n©2000-2007 Cat's Eye Technologies. All rights reserved.\r\n\r\nEach HUNTER program consists of a two-dimensional Cartesian-grid\r\nplayfield of any reasonable arbitrary size. Each square in this grid is\r\ncalled a cell. Each cell may contain one of several things, or be\r\nconsidered 'empty'. It may also contain a mouse, which is a particularly\r\nspecial kind of thing. However, a mouse must start in an otherwise empty\r\nsquare.\r\n\r\nMice are particularly special because they have agency. Unlike walls and\r\npieces of cheese, they do things. Primarily, they move around. They do\r\nso at runtime.\r\n\r\nThe deterministic fashion a mouse moves around — always checking east,\r\nthen north, then west, then south, in each cell — and its memory (each\r\nmouse keeps a 'map' of where it's been in it's head and tries not to\r\nbacktrack unless there is nowhere else new to go) ensures that, given\r\nsome time, and all other things being equal, a mouse will traverse it's\r\nentire environment and will return to where it started. The process then\r\nrepeats, holding the mouse in a state of perpetual live lock.\r\n\r\nHowever, not all other things may be equal. Indeed, the mouse may nibble\r\non a bit of strychnine and die. Or, other mice may be concurrently\r\ntraversing the same maze, and two mice may not share the same space, so\r\nthey may block each other's progress.\r\n\r\nMice may not move through walls but they may move through empty space\r\nand on top of items found in the playfield, possibly altering them (see\r\nbelow.)\r\n\r\nExecution ends when all mice are dead.\r\n\r\nAn example HUNTER program might be:\r\n\r\n    ########\r\n    #   1#2#\r\n    # #### #\r\n    #      #\r\n    # ######\r\n    #     m#\r\n    #+######\r\n    #     !#\r\n    ########\r\n\r\nwhere\r\n\r\n-   `#` indicates a wall\r\n-   `m` indicates a mouse\r\n-   the digits `0` to `9` represent types of cheese:\r\n    -   `0` = cheddar\r\n    -   `1` = american\r\n    -   `2` = swiss\r\n    -   `3` = gouda\r\n    -   `4` = mozzarella\r\n    -   `5` = farmer\r\n    -   `6` = blue\r\n    -   `7` = gorgonzola\r\n    -   `8` = feta\r\n    -   `9` = bat's-milk\r\n\r\n-   `!` indicates a bit of strychnine\r\n-   `+` indicates a pinwheel\r\n-   `.` indicates a mouse turd\r\n-   `w` indicates a dead mouse carcass\r\n\r\nAll other characters indicate other miscellaneous objects apropos to\r\nbeing in a maze, with undefined semantics, so they should be considered\r\nreserved.\r\n\r\nIntermouse communication is done by mouse droppings. A mouse can leave a\r\nmessage to some other mouse by creating a mouse dropping where it\r\ncurrently is (assuming it has previously eaten a piece of cheese.) Other\r\nmice can detect mouse droppings and change their behaviour based on\r\nthem.\r\n\r\nHow mice create droppings is defined by how each mouse is trained. These\r\nmice are somewhat magical in that they can be trained to perform\r\nphysically improbable tasks, such as turning one kind of cheese into\r\nanother.\r\n\r\nMice are trained globally by the mazespace-rewriting rules. These are\r\nthe guidelines by which rodents live their lives. Each rule must be on a\r\nline by itself and has the following form:\r\n\r\n    *things\u003edroppings\r\n\r\nFor example,\r\n\r\n    *12\u003e21\r\n\r\nThen, when a mouse encounters a piece of American cheese, followed by a\r\npiece of Swiss cheese, it will eat them and excrete a bit of Swiss\r\ncheese followed by a bit of American cheese. This is just an example.\r\n\r\nMice will eat cheese but will not eat mouse droppings, pinwheels, or\r\nother inedible items.\r\n\r\nSpecifying strychnine, walls, or mice on the left-hand side of a\r\nrewriting rule is not guaranteed to be able to produce a match. The\r\nbehaviour of specifing mice on the right-hand side of a rewriting rule\r\nis undefined.\r\n\r\nImplementation\r\n--------------\r\n\r\nThere is an implementation of HUNTER in Perl 5. It requires the\r\n[Console::Virtual](http://catseye.tc/projects/console-virtual/) module\r\nto run; however, this module is included in the HUNTER distribution, so\r\nyou shouldn't have to worry about that.\r\n\r\nChris Pressey  \r\nWinnipeg, Manitoba, Canada  \r\nOriginal Oct 24 2000  \r\nRevised for clarity Jan 26 2002  \r\nHTML'ized Nov 23 2007  \r\nMarkdownified Jun 22 2012\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcatseye%2Fhunter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcatseye%2Fhunter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcatseye%2Fhunter/lists"}