ডুক্টেপ ডুক্টেপ


11

আপনার বস খুঁজে পেয়েছেন যে তাঁর কর্মচারীদের বেশ কিছু দল (আপনি সহ) অন্যের কাছ থেকে কোড চুরি করতে পছন্দ করেন। তিনি আপনাকে তাকে এমন একটি প্রোগ্রাম লেখার আদেশ দিয়েছিলেন যা সে অন্যের কাছ থেকে কোড চুরি করে এমন লোকদের খুঁজতে ব্যবহার করতে পারে।

টাস্ক:

এমন একটি প্রোগ্রাম / ফাংশন লিখুন যাতে সনাক্ত করে যে কেউ তার কোডটি অন্য কোথাও থেকে অনুলিপি করেছে (অংশ)।

প্রোগ্রামটি বিদ্যমান সমস্ত প্রোগ্রাম এবং প্রোগ্রামটি এটি দুটি পৃথক ইনপুট থেকে পরীক্ষা করা উচিতসম্পাদনা: যেহেতু এখন পর্যন্ত কোনও উত্তর নেই, আপনি নিয়মিত প্রকাশ করতে পারেন!

আউটপুট

  • প্রোগ্রামটির পরে কোডের সমস্ত চুরি হওয়া টুকরোগুলি আউটপুট করা উচিত , হয় কোনও স্থান বা একটি নতুন লাইন দ্বারা পৃথক করে। (এর শেষে একটি স্পেস বা একটি নতুন লাইন থাকতে পারে))
  • কোনও টুকরা কোড চুরি / অনুলিপি হিসাবে বিবেচনা করা হয় যদি এতে 10 বা ততোধিক বর্ধিত বাইট থাকে। (দুঃখিত, জাভা ভক্তরা!)
  • আপনার যতটা সম্ভব আউটপুট করতে হবে, তবে যদি ওভারল্যাপিংগুলি থাকে তবে আপনি তাদের একটিটিকে উপেক্ষা করতে পারেন বা উভয়কেই আউটপুট করতে পারেন।

Twist:

পূর্বে উল্লিখিত হিসাবে, আপনি নালী টেপ কোডিং পছন্দ করেন। তার মানে, আপনার কোডের সমস্ত কিছু স্ট্যাক এক্সচেঞ্জ সাইট থেকে কপি-পেস্ট করা হবে! আপনি যা চান তা অনুলিপি করতে পারেন (কোড ব্লকগুলিতে কোডের মধ্যে সীমাবদ্ধ নয়) এবং যতটা আপনি চান copy (তবে কমপক্ষে 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
কোন স্ট্রিং অনুলিপি করা যায় এবং কীভাবে (কোডের জন্য) এটি নিয়ম অনুপস্থিত।
18:25

4
অনুলিপিযুক্ত স্ট্রিংগুলি কি কোড ব্লক, বা এসই উত্তরের কোনও অংশ থেকে আসতে হবে? যদি এটি কোনও কোড ব্লক থেকে আসে তবে এটির জন্য কি পুরো ব্লকটি ব্যবহার করা দরকার, বা একটি স্ট্রিং ব্যবহার করা যেতে পারে? স্ট্রিংগুলি ফর্ম্যাট করা পাঠ্য বা মার্কডাউন উত্স থেকে আসতে পারে? কোডগুলি কি এই প্রশ্নের চেয়ে নতুন ব্যবহার করা যেতে পারে? কোনও প্রশ্নের পুরাতন সংশোধনগুলি ব্যবহার করা যেতে পারে?
feersum

3
আপনি বলছেন সাবস্ট্রিংগুলি 10 বা তার বেশি দৈর্ঘ্য করতে হবে। আমি কি অন্য একটি স্ট্রিংয়ের ভিতরে একটি স্ট্রিং রাখতে পারি? (সাবস্ট্রিংগুলি কি ধারাবাহিক হতে হবে?)
ব্লু

1
@ সিসেরিক আমি নিয়মিত প্রকাশের অনুমতি দেওয়ার সিদ্ধান্ত নিয়েছি!
স্টিফনচ

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 পোস্ট করা হয়েছে , স্ট্যাকওভারফ্লো.com / প্রশ্নস / 73৩৩৮6311১১/২ পোস্ট করা হয়েছে। আমি এই সীমাবদ্ধতা অপসারণ করার সিদ্ধান্ত নিয়েছি, সুতরাং আপনার উত্তর ঠিক আছে। :)
স্টেফনচ

1
@ স্টেনফোচ আপনার প্রয়োজন নেই; আগের
উত্তরটিতে

2
নালী-টেপ-কোডিং চ্যালেঞ্জ সম্পর্কে আমি একটি জিনিস শিখেছি : আপনি আপনার সমস্ত কোডটি কোথায় পেয়েছেন তা ট্র্যাক করে রাখা মুশকিল।
পিপ্পারি

বাহ, এই পোস্টের স্কোর খুব দ্রুত বাড়ছে ...
পিপ্পারি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.