Giter VIP home page Giter VIP logo

playgroundfunctions's Introduction

Boas-vindas ao repositório do Projeto Playground Functions!

Para realizar o projeto, atente-se a cada passo descrito a seguir, e se tiver qualquer dúvida nos envie no Slack da turma! #vqv 🚀

Aqui você vai encontrar os detalhes de como estruturar o desenvolvimento do seu projeto a partir deste repositório, utilizando uma branch específica e um Pull Request para colocar seus códigos.

Termos e acordos

Ao iniciar este projeto, você concorda com as diretrizes do Código de Conduta e do Código de Conduta e do Manual da Pessoa Estudante da Trybe.

Entregáveis

🤷🏽‍♀️ Como entregar

Para entregar o seu projeto você deverá criar um Pull Request neste repositório.

⚠️ É importante que os arquivos não tenham o nome alterado! ⚠️

Lembre-se que você pode consultar nosso conteúdo sobre Git & GitHub e nosso Blog - Git & GitHub sempre que precisar!

👨‍💻 O que deverá ser desenvolvido

No seu time de desenvolvimento, você ficou responsável por implementar o código de funções que resolvem problemas com respostas pré-determinadas. Você pode utilizar a lógica de programação para te ajudar na análise de cada problema e resposta esperada, facilitando a implementação do código de cada uma das funções.

🗓 Data de Entrega
  • Este projeto é individual
  • Será 1 dias de projeto
  • Data para entrega final do projeto: 02/08/2022 14:00

Orientações

‼️ Antes de começar a desenvolver
  1. Clone o repositório
  • Use o comando: git clone [email protected]:tryber/sd-025-b-project-playground-functions.git
  • Entre na pasta do repositório que você acabou de clonar:
    • cd sd-025-b-project-playground-functions
  1. Instale as dependências
  • npm install
  1. Crie uma branch a partir da branch main
  • Verifique que você está na branch main
    • Exemplo: git branch
  • Se não estiver, mude para a branch main
    • Exemplo: git checkout main
  • Crie uma branch à qual você vai submeter os commits de seu projeto
    • Você deve criar uma branch no seguinte formato: nome-de-usuario-nome-do-projeto
    • Exemplo: git checkout -b joaozinho-sd-025-b-project-playground-functions
  1. Adicione as mudanças ao stage do Git e faça um commit
  • Verifique que as mudanças ainda não estão no stage
    • Exemplo: git status (deve aparecer listada a pasta joaozinho em vermelho)
  • Adicione o novo arquivo ao stage do Git
    • Exemplo:
      • git add . (adicionando todas as mudanças - que estavam em vermelho - ao stage do Git)
      • git status (deve aparecer listado o arquivo joaozinho/README.md em verde)
  • Faça o commit inicial
    • Exemplo:
      • git commit -m 'iniciando o projeto. VAMOS COM TUDO :rocket:' (fazendo o primeiro commit)
      • git status (deve aparecer uma mensagem tipo nothing to commit )
  1. Adicione a sua branch com o novo commit ao repositório remoto
  • Usando o exemplo anterior: git push -u origin joaozinho-sd-025-b-project-playground-functions
  1. Crie um novo Pull Request (PR)
  • Vá até a página de Pull Requests do repositório no GitHub
  • Clique no botão verde "New pull request"
  • Clique na caixa de seleção "Compare" e escolha a sua branch com atenção
  • Adicione uma descrição para o Pull Request, um título que o identifique, e clique no botão verde "Create pull request". Crie da seguinte forma: [JOAOZINHO] Projeto Playground Functions
  • Adicione uma descrição para o Pull Request, um título claro que o identifique, e clique no botão verde "Create pull request"
  • Não se preocupe em preencher mais nada por enquanto!
  • Volte até a página de Pull Requests do repositório e confira que o seu Pull Request está criado
⌨️ Durante o desenvolvimento
  • Faça commits das alterações que você fizer no código regularmente pois assim você treina essa prática para o mercado de trabalho 😄 ;

  • Lembre-se de sempre após um (ou alguns) commits atualizar o repositório remoto;

  • Os comandos que você utilizará com mais frequência são:

    1. git status (para verificar o que está em vermelho - fora do stage - e o que está em verde - no stage)

    2. git add (para adicionar arquivos ao stage do Git)

    3. git commit (para criar um commit com os arquivos que estão no stage do Git)

    4. git push -u origin nome-da-branch (para enviar o commit para o repositório remoto na primeira vez que fizer o push de uma nova branch)

    5. git push (para enviar o commit para o repositório remoto após o passo anterior)

🤝 Depois de terminar o desenvolvimento (opcional)

Para sinalizar que o seu projeto está pronto para o "Code Review", faça o seguinte:

  • Vá até a página DO SEU Pull Request, adicione a label de "code-review" e marque seus colegas:

    • No menu à direita, clique no link "Labels" e escolha a label code-review;

    • No menu à direita, clique no link "Assignees" e escolha o seu usuário ;

    • No menu à direita, clique no link "Reviewers" e digite students, selecione o time tryber/students-sd-025-b.

Caso tenha alguma dúvida, aqui tem um video explicativo.

🕵🏿 Revisando um pull request

Use o conteúdo sobre Code Review para te ajudar a revisar os Pull Requests.

🏗 Como estruturar seu projeto

O seu Pull Request deverá conter os arquivos challenges.js e challenges2.js com suas funções implementadas.

  • Todas as funções já estão declaradas nos arquivos challenges.js e challenges2.js. Você pode criar outras funções para auxiliar as já existentes, entretanto, Não altere o nome das funções que já existem.

⚠️ Os parâmetros das funções já existentes podem ser alterados.

De olho na dica 👀:

  • Para verificar se a sua função foi criada corretamente você pode instalar a extensão code runner no VSCode;

  • Utilize console.log() para testar as funções localmente, mas remova antes de fazer o push 😉.

🎛 Linter

Usaremos o ESLint para fazer a análise estática do seu código.

Este projeto já vem com as dependências relacionadas ao linter configuradas no arquivo package.json.

Para poder rodar o ESLint lembre-se de executar o npm install dentro do projeto e depois rode o comando:

npm run lint 

Se a análise do ESLint encontrar problemas no seu código, tais problemas serão mostrados no seu terminal. Se não houver problema no seu código, nada será impresso no seu terminal.

Você pode também instalar o plugin do ESLint no VSCode. Para isso, basta fazer o download do plugin ESLint e instalá-lo.

Em caso de dúvidas, confira o material na plataforma sobre ESLint.

⚠️ NESTE PROJETO O ESLINT NÃO SERÁ AVALIADO. VOCÊ PODE RODAR O TESTE LOCALMENTE E FAZER AS CORREÇÕES SE DESEJAR! ⚠️

🛠 Testes
Todos os requisitos do projeto serão testados automaticamente por meio do Jest.

Para rodar o avaliador automático localmente no seu projeto, execute um dos comandos abaixo:

Para executar todos os testes utilize:

npm test

ou

Para executar um arquivo de teste específico, utilize npm test nomeDoArquivoDeTeste:

npm test compareTrue
  • Os requisitos do seu projeto são avaliados automaticamente

Para verificar se a sua avaliação foi computada com sucesso, você pode verificar os detalhes da execução do avaliador:

  • Na página do seu Pull Request, acima do "botão de merge", procure por "Evaluator job" e clique no link "Details";

  • Na página que se abrirá, procure pela linha "Evaluator step" e clique nela;

  • Caso tenha dúvidas, poste no Slack.

⚠️ O avaliador automático não necessariamente avalia seu projeto na ordem em que os requisitos aparecem no readme. Isso acontece para deixar o processo de avaliação mais rápido. Então, não se assuste se isso acontecer, ok?

