{"id":19782676,"url":"https://github.com/freddiehaddad/rnti","last_synced_at":"2025-02-28T06:48:36.656Z","repository":{"id":221837896,"uuid":"755422412","full_name":"freddiehaddad/rnti","owner":"freddiehaddad","description":"Multithreaded Roman Numeral to Integer converter written in Go.","archived":false,"fork":false,"pushed_at":"2024-02-12T15:24:45.000Z","size":3,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-02-24T05:38:32.742Z","etag":null,"topics":["concurrency","concurrent-programming","go","golang","leetcode","leetcode-go","leetcode-golang","leetcode-solution","multithreading"],"latest_commit_sha":null,"homepage":"https://leetcode.com/problems/roman-to-integer/description/?envType=study-plan-v2\u0026envId=top-interview-150","language":"Go","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/freddiehaddad.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":"2024-02-10T06:32:08.000Z","updated_at":"2024-02-13T04:32:55.000Z","dependencies_parsed_at":"2024-02-10T14:24:00.389Z","dependency_job_id":"5de2f142-cd36-4b0d-9e17-9a71ecc09097","html_url":"https://github.com/freddiehaddad/rnti","commit_stats":null,"previous_names":["freddiehaddad/rnti"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/freddiehaddad%2Frnti","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/freddiehaddad%2Frnti/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/freddiehaddad%2Frnti/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/freddiehaddad%2Frnti/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/freddiehaddad","download_url":"https://codeload.github.com/freddiehaddad/rnti/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241113912,"owners_count":19911987,"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":["concurrency","concurrent-programming","go","golang","leetcode","leetcode-go","leetcode-golang","leetcode-solution","multithreading"],"created_at":"2024-11-12T06:05:49.761Z","updated_at":"2025-02-28T06:48:36.620Z","avatar_url":"https://github.com/freddiehaddad.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Multithreaded Roman Numeral to Integer Converter\n\nProgram to convert a Roman Numeral string to an integer using using channels and\nconcurrency.\n\nThe program works by spawning three threads with specific responsibilities:\n\n- Read lexical values from a Roman Numeral string\n- Look up numeric value for each lexeme\n- Sum the numeric values\n\nData is fed from one Go routine to the next using independent channels.\n\n`readSymbols` parses the input string creating tokens and sending them to\n`readValues` over a channel. Within `readValues` each token is converted to a\nnumeric value using an internal map and sent to `addValues` using a channel.\n`addValues` sums the values and sends the result to another channel. Convert\nblocks until a value is received and returns that value.\n\nNote: `readValues` creates a Go routine for each roman numeral that handles the\nconversion to an integer. Thus the order in which values are summed in\n`addValues` is asynchronous. Refer to the function itself or `TestReadSymbols`\nfor more details.\n\n```text\n+-------------------------+\n| \"MCMXCIV\"             G |\n|                         |\n|                         |\n| Convert()               |\n+--+----------------------+\n   |\n   |        +--------------------------+        +--------------------------+\n   |        | \"MCMXCIV\"              G |        | [M, CM, XC, ...]       G |\n   |        |                          |        |                          |\n   +-------\u003e|                          +-------\u003e|                          |\n            | readSymbols()            |        | readValues()             |\n            +--------------------------+        +-------------+------------+\n                                                              |\n                                                              v\n      +-------------+------------+              +--------------------------+\n      | [1000 + 900 + ...]     G |              | \"CM\"                   G |-+\n      |                          |              |                          | |-+\n      |                          |\u003c-------------+                          | | |\n      | addValues()              |              | anonymous()              | | |\n      +--------------------------+              +--------------------------+ | |\n                                                  +--------------------------+ |\n                                                    +--------------------------+\n\nG: Go Routine\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffreddiehaddad%2Frnti","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffreddiehaddad%2Frnti","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffreddiehaddad%2Frnti/lists"}