base on Repo oficial do He4rtoberfest da He4rt Developers 2023 <!-- Title -->
<p align="center">
<img src=".github/finished.png" alt="Finished" />
<h2 align="center">He4rtoberfest 2023 (FINALIZADO)</h2>
</p>
<!-- ABOUT THE PROJECT -->
## Sobre o Projeto
Sejam todos bem-vindos a terceira edição do He4rtoberfest, evento da He4rt Developers para incentivar novos desenvolvedores a participar do [Hacktoberfest](https://hacktoberfest.com/) pela DigitalOcean, ILLA Cloud e Appwrite, aprendendo um pouco mais sobre a ideia e filosofia do open-source.
A ideia da He4rt Developers sempre foi a inclusão de iniciantes na área, por isso, vamos focar em trazer essa inclusão para o Hacktoberfest! Se liga:
O objetivo é trazer exercícios (para entrega de resoluções em formatos de algoritmos), desde o mais simples até o mais completo, demonstrando as possibilidades de resolução das mais variadas formas em diversas linguagens de programação, assim, disponibilizando uma biblioteca gigantesca de conteúdo para novos desenvolvedores, universitários e estudantes do geral. Para se inscrever e começar a contribuir não se esqueça de acessar o [portal oficial da MLH (Major League Hacking)](https://events.mlh.io/events/10423-he4rtoberfest-2023).
<!-- ROADMAP OF PROJECT -->
## Exercicios disponíveis
Na lista abaixo estarão todos os exercicios que iremos aceitar nas pull requests.
- [0 - Hello World (não irá contar)](./challenges/0-hello-world)
- [1 - Cubo Simples](./challenges/1-cubo-simples)
- [2 - Palíndromos](./challenges/2-palindromos)
- [3 - Conversão de Base](./challenges/3-conversao-de-base)
- [4 - Empréstimo](./challenges/4-emprestimo)
- [5 - Ordenar Letras](./challenges/5-ordenar-letras)
- [6 - Números Primos](./challenges/6-numeros-primos)
- [7 - Graus em Horas](./challenges/7-graus-em-horas)
- [8 - Pares de Letras](./challenges/8-pares-de-letras)
- [9 - Likes](./challenges/9-likes)
- [10 - Número Menor](./challenges/10-numero-menor)
Caso você queira dar sugestões de desafios ou tirar suas dúvidas, por favor, utilize a área de [discussões do repositório](https://github.com/he4rt/he4rtoberfest-2023/discussions) ou contate algum moderador no [Discord da He4rt](https://discord.gg/he4rt).
<!-- CONTRIBUTING -->
## Como participar
Contribuições fazem com que a comunidade open-source seja um lugar incrível para aprender, inspirar e criar, por isso, todas as contribuições são **extremamente apreciadas**!
Porém, como neste caso estamos falando de um evento, haverão algumas regras para serem seguidas permitindo que sua resolução seja aprovada, mas, não é nada complexo! Entenda:
- Para que você tenha um [pull request (PR)](https://docs.github.com/pt/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests) aprovado vinculado ao Hacktoberfest, você terá que fazer um PR do [**desafio 0** (Hello World)](./challenges/0-hello-world);
- Caso você faça os outros desafios e não faça o Hello World, seu PR não será aprovado enquanto não fizer o desafio inicial.
A ideia do desafio 0 é deixar registrado todos os participantes do He4rtoberfest, por isso será obrigatório.
Para criar realizar sua contribução abrindo uma pull request da sua branch, você deverá seguir o exemplo abaixo:
1. Realize um [fork](https://docs.github.com/pt/get-started/quickstart/fork-a-repo) do projeto
2. Vá até o repositório do fork no seu GitHub e na área `code` copie o link para cloná-lo (HTTPS, SSH ou utilize o [CLI do GitHub](https://cli.github.com/))
3. Abra o terminal, escolha uma pasta de sua preferência e clone o repositório com o comando `git clone <link_do_repositorio>`
4. Crie uma pasta da linguagem que você escolheu no diretório `challenges/id_challenge/lang/` (caso já exista uma pasta com o nome da linguagem, apenas vamos para o próximo passo e reutilizá-la)
5. Depois dentro desta pasta da linguagem crie uma pasta com seu nickname, parecido com algo como `challenges/id_challenge/lang/nickname`
6. Resolva o desafio
7. Copie o `model.md` dentro de `challenges` para a sua pasta criada anteriormente, preenchendo com as informações descritas e depois renomeie o arquivo para **README.md**
8. Crie uma branch com o desafio seguindo o modelo ao lado `git checkout -b challenges/id_challenge/lang/nickname`
9. O exemplo acima ficaria assim do desafio 0 feito em PHP para o usuário `danielhe4rt`: `git checkout -b challenges/0-hello-world/php/danielhe4rt`
10. Depois adicione suas modificações com o comando `git add .`
11. Realize o commit com o comando `git commit -m 'Finalizando o desafio'`
12. Realize o push na branch, enviando suas modificações com o comando `git push origin challenges/id_challenge/lang/nickname` (não se esqueça de colocar as **suas** informações)
13. Abra um pull request e aguarde a revisão
## Revisão de Pull Requests
Como o nosso objetivo será dar a melhor experiência possível para o participante, iremos ter algumas regras básicas de revisão de código para que exista uma boa interpretação geral ao usuário que vai revisar sua PR e claro para que você se sinta mais confortável, sendo elas:
- Reforçar uma leitura de código e tipagem quando possível;
- Erros de digitação/gramaticais e nomes de variáveis sem um contexto, tais como [a,b,c,x,y,z] deverão ser pedidas alterações;
- Isolamento de funções quando necessário também poderá ser requisitado.
Qualquer dúvida, poderá ir o nosso [banco de dúvidas](https://github.com/he4rt/he4rtoberfest-2023/issues) e abrir uma issue com a sua dúvida, assim, vamos responder o mais rápido possível.
## Atualizando o seu fork
Caso esse repositório seja atualizado com novos exercícios você precisa atualizar seu fork, por isso, siga os passos abaixo:
```bash
# 1. Mudar para a branch main
git checkout main
# 2. Checar se sua cópia local tem o link do original
git remote -v
# 3. Se não, adicione o link do original
git remote add upstream
[email protected]:he4rt/he4rtoberfest-2023.git
# ou
git remote add upstream https://github.com/he4rt/he4rtoberfest-2023.git
# 4. Confirme se o link foi adicionado
git remote -v
# 5. Agora você pode fazer o fetch com o repo original, assumindo que o nome do link é 'upstream'
git fetch upstream
# 6. Fazer merge dos updates para sua branch main
git merge upstream/main main
# 7. Realizar o push para seu fork com as novas mudanças
git push origin main
```
## Materiais complementares
- [**Git4Noobs**](https://github.com/danielhe4rt/git4noobs)
- [**Aprendendo sobre Git e Github**](https://www.youtube.com/watch?v=_LNWekPPS9w)
", Assign "at most 3 tags" to the expected json: {"id":"2964","tags":[]} "only from the tags list I provide: [{"id":77,"name":"3d"},{"id":89,"name":"agent"},{"id":17,"name":"ai"},{"id":54,"name":"algorithm"},{"id":24,"name":"api"},{"id":44,"name":"authentication"},{"id":3,"name":"aws"},{"id":27,"name":"backend"},{"id":60,"name":"benchmark"},{"id":72,"name":"best-practices"},{"id":39,"name":"bitcoin"},{"id":37,"name":"blockchain"},{"id":1,"name":"blog"},{"id":45,"name":"bundler"},{"id":58,"name":"cache"},{"id":21,"name":"chat"},{"id":49,"name":"cicd"},{"id":4,"name":"cli"},{"id":64,"name":"cloud-native"},{"id":48,"name":"cms"},{"id":61,"name":"compiler"},{"id":68,"name":"containerization"},{"id":92,"name":"crm"},{"id":34,"name":"data"},{"id":47,"name":"database"},{"id":8,"name":"declarative-gui "},{"id":9,"name":"deploy-tool"},{"id":53,"name":"desktop-app"},{"id":6,"name":"dev-exp-lib"},{"id":59,"name":"dev-tool"},{"id":13,"name":"ecommerce"},{"id":26,"name":"editor"},{"id":66,"name":"emulator"},{"id":62,"name":"filesystem"},{"id":80,"name":"finance"},{"id":15,"name":"firmware"},{"id":73,"name":"for-fun"},{"id":2,"name":"framework"},{"id":11,"name":"frontend"},{"id":22,"name":"game"},{"id":81,"name":"game-engine "},{"id":23,"name":"graphql"},{"id":84,"name":"gui"},{"id":91,"name":"http"},{"id":5,"name":"http-client"},{"id":51,"name":"iac"},{"id":30,"name":"ide"},{"id":78,"name":"iot"},{"id":40,"name":"json"},{"id":83,"name":"julian"},{"id":38,"name":"k8s"},{"id":31,"name":"language"},{"id":10,"name":"learning-resource"},{"id":33,"name":"lib"},{"id":41,"name":"linter"},{"id":28,"name":"lms"},{"id":16,"name":"logging"},{"id":76,"name":"low-code"},{"id":90,"name":"message-queue"},{"id":42,"name":"mobile-app"},{"id":18,"name":"monitoring"},{"id":36,"name":"networking"},{"id":7,"name":"node-version"},{"id":55,"name":"nosql"},{"id":57,"name":"observability"},{"id":46,"name":"orm"},{"id":52,"name":"os"},{"id":14,"name":"parser"},{"id":74,"name":"react"},{"id":82,"name":"real-time"},{"id":56,"name":"robot"},{"id":65,"name":"runtime"},{"id":32,"name":"sdk"},{"id":71,"name":"search"},{"id":63,"name":"secrets"},{"id":25,"name":"security"},{"id":85,"name":"server"},{"id":86,"name":"serverless"},{"id":70,"name":"storage"},{"id":75,"name":"system-design"},{"id":79,"name":"terminal"},{"id":29,"name":"testing"},{"id":12,"name":"ui"},{"id":50,"name":"ux"},{"id":88,"name":"video"},{"id":20,"name":"web-app"},{"id":35,"name":"web-server"},{"id":43,"name":"webassembly"},{"id":69,"name":"workflow"},{"id":87,"name":"yaml"}]" returns me the "expected json"