O não cumprimento de um requisito, total ou parcialmente, impactará em sua avaliação.

🔗 Links auxiliares para o desenvolvimento do projeto
  • Lembrem-se que como pessoas desenvolvedoras devemos fazer pesquisas e garimpar resultados para auxiliar no entendimento do assunto. Assim, para solucionar os requisitos do projeto é inevitável e estimulado que pesquisas sejam feitas nas mais variadas fontes (plataforma da trybe, google, youtube, etc) sempre tomando cuidado para utilizar fontes confiáveis nas pesquisas da Internet, como por exemplo:

🗣 Nos dê feedbacks sobre o projeto!

Ao finalizar e submeter o projeto, não se esqueça de avaliar sua experiência preenchendo o formulário. Leva menos de 3 minutos!

Link: Formulário de avaliação do projeto

🗂 Compartilhe seu portfólio!

Você sabia que o LinkedIn é a principal rede social profissional e compartilhar o seu aprendizado lá é muito importante para quem deseja construir uma carreira de sucesso? Compartilhe esse projeto no seu LinkedIn, marque o perfil da Trybe (@trybe) e mostre para a sua rede toda a sua evolução.

Requisitos Obrigatórios

⚠️ Leia todos os requisitos atentamente e siga à risca o que for pedido. Não altere o nome de nenhuma função ⚠️

1 - Crie uma função usando o operador &&

Implemente a função compareTrue utilizando somente o operador &&

A função compareTrue ao receber dois parâmetros booleanos deve:

  • Retornar true se ambos os valores forem verdadeiros;
  • Retornar false se um ou ambos os parâmetros forem falsos.

Exemplo:

const girafa = true;
const elefante = true;
const macaco = false;

Se a função for chamada com os valores girafa e elefante como parâmetro, retorna true, mas caso seja chamada com os parâmetro macaco e elefante retorna false.

O que será testado:

  • A função compareTrue deve retornar false quando receber um parâmetro de valor false e outro de valor true;

  • A função compareTrue deve retornar false quando receber dois parâmetros de valor false;

  • A função compareTrue deve retornar true quando receber dois parâmetros de valor true.

2 - Crie uma função que calcula a área de um triângulo

Implemente a função calcArea que retorna o cálculo da área total de um triângulo

A função calcArea recebe o valor da base (base) e outro da altura (height) de um triângulo e retorna o cálculo da sua área.

  • Realize o cálculo da área total do triângulo utilizando a fórmula (base * altura) / 2.

O que será testado:

  • A função calcArea deve retornar o valor 250 quando receber o parâmetro base com o valor 10 e o parâmetro height com o valor 50;

  • A função calcArea deve retornar o valor 5 quando receber o parâmetro base com o valor 5 e o parâmetro height com o valor 2;

  • A função calcArea deve retornar o valor 25.5 quando receber o parâmetro base com o valor 51 e o parâmetro height com o valor 1.

3 - Crie uma função que divida uma frase

Implemente a função splitSentence que divide uma frase de acordo com a quantidade de palavras
A função `splitSentence` recebe uma string como parâmetro e deve retornar um array com as palavras separadas por vírgula.

Exemplo: se a função receber a string 'go Trybe', o retorno deverá ser ['go', 'Trybe'].

O que será testado:

  • A função splitSentence deve retornar o valor ['go', 'Trybe'] quando receber como parâmetro a string 'go Trybe';

  • A função splitSentence deve retornar o valor ['vamo', 'que', 'vamo'] quando receber como parâmetro a string 'vamo que vamo';

  • A função splitSentence deve retornar o valor ['foguete'] quando receber como parâmetro a string 'foguete'.

4 - Crie uma função que use concatenação de strings

Implemente a função concatName que recebe um array de strings e retorna o último item na primeira posição
A função `concatName` recebe um array de strings e deve retornar uma string com o formato `'ÚLTIMO ITEM, PRIMEIRO ITEM`, independente do tamanho do array.

