Sobre o Hackerhank
O hackerhank, para quem não conhece, é uma plataforma que oferece desafios de programação em vários níveis, várias linguagens e tópicos, como algoritmos, estruturas de dados, inteligência artificial e bancos de dados.
Ele tem essa carinha e se tu tem praticado os desafios de código da DIO, não há nada de muito novo, nem de assustador por aqui. Se tu não tem praticado os desafios de código da DIO, tsc,tsc,tsc…
Se tu já está enviando teus primeiros currículos pra estágio ou (emprego mesmo), já deve ter se deparado com as questões do hackerrank, se ainda não conhece aproveita e vai conhecer. É bem desafiador resolver 15 questões em 1 hora e meia de tempo, por exemplo. Então vamos discutir maneiras de otimizar a resolução.
Treine a leitura da questão, treine a estruturação, e treine a resolução dentro de um limite de tempo. Isso é para se habituar a ver o cronômetro ‘rodando’ e não se desesperar.
Se habitue com a estrutura do hackerrank:
Descrição do problema, descrição da função e o que ele espera como retorno, as restrições, e os exemplos de input e output.
Aprendendo a ler a questão:
Por exemplo:
Em Python -- > basic
Interpretação da questão:
1 - Existe uma string (ex: escola),onde i e j são posições.
2 - Existe um intervalo:
Onde a posição i inicia e a posição j encerra o intervalo.
3- Dentro desse intervalo:
Alteramos o caso das letras, se elas estão maiúsculas, invertemos para minúscula e vice e versa.
4- Restrição: O resto da string deve permanecer o mesma.
Anotações que tu deve fazer:
1° - Dada uma string.
Qual é a string? escrevo um exemplo pra ir desenhando as respostas: escola
Onde ela começa (i)? insiro 1
Onde ela termina(j)? insiro 4
Essa é uma questão muito básica envolvendo validação por tipo de conteúdo dentro do capítulo sobre Manipulação de String( que tem tópicos como isalpha(), isdigit(), strip() e split()). Aqui serão necessários métodos como swapcase(), islower() e isupper(). E se tu sabe manipular e acessar arrays por meio de índices, fica muito mais fácil.
1° Tenha papel e caneta à mão.
2° Leia com atenção a questão.
3° Releia e anote os dados relevantes.
Com um esboço é possível ver com clareza que entre o índice 1 e o 4 as letras terão seus casos invertidos.
Eu gosto de começar a resolver com a captura da entrada do usuário.
As variáveis palavra, i, j vão armazenar a entrada do usuário, e quando chamar a função elas serão passadas como argumento para o parâmetro da função.
Parâmetros da função (palavra, i, j).
Escrevendo a função:
Tudo o que a função fez foi:
intervalo_inicial: Armazenar os caracteres de 0 até i (no caso é definido como 1 pelo usuário).
intervalo_j:Armazenar de i (1) até j (4) +1 e esses valores o swapcase() inverteu em intervalo_i.
intervalo_final_j:Armazenar o restante dos caracteres de j até o final + 1:
Concatenação: Depois de armazenado, os valores que foram fatiados são concatenados.
Observando a entrada do usuário:
Dicas:
Leia o enunciado com atenção, identifique o problema, o objetivo, e estude os exemplos.
Entenda o formato das entradas e saídas (input/output).
Atenção às limitações e restrições.
Faça um esboço da solução, pode ser um pseudocódigo.
Entenda que tipo de operação o problema requer. É uma busca? Um problema de ordenação? Alguma transformação de dados? Identificar o tipo de operação facilita a escolha do algoritmo.
Verifique os erros mais comuns, que ocorrem com mais frequência.
E não esqueça de praticar! Quanto mais tu pratica, melhor se tornará em interpretar e resolver os problemas de forma rápida e eficiente.
REFERÊNCIAS:
Ebook Introdução-ao-Python - Repositório da IFRN
Introdução-à-programação-com-python - Nilo-Ney-Coutinho-Menezes
Craking-the-code-interview-Gayle Laakmann McDowell
Bons estudos e bom fim de semana a todos!