Ihr Chef hat herausgefunden, dass eine ganze Reihe seiner Mitarbeiter (einschließlich Sie) gerne Code von anderen stehlen. Er hat dir befohlen, ihm ein Programm zu schreiben, mit dem er Leute finden kann, die anderen Code stehlen.
Aufgabe:
Schreiben Sie ein Programm / eine Funktion, die erkennt, ob jemand (einen Teil) seines Codes von einem anderen Ort kopiert hat.
Das Programm erhält alle vorhandenen Programme und das Programm, das es testen soll, von zwei separaten Eingängen . Bearbeiten: Da es bisher keine Antworten gibt, können Sie reguläre Ausdrücke verwenden!
Ausgabe
- Das Programm sollte dann alle gestohlenen Codeteile ausgeben , die entweder durch ein Leerzeichen oder eine neue Zeile getrennt sind. (Möglicherweise steht am Ende ein Leerzeichen oder eine neue Zeile.)
- Ein Code gilt als gestohlen / kopiert, wenn er aus 10 oder mehr aufeinanderfolgenden Bytes besteht. (Sorry, Java-Fans!)
- Sie müssen so viel wie möglich ausgeben, aber wenn es überlappende gibt, können Sie eine davon ignorieren oder beide ausgeben.
Twist:
Wie bereits erwähnt, lieben Sie auch die Klebebandcodierung. Das heißt, alles in Ihrem Code wird von einer Stack-Exchange-Site kopiert! Sie können kopieren, was Sie wollen (nicht nur Code in Codeblöcken) und so viel Sie wollen. (Aber mindestens 10 Bytes) (Dieselbe Regel wie oben, was als gestohlen / kopiert gilt.) (Bitte beachten Sie, dass Antworten, die nach dieser Frage veröffentlicht wurden, möglicherweise nicht verwendet werden.) Bitte geben Sie Links zu dem Ort an, an dem Sie Ihre erhalten haben Code von.
Beispiele:
Eingabe:
x = document.getElementById("ninja'd");
(Die erste Eingabe)
y = document.getElementById("id");
(Die zweite Eingabe)
Ausgabe:
= document.getElementById("
Eingabe:
foo
(Die erste Eingabe)
foo+bar
(Die zweite Eingabe)
Ausgabe:
Nichts.
Eingabe:
public static void main(String[] args)
(Die erste Eingabe)
public static void main(String[] args)
(Die zweite Eingabe)
Ausgabe:
main(String[] args)
Eingabe:
for(var i=0; i<x.length; i++){}
(Die erste Eingabe)
for(var i=0; i<oops.length; i++){break;}
(Die zweite Eingabe)
Ausgabe:
for(var i=0; i<
.length; i++){
oder
for(var i=0; i< .length; i++){
quelle
Antworten:
Python 2, 224 Bytes
Von dieser Antwort kopiert :
get_matching_blocks()
wird aus dieser Antwort kopiertwird von dieser Frage kopiert
for start, _, size in
wird aus dieser Antwort kopiert und das zweite Vorkommen vonsimilar(a, b)
wird von derselben Stelle wie das erste kopiert.if(size > 9)
wird von dieser Frage kopiert .wird von dieser Frage kopiert
a[start:
wird aus dieser Antwort kopiert .und schließlich
start+size]
wird von dieser Quest kopiertEndlich beantwortet nach anderthalb Jahren ...
quelle