Votre patron a découvert qu'un bon nombre de ses employés (vous y compris) aiment voler du code aux autres. Il vous a ordonné de lui écrire un programme qu'il peut utiliser pour trouver des gens qui volent du code à d'autres.
Tâche:
Écrivez un programme / une fonction qui détecte si quelqu'un a copié (une partie de) son code ailleurs.
Le programme obtiendra tous les programmes existants et le programme qu'il devrait tester à partir de deux entrées distinctes . Edit: Comme il n'y a pas de réponses jusqu'à présent, vous pouvez utiliser des expressions régulières!
Production
- Le programme devrait ensuite sortir tous les morceaux de code volés, séparés par un espace ou une nouvelle ligne. (Il peut avoir un espace ou une nouvelle ligne à la fin.)
- Un morceau de code est considéré comme volé / copié s'il se compose de 10 octets successifs ou plus . (Désolé, fans de Java!)
- Vous devez sortir autant que possible, mais s'il y en a qui se chevauchent, vous pouvez ignorer l'un d'eux ou les sortir tous les deux.
Torsion:
Comme mentionné précédemment, vous aimez également le codage du ruban adhésif. Cela signifie que tout dans votre code sera copié-collé à partir d'un site d'échange de pile! Vous pouvez copier ce que vous voulez (non limité au code dans des blocs de code) et autant que vous le souhaitez. (Mais au moins 10 octets) (Même règle que ci-dessus concernant ce qui est considéré comme volé / copié.) (Veuillez noter que toutes les réponses qui ont été postées après cette question ne peuvent pas être utilisées.) Veuillez fournir des liens vers où vous avez obtenu votre code de.
Exemples:
Entrée:
x = document.getElementById("ninja'd");
(La première entrée)
y = document.getElementById("id");
(La deuxième entrée)
Production:
= document.getElementById("
Entrée:
foo
(La première entrée)
foo+bar
(La deuxième entrée)
Sortie:
rien.
Entrée:
public static void main(String[] args)
(La première entrée)
public static void main(String[] args)
(La deuxième entrée)
Production:
main(String[] args)
Entrée:
for(var i=0; i<x.length; i++){}
(La première entrée)
for(var i=0; i<oops.length; i++){break;}
(La deuxième entrée)
Production:
for(var i=0; i<
.length; i++){
ou
for(var i=0; i< .length; i++){
la source
Réponses:
Python 2, 224 octets
Copié de cette réponse :
get_matching_blocks()
est copié de cette réponseest copié à partir de cette question
for start, _, size in
est copié à partir de cette réponse et la deuxième occurrence desimilar(a, b)
est copiée du même endroit que la première.if(size > 9)
est copié à partir de cette question .est copié à partir de cette question
a[start:
est copié de cette réponse .et enfin,
start+size]
est copié de cette quêteEnfin répondu après un an et demi ...
la source