Tempo de leitura: menos de 1 minuto
Olá pessoal, um grande amigo meu, Adriano Sacardo, um dia desses, conversando sobre o blog, me sugeriu uma nova sessão no blog. Ele disse: “Cara, que tal criar uma sessão de Code Kata no blog?”. Disse, “Não faço ideia o que é isso!” Aí ele explicou que Kata é um termo muito usado em artes marciais, consiste em repetir várias vezes um movimento, afim de obter a perfeição. Em desenvolvimento, usa-se o nome Code Kata, que é basicamente treinar o cérebro a resolver problemas de lógica de programação.
Fiquei com isso na cabeça e hoje resolvi testar. Vamos ver como será a aceitação.
Regras
As regras são as seguintes:
- O desafio será dado, e qualquer leitor poderá participar.
- O participante terá uma semana (7 dias) para dar uma solução para o problema.
- A solução deverá ser escrita em Java ou Groovy.
- A solução deve ser enviada através do formulário no fim do post.
- As melhores soluções e seus autores serão divulgadas em um post no dia previamente fixado.
Desafio: Encontre a sequência
Divulgação do resultado dia: 08/02/2016
Escreva um programa capaz de procurar ocorrências de uma pequena cadeia de caracteres (chamaremos de p) em uma outra cadeia de caracteres (chamaremos de t). As cadeias serão compostas pelos seguintes caracteres: A, B, X, Y.
Exemplo: AXYBABYXAAABXBBYX
Deve ser procurado dois tipo de ocorrência:
- Direta: é quando a cadeia de p aparece como subcadeia dentro de t.
Por Exemplo:
p = BYX
t = AXYBABYXAAABXBBYX
então p ocorre na forma direta na posição 6 e na posição 15 de t. - Reversa: é quando a cadeia de p aparece como subcadeia dentro de t, mas de forma reversa.
Por Exemplo:
p = BYX
t = AXYBABYXAAABXBBYX
então p ocorre na forma reversa na posição 2 de t.
Premissas
- O comprimento da cadeia p (chamaremos de I) é menor igual ao comprimento da cadeia t (chamaremos de J): I ≤ J;
- Limites de I: 1 ≤ I ≤ 5000
- Limites de J: 1 ≤ J ≤ 5000
Interface a ser implementada e TO de retorno
Implemente a interface:
[code language=”java”]
public interface IEncontrarSequencia{
public PosicaoTO encontrar(final String p, final String t);
}
[/code]
Esse deve ser o objeto de retorno:
[code language=”java”]
public class PosicaoTO{
public List<Integer> listaPosicoesDireta = new ArrayList<Integer>();
public List<Integer> listaPosicoesReversa = new ArrayList<Integer>();
public void addPosicaoDireta(Integer pPosicao){
listaPosicoesDireta.add(pPosicao);
}
public void addPosicaoReversa(Integer pPosicao){
listaPosicoesReversa.add(pPosicao);
}
List<Integer> getListaPosicoesDireta() {
return listaPosicoesDireta;
}
List<Integer> getListaPosicoesReversa() {
return listaPosicoesReversa;
}
}
[/code]
Espero que gostem!!
Período para envio esgotado.
Abraços

Link permanente
Link permanente
Link permanente
Link permanente
Link permanente