{"id":22104178,"url":"https://github.com/brianpursley/sorting-network-go","last_synced_at":"2025-03-24T02:34:38.774Z","repository":{"id":144192703,"uuid":"236784072","full_name":"brianpursley/sorting-network-go","owner":"brianpursley","description":"A Go utility for checking and rendering sorting networks","archived":false,"fork":false,"pushed_at":"2022-12-31T15:50:03.000Z","size":36,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-29T08:42:57.295Z","etag":null,"topics":["comparison-network","golang","sorting-algorithms","sorting-network","sorting-network-diagrams"],"latest_commit_sha":null,"homepage":null,"language":"Go","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/brianpursley.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-01-28T16:40:31.000Z","updated_at":"2022-12-30T14:52:47.000Z","dependencies_parsed_at":null,"dependency_job_id":"757c7c9e-d595-44e1-9d1e-a78ea122e306","html_url":"https://github.com/brianpursley/sorting-network-go","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/brianpursley%2Fsorting-network-go","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brianpursley%2Fsorting-network-go/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brianpursley%2Fsorting-network-go/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brianpursley%2Fsorting-network-go/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/brianpursley","download_url":"https://codeload.github.com/brianpursley/sorting-network-go/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245199472,"owners_count":20576550,"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":["comparison-network","golang","sorting-algorithms","sorting-network","sorting-network-diagrams"],"created_at":"2024-12-01T06:29:20.831Z","updated_at":"2025-03-24T02:34:38.752Z","avatar_url":"https://github.com/brianpursley.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# sorting-network-go\nA Go utility for checking and rendering sorting networks\n\nAdapted from [this Python version](https://github.com/brianpursley/sorting-network)\n\n## Usage\n\nYou specify a comparison network as a comma-separated list of comparators, where each comparator is formated like `X:Y` where `X` and `Y` are zero-based input indices. For example: `0:1,2:3,0:2,1:3,1:2`\n\n### Load a 16-input comparison network from a file and check if it is a sorting network \n```bash\n$ go run cmd/sortingnetwork/sortingnetwork.go -input examples/16-input.cn -check\n```\nOutput:\n```\nIt is a sorting network!  \n```\n\n### Check a 4-input comparison network from stdin\n```bash\n$ echo 0:1,2:3,0:2,1:3,1:2 | go run cmd/sortingnetwork/sortingnetwork.go -check\n```\nOutput:\n```\nIt is a sorting network!  \n```\n\n### Check a 4-input comparison network from stdin (Not a sorting network)\n```bash\n$ echo 0:1,2:3,0:2,1:3 | go run cmd/sortingnetwork/sortingnetwork.go -check\n```\nOutput:\n```\nIt is not a sorting network.\n```\n\n### Load a 4-input comparison network from a file and render it as an SVG\n```bash\n$ go run cmd/sortingnetwork/sortingnetwork.go -input examples/4-input.cn -svg \u003e examples/4-input.svg\n```\n\n### Load a 4-input comparison network from a file and render it as a PNG\n\nYou can use rsvg-convert to convert the output from SVG to some other format, like PNG.  rsvg-convert can be installed by using `sudo apt-get install librsvg2-bin` on Ubuntu.\n\n```bash\n$ go run cmd/sortingnetwork/sortingnetwork.go -input examples/4-input.cn -svg | rsvg-convert \u003e examples/4-input.png\n```\n\n## Example sorting networks\n\n### 4-Input\n\n```text\n0:1,2:3\n0:2,1:3\n1:2\n```\n\n![4-Input Sorting Network](https://github.com/brianpursley/sorting-network-go/blob/master/examples/4-input.png)\n\n### 5-Input\n\n```text\n0:1,3:4\n2:4\n2:3,1:4\n0:3\n0:2,1:3\n1:2\n```\n\n![5-Input Sorting Network](https://github.com/brianpursley/sorting-network-go/blob/master/examples/5-input.png)\n\n### 16-Input\n\n```text\n0:1,2:3,4:5,6:7,8:9,10:11,12:13,14:15\n0:2,1:3,4:6,5:7,8:10,9:11,12:14,13:15\n0:4,1:5,2:6,3:7,8:12,9:13,10:14,11:15\n0:8,1:9,2:10,3:11,4:12,5:13,6:14,7:15\n5:10,6:9,3:12,13:14,7:11,1:2,4:8\n1:4,7:13,2:8,11:14\n2:4,5:6,9:10,11:13,3:8,7:12\n6:8,10:12,3:5,7:9\n3:4,5:6,7:8,9:10,11:12\n6:7,8:9\n```\n\n![16-Input Sorting Network](https://github.com/brianpursley/sorting-network-go/blob/master/examples/16-input.png)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrianpursley%2Fsorting-network-go","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbrianpursley%2Fsorting-network-go","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrianpursley%2Fsorting-network-go/lists"}