Skip to content

Instantly share code, notes, and snippets.

@senapk
Last active February 21, 2020 13:53
Show Gist options
  • Save senapk/faa5ae450ebc5d1a37c4f4cb09674fbe to your computer and use it in GitHub Desktop.
Save senapk/faa5ae450ebc5d1a37c4f4cb09674fbe to your computer and use it in GitHub Desktop.
POO
  1. Dada uma string base, o padrão de busca e de substituição, imprima a string resultante.
>>>>>>>>
abaebaabaibu
aba
rexona
========
rexonaebarexonaibu
<<<<<<<<

>>>>>>>>
ababa
aba
rexona
========
rexonaba
<<<<<<<<

>>>>>>>>
abaebaabaibu
aba
abaaba
========
abaabaebaabaabaibu
<<<<<<<<

Tetris

Motivação

Você com certeza já jogou tetris. Ele é o jogo mais vendido do mundo com 170 milhões de unidades. Seja no seu celular ou no mini game de 70 joguinhos em um da vovó, Tetris é imbatível.

Ação

Você fai simular a queda de um única peça de Tetris. Verifique se a peça não está colidindo com nada e faça-a descer uma posição.

Entrada

  • 1a linha: L C, sendo a quantidade de linhas e colunas do display. L, C tem valores em 1 e 20.
  • linhas seguintes, o conteúdo do display com três caracteres apenas
    • . representa os espaços vazios
    • o representa a peça que cai
    • # representam as peças que estão na base

Saída

  • O resultado do display. Se a peça estiver em colisão, reimprima o display sem alteração.

Exemplos

>>>>>>>> bastao parado
4 4
.#.#
.#o#
##o#
##o#
========
.#.#
.#o#
##o#
##o#
<<<<<<<<

>>>>>>>> u movel
4 4
ooo#
o.o#
o#o#
.#.#
========
...#
ooo#
o#o#
o#o#
<<<<<<<<

Software para celular

  • Deve ser capaz de guardar contatos e telefones, cada telefone tendo um id.
  • Deve validar se os números de telefones são válidos.
  • Deve apresentar os contatos ordenados pelo nome.
  • Deve ser capaz de favoritar e desfavoritar um contato.
  • Deve ser capaz de mostrar uma lista com os favoritos.
  • Deve ser capaz de filtrar os contatos por um padrão, mostrando só os contatos que batem com aquele padrão.
  • Ao digitar o número e mandar ligar, deve aparecer o nome do primeiro contato cujo número bate com o número ligado.
  • Ao ligar, deve ser salvo o histórico de ligações aparecendo:
    • Se existe um contato para esse número, aparece o nome do contato.
    • Se não existe contato para esse número, aparece o número ligado.
  • Deve ser capaz de mostrar o speedList, que ordena os contatos pela quantidade de ligações que receberam.
  • Ao remover um contato, ele deve manter a integridade dos dados, mantendo a lista de favoritos, o histórico de ligações e o speedlist atualizado.

Funcionalidades

# addCont _idCont _idFone;_number _idFone;_number ...
addCont silva oi;8832 tim;9934 casa;3232
  done
addCont gomes casa;3235
  done
addCont joao
  done
addCont maria oi;8831 tim;9931 claro;r43
  fail: numero invalido
getAllCont
  - gomes [casa 3235]
  - joao
  - silva [oi 8832][tim 9934][casa 3232]
  • Atualizar contato informando os dados novamente.
  • Remover contato pelo id.
updateCont gomes vivo;8635 casa;1212 oi;123
  done
getAllCont
  - gomes [casa 3235]
  - joao
  - silva [oi 8832][tim 9934][casa 3232]
delCont joao
  done
getAllCont
  - gomes [vivo 8635][casa 1212][oi 123]
  - silva [oi 8832][tim 9934][casa 3232]
  • Favoritar, desfavoritar e ver favoritos pelo idCont
  • Contatos favoritados começam com @ ao invés de -
  • Buscar contato por padrão.
addCont alves oi;123
  done
fav alves
  done
fav silva
  done
getAllCont
  @ alves [oi 123]
  - gomes [vivo 8635][casa 1212][oi 123]
  @ silva [oi 8832][tim 9934][casa 3232]
getFav
  @ alves [oi 123]
  @ silva [oi 8832][tim 9934][casa 3232]
desfav silva
  done
getFav
  @ alves [oi 123]
getAllCont
  @ alves [oi 123]
  - gomes [vivo 8635][casa 1212][oi 123]
  - silva [oi 8832][tim 9934][casa 3232]
search casa
  - gomes [vivo 8635][casa 1212][oi 123]
  - silva [oi 8832][tim 9934][casa 3232]
  • Ligar pra um número, incrementando no contato a quantidade de vezes que ele recebeu uma ligação.
  • Mostrar a sppedList, uma lista cos contatos ordenandos pela quantidade de ligações recebidas, começando pelos que receberam mais ligações primeiro.
  • Se o número ligado pertencer a vários contatos, quando ligar mostre apenas o primeiro que encontrar na ordem alfabética.
  • Se o número ligado pertencer a vários contatos, incremente o contador de ligações em todos eles.
  • Se não encontrar contato, mostre apenas o número.
  • Atualize o toString do contato para apresentar o contador de ligações.
ligar 8832
  ligando silva
ligar 123
  ligando alves
ligar 9934
  ligando silva
ligar 555
  ligando 555
speedList
  - silva {2 lig}[oi 8832][tim 9934][casa 3232]
  @ alves {1 lig}[oi 123]
  - gomes {1 lig}[vivo 8635][casa 1212][oi 123]
  • Mostrar histórico de ligações. Informe o número ligado e todos os contatos que batem com o número ligado.
  • Caso o contato não exista. Crie um contato temporário com o telefone como nome e telefone apenas para mostrar.
  • Caso algum contato seja removido ou alterado, mantenha a integridade do histórico e do speedList
historico
  call 8832
  - silva {2 lig}[oi 8832][tim 9934][casa 3232]
  call 123
  @ alves {1 lig}[oi 123]
  - gomes {1 lig}[vivo 8635][casa 1212][oi 123]
  call 9934
  - silva {2 lig}[oi 8832][tim 9934][casa 3232]
  call 555
  - 555 {1 lig}[fone 555]
rm alves
  done
updateCont silva oi;8832 casa;3232
  done
speedList
  - silva {2 lig}[oi 8832][casa 3232]
  - gomes {1 lig}[vivo 8635][casa 1212][oi 123]
historico
  call 8832
  - silva {2 lig}[oi 8832][casa 3232]
  call 123
  - gomes {1 lig}[vivo 8635][casa 1212][oi 123]
  call 9934
  - 9934 {1 lig}[fone 9934]
  call 555
  - 555 {1 lig}[fone 555]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment