Seu chefe descobriu que muitos de seus funcionários (incluindo você) gostam de roubar códigos de outras pessoas. Ele ordenou que você escrevesse para ele um programa que ele pode usar para encontrar pessoas que roubam código de outras pessoas.
Tarefa:
Escreva um programa / função que detecte se alguém copiou (parte de) seu código de outro lugar.
O programa obterá todos os programas existentes e o programa que ele deve testar a partir de duas entradas separadas . Edit: Como não há respostas até agora, você pode usar expressões regulares!
Resultado
- O programa deve gerar todos os trechos de código roubados, separados por um espaço ou uma nova linha. (Pode haver um espaço ou uma nova linha no final.)
- Um pedaço de código é considerado roubado / copiado se consistir em 10 ou mais bytes sucessivos . (Desculpe, fãs de Java!)
- Você deve produzir o máximo possível, mas, se houver sobreposição, poderá ignorar um deles ou produzir ambos.
Torção:
Como mencionado anteriormente, você também adora codificação de fita adesiva. Isso significa que tudo no seu código será copiado e colado de um site de troca de pilhas! Você pode copiar o que quiser (não limitado ao código em blocos de código) e o quanto quiser. (Mas pelo menos 10 bytes) (A mesma regra acima sobre o que é considerado roubado / copiado.) (Observe que as respostas postadas após esta pergunta não podem ser usadas.) Forneça links para onde você obteve seu código de.
Exemplos:
Entrada:
x = document.getElementById("ninja'd");
(a primeira entrada)
y = document.getElementById("id");
(a segunda entrada)
Resultado:
= document.getElementById("
Entrada:
foo
(a primeira entrada)
foo+bar
(a segunda entrada)
Saída:
Nada.
Entrada:
public static void main(String[] args)
(a primeira entrada)
public static void main(String[] args)
(a segunda entrada)
Resultado:
main(String[] args)
Entrada:
for(var i=0; i<x.length; i++){}
(a primeira entrada)
for(var i=0; i<oops.length; i++){break;}
(a segunda entrada)
Resultado:
for(var i=0; i<
.length; i++){
ou
for(var i=0; i< .length; i++){
fonte
Respostas:
Python 2, 224 bytes
Copiado desta resposta :
get_matching_blocks()
é copiado desta respostaé copiado desta pergunta
for start, _, size in
é copiado desta resposta e a segunda ocorrência desimilar(a, b)
é copiada do mesmo local que a primeira.if(size > 9)
é copiado desta pergunta .é copiado desta pergunta
a[start:
é copiado desta resposta .e, finalmente,
start+size]
é copiado deste questipnFinalmente respondeu depois de um ano e meio ...
fonte