Ваш начальник узнал, что довольно много его сотрудников (включая вас) любят красть код у других. Он приказал вам написать ему программу, которую он может использовать для поиска людей, которые крадут код у других.
Задача:
Напишите программу / функцию, которая обнаруживает, скопировал ли кто-то (часть) свой код откуда-то еще.
Программа получит все существующие программы и программу, которую она должна протестировать, с двух отдельных входов . Изменить: Поскольку пока нет ответов, вы можете использовать регулярные выражения!
Выход
- Затем программа должна вывести все украденные фрагменты кода, разделенные пробелом или переводом строки. (В конце может быть пробел или перевод строки.)
- Кусок кода считается украденным / скопированным, если он состоит из 10 или более последовательных байтов. (Извините, фанаты Java!)
- Вы должны вывести как можно больше, но если есть перекрывающиеся, вы можете игнорировать один из них или вывести оба.
Twist:
Как упоминалось ранее, вы также любите кодирование клейкой ленты. Это означает, что все в вашем коде будет скопировано с сайта обмена стека! Вы можете копировать все, что хотите (не ограничиваясь кодом в блоках кода) и сколько хотите. (Но не менее 10 байт) (То же правило, что и выше, относительно того, что считается украденным / скопированным.) (Обратите внимание, что любые ответы, которые были размещены после этого вопроса, могут не использоваться.) Пожалуйста, предоставьте ссылки на то, где вы получили свой код от.
Примеры:
Вход:
x = document.getElementById("ninja'd");
(Первый вход)
y = document.getElementById("id");
(Второй вход)
Выход:
= document.getElementById("
Вход:
foo
(Первый вход)
foo+bar
(Второй вход)
Вывод:
ничего.
Вход:
public static void main(String[] args)
(Первый вход)
public static void main(String[] args)
(Второй вход)
Выход:
main(String[] args)
Вход:
for(var i=0; i<x.length; i++){}
(Первый вход)
for(var i=0; i<oops.length; i++){break;}
(Второй вход)
Выход:
for(var i=0; i<
.length; i++){
или же
for(var i=0; i< .length; i++){
источник
Ответы:
Python 2, 224 байта
Скопировано из этого ответа :
get_matching_blocks()
скопировано из этого ответаскопировано из этого вопроса
for start, _, size in
копируется из этого ответа, и второе вхождениеsimilar(a, b)
копируется из того же места, что и первое.if(size > 9)
скопировано из этого вопроса .скопировано из этого вопроса
a[start:
скопировано из этого ответа .и, наконец,
start+size]
скопировано из этого квестаНаконец ответили через полтора года ...
источник