डक्टटेप डक्टटेप


11

आपके बॉस को पता चला है कि उसके कर्मचारियों का काफी झुंड (आपके सहित) दूसरों से कोड चोरी करना पसंद करता है। उसने आपको आदेश दिया कि आप उसे एक प्रोग्राम लिखें जिसका उपयोग वह ऐसे लोगों को खोजने के लिए कर सकता है जो दूसरों से कोड चोरी करते हैं।

कार्य:

एक प्रोग्राम / फ़ंक्शन लिखें जो पता लगाता है कि किसी ने कहीं और से उसके कोड की नकल की (भाग का)।

कार्यक्रम को सभी मौजूदा कार्यक्रम और कार्यक्रम मिलेगा जो इसे दो अलग-अलग इनपुट से परीक्षण करना चाहिएसंपादित करें: चूंकि अब तक कोई जवाब नहीं है, आप नियमित अभिव्यक्ति का उपयोग कर सकते हैं!

उत्पादन

  • प्रोग्राम को तब कोड के सभी चुराए गए टुकड़ों को आउटपुट करना चाहिए , जो या तो एक स्थान या एक नई रेखा द्वारा अलग किए जाते हैं। (इसके अंत में एक स्थान या एक नई रेखा हो सकती है।)
  • कोड का एक टुकड़ा चोरी / नकल माना जाता है यदि इसमें 10 या अधिक क्रमिक बाइट्स होते हैं । (क्षमा करें, जावा प्रशंसकों!)
  • आपको जितना संभव हो उतना आउटपुट करना होगा, लेकिन यदि ओवरलैपिंग वाले हैं, तो आप उनमें से किसी एक को अनदेखा कर सकते हैं या दोनों को आउटपुट कर सकते हैं।

ट्विस्ट:

जैसा कि पहले उल्लेख किया गया है, आपको डक्ट टेप कोडिंग भी पसंद है। इसका मतलब है, आपके कोड में सब कुछ एक स्टैक एक्सचेंज साइट से कॉपी-पेस्ट किया जाएगा! आप जो चाहें कॉपी कर सकते हैं (कोड ब्लॉक में कोड तक सीमित नहीं) और जितना आप चाहते हैं। (लेकिन कम से कम 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
क्या कॉपी किए गए तार को कोड ब्लॉक, या एसई उत्तर के किसी भी हिस्से से आना है? यदि यह एक कोड ब्लॉक से आता है, तो इसे पूरे ब्लॉक का उपयोग करने की आवश्यकता होती है, या एक विकल्प का उपयोग किया जा सकता है? क्या तार या तो स्वरूपित पाठ या मार्कडाउन स्रोत से आ सकते हैं? क्या इस प्रश्न के उपयोग से नए कोड ब्लॉक किए जा सकते हैं? क्या किसी प्रश्न के पुराने संशोधनों का उपयोग किया जा सकता है?
feersum

3
आप कहते हैं कि सबस्ट्रिंग की लंबाई 10 या अधिक होनी चाहिए। क्या मैं दूसरे सब-स्ट्रिंग के अंदर एक सबस्ट्रिंग रख सकता हूं (क्या सबस्ट्रिंग को निरंतर करना है?)
ब्लू

1
@sysreq मैंने नियमित अभिव्यक्ति की अनुमति देने का फैसला किया!
स्टेफनोच

5
आसान उत्तर:
यूनेरी का

जवाबों:


9

पायथन 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/… को पोस्ट किया गया था। मैंने उस प्रतिबंध को हटाने का फैसला किया, इसलिए आपका जवाब ठीक है। :)
स्टेफनोच

1
@ श्टेनोच आपको इसकी आवश्यकता नहीं है; पहले के उत्तर में एक ही वाक्यांश है
pppery

2
डक्ट-टेप-कोडिंग चुनौतियों के बारे में एक बात जो मुझे पता चली : यह मुश्किल है कि आपको अपने सभी कोड कहां मिले।
पप्परी

वाह, इस पोस्ट का स्कोर बहुत तेज़ी से बढ़ रहा है ...
22:14 पर pppery
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.