Exemplo:

  • Caso o parâmetro passado para a função concatName seja o array ['Lucas', 'Cassiano', 'Ferraz', 'Paolillo'], a função deverá retornar Paolillo, Lucas.

O que será testado:

  • A função concatName deve retornar o valor 'Paolillo, Lucas' quando receber como parâmetro o array ['Lucas', 'Cassiano', 'Ferraz', 'Paolillo'];

  • A função concatName deve retornar 'ré, foguete' quando receber como parâmetro o array ['foguete', 'não', 'tem', 'ré'];

  • A função concatName deve retornar 'captain, captain' quando receber como parâmetro o array ['captain', 'my', 'captain'].

5 - Crie uma função que calcula a quantidade de pontos em um campeonato de futebol

Implemente a função footballPoints que calcula a pontuação de um time de futebol em um campeonato a partir do número de vitórias e empates

A função footballPoints recebe o número de vitórias (wins) e o número de empates (ties) e retorna a quantidade de pontos que o time marcou em um campeonato. Para isso, considere que:

  • wins: é o número de vitórias e vale 3 pontos;
  • ties: é o número de empates e vale 1 ponto.

O que será testado:

  • A função footballPoints deve retornar o valor 50 pontos quando o time tenha 14 vitórias e 8 empates;

  • A função footballPoints deve retornar o valor 5 pontos quando o time tenha 1 vitória e 2 empates;

  • A função footballPoints deve retornar o valor 0 pontos quando o time tenha 0 vitórias e 0 empates.

6 - Crie uma função que calcula o número de repetições do maior número

Implemente a função highestCount que deverá retornar a quantidade de vezes que o maior número se repete ao receber um array de números.

A função highestCount deve retornar a quantidade de vezes que o maior número se repete dentro do array.

Por exemplo:

  • Caso o parâmetro seja um array com valores [9, 1, 2, 3, 9, 5, 7], a função deverá retornar 2, que é a quantidade de vezes que o número 9 (maior número do array) se repete.

O que será testado:

  • A função highestCount deve retornar 2 quando receber o parâmetro [9, 1, 2, 3, 9, 5, 7];

  • A função highestCount deve retornar 1 quando receber o parâmetro [0, 4, 4, 4, 9, 2, 1];

  • A função highestCount deve retornar 3 quando receber o parâmetro [0, 0, 0].

7 - Crie uma função de Caça ao Rato

Implemente a função catAndMouse que verifica qual gato está mais perto do rato
Imagine que dois gatos estão caçando o mesmo rato. Você precisa verificar qual gato está mais perto de sua presa. Para isso, implemente a função `catAndMouse` que recebe 3 parâmetros do tipo `number` na seguinte ordem:
- `mouse`: representa a posição do rato.

- `cat1`: representa a posição do gato 1;

- `cat2`: representa a posição do gato 2;
  • Calcule as distâncias entre o rato e cada um dos gatos e retorne qual dos felinos está mais próximo do rato:

    • Retorne a string 'cat2' se o gato cat2 estiver mais próximo do rato;
    • Retorne a string 'cat1' se o gato cat1 estiver mais próximo do rato;
    • Retorne a string 'os gatos trombam e o rato foge' caso os gatos estejam na mesma distância do rato.

Exemplo:

  • Caso o gato cat2 esteja a 2 unidades de distância do rato e o cat1 esteja a 3 unidades, sua função deverá retornar 'cat2';

  • Caso os gatos estejam na mesma distância do rato, a função deverá retornar a string 'os gatos trombam e o rato foge'.

O que será testado:

  • A função catAndMouse deve retornar a string 'cat2' quando receber os parâmetros onde gato cat2 esteja a 2 unidades de distância do rato e cat1 esteja a 3 unidades de distância do rato;

  • A função catAndMouse deve retornar a string 'cat1' quando receber os parâmetros onde gato cat1 esteja a 6 unidades de distância do rato e cat2 esteja a 12 unidades de distância do rato;

  • A função catAndMouse deve retornar a string 'os gatos trombam e o rato foge' quando receber os parâmetros onde os gatos estejam na mesma distância do rato.

