{"id":19261132,"url":"https://github.com/abhi18av/innovation-competition","last_synced_at":"2026-06-13T02:33:49.507Z","repository":{"id":113603033,"uuid":"203350903","full_name":"abhi18av/innovation-competition","owner":"abhi18av","description":"Submission for a programming challenge","archived":false,"fork":false,"pushed_at":"2019-09-02T10:58:50.000Z","size":2431,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-23T18:33:59.480Z","etag":null,"topics":["clojure","clojurescript","data-analysis"],"latest_commit_sha":null,"homepage":"","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"epl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/abhi18av.png","metadata":{"files":{"readme":"README.html","changelog":"CHANGELOG.md","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":"2019-08-20T10:09:44.000Z","updated_at":"2019-09-02T10:58:52.000Z","dependencies_parsed_at":null,"dependency_job_id":"4cc685fc-7c17-4515-b3a6-af0da3ac78b8","html_url":"https://github.com/abhi18av/innovation-competition","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/abhi18av/innovation-competition","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abhi18av%2Finnovation-competition","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abhi18av%2Finnovation-competition/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abhi18av%2Finnovation-competition/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abhi18av%2Finnovation-competition/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/abhi18av","download_url":"https://codeload.github.com/abhi18av/innovation-competition/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abhi18av%2Finnovation-competition/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34270414,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-13T02:00:06.617Z","response_time":62,"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":["clojure","clojurescript","data-analysis"],"created_at":"2024-11-09T19:24:44.863Z","updated_at":"2026-06-13T02:33:49.487Z","avatar_url":"https://github.com/abhi18av.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!DOCTYPE html\u003e\r\n\u003chtml\u003e\r\n\u003chead\u003e\r\n\u003ctitle\u003eREADME.md\u003c/title\u003e\r\n\u003cmeta http-equiv=\"Content-type\" content=\"text/html;charset=UTF-8\"\u003e\r\n\n\u003cstyle\u003e\n/*---------------------------------------------------------------------------------------------\r\n *  Copyright (c) Microsoft Corporation. All rights reserved.\r\n *  Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nbody {\r\n\tfont-family: \"Segoe WPC\", \"Segoe UI\", \"SFUIText-Light\", \"HelveticaNeue-Light\", sans-serif, \"Droid Sans Fallback\";\r\n\tfont-size: 14px;\r\n\tpadding: 0 12px;\r\n\tline-height: 22px;\r\n\tword-wrap: break-word;\r\n}\r\n\r\n#code-csp-warning {\r\n\tposition: fixed;\r\n\ttop: 0;\r\n\tright: 0;\r\n\tcolor: white;\r\n\tmargin: 16px;\r\n\ttext-align: center;\r\n\tfont-size: 12px;\r\n\tfont-family: sans-serif;\r\n\tbackground-color:#444444;\r\n\tcursor: pointer;\r\n\tpadding: 6px;\r\n\tbox-shadow: 1px 1px 1px rgba(0,0,0,.25);\r\n}\r\n\r\n#code-csp-warning:hover {\r\n\ttext-decoration: none;\r\n\tbackground-color:#007acc;\r\n\tbox-shadow: 2px 2px 2px rgba(0,0,0,.25);\r\n}\r\n\r\n\r\nbody.scrollBeyondLastLine {\r\n\tmargin-bottom: calc(100vh - 22px);\r\n}\r\n\r\nbody.showEditorSelection .code-line {\r\n\tposition: relative;\r\n}\r\n\r\nbody.showEditorSelection .code-active-line:before,\r\nbody.showEditorSelection .code-line:hover:before {\r\n\tcontent: \"\";\r\n\tdisplay: block;\r\n\tposition: absolute;\r\n\ttop: 0;\r\n\tleft: -12px;\r\n\theight: 100%;\r\n}\r\n\r\nbody.showEditorSelection li.code-active-line:before,\r\nbody.showEditorSelection li.code-line:hover:before {\r\n\tleft: -30px;\r\n}\r\n\r\n.vscode-light.showEditorSelection .code-active-line:before {\r\n\tborder-left: 3px solid rgba(0, 0, 0, 0.15);\r\n}\r\n\r\n.vscode-light.showEditorSelection .code-line:hover:before {\r\n\tborder-left: 3px solid rgba(0, 0, 0, 0.40);\r\n}\r\n\r\n.vscode-dark.showEditorSelection .code-active-line:before {\r\n\tborder-left: 3px solid rgba(255, 255, 255, 0.4);\r\n}\r\n\r\n.vscode-dark.showEditorSelection .code-line:hover:before {\r\n\tborder-left: 3px solid rgba(255, 255, 255, 0.60);\r\n}\r\n\r\n.vscode-high-contrast.showEditorSelection .code-active-line:before {\r\n\tborder-left: 3px solid rgba(255, 160, 0, 0.7);\r\n}\r\n\r\n.vscode-high-contrast.showEditorSelection .code-line:hover:before {\r\n\tborder-left: 3px solid rgba(255, 160, 0, 1);\r\n}\r\n\r\nimg {\r\n\tmax-width: 100%;\r\n\tmax-height: 100%;\r\n}\r\n\r\na {\r\n\tcolor: #4080D0;\r\n\ttext-decoration: none;\r\n}\r\n\r\na:focus,\r\ninput:focus,\r\nselect:focus,\r\ntextarea:focus {\r\n\toutline: 1px solid -webkit-focus-ring-color;\r\n\toutline-offset: -1px;\r\n}\r\n\r\nhr {\r\n\tborder: 0;\r\n\theight: 2px;\r\n\tborder-bottom: 2px solid;\r\n}\r\n\r\nh1 {\r\n\tpadding-bottom: 0.3em;\r\n\tline-height: 1.2;\r\n\tborder-bottom-width: 1px;\r\n\tborder-bottom-style: solid;\r\n}\r\n\r\nh1, h2, h3 {\r\n\tfont-weight: normal;\r\n}\r\n\r\nh1 code,\r\nh2 code,\r\nh3 code,\r\nh4 code,\r\nh5 code,\r\nh6 code {\r\n\tfont-size: inherit;\r\n\tline-height: auto;\r\n}\r\n\r\na:hover {\r\n\tcolor: #4080D0;\r\n\ttext-decoration: underline;\r\n}\r\n\r\ntable {\r\n\tborder-collapse: collapse;\r\n}\r\n\r\ntable \u003e thead \u003e tr \u003e th {\r\n\ttext-align: left;\r\n\tborder-bottom: 1px solid;\r\n}\r\n\r\ntable \u003e thead \u003e tr \u003e th,\r\ntable \u003e thead \u003e tr \u003e td,\r\ntable \u003e tbody \u003e tr \u003e th,\r\ntable \u003e tbody \u003e tr \u003e td {\r\n\tpadding: 5px 10px;\r\n}\r\n\r\ntable \u003e tbody \u003e tr + tr \u003e td {\r\n\tborder-top: 1px solid;\r\n}\r\n\r\nblockquote {\r\n\tmargin: 0 7px 0 5px;\r\n\tpadding: 0 16px 0 10px;\r\n\tborder-left: 5px solid;\r\n}\r\n\r\ncode {\r\n\tfont-family: Menlo, Monaco, Consolas, \"Droid Sans Mono\", \"Courier New\", monospace, \"Droid Sans Fallback\";\r\n\tfont-size: 14px;\r\n\tline-height: 19px;\r\n}\r\n\r\nbody.wordWrap pre {\r\n\twhite-space: pre-wrap;\r\n}\r\n\r\n.mac code {\r\n\tfont-size: 12px;\r\n\tline-height: 18px;\r\n}\r\n\r\npre:not(.hljs),\r\npre.hljs code \u003e div {\r\n\tpadding: 16px;\r\n\tborder-radius: 3px;\r\n\toverflow: auto;\r\n}\r\n\r\n/** Theming */\r\n\r\n.vscode-light,\r\n.vscode-light pre code {\r\n\tcolor: rgb(30, 30, 30);\r\n}\r\n\r\n.vscode-dark,\r\n.vscode-dark pre code {\r\n\tcolor: #DDD;\r\n}\r\n\r\n.vscode-high-contrast,\r\n.vscode-high-contrast pre code {\r\n\tcolor: white;\r\n}\r\n\r\n.vscode-light code {\r\n\tcolor: #A31515;\r\n}\r\n\r\n.vscode-dark code {\r\n\tcolor: #D7BA7D;\r\n}\r\n\r\n.vscode-light pre:not(.hljs),\r\n.vscode-light code \u003e div {\r\n\tbackground-color: rgba(220, 220, 220, 0.4);\r\n}\r\n\r\n.vscode-dark pre:not(.hljs),\r\n.vscode-dark code \u003e div {\r\n\tbackground-color: rgba(10, 10, 10, 0.4);\r\n}\r\n\r\n.vscode-high-contrast pre:not(.hljs),\r\n.vscode-high-contrast code \u003e div {\r\n\tbackground-color: rgb(0, 0, 0);\r\n}\r\n\r\n.vscode-high-contrast h1 {\r\n\tborder-color: rgb(0, 0, 0);\r\n}\r\n\r\n.vscode-light table \u003e thead \u003e tr \u003e th {\r\n\tborder-color: rgba(0, 0, 0, 0.69);\r\n}\r\n\r\n.vscode-dark table \u003e thead \u003e tr \u003e th {\r\n\tborder-color: rgba(255, 255, 255, 0.69);\r\n}\r\n\r\n.vscode-light h1,\r\n.vscode-light hr,\r\n.vscode-light table \u003e tbody \u003e tr + tr \u003e td {\r\n\tborder-color: rgba(0, 0, 0, 0.18);\r\n}\r\n\r\n.vscode-dark h1,\r\n.vscode-dark hr,\r\n.vscode-dark table \u003e tbody \u003e tr + tr \u003e td {\r\n\tborder-color: rgba(255, 255, 255, 0.18);\r\n}\r\n\r\n.vscode-light blockquote,\r\n.vscode-dark blockquote {\r\n\tbackground: rgba(127, 127, 127, 0.1);\r\n\tborder-color: rgba(0, 122, 204, 0.5);\r\n}\r\n\r\n.vscode-high-contrast blockquote {\r\n\tbackground: transparent;\r\n\tborder-color: #fff;\r\n}\n\u003c/style\u003e\n\n\u003cstyle\u003e\n/* Tomorrow Theme */\r\n/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */\r\n/* Original theme - https://github.com/chriskempson/tomorrow-theme */\r\n\r\n/* Tomorrow Comment */\r\n.hljs-comment,\r\n.hljs-quote {\r\n\tcolor: #8e908c;\r\n}\r\n\r\n/* Tomorrow Red */\r\n.hljs-variable,\r\n.hljs-template-variable,\r\n.hljs-tag,\r\n.hljs-name,\r\n.hljs-selector-id,\r\n.hljs-selector-class,\r\n.hljs-regexp,\r\n.hljs-deletion {\r\n\tcolor: #c82829;\r\n}\r\n\r\n/* Tomorrow Orange */\r\n.hljs-number,\r\n.hljs-built_in,\r\n.hljs-builtin-name,\r\n.hljs-literal,\r\n.hljs-type,\r\n.hljs-params,\r\n.hljs-meta,\r\n.hljs-link {\r\n\tcolor: #f5871f;\r\n}\r\n\r\n/* Tomorrow Yellow */\r\n.hljs-attribute {\r\n\tcolor: #eab700;\r\n}\r\n\r\n/* Tomorrow Green */\r\n.hljs-string,\r\n.hljs-symbol,\r\n.hljs-bullet,\r\n.hljs-addition {\r\n\tcolor: #718c00;\r\n}\r\n\r\n/* Tomorrow Blue */\r\n.hljs-title,\r\n.hljs-section {\r\n\tcolor: #4271ae;\r\n}\r\n\r\n/* Tomorrow Purple */\r\n.hljs-keyword,\r\n.hljs-selector-tag {\r\n\tcolor: #8959a8;\r\n}\r\n\r\n.hljs {\r\n\tdisplay: block;\r\n\toverflow-x: auto;\r\n\tcolor: #4d4d4c;\r\n\tpadding: 0.5em;\r\n}\r\n\r\n.hljs-emphasis {\r\n\tfont-style: italic;\r\n}\r\n\r\n.hljs-strong {\r\n\tfont-weight: bold;\r\n}\n\u003c/style\u003e\n\n\u003cstyle\u003e\n/*\r\n * Markdown PDF CSS\r\n */\r\n\r\n body {\r\n\tfont-family:  \"Meiryo\", \"Segoe WPC\", \"Segoe UI\", \"SFUIText-Light\", \"HelveticaNeue-Light\", sans-serif, \"Droid Sans Fallback\";\r\n}\r\n\r\npre {\r\n\tbackground-color: #f8f8f8;\r\n\tborder: 1px solid #cccccc;\r\n\tborder-radius: 3px;\r\n\toverflow-x: auto;\r\n\twhite-space: pre-wrap;\r\n\toverflow-wrap: break-word;\r\n}\r\n\r\npre:not(.hljs) {\r\n\tpadding: 23px;\r\n\tline-height: 19px;\r\n}\r\n\r\nblockquote {\r\n\tbackground: rgba(127, 127, 127, 0.1);\r\n\tborder-color: rgba(0, 122, 204, 0.5);\r\n}\r\n\r\n.emoji {\r\n\theight: 1.4em;\r\n}\r\n\r\n/* for inline code */\r\n:not(pre):not(.hljs) \u003e code {\r\n\tcolor: #C9AE75; /* Change the old color so it seems less like an error */\r\n\tfont-size: inherit;\r\n}\r\n\r\n/* Page Break : use \u003cdiv class=\"page\"/\u003e to insert page break\r\n-------------------------------------------------------- */\r\n.page {\r\n\tpage-break-after: always;\r\n}\r\n\n\u003c/style\u003e\n\r\n\u003c/head\u003e\r\n\u003cbody\u003e\r\n\u003ch1 id=\"problem-statement-nosco-hiring-challenge\"\u003eProblem Statement: Nosco Hiring Challenge\u003c/h1\u003e\n\u003cp\u003eThere is an \u003cem\u003einnovation competition\u003c/em\u003e across the land, and the various\nhouses compete. All the ideas have been collected and scored, and now is the time\nto calculate the results to find out the most innovative houses.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eThe \u003ccode\u003einnovation score\u003c/code\u003e of a house is simply the \u003ccode\u003eaverage scores\u003c/code\u003e of all the ideas\nsubmitted by people affiliated with this house.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eHigher is better.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eIdeas with no scores are excluded from consideration.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSome people are affiliated with no house, in which case they should be counted as if in the house 'Free folk'.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSome people are affiliated with more than one house, in which case the idea is credited to each and every one of the affiliated houses. For example, if user A is affiliated with houses X and Y, and they have submitted an idea that has a score of 5.7, both house X and Y will add a score of 5.7 in their tally.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"input-data\"\u003eInput Data\u003c/h2\u003e\n\u003cp\u003eThe input data is two JSON files, and their EDN counterparts (containing the same data).\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eusers.json\u003c/code\u003e contains various users, each having an id first name, last name, email, and potentially a list of their house affiliation(s).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eideas.json\u003c/code\u003e contains various ideas, each one having an id, a title, a body, an author-id (pointing to one entry in the \u003ccode\u003eusers.json\u003c/code\u003e file) and an array of numeric scores. Unfortunately some scores were lost and were replaced by nulls. These scores should be ignored entirely.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"expected-output\"\u003eExpected output\u003c/h2\u003e\n\u003cp\u003eThe results should include:\u003c/p\u003e\n\u003cp\u003e\u003cinput type=\"checkbox\" id=\"checkbox0\" checked=\"true\"\u003e\u003clabel for=\"checkbox0\"\u003ean list of the houses, from most innovative to least innovative\u003c/label\u003e\u003c/p\u003e\n\u003cp\u003e\u003cinput type=\"checkbox\" id=\"checkbox1\" checked=\"true\"\u003e\u003clabel for=\"checkbox1\"\u003ethe innovation score of each house\u003c/label\u003e\u003c/p\u003e\n\u003cp\u003e\u003cinput type=\"checkbox\" id=\"checkbox2\" checked=\"true\"\u003e\u003clabel for=\"checkbox2\"\u003ethe number of ideas submitted by each house\u003c/label\u003e\u003c/p\u003e\n\u003ch2 id=\"other-considerations\"\u003eOther considerations\u003c/h2\u003e\n\u003cp\u003e\u003cinput type=\"checkbox\" id=\"checkbox3\" checked=\"true\"\u003e\u003clabel for=\"checkbox3\"\u003eReasonable performance is expected, but readability of the code is more\u003c/label\u003e\nimportant. Use descriptive names and add docstrings and comments as needed.\u003c/p\u003e\n\u003cp\u003e\u003cinput type=\"checkbox\" id=\"checkbox4\" checked=\"true\"\u003e\u003clabel for=\"checkbox4\"\u003eYou're free to use any 3rd-party library that seems suitable for the\u003c/label\u003e\ntask, keeping in mind how it might affecte the readability of the code for someone\nwho isn't familiar with it.\u003c/p\u003e\n\u003cp\u003e\u003cinput type=\"checkbox\" id=\"checkbox5\" checked=\"true\"\u003e\u003clabel for=\"checkbox5\"\u003eThe code should include instructions on how to run it and get the results.\u003c/label\u003e\u003c/p\u003e\n\u003cp\u003e\u003cinput type=\"checkbox\" id=\"checkbox6\" checked=\"true\"\u003e\u003clabel for=\"checkbox6\"\u003eAny reasonably popular build tool is fine, or a single file with\u003c/label\u003e\nside-effectful statements will also do. Use the tool that will allow\nyou to move to actually solving the problem.\u003c/p\u003e\n\u003cp\u003e\u003cinput type=\"checkbox\" id=\"checkbox7\" checked=\"true\"\u003e\u003clabel for=\"checkbox7\"\u003eThere's no need to write a test suite for this exercise.\u003c/label\u003e\u003c/p\u003e\n\u003chr\u003e\n\u003ch1 id=\"solution-by-abhinav-sharma-abhi18avoutlookcom\"\u003eSolution by Abhinav Sharma (abhi18av@outlook.com)\u003c/h1\u003e\n\u003ch2 id=\"design-considerations\"\u003eDesign Considerations\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eCould have used \u003ccode\u003e:^private\u003c/code\u003e or \u003ccode\u003edefn-\u003c/code\u003e if this was a library oriented solution. However, as mentioned in the challenge description I've optimized for readibility rather than less number variables or more \u003ccode\u003elet\u003c/code\u003e bindings along with other deep clojure constructs. This would be caliberated as per the team standard.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eOpted to deliver the base solution in the a single \u003ccode\u003elumo.cljs\u003c/code\u003e file so as to avoid the hassle of setting up a build configs and slow startups.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eI have only used the \u003ccode\u003eclojure standard library\u003c/code\u003e since, it's already there and I wanted the code to be usable by vanilla installation of \u003ccode\u003elumo\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDidn't use \u003ccode\u003espec\u003c/code\u003e at all.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDepending on the team's comfort level, standard and design choices, I might have opted for \u003ca href=\"https://github.com/nathanmarz/specter\"\u003especter\u003c/a\u003e or \u003ca href=\"https://github.com/weavejester/medley\"\u003emedley\u003c/a\u003e to simplify things\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"thoughts\"\u003eThoughts\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eA shared resource pool would be really helpful like \u003ca href=\"https://www.manning.com/books/clojure-the-essential-reference\"\u003eClojure - The Essential Reference\u003c/a\u003e or \u003ca href=\"https://purelyfunctional.tv/\"\u003ePurelyFunctional\u003c/a\u003e courses. This way, as a team we could be sure of each other's miminal knowledge base.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eIn production for nested queries, I think it might be worth trying out pathom \u003ca href=\"https://github.com/wilkerlucio/pathom\"\u003epathom\u003c/a\u003e for traversing nested queries.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"solution-1-clojurescript-via-lumo-on-terminal\"\u003eSolution-1: ClojureScript (via Lumo on Terminal)\u003c/h2\u003e\n\u003ch4 id=\"instructions-to-download-and-setup-lumo\"\u003eInstructions to download and setup lumo\u003c/h4\u003e\n\u003cp\u003eLumo bundles \u003ccode\u003eClojureScript\u003c/code\u003e and \u003ccode\u003eNodeJS\u003c/code\u003e together as a single binary. More info can be found at https://github.com/anmonteiro/lumo.\u003c/p\u003e\n\u003cp\u003eI've used it in the past to create the classic snake game using the browser's \u003ccode\u003ecanvas\u003c/code\u003e API - \u003ca href=\"https://github.com/abhi18av/luminus-snake/tree/master/v1.0\"\u003eluminus-snake\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThe core solution is based around a single file \u003ccode\u003e./src/innovation_competition/lumo.cljs\u003c/code\u003e which is intended to be used as follows\u003c/p\u003e\n\u003cpre class=\"hljs\"\u003e\u003ccode\u003e\u003cdiv\u003e\u0026gt; cd ./src/innovation_competition/\n\u0026gt; lumo lumo.cljs\n\u003c/div\u003e\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThe solution would be printed out as like so\u003c/p\u003e\n\u003cp\u003e\u003cimg src=\"./res/lumo_solution.png\" alt=\"img\"\u003e\u003c/p\u003e\n\u003cp\u003eYou could also just compile the \u003ccode\u003elumo.cljs\u003c/code\u003e solution to \u003ccode\u003eNodeJS\u003c/code\u003e ready solution by using the bundled clojurescript compiler like done here \u003ca href=\"https://github.com/abhi18av/luminus-snake/blob/master/v1.0/build_snake.cljs\"\u003eluminus-snake/build_snake.cljs\u003c/a\u003e\u003c/p\u003e\n\u003ch2 id=\"solution-2-clojure-via-repls\"\u003eSolution-2: Clojure (via REPLs)\u003c/h2\u003e\n\u003cp\u003eThe \u003ccode\u003e./src/innovation_competition/core.clj\u003c/code\u003e file is the file which is meant to be used with a \u003ccode\u003eREPL\u003c/code\u003e as it contains commented code-snippets which could be used to explore the state of variables and the functionality of functions.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eTerminal REPL\nThe simplest way to start a repl would be to do \u003ccode\u003elein repl\u003c/code\u003e and it'll land you in the \u003ccode\u003einnovation_competition.core\u003c/code\u003e namespace. Feel free to play around \u003cimg class=\"emoji\" alt=\"smiley\" src=\"data:image/png;base64,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\" /\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eCursive via IntelliJ\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eYou'll need  to open the project in the \u003ccode\u003eIntelliJ\u003c/code\u003e iwth \u003ccode\u003eCurisive\u003c/code\u003e plugin installed and the config the \u003cstrong\u003elocal\u003c/strong\u003e nrepl like so\u003c/p\u003e\n\u003cp\u003e\u003cimg src=\"./res/intellij_local_nrepl_config.png\" alt=\"img\"\u003e\u003c/p\u003e\n\u003cp\u003eOnce the \u003ccode\u003eREPL\u003c/code\u003e fires up, you can confirm the namespace you can use \u003ccode\u003e*ns*\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg src=\"./res/intellij_repl.png\" alt=\"img\"\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSpacemacs\n$$ Just open the \u003ccode\u003ecore.clj\u003c/code\u003e and press \u003ccode\u003e,'\u003c/code\u003e and you'd \u003ccode\u003ejack in\u003c/code\u003e right into the \u003ccode\u003einnovation_competition.core\u003c/code\u003e namespace\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cimg src=\"./res/spacemacs_repl.png\" alt=\"img\"\u003e\u003c/p\u003e\n\u003ch2 id=\"solution-3-python-via-jupyter\"\u003eSolution-3: Python (via Jupyter)\u003c/h2\u003e\n\u003cp\u003eThis was a really fun problem to work with and I explored the solution using another tool I have, which is \u003ccode\u003ePython\u003c/code\u003e and so you can find the \u003ccode\u003eHTML\u003c/code\u003e or the \u003ccode\u003eJupyter Notebook\u003c/code\u003e in the \u003ccode\u003e./python\u003c/code\u003e directory.\u003c/p\u003e\n\u003cp\u003e\u003cimg src=\"./res/jupyter_notebook.png\" alt=\"img\"\u003e\u003c/p\u003e\n\u003ch2 id=\"feedback\"\u003eFeedback\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eIt was a wonderfully refreshing test and this ability of clojurians to try new things is the reason why I am so fond of clojure and it's community.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eTo avoid the multiple build tools you might need to install to evaluate various other submissions, you could ask people to use \u003ca href=\"https://nextjournal.com/nextjournal/clojure-environment\"\u003enextjournal\u003c/a\u003e as it comes with an in-built \u003ccode\u003eclojure\u003c/code\u003e and \u003ccode\u003eclojurescript\u003c/code\u003e repl. Think of it as a much better version of \u003ccode\u003ejupyter notebooks\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"things-i-tried\"\u003eThings I tried\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdding \u003ca href=\"https://github.com/bhauman/rebel-readline\"\u003erebel-readline\u003c/a\u003e library to the project to make the \u003ccode\u003elein repl\u003c/code\u003e colorful but decided against adding another dependency.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eExploring the data via \u003ca href=\"https://github.com/cognitect-labs/REBL-distro\"\u003ecognitect's REBL\u003c/a\u003e, couldn't make it work \u003cimg class=\"emoji\" alt=\"frowning\" src=\"data:image/png;base64,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\" /\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\r\n\u003c/body\u003e\r\n\u003c/html\u003e\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabhi18av%2Finnovation-competition","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fabhi18av%2Finnovation-competition","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabhi18av%2Finnovation-competition/lists"}