Su jefe descubrió que a muchos de sus empleados (incluido usted) les gusta robar código de otros. Le ordenó que le escribiera un programa que pueda usar para encontrar personas que roben código de otros.
Tarea:
Escriba un programa / función que detecte si alguien copió (parte de) su código de otro lugar.
El programa obtendrá todos los programas existentes y el programa que debe probar a partir de dos entradas separadas . Editar: como no hay respuestas hasta ahora, ¡puedes usar expresiones regulares!
Salida
- El programa debería generar todos los fragmentos de código robados, separados por un espacio o una nueva línea. (Puede tener un espacio o una nueva línea al final).
- Una pieza de código se considera robada / copiada si consta de 10 o más bytes sucesivos . (Lo siento, fanáticos de Java!)
- Debe generar la mayor cantidad posible, pero si hay superposiciones, puede ignorar una de ellas o generar ambas.
Giro:
Como se mencionó anteriormente, también te encanta la codificación de cinta adhesiva. ¡Eso significa que todo en su código se copiará de un sitio de intercambio de pila! Puede copiar lo que quiera (no limitado al código en bloques de código) y todo lo que quiera. (Pero al menos 10 bytes) (La misma regla que la anterior sobre lo que se considera robado / copiado). (Tenga en cuenta que las respuestas que se publicaron después de esta pregunta no se pueden usar). Proporcione enlaces a donde obtuvo su código de.
Ejemplos:
Entrada:
x = document.getElementById("ninja'd");
(La primera entrada)
y = document.getElementById("id");
(La segunda entrada)
Salida:
= document.getElementById("
Entrada:
foo
(La primera entrada)
foo+bar
(La segunda entrada)
Salida:
nada.
Entrada:
public static void main(String[] args)
(La primera entrada)
public static void main(String[] args)
(La segunda entrada)
Salida:
main(String[] args)
Entrada:
for(var i=0; i<x.length; i++){}
(La primera entrada)
for(var i=0; i<oops.length; i++){break;}
(La segunda entrada)
Salida:
for(var i=0; i<
.length; i++){
o
for(var i=0; i< .length; i++){
fuente
Respuestas:
Python 2, 224 bytes
Copiado de esta respuesta :
get_matching_blocks()
se copia de esta respuestase copia de esta pregunta
for start, _, size in
se copia de esta respuesta y la segunda aparición desimilar(a, b)
se copia del mismo lugar que la primera.if(size > 9)
se copia de esta pregunta .se copia de esta pregunta
a[start:
se copia de esta respuesta .y finalmente,
start+size]
se copia de esta búsquedaFinalmente respondió después de un año y medio ...
fuente