8 - Crie uma função FizzBuzz

Implemente a função fizzBuzz que recebe um array de números e retorna um array de string de acordo com o resultado

A função fizzBuzz recebe um array de números e para cada número do array é realizada a divisão por 3 e por 5 e de acordo com o resultado, a função deve retornar um array de strings:

  • Retorne a string 'fizz' para cada número do array que seja divisível apenas por 3;
  • Retorne a string 'buzz' para cada número do array que seja divisível apenas por 5;
  • Retorne a string 'fizzBuzz' para cada número do array que seja divisível por 3 e 5;
  • Retorne a string 'bug!' para cada número do array que não seja dividido por 3 nem por 5.

Exemplo: caso o parâmetro seja [2, 15, 7, 9, 45], sua função deverá retornar ['bug!', 'fizzBuzz', 'bug!', 'fizz', 'fizzBuzz'].

O que será testado:

  • A função fizzBuzz deve retornar as strings ['bug!', 'fizzBuzz', 'bug!', 'fizz', 'fizzBuzz'] quando receber os parâmetros [2, 15, 7, 9, 45];

  • A função fizzBuzz deve retornar as strings ['bug!', 'fizz'] quando receber os parâmetros [7, 9];

  • A função fizzBuzz deve retornar as strings ['fizz', 'buzz'] quando receber os parâmetros [9, 25].

9 - Crie uma função que Codifique e Decodifique

Implemente uma função que codifica e decodifica uma frase, trocando vogais por números ou números por vogais.

Para codificar a frase utilize a função encode que recebe uma string como parâmetro e deverá trocar todas as vogais minúsculas por números, de acordo com o formato:

a -> 1
e -> 2
i -> 3
o -> 4
u -> 5

Ou seja, caso o parâmetro de encode seja 'hi there!', o retorno deverá ser 'h3 th2r2!'.

Para decodificar a frase utilize a função decode que recebe uma string contendo letras e números como parâmetro e deverá trocar todos os números por vogais minúsculas, de acordo com o formato:

1 -> a
2 -> e
3 -> i
4 -> o
5 -> u

Por exemplo, caso o parâmetro de decode seja 'h3 th2r2!', o retorno deverá ser 'hi there!'.

O que será testado:

  • A função encode quando receber o parâmetro hello, deve retornar o valor h2ll4;
  • A função encode quando receber o parâmetro How are you today? deve retornar o valor H4w 1r2 y45 t4d1y?;
  • A função encode quando receber o parâmetro This is an encoding test. deve retornar o valor Th3s 3s 1n 2nc4d3ng t2st.;
  • A função encode quando receber o parâmetro go Trybe! deve retornar o valor g4 Tryb2!.

10 - Crie uma função de Lista de Tecnologias

Implemente a função techList que recebe um array e uma string e retorna um array de objetos.

A função techList recebe dois parâmetros:

  • Um array com nomes de tecnologias ;
  • Um nome referente ao nome de uma pessoa.

A função deverá retornar:

  • 'Vazio!' se não receber parâmetro algum ;
  • Um objeto para cada tecnologia do array, com a seguinte estrutura:
{
  tech: 'NomeTech',
  name: 'nome da pessoa'
}

Por exemplo, se a função recebe os parâmetros ['React', 'Jest', 'HTML', 'CSS', 'JavaScript'] e 'Lucas', o retorno deve ser:

[
  {
    tech: "CSS",
    name: "Lucas"
  },
  {
    tech: "HTML",
    name: "Lucas"
  },
  {
    tech: "JavaScript",
    name: "Lucas"
  },
  {
    tech: "Jest",
    name: "Lucas"
  },
  {
    tech: "React",
    name: "Lucas"
  }
]

