{"id":16589923,"url":"https://github.com/rlch/tutero-dag-assignment","last_synced_at":"2026-07-18T00:39:42.775Z","repository":{"id":131913738,"uuid":"507775436","full_name":"rlch/tutero-dag-assignment","owner":"rlch","description":null,"archived":false,"fork":false,"pushed_at":"2022-09-08T10:04:20.000Z","size":18,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-20T03:59:18.959Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rlch.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":"2022-06-27T05:33:16.000Z","updated_at":"2024-07-18T19:08:26.000Z","dependencies_parsed_at":null,"dependency_job_id":"17ecbd25-5601-47e6-93c2-d17eafcdd189","html_url":"https://github.com/rlch/tutero-dag-assignment","commit_stats":null,"previous_names":[],"tags_count":0,"template":true,"template_full_name":null,"purl":"pkg:github/rlch/tutero-dag-assignment","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rlch%2Ftutero-dag-assignment","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rlch%2Ftutero-dag-assignment/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rlch%2Ftutero-dag-assignment/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rlch%2Ftutero-dag-assignment/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rlch","download_url":"https://codeload.github.com/rlch/tutero-dag-assignment/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rlch%2Ftutero-dag-assignment/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35600607,"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-07-17T02:00:06.162Z","response_time":116,"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":[],"created_at":"2024-10-11T23:10:27.262Z","updated_at":"2026-07-18T00:39:42.754Z","avatar_url":"https://github.com/rlch.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Tutero Assignment\n\n**Please create a template from this repository!**\n\n## Context\n\nIn this assignment, you will be responsible for guessing Randy’s favourite Mathematics skill. You are given a knowledge graph (directed acyclic graph), representing all the skills that Randy knows; where the parents of a given skill `s` are pre-requisites to knowing `s`, and the children of `s` require the knowledge of `s` to be learnt.\n\nWith each guess `g` that you submit, Randy will only tell you whether `g` is his favourite skill, whether he learnt `g` before his favourite skill, or whether he learnt `g` after his favourite skill. (Randy is annoying) Note that a skill cannot be learnt before all of its prerequisites are learnt. Learning a skill `x` before another skill `y`  doesn’t imply that `x` **is** a prerequisite of `y`, only that `x` **can be** a prerequisite of `y`.\n\n---\n\nThe code-base you will be working on consists of the following packages:\n\n- `pkg/step`\n  - This is where the bulk of your work will be.\n  - At a bare minimum, you should implement and test the `Step` function, which is the algorithm for computing your guess for Randy’s favourite skill.\n- `pkg/src/graph`\n  - Contains a `Graph` struct representing a directed acyclic graph, as well as useful methods for interacting with DAG’s\n    - You may choose to iterate on these methods\n- `cmd`\n  - This command will use your `Step` until it returns the correct guess; printing the number of steps taken.\n  - You may run this with `go run ./cmd`\n  - You may benchmark your implementation with `go test -bench=. ./cmd -benchtime=5s` — try to get your `ns/op` and `steps/op` as low as possible!\n\nActionable blocks of code are denoted with `//*`\n\n---\n\n## Technical Expectations\n\n- Usage of dependencies other than those included is **not allowed.**\n  - This allows you to demonstrate your understanding of core `Go`.\n- Clean, idiomatic code.\n  - [https://go.dev/doc/effective_go](https://go.dev/doc/effective_go)\n- Your code should be well-tested.\n- Your code will be benchmarked for performance. You should try to minimise the steps taken to achieve the target, as well as the unit-performance of your `Step` function.\n\n---\n\n## Submission\n\n- Version control your assignment on **GitHub**\n- Give access to [@rlch](https://github.com/rlch)\n- You should send the link to your repository and how much time you took to complete the assignment: sonny@tutero.com.au, richard@tutero.com.au\n\n---\n\n## Tips + Notes\n\n- Try your best to use your initiative, but if you have any issues please contact [richard@tutero.com.au](mailto:richard@tutero.com.au)\n- We will set up a final interview with you after your assignment is complete to go over your code and ask you various questions about your assignment.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frlch%2Ftutero-dag-assignment","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frlch%2Ftutero-dag-assignment","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frlch%2Ftutero-dag-assignment/lists"}