পরিবর্তিত উত্স কোডটি পুনরুদ্ধার করুন


27

রেডিয়ামের একটি ছোট্ট নমুনা, একটি বৈদ্যুতিক তিমি এবং তিনটি চটকদার ভালুকের সাথে জড়িত একটি খুব অস্বাভাবিক দুর্ঘটনায় দ্য ম্যানেজমেন্টের সোর্স কোডটির কিছু পরিবর্তন করা হয়েছে। দ্য ম্যানেজমেন্টের বস খুব কম জানেন না, দ্য ম্যানেজমেন্টের "দুষ্ট" পরিকল্পনা ব্যর্থ করার প্রয়াসে প্রকৃতপক্ষে দায়িত্বে থাকা পুলিশরা ছিলেন। সুতরাং ডাকাতগুলি মূল কোডটি পুনরুদ্ধারের চেষ্টায় নিয়োগ করা হয়েছে, কারণ কারও মাঝে মাঝে দুষ্ট হওয়া পছন্দ করে না?

দ্রষ্টব্য: উত্স কোডটি আনস্র্যাম্বল করে এই চ্যালেঞ্জটি ভারীভাবে অনুপ্রাণিত হয়েছিল ।

বিবরণ

এটি একটি চ্যালেঞ্জ।

  • পুলিশ একটি প্রোগ্রাম (ভাবে পরিবর্তিত কোড) যে সঞ্চালিত টাস্ক # 1 (এবং আরো একটি প্রোগ্রাম যা সঞ্চালিত টাস্ক # 2 কিন্তু গোপন রাখা হয় লিখতে) লিখতে হবে।
  • ডাকাত "পরিব্যক্তি" বিপরীত করার প্রচেষ্টা এবং কোড যে সঞ্চালিত টাস্ক # 2 এই মূল কোড পরিবর্তন করতে হবে।

এই চ্যালেঞ্জের মধ্যে, টাস্ক # 1 টি হবে প্রথমতম সংখ্যাটি আউটপুট করাn , এবং টাস্ক # 2 টি হবে ফিবোনাচি নাম্বার আউটপুট করাn (যা কোনওভাবেই ক্যাপস-এর মতে মন্দ)। ফিবোনাচি ক্রমকে ( n=11; n=21; n=32; ...) হিসাবে সংজ্ঞায়িত করা হয়, এবং মূল সংখ্যাগুলি ( n=12; n=23; n=35; ...) হিসাবে সংজ্ঞায়িত করা হয় ।

পুলিশদের লক্ষ্য কর্মসূচি # 1 এবং টাস্ক # 2 সম্পূর্ণ হওয়া প্রোগ্রামগুলির মধ্যে পার্থক্য হ্রাস করা, যখন ডাকাতদের টাস্ক # 2 সম্পূর্ণ করে কোডটি পুনরায় তৈরি করতে বাধা দেয়।

কপ বিধি