O que será testado:

  • A função techList deve retornar uma lista de objetos ordenados quando é passada uma lista com 5 tecnologias;

  • A função techList deve retornar a mensagem de erro 'Vazio!' quando a lista não tiver tecnologias.

Requisitos Bônus

11 - Crie uma função de número de telefone

Implemente a função generatePhoneNumber que recebe um array com 11 números e retorna um número de telefone, respeitando parênteses, traços e espaços.

Exemplo: caso o parâmetro da função seja [1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1], a função generatePhoneNumber deverá retornar (12) 34567-8901.

  • Retorne a frase 'Array com tamanho incorreto.' se a função receber um array com tamanho diferente de 11;

  • Retorne a string 'não é possível gerar um número de telefone com esses valores' caso algum dos números do array seja menor que 0, maior que 9 ou se repita 3 vezes ou mais.

O que será testado:

  • A função generatePhoneNumber deve retornar a string 'Array com tamanho incorreto.' caso o array tenha o tamanho diferente de 11;

  • A função generatePhoneNumber deve retornar a string 'não é possível gerar um número de telefone com esses valores' caso algum dos números do array seja menor que 0;

  • A função generatePhoneNumber deve retornar a string 'não é possível gerar um número de telefone com esses valores' caso algum número do array seja maior que 9;

  • A função generatePhoneNumber deve retornar a string 'não é possível gerar um número de telefone com esses valores' caso algum número do array se repetir 3 vezes ou mais;

  • A função generatePhoneNumber deve retornar um número de telefone, respeitando parênteses, traços e espaços caso os números do array estejam de acordo com as especificações.

12 - Crie uma função que teste a condição de existência de um triângulo

Implemente a função triangleCheck que verifica se é possível formar um triângulo analisando o comprimento de três linhas

A função triangleCheck deverá receber os parâmetros lineA, lineB e lineC com o valor do comprimento de três linhas distintas.

  • Para que seja possível formar um triângulo, é necessário que a medida de qualquer um dos lados atenda às seguintes condições:
  1. seja menor que a soma das medidas dos outros dois lados;

E

  1. seja maior que o valor absoluto (módulo) da diferença entre os outros dois lados.

De olho na dica 👀 Para obter o valor absoluto de um número em JavaScript, pesquise pela função Math.abs.

  • O retorno da sua função deverá ser um booleano.

Exemplo: o retorno de triangleCheck(10, 14, 8) deverá ser true.

O que será testado:

  • A função triangleCheck deve retornar o valor false quando a medida de qualquer um dos lados seja maior que a soma das medidas dos outros dois lados;

  • A função triangleCheck deve retornar o valor false quando a medida de qualquer um dos lados seja menor que o valor absoluto da diferença das medidas dos outros dois lados;

  • A função triangleCheck deve retornar o valor true quando a medida de qualquer um dos lados seja menor que a soma das medidas dos outros dois lados e maior que o valor absoluto da diferença entre os outros dois lados.

13 - Crie uma função de boas vindas ao Bar da Trybe!

Implemente a função `hydrate` que recebe uma string e retorna a sugestão de quantos copos de água você deve beber.
// String recebida:
  '1 cerveja'

// String retornada:
  '1 copo de água'
// String recebida:
  '1 cachaça, 5 cervejas e 1 copo de vinho'

// String retornada:
  '7 copos de água'
// String recebida:
  '1 cachaça, 5 cervejas e 1 copo de vinho'

// String retornada:
  '7 copos de água'
  • Para simplificar, considere que a string sempre terá o formato quantidade (em número) + tipo da bebida;

  • O número na frente de cada bebida deve estar entre 1 e 9.

De olho na dica 👀: pesquise por algo similar a get all integers inside a string js.

O que será testado:

  • A função hydrate deve retornar a sugestão de quantos copos de água deve-se beber ao receber uma string.

playgroundfunctions's People

Contributors

paulovitormartins avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.