Twój szef odkrył, że spora grupa jego pracowników (w tym ty) lubi kraść kod od innych. Nakazał ci napisać mu program, którego może użyć do znalezienia ludzi, którzy kradną kod innym osobom.
Zadanie:
Napisz program / funkcję, która wykrywa, czy ktoś skopiował (część) swojego kodu z innego miejsca.
Program otrzyma wszystkie istniejące programy i program, który powinien przetestować z dwóch osobnych wejść . Edycja: Ponieważ do tej pory nie ma odpowiedzi, możesz używać wyrażeń regularnych!
Wynik
- Następnie program powinien wypisać wszystkie skradzione fragmenty kodu, oddzielone spacją lub znakiem nowej linii. (Na końcu może być spacja lub nowa linia).
- Fragment kodu uważa się za skradziony / skopiowany, jeśli składa się z 10 lub więcej kolejnych bajtów. (Przepraszamy, fani Java!)
- Musisz wypisać jak najwięcej, ale jeśli nakładają się na siebie, możesz zignorować jedno z nich lub wypisać oba.
Skręcać:
Jak wspomniano wcześniej, lubisz także kodowanie taśm klejących. Oznacza to, że wszystko w twoim kodzie zostanie skopiowane z witryny wymiany stosów! Możesz skopiować, co chcesz (nie tylko kod w blokach kodu) i tyle, ile chcesz. (Ale co najmniej 10 bajtów) (Ta sama reguła, co powyżej dotycząca tego, co uważa się za skradzione / skopiowane.) (Należy pamiętać, że wszelkie odpowiedzi, które zostały opublikowane po tym pytaniu, nie mogą być użyte). Podaj linki do miejsca, w którym otrzymałeś kod z.
Przykłady:
Wejście:
x = document.getElementById("ninja'd");
(pierwsze wejście)
y = document.getElementById("id");
(drugie wejście)
Wynik:
= document.getElementById("
Wejście:
foo
(pierwsze wejście)
foo+bar
(drugie wejście)
Wyjście:
Nic.
Wejście:
public static void main(String[] args)
(pierwsze wejście)
public static void main(String[] args)
(drugie wejście)
Wynik:
main(String[] args)
Wejście:
for(var i=0; i<x.length; i++){}
(pierwsze wejście)
for(var i=0; i<oops.length; i++){break;}
(drugie wejście)
Wynik:
for(var i=0; i<
.length; i++){
lub
for(var i=0; i< .length; i++){
źródło
Odpowiedzi:
Python 2, 224 bajty
Skopiowano z tej odpowiedzi :
get_matching_blocks()
jest kopiowany z tej odpowiedzijest kopiowane z tego pytania
for start, _, size in
jest kopiowany z tej odpowiedzi, a drugie wystąpieniesimilar(a, b)
jest kopiowane z tego samego miejsca co pierwsze.if(size > 9)
jest kopiowane z tego pytania .jest kopiowane z tego pytania
a[start:
jest kopiowany z tej odpowiedzi .i na koniec
start+size]
jest kopiowany z tego questipnOstatecznie odpowiedział po półtora roku ...
źródło