{"id":31702074,"url":"https://github.com/instruct-br/teste-estagio-verao-2020","last_synced_at":"2026-02-15T03:33:08.621Z","repository":{"id":122798888,"uuid":"310386308","full_name":"instruct-br/teste-estagio-verao-2020","owner":"instruct-br","description":null,"archived":false,"fork":false,"pushed_at":"2020-11-06T13:35:44.000Z","size":3,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-10-08T21:11:44.873Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"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/instruct-br.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-11-05T18:35:52.000Z","updated_at":"2021-03-22T19:34:12.000Z","dependencies_parsed_at":null,"dependency_job_id":"ce23fc82-31df-4959-9d36-a7ed59f220f6","html_url":"https://github.com/instruct-br/teste-estagio-verao-2020","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/instruct-br/teste-estagio-verao-2020","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/instruct-br%2Fteste-estagio-verao-2020","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/instruct-br%2Fteste-estagio-verao-2020/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/instruct-br%2Fteste-estagio-verao-2020/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/instruct-br%2Fteste-estagio-verao-2020/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/instruct-br","download_url":"https://codeload.github.com/instruct-br/teste-estagio-verao-2020/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/instruct-br%2Fteste-estagio-verao-2020/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29466929,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-15T01:01:38.065Z","status":"online","status_checked_at":"2026-02-15T02:00:07.449Z","response_time":118,"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":"2025-10-08T21:11:23.518Z","updated_at":"2026-02-15T03:33:08.615Z","avatar_url":"https://github.com/instruct-br.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Teste Técnico Estágio\n\nNeste repositório você encontra o enunciado do teste técnico para o estágio\nde verão 2020 da [Instruct](https://instruct.com.br/).\n\n## O Problema\n\nUma empresa começou a desenvolver um novo serviço que tem como objetivo\nmonitorar continuamente a qualidade de servidores de seus clientes.\n\nEste produto vai oferecer 3 planos:\n\n- Ouro\n- Prata\n- Bronze\n\nO plano Bronze é o padrão quando um novo cliente se registra no produto e ainda\nnão paga pelo serviço. É o plano \"freemium\".\n\nNeste sistema um cliente pode pedir a qualquer momento que um de seus\nservidores seja analisado. Para atender essa demanda a empresa tem uma\n_pool_ de servidores que podem atender os pedidos, cada servidor pode atender\numa quantidade limitada de pedidos por vez.\n\nPara aproveitar melhor o uso da infraestrutura e evitar que alguns recursos\ncomputacionais fiquem ociosos existe apenas uma _pool_ de servidores, portanto\nas avaliações feitas em clientes Bronze, Prata ou Ouro partem dos mesmos\nservidores.\n\nNo entanto, os clientes com planos Ouro ou Prata tem prioridade em relação aos\npedidos dos clientes Bronze, e os clientes com plano Ouro são mais prioritários\ndo que os clientes Prata.\n\nNo caso de múltiplos servidores com a mesma prioridade, o critério de\ndesempate deve ser a ordem lexicográfica dos nomes dos servidores.\n\nImagine o exemplo em que chegaram 4 pedidos de análise:\n\n1. servidor Z de um cliente Bronze\n2. servidor Y de um cliente Prata\n3. servidor X de outro cliente Bronze\n4. servidor W de um cliente Ouro\n\nA ordem em que os servidores devem ser analisados é:\n\n`W, Y, X, Z`\n\n## Solução\n\nVocê deve implementar um programa em Javascript (ou Typescript) que recebe uma\nsequência de comandos na entrada padrão, o programa deve interpretar esses\ncomandos e imprimir na saída padrão a ordem em que os servidores devem ser\nanalisados.\n\nNa entrada serão passados dois comandos:\n- check\n- next\n\nUma linha que começa com `check` será seguida de um nome, representando o nome\ndo servidor que será checado e um número para identificar o plano, \nem que 2 = ouro, 1 = prata e 0 = bronze.\n\nExemplo:\n```\ncheck fuzzy-oatmeal-4419 0\n```\n\nUm cliente Bronze pediu para checar seu servidor chamado \"fuzzy-oatmeal-4419\".\n\nUma linha que começa com `next` deve imprimir na saída uma linha com o nome do \npróximo servidor que deve ser analisado, de acordo com os pedidos que chegaram\natravés dos comandos `check`.\n\nExemplo de entrada:\n```\ncheck fuzzy-oatmeal-4419 0\ncheck gnarly-frogs-8488 2\nnext\ncheck high-glove-2433 1\nnext\ncheck impossible-eye-6212 2\ncheck whimsical-interest-5905 1\ncheck chummy-stew-6922 1\nnext\nnext\nnext\nnext\n```\n\nSaída esperada:\n```\ngnarly-frogs-8488\nhigh-glove-2433\nimpossible-eye-6212\nchummy-stew-6922\nwhimsical-interest-5905\nfuzzy-oatmeal-4419\n```\n\nPara testar seu programa você pode chamá-lo com alguma das entradas de teste\ndeste repositório:\n```\nnode main.js \u003c samples/01-input.txt\n```\n\nA saída deve ser igual à saída do arquivo correspondente, nesse caso o\n`samples/01-output.txt`.\n\nDica: se você estiver desenvolvendo em um ambiente Linux, pode usar esse\natalho para checar a diferença entre a saída do seu programa e a saída\nesperada:\n```\nnode main.js \u003c samples/01-input.txt | diff samples/01-output.txt -\n```\n\nA saída ficará vazia se a saída do seu programa e a saída esperada (do arquivo\nxy-output.txt) estiverem iguais.\n\n## Regras\n\nO seu programa pode usar qualquer módulos nativo da API do Node.js, mas não\npode usar pacotes externos ou embutir o código de pacotes externos na solução.\n\nSua solução deve ser executável em Node.js 12, 14 ou 15. Não vamos testar seu \nprograma em outras versões.\n\nEnvie apenas um arquivo .js ou .ts com o código do seu programa anexado numa\nresposta do e-mail que você recebeu com instruções sobre este teste.\n\nSe você optar pelo uso de Typescript (arquivo .ts) informe a versão usada\ndurante o desenvolvimento. Independente de ter usado Javascript ou Typescript\ninforme a versão do Node.js que você usou durante o desenvolvimento.\n\n---\n\nBoa sorte!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finstruct-br%2Fteste-estagio-verao-2020","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Finstruct-br%2Fteste-estagio-verao-2020","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finstruct-br%2Fteste-estagio-verao-2020/lists"}