পুলিশরা দুটি প্রোগ্রাম লিখবে (একটি যা টাস্ক # 1 সম্পূর্ণ করে এবং একটি যা টাস্ক # 2 সম্পূর্ণ করে) এবং নিম্নলিখিত তথ্যগুলি জনসমক্ষে প্রকাশ করবে:

  • প্রথম প্রোগ্রাম (যে আউটপুট nতম মৌলিক সংখ্যা)
  • Levenshtein সম্পাদন করা দূরত্ব প্রথম প্রোগ্রাম এবং দ্বিতীয় প্রোগ্রাম মধ্যে
  • প্রোগ্রামিং ভাষা উভয় প্রোগ্রামে লেখা হয় (উভয় প্রোগ্রামের জন্য একই ভাষায় হতে হবে)

নিম্নলিখিত নিষেধাজ্ঞাগুলি উভয় প্রোগ্রামেই প্রযোজ্য:

  • এগুলির দৈর্ঘ্য বা তার চেয়ে কম 128 টি বর্ণের হতে হবে।
  • তাদের অবশ্যই প্রিন্টযোগ্য এএসসিআইআই (প্লাস নিউলাইনস, যা অনুমোদিত) allowed
  • তাদের দৌড়াতে 10 সেকেন্ডেরও কম সময় নিতে হবে n=45এবং তাদের কোনওটির জন্য সঠিক আউটপুট উত্পাদন করার প্রয়োজন নেই n>45
  • তাদের অবশ্যই কোনও হ্যাশিং বা ক্রিপ্টোগ্রাফিক ফাংশন ব্যবহার করা উচিত নয়।

ডাকাত বিধি

ডাকাত পুলিশ দ্বারা নির্ধারিত সম্পাদনার দূরত্বে পুলিশের প্রোগ্রামটিকে (যা টাস্ক # 1 সম্পূর্ণ করে) একটি টাস্ক # 2 পূরণ করে (মূলত পুলিশ দ্বারা লিখিত মূল প্রোগ্রামটি নয়) সম্পন্ন করে এমন একটি প্রোগ্রামে রূপান্তর করার চেষ্টা করবে।

ইতিমধ্যে একটি ক্র্যাক জমা দিয়ে আবার ফাটানো যাবে না (কেবল প্রথম ডাকাত যিনি জমা দেওয়ার ক্র্যাক করে ক্রেডিট পান)।

জমা দেওয়ার সময় ক্র্যাক করার পরে, দয়া করে নিম্নলিখিতটি করুন:

  • একটি উত্তর পোস্ট করতে এই প্রতিদ্বন্দ্বিতায় এর সহগামী প্রশ্ন (লিঙ্ক) , ভাষা, আপনার সমাধান এবং মূল উত্তর একটি লিঙ্ক করে।
  • "ক্র্যাকড" পাঠ্যের সাথে একটি মন্তব্য করুন যা আপনার পোস্ট করা উত্তরের সাথে লিঙ্ক করে।
  • আপনার যদি সম্পাদনার সুযোগসুবিধা থাকে (যদি আপনি তা না করেন তবে হয় প্রয়োজনীয় সুযোগসুবিধা সহ অন্য কেউ আপনার জন্য এটি না করা পর্যন্ত অপেক্ষা করুন বা সম্পাদনা করার পরামর্শ দিন) পুলিশকে উত্তরটি সম্পাদনা করুন।

স্কোরিং

যদি কোনও পুলিশ কর্মসূচি 1 সপ্তাহ অবরুদ্ধ থাকে, পুলিশ এই মূল কোডটি টাস্ক # 2 (নির্দিষ্ট সম্পাদনা দূরত্বে) সম্পূর্ণ করতে পারে এবং পোস্টটি জমা দিতে পারে তখন থেকেই "নিরাপদ" হিসাবে বিবেচিত হয়। স্বল্পতম সম্পাদনার দূরত্ব থাকা নিরাপদ জমাটি জিতে যাবে। টাই হওয়ার সময়ে, সংক্ষিপ্ততম প্রোগ্রাম (মূল যেটি টাস্ক # 1 সম্পূর্ণ করে) জয়ী হয়। যদি দুটি সাবমিশন এখনও আবদ্ধ থাকে তবে একটি পোস্ট করা আগেরটিতে জয়ী হয়।

কোনও ডাকাত যদি সফলভাবে কোনও পুলিশ সদস্যের জমাটি ক্র্যাক করে তবে ডাক্তার স্কোর সেই জমা দেওয়ার সম্পাদনের দূরত্ব দ্বারা বাড়িয়ে দেয়। উদাহরণস্বরূপ, একজন ডাকাত যা 3 টি সম্পাদনা দূরত্ব এবং 5 টির দূরত্ব সহ একটি জমাটি ক্র্যাক করে 8 পয়েন্ট অর্জন করে। সর্বোচ্চ স্কোর সহ ডাকাত জিতল। টাই হওয়ার সময় ডাকাত যিনি স্কোর অর্জন করেছিলেন তিনি প্রথম জয় পেতেন।

লিডারবোর্ড

  1. রুবি, ((ইতিহাসবিদ)

লেভেনস্টাইন দূরত্ব গণনা করার জন্য একটি ছোট সরঞ্জাম


1
1 ম ফিবোনাচি সংখ্যাটি কী? 0 বা 1? বা এটি কোনও বিষয় নয়
kukac67

@ kukac67 এটি 1; আমি পোস্টটি সম্পাদনা করেছি।
ডোরকনবব

প্রোগ্রামগুলির আউটপুট কী হওয়া উচিত, ওভারফ্লো ক্ষেত্রে?
es1024

এটি একটি সম্পূর্ণ প্রোগ্রাম হতে হবে বা এটি একটি ফাংশন হতে পারে? বেনামে ফাংশন সম্পর্কে কী?
Tyilo

2
"হ্যাশিং বা ক্রিপ্টোগ্রাফিক ফাংশন" হিসাবে কী গণনা করা হয়? আমি কি স্টাফগুলিকে বেস-রূপান্তর করতে পারি? আমি কি বড় আকারের মডেলগুলি বড় আকারের নিতে পারি?
মার্টিন এন্ডার

উত্তর:


6

পাইথন 2, দূরত্ব = 8 [ ফাটল ]

from fractions import*
n=input()
k,=P=[2]
while n>len(P):k+=1;z=reduce(lambda x,y:x*y,P,1);P+=[k]*(gcd(z,k)<2)
print P[-1]

অবশেষে এটিকে চর সীমাতে পেয়ে গেল। খুব শক্ত হওয়া উচিত নয়, তবে আমি ধারণাটি আকর্ষণীয় ছিল।


উদ্দিষ্ট সমাধান:

from fractions import* n=input() k,=P=[1] while n>len(P):k+=1;z=reduce(lambda x,y:x+y,P[:-1],1);P+=[z]*(gcd(z,k)<2) print P[-1]

ধারণাটি ছিল যে এটি ব্যবহার করা F(n+2) = 1 + (sum over F(k) from k = 1 to n), এবং সত্য যে ক্রমাগত ফিবোনাচি সংখ্যাটি কপিরাইট। 1কমাতে যুক্তি প্রদান করার কথা ছিল +1

দেখে মনে হচ্ছে ফেয়ারসাম আক্রমণের একটি আলাদা লাইন পেয়েছে!




4

রুবি, দূরত্ব 6 [নিরাপদ]

require'prime';p Prime.take(n=gets.to_i)[-1]
#p (((807462154311276410)**n/(5**0.5)).round)

সংক্ষিপ্ত সম্পাদনার দূরত্বের সাথে জোড়া সূত্রের সাথে আসা মজাদার তবে এই পদ্ধতিটি আরও কার্যকর / বিরক্তিকর হতে পারে বলে মনে হয়। আপনি ঠিক বুঝতে পেরেছিলেন আমি কি করেছি তবে এর অর্থ এই নয় যে আপনি এটিকে বিপরীত করতে পারেন।

সমাধান:

require'prime';p=Prime.take(n=gets.to_i)[-1] p (((0742154311276/4e10)**n/(5**0.5)).round)

ব্যাখ্যা:

কোডটি 11 দশমিক স্থানে গোল্ডেন অনুপাত উত্পন্ন করে এবং এটি সরাসরি ফিবোনাচি ক্রম গণনা করতে ব্যবহার করে। প্রয়োজনীয় সংখ্যক শর্তাদি সঠিকভাবে পাওয়ার জন্য এটি যথেষ্ট যথার্থতা। আপনি যদি সূত্রটি জানেন তবে সেই অংশটি মোটেও আপত্তি করা হয়নি। আমার রূপান্তরগুলি বিপরীত করা এবং ধ্রুবকটি পুনরুদ্ধার করা শক্ততর করার জন্য, আমি অক্টাল নোটেশন (শীর্ষস্থানীয় 0) এবং বৈজ্ঞানিক স্বরলিপি (4e10) ব্যবহার করেছি। 1e11 এর পরিবর্তে 4e10 দ্বারা বিভক্ত করা আরও দেখতে দেখতে যেমন .0ভাসমান বিভাগকে বাধ্য করার জন্য কোনও কিছুর দ্বারা ভাগ করে দিচ্ছি , যখন বৈজ্ঞানিক স্বরলিপিতে কোনও কিছু সর্বদা রুবিতে সর্বদা একটি ভাসা থাকে, এমনকি যখন কোনও বিগনাম আরও বোধগম্য মনে হয়। আমি ভেবেছিলাম আমি p=স্টাফ নিয়ে চালাক হয়ে যাচ্ছি , তবে আমি এটি যেভাবে লিখেছি তা আপনি কেবল মুছে ফেলতে পারেন p। আমি করতে পারে'p=সমাধান দ্বিতীয় লাইনে p&&পরিবর্তে ব্যবহার করে #, কিন্তু আমি এটি ভেবে দেখিনি।


eনিষ্ঠুর বল করার সময় সেখানে একটি down োকানোর চেষ্টা করার কথা ভাবেননি। সত্যিই স্নিগ্ধ সমাধান। :)
ভেক্টরাইজড

3

পাইথন 2 - এলডি = 13 ক্র্যাকড

n=1;j=input();
while j>0:
    n+=1;j-=1;
    while~-all(n%i for i in range(2,n)):n+=1;
print n

জিনিস শুরু করার জন্য একটি দুর্দান্ত, সহজ (আশা করি খুব সহজ নয়)

দেখে মনে হচ্ছে এটি খুব সহজ ছিল;) আমি বরং নির্বোধ বোধ করছি যে আপনি ভুলে গিয়েছিলেন আপনি মন্তব্যগুলি ব্যবহার করতে পারেন: /



3

হাস্কেল, দূরত্ব = 13

import Data.List
x=id=<<snd(mapAccumL(\m n->(,)=<<(++m)$[n|and[n`mod`m1/=0|m1<-m]])[1+1][3..])
main=print.(!!)(0:2:x)=<<readLn

এটি আরও পঠনযোগ্য হতে পারে তবে importঅনেকগুলি বাইট খেয়েছে তাই আমাকে এটি কিছুটা গল্ফ করতে হয়েছিল।


2

রুবি, দূরত্ব 14 ( ক্র্যাকড )

p [x=2,y=1,*(1..200).map{|i|y==(y*x**(i-1)+x%2).divmod(i)[x-1]?i:1}].-([x-1])[gets.to_i-1]


হুঁ, আপনার ফিবোনাচি ক্রমটি 0 দিয়ে শুরু হয়, যেখানে নিয়মগুলি 1 দিয়ে শুরু করতে বলে Otherwise
হিস্টোক্র্যাট

ঠিক আছে, ঠিক আছে। ফারম্যাট বিটিডব্লিউর দুর্দান্ত ব্যবহার।
31:25 '15


2

জে, দূরত্ব = ৪ [নিরাপদ]

f =: 3 :  '{. (p:) (+) / 0 , y - 1x'

সমাধান:

f =: 3: '{ 2 (x :) (+%) / 0, y $ 1x '

পদ্ধতি:

হর {. 2(x:)অব্যাহত ভগ্নাংশের (+%)1 + 1 টি / (... (1 + 1 / (1 + 1 / (1 + 1 / (1))))) ।


1

পাইথন 3, দূরত্ব = 14 [ ফাটল ]

n = int(input())
P = [2]
k = 2
while n > len(P):
 k += 1
 for x in P:
  if k%x == 0: break
 else: P += [k]
print(k)

আমার কিছু অতিরিক্ত চর ছিল তাই আমি স্পষ্টতার জন্য কিছু সাদা জায়গা রেখেছিলাম :)




1

টিআই-বেসিক , দূরত্ব 38

Input N:{2>L1:For(A,3,E99:If min(1=gcd(A,seq(A,A,2,$(A:A>L1(1+dim(L1:End:L1(N

>STO→কীটি উপস্থাপন করে এবং $বর্গমূলের প্রতীকটি উপস্থাপন করে।


4
এর মধ্যে কয়েকটি অক্ষর মুদ্রণযোগ্য ASCII বলে মনে হয় না।
30:58

@ ফেয়ারসাম ধন্যবাদ, সংশোধন হয়েছে। দূরত্ব এখনও 38
টিমটেক

1

পাইথন 2 - দূরত্ব = 12 [ ক্র্যাকড ]

আমি কীভাবে খুশি তাতে খুশি।

f=lambda p,i:p if p[45:]else f(p+[i]if all(i%q for q in p[1:])else p,-~i)
print f([1,2,3],2)[input()]

আসুন দেখি এটি কতক্ষণ সময় নেয় ... আমি ধরে নিই এটি এখনও ফাটল ধরেছে।

সম্পাদনা করুন: সংক্ষিপ্ত কোডটি একটি সামান্য বিট, অপারেশন / দূরত্বের কোনও প্রভাব ফেলবে না।

উদ্দিষ্ট সমাধান

আমি কোনও মন্তব্য বা নিউলাইন পরিবর্তনের জন্য যাওয়ার চেষ্টা করেছি।

f=lambda p,i:p if p[45:]else f(p+[p[i]+p[-2]]if all(i|q for q in p[1:])else p,-~i) print f([1,1,1],2)[input()]



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