{"id":25803221,"url":"https://github.com/brenimcode/desafio-brenimcode-2024","last_synced_at":"2025-08-30T09:36:57.619Z","repository":{"id":255928378,"uuid":"853880988","full_name":"brenimcode/desafio-brenimcode-2024","owner":"brenimcode","description":null,"archived":false,"fork":false,"pushed_at":"2024-09-07T21:48:04.000Z","size":40,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-09-07T22:51:32.699Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","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/brenimcode.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-09-07T19:44:29.000Z","updated_at":"2024-09-07T21:48:07.000Z","dependencies_parsed_at":"2024-09-07T22:51:40.584Z","dependency_job_id":"3fccc451-ebb3-478c-b158-0b9c28939031","html_url":"https://github.com/brenimcode/desafio-brenimcode-2024","commit_stats":null,"previous_names":["brenimcode/desafio-brenimcode-2024"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brenimcode%2Fdesafio-brenimcode-2024","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brenimcode%2Fdesafio-brenimcode-2024/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brenimcode%2Fdesafio-brenimcode-2024/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brenimcode%2Fdesafio-brenimcode-2024/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/brenimcode","download_url":"https://codeload.github.com/brenimcode/desafio-brenimcode-2024/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241040430,"owners_count":19898865,"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":[],"created_at":"2025-02-27T17:44:32.434Z","updated_at":"2025-02-27T17:44:33.053Z","avatar_url":"https://github.com/brenimcode.png","language":"JavaScript","readme":"# RECINTOS DO ZOO\n\n## COMO BAIXAR O CÓDIGO E SUBMETER MINHA SOLUÇÃO?\nPara completar a etapa do desafio você terá que baixar a estrutura do código aqui na Azure, resolver o desafio usando Javascript e entregá-lo no repositório no seu github.\n\n### BAIXANDO A ESTRUTURA\nPara baixar a estrutura no formato zip, basta clicar neste [link](https://dev.azure.com/db-tecnologia/99dbf7ce-dadd-40d3-b827-e1648cb6a262/_apis/git/repositories/877e7dfb-78ea-465e-bd88-9dbf83120933/items?path=/\u0026versionDescriptor%5BversionOptions%5D=0\u0026versionDescriptor%5BversionType%5D=0\u0026versionDescriptor%5Bversion%5D=main\u0026resolveLfs=true\u0026%24format=zip\u0026api-version=5.0\u0026download=true).\n\n### ENTREGANDO O DESAFIO\nApós resolver o desafio e validá-lo com os testes (mais detalhes nos tópicos abaixo), você terá que criar um repositório **público** no [Github](https://github.com/) com o **nome** de `desafio-seuUsername-2024` (substitua \"seuUsername\" pelo seu usuário do GitHub) e colocar o código na **branch** `main`.\n\nSe você ainda não teve contato com essa ferramenta, não tem problema. Separamos um material para lhe ajudar nessa etapa: [Como usar Git e Github na prática](https://www.youtube.com/watch?v=UBAX-13g8OM).\n\n## O DESAFIO\nOlá! Você foi contratado para ajudar na organização de um zoológico.\nSua missão será construir a lógica para indicar os recintos onde novos animais se sintam confortáveis.\n\n### RECINTOS EXISTENTES\n\n O zoológico possui os seguintes recintos disponíveis.\n\n  | número    | bioma             | tamanho total |  animais existentes |\n  |-----------|-------------------|---------------|---------------------|\n  | 1         | savana            |   10          |   3 macacos         |\n  | 2         | floresta          |    5          |   vazio             |\n  | 3         | savana e rio      |    7          |  1 gazela           |\n  | 4         | rio               |    8          |   vazio             |\n  | 5         | savana            |    9          |  1 leão             |\n\n### ANIMAIS\n\n O zoológico só está habilitado a tratar dos animais abaixo.\n A tabela mostra o espaço que cada indivíduo ocupa e em quais biomas se adapta.\n\n  | espécie    | tamanho | bioma                |\n  |------------|---------|----------------------|\n  | LEAO       |   3     |  savana              |\n  | LEOPARDO   |   2     |  savana              |\n  | CROCODILO  |   3     |  rio                 |\n  | MACACO     |   1     |  savana ou floresta  |\n  | GAZELA     |   2     |  savana              |\n  | HIPOPOTAMO |   4     |  savana ou rio       |\n\n### REGRAS PARA ENCONTRAR UM RECINTO\n\n1) Um animal se sente confortável se está num bioma adequado e com espaço suficiente para cada indivíduo\n2) Animais carnívoros devem habitar somente com a própria espécie\n3) Animais já presentes no recinto devem continuar confortáveis com a inclusão do(s) novo(s)\n4) Hipopótamo(s) só tolera(m) outras espécies estando num recinto com savana e rio\n5) Um macaco não se sente confortável sem outro animal no recinto, seja da mesma ou outra espécie\n6) Quando há mais de uma espécie no mesmo recinto, é preciso considerar 1 espaço extra ocupado\n7) Não é possível separar os lotes de animais nem trocar os animais que já existem de recinto (eles são muito apegados!).\nPor exemplo, se chegar um lote de 12 macacos, não é possível colocar 6 em 2 recintos.\n\n### ENTRADAS E SAÍDAS\n\n1) O programa deve receber tipo e quantidade de animal (nessa ordem)\n2) O programa deve retornar uma estrutura contendo a lista de todos os recintos viáveis ordenada pelo número do recinto (caso existam) e a mensagem de erro (caso exista)\n3) A lista de recintos viáveis deve indicar o espaço livre que restaria após a inclusão do(s) animal(is) e o espaço total, no formato \"Recinto nro (espaço livre: valorlivre total: valortotal)\"\n4) Caso animal informado seja inválido, apresentar erro \"Animal inválido\"\n5) Caso quantidade informada seja inválida, apresentar erro \"Quantidade inválida\"\n6) Caso não haja recinto possível, apresentar erro \"Não há recinto viável\"\n\n### EXEMPLOS\n\nEntrada para um caso válido\n```js\n\"MACACO\", 2\n```\nSaída\n```js\n{\n  recintosViaveis: [\"Recinto 1 (espaço livre: 5 total: 10)\", \n   \"Recinto 2 (espaço livre: 3 total: 5)\", \n   \"Recinto 3 (espaço livre: 2 total: 7)\"]\n}\n```\n\nEntrada para um caso inválido\n```js\n\"UNICORNIO\", 1\n```\nSaída\n```js\n{\n  erro: \"Animal inválido\"\n}\n```\n\n### O CÓDIGO\nVocê está recebendo uma estrutura básica para desenvolver a lógica do desafio. O arquivo principal está localizado dentro da pasta `src` e se chama `recintos-zoo.js`. Você pode desenvolver a sua lógica criando outros arquivos, métodos e até mesmo outras classes, porém o resultado deve poder ser obtido através do método `analisaRecintos`.\n\n\u003e **ALERTA**:\n\u003e É importante que essa estrutura básica não seja alterada, pois as etapas automáticas da nossa validação dependem disso. Conseguir executar os passos descritos mais adiante na seção `VALIDANDO A SOLUÇÃO` também ajudará você a verificar que seu código segue a estrutura definida.\n\nExemplo de chamada\n```js\n  new RecintosZoo().analisaRecintos('MACACO', 2);\n```\n\n### INSTALANDO E RODANDO NA SUA MÁQUINA\n1. Instalar o [Node](https://nodejs.org/en/)\n2. Instalar dependencias do projeto com o seguinte comando:\n```bash\nnpm install\n```\n\n### VALIDANDO A SOLUÇÃO\nJunto com a estrutura básica você está recebendo alguns cenários de testes no arquivo `recintos-zoo.test.js` para auxiliar na validação da sua solução. Recomendamos que você crie mais casos de teste para aumentar a confiabilidade da sua solução.\nPara testar sua solução com os cenários existentes ou novos, rode o seguinte comando:\n```bash\nnpm test\n```\n\nPara saber mais consulte a [Documentação do Jest](https://jestjs.io/pt-BR/docs/getting-started).\n\n### VALIDANDO A ENTREGA\nPara garantir que seu desafio vai ser considerado entregue, revise os seguintes pontos:\n\n#### GIT\nO repositório deve ser **público** e ter o **nome** e **branch** indicados na seção `ENTREGANDO O DESAFIO`.\n\nPara verificar que o repositório é público, deslogue-se do github e tente ver o código. Se conseguir, nós também conseguimos! Lembrando que vamos usar o link para o usuário informado durante o cadastro na Gupy. Veja [como alterar a visibilidade](https://docs.github.com/pt/repositories/managing-your-repositorys-settings-and-features/managing-repository-settings/setting-repository-visibility#changing-a-repositorys-visibility).\n\n#### CÓDIGO\nA solução deve ser entregue em **javascript** e a **estrutura de pastas e arquivos** deve seguir o indicado na seção `O CÓDIGO`.\n\nO **export** da classe deve ser mantido da seguinte maneira para compatibilidade com o arquivo de testes:\n```js\nexport { RecintosZoo as RecintosZoo };\n```\n\nSe todos os passos forem seguidos corretamente, você terá um repositório como o da figura abaixo (lembrando que é permitido criar mais arquivos), onde `seuUsername` é o seu usuário do GitHub, que você informou no questionário da Gupy.\n\n![Exemplo de repositório](https://startdbstorage.blob.core.windows.net/filecontainer/imagem-estrutura.png)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrenimcode%2Fdesafio-brenimcode-2024","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbrenimcode%2Fdesafio-brenimcode-2024","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrenimcode%2Fdesafio-brenimcode-2024/lists"}