杜克塔佩杜克塔佩


11

您的老板发现很多员工(包括您)喜欢从他人那里窃取代码。他命令您为他编写一个程序,他可以使用该程序找到从他人那里窃取代码的人。

任务:

编写一个程序/函数,以检测是否有人从其他地方复制了(部分)他的代码。

该程序将从两个单独的输入中获取所有现有程序和应测试的程序编辑:由于到目前为止没有答案,您可以使用正则表达式!

输出量

  • 然后,程序应输出所有被盗的代码,用空格或换行符分隔。(它的末尾可能有空格或换行符。)
  • 如果一段代码包含10个或更多连续字节,则认为该段代码已被盗/复制。(对不起,Java迷!)
  • 您必须输出尽可能多的内容,但是如果有重叠的内容,则可以忽略其中之一,也可以同时输出两者。

捻:

如前所述,您还喜欢管道胶带编码。这意味着,一切您代码中的将从堆栈交换站点复制粘贴!您可以复制任意内容(不限于代码块中的代码),并且可以复制任意数量的内容。(但至少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++){

1
缺少可复制字符串以及复制方式的规则(针对代码)。
feersum

4
复制的字符串是否必须来自代码块或SE答案的任何部分?如果它来自代码块,是否需要使用整个块,还是可以使用子字符串?字符串可以来自格式化文本还是Markdown源?可以使用比这个问题新的代码块吗?可以使用问题的旧修订版吗?
feersum 2015年

3
您说子串的长度必须为10或更多。我可以在另一个子串中放置一个子串吗?(子字符串必须连续吗?)
蓝色

1
@sysreq我决定允许使用正则表达式!
Stefnotch

5
简单的答案:使用一元
lirtosiast,2015年

Answers:


9

Python 2,224字节

from difflib import SequenceMatcher
def similar(a, b):
    return SequenceMatcher(None, a, b).get_matching_blocks()
a=raw_input()
b=raw_input()
for start, _, size in similar(a, b):
 if(size > 9):
  print a[start:start+size]

从此答案复制:

from difflib import SequenceMatcher
def similar(a, b):
    return SequenceMatcher(None, a, b).

get_matching_blocks()这个答案复制

a=raw_input()
b=raw_input()

这个问题复制

for start, _, size in从此答案中复制,而第二次出现similar(a, b)是从与第一个相同的位置复制的。

if(size > 9)这个问题复制而来。

:
    print

这个问题复制

a[start:从此答案复制而来。

最后,start+size]这个问题中复制

一年半终于回答...


+1不过,发布此挑战后发布了stackoverflow.com/questions/37386311/…。我决定取消该限制,因此您的回答很好。:)
Stefnotch

1
@Stenfoch你不需要;一个更早的答案包含相同的短语
pppery

2
我了解到风管磁带编码挑战的一件事:跟踪所有代码的位置很困难。
pppery

哇,这则
讯息
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.