দ্বি-বহু আউটপুট


17

চ্যালেঞ্জ

আমি আপনাদের কাছে আরেকটি গুপ্তচর বনাম বনাম গুপ্তচর চ্যালেঞ্জের প্রতিবাদকারীদের বিরুদ্ধে ক্র্যাকারদের উপস্থাপন করছি f এই ক্ষেত্রে, তবে সুরক্ষিত করা ডেটাম কোনও ইনপুট নয়, তবে একটি আউটপুট

চ্যালেঞ্জের নিয়মগুলি সহজ। নিম্নলিখিত স্পেসিফিকেশন সহ একটি রুটিন লিখুন:

  1. রুটিনটি কোনও ভাষায় লেখা যেতে পারে তবে 320 বাইটের বেশি হতে পারে না।
  2. রুটিন অবশ্যই ইনপুট হিসাবে তিনটি 32-বিট স্বাক্ষরিত পূর্ণসংখ্যার গ্রহণ করতে হবে। এটি একটি ফাংশনের রূপ নিতে পারে যা 3 টি আর্গুমেন্ট গ্রহণ করে, একটি ফাংশন যা একটি একক 3-উপাদান অ্যারে গ্রহণ করে, বা কোনও সম্পূর্ণ প্রোগ্রাম যা কোনও মানক ইনপুট থেকে 3 টি পূর্ণসংখ্যার পাঠ করে।
  3. রুটিনটি অবশ্যই একটি স্বাক্ষরিত 32-বিট পূর্ণসংখ্যার ফলাফল করে।
  4. সমস্ত সম্ভাব্য ইনপুটগুলির মধ্যে, রুটিনটি অবশ্যই 2 এবং 1000 (সমেত) অনন্য মানগুলির মধ্যে আউটপুট দেয়। একটি রুটিন আউটপুট তুলতে পারে এমন অনন্য মানের সংখ্যাকে এর কী বলে

উদাহরণস্বরূপ, সি প্রোগ্রাম

int foo( int i1, int i2, int i3 ) {
    return 20 + (i1^i2^i3) %5;
}

9 অন্যতম হয়েছে যেহেতু এটি (আশা) CAN শুধুমাত্র আউটপুট নয়টি মান 16, 17, 18, 19, 20, 21, 22, 23, এবং 24

কিছু অতিরিক্ত সীমাবদ্ধতা নিম্নরূপ:

  1. রুটিনটি অবশ্যই সম্পূর্ণরূপে নির্বিচারে এবং সময়-আক্রমণকারী হতে হবে, অভিন্ন ইনপুটগুলির জন্য অভিন্ন ফলাফলগুলি প্রদান করবে। রুটিনে সিউডোরানডম নম্বর জেনারেটরে কোনও কল করা উচিত নয়।
  2. রুটিনটি "লুকানো ভেরিয়েবলগুলি" যেমন ফাইলের মধ্যে ডেটা, সিস্টেম ভেরিয়েবল বা গুপ্ত ভাষা বৈশিষ্ট্যগুলির উপর নির্ভর করতে পারে না। উদাহরণস্বরূপ, রুটিনগুলি সাধারণত ধ্রুবকগুলিকে উল্লেখ করা উচিত নয় যতক্ষণ না কোডগুলিতে ধ্রুবকগুলি স্পষ্টভাবে সংজ্ঞায়িত করা হয়। সংকলক quirks উপর নির্ভর করে যে রুটিনগুলি, গাণিতিকভাবে অপরিজ্ঞাত ক্রিয়াকলাপগুলির ফলাফল, গাণিতিক ত্রুটি ইত্যাদির উপরও দৃ strongly় নিরুৎসাহিত করা হয়। সন্দেহ হলে, জিজ্ঞাসা করুন।
  3. আপনার (কোডার) অবশ্যই জানতে হবে রুটিনটি কতগুলি অনন্য আউটপুট উত্পাদন করতে পারে এবং প্রতিটি আউটপুট উত্পাদন করে এমন কমপক্ষে একটি ইনপুট ক্রম সরবরাহ করতে সক্ষম হওয়া উচিত। (যেহেতু সম্ভাব্যত কয়েকশো অনন্য আউটপুট থাকতে পারে, তাই আপনার কীটি প্রতিযোগিত হয় সেই ইভেন্টে এই সেটটি কেবল তখনই অনুরোধ করা হত))

যেহেতু এই সমস্যাটি পূর্বেরটির তুলনায় শাস্ত্রীয় এনক্রিপশনের তুলনায় অনেক কম সাদৃশ্য বহন করে, তাই আমি আশা করি এটি বিস্তৃত দর্শকদের কাছে অ্যাক্সেসযোগ্য হবে।

যত বেশি সৃজনশীল তত ভাল।

স্কোরিং

বাইট গণনা অনুযায়ী স্বল্পতম অ-ক্র্যাক জমা দেওয়া (গুলি) বিজয়ী (গুলি) হিসাবে ঘোষণা করা হবে।

যদি কোনও বিভ্রান্তি থাকে তবে বিনা দ্বিধায় জিজ্ঞাসা বা মন্তব্য করতে পারেন।

কাউন্টার-চ্যালেঞ্জ

যারা নিজস্ব রুটিন জমা দিয়েছেন তাদের সহ সকল পাঠককে "ক্র্যাক" সাবমিশনে উত্সাহিত করা হয়। সম্পর্কিত জমা বিভাগে এর কীটি পোস্ট করা হলে একটি জমা দেওয়া ক্র্যাক হয়। যদি কোনও জমা পরিবর্তন বা ক্র্যাক না করে 72 ঘন্টার জন্য অব্যাহত থাকে, তবে এটি "নিরাপদ" হিসাবে বিবেচিত হবে এবং ক্র্যাকিংয়ের পরবর্তী কোনও সাফল্য প্রতিযোগিতার কারণে এড়ানো হবে।

প্রতি পাঠক প্রতি জমা দেওয়ার জন্য কেবল একটি ক্র্যাকিংয়ের অনুমতি অনুমোদিত। উদাহরণস্বরূপ, যদি আমি ব্যবহারকারীর এক্স: "আপনার কীটি 20" এবং আমি ভুল হয়ে থাকে তবে ব্যবহারকারী এক্স আমার অনুমানটিকে ভুল হিসাবে অস্বীকার করবে এবং আমি আর এই জমা দেওয়ার জন্য অতিরিক্ত অনুমান জমা দিতে সক্ষম হবো না।

ক্র্যাকড সাবমিশনগুলি বিতর্ক থেকে বাদ দেওয়া হয় (প্রদত্ত তারা "নিরাপদ" নয়)। এগুলি সম্পাদনা করা উচিত নয়। কোনও পাঠক যদি কোনও নতুন রুটিন জমা দিতে চান তবে তার পৃথক উত্তরে এটি করা উচিত।

একজন ক্র্যাকারের স্কোর হ'ল জমা দেওয়ার সংখ্যা (মেনে চলুন বা না) সেগুলি ক্র্যাক করে। অভিন্ন গণনা সহ ক্র্যাকারদের জন্য, র‌্যাঙ্কিংটি সমস্ত ক্র্যাকড সাবমিশনগুলিতে (উচ্চতর, আরও ভাল) মোট বাইট গণনা দ্বারা নির্ধারিত হয়।

সর্বোচ্চ স্কোর (গুলি) সহ ক্র্যাকার (গুলি) বিজয়ী রুটিনগুলির বিকাশকারীদের পাশাপাশি বিজয়ী হিসাবে ঘোষণা করা হবে।

দয়া করে আপনার নিজের জমাটি ক্র্যাক করবেন না।

ভাগ্য সুপ্রসন্ন হোক. :)

লিডারবোর্ড

সর্বশেষ আপডেট হয়েছে 2 সেপ্টেম্বর, 10:45 পূর্বাহ্ন EST

অস্থাবর বাধা (অ-ক্র্যাক জমা দেওয়া):

  1. সিজেম, 105 [ডেনিস]

অবিরাম বাহিনী (ক্র্যাকারস):

  1. ডেনিস [ জাভা, 269 ; সি, 58 ; গণিত, ২৯ ]
  2. মার্টিন বাটনার [ জাভা, ২৪৫ ]

11
আমি কি এই চ্যালেঞ্জগুলির জন্য ট্যাগ হিসাবে [পুলিশ-ডাকাতদের] পরামর্শ দিতে পারি? আমি মনে করি সুরক্ষায় এই জাতীয় গেমগুলির জন্য এটি মোটামুটি প্রতিষ্ঠিত একটি নাম এবং এটি সম্ভবত তখন [আগ্রহীদের] আরও আগ্রহী করে তুলবে।
মার্টিন ইন্ডার

অবশ্যই। আমি এখন এটি পরিবর্তন করব।
সিটিও

কোন ধরণের আউটপুট গ্রহণযোগ্য? বন্ধ return, ইত্যাদি ...
Ypnypn

2
আপনার উদাহরণটি ভুল; এর স্বাক্ষর 9. 5% 5 -4 থেকে 4 পর্যন্ত যে কোনও কিছুই ফিরিয়ে দিতে পারে lusive
কিথ র্যান্ডাল

1
@ ডেনিস আপনার সাথে আবার চেষ্টা করার সাথে আমি ভাল থাকব। এটা আমার ভুল ছিল যে এটি গণ্ডগোল হয়েছে।
প্রসারিত পাগল

উত্তর:


7

সিজেম, 105 বাইট

1q~]4G#b2A#md"M-k^XM-WHM-n^GM-0%M-uwM-gM-^XeM-kM-^VO^Ph,M-^MM-^PM-qM-!M-8M-AM-OM-~tM-^FM-cM-h^AM-0M-0M-lM-@M-^[MF=M-^Z^SM-1M-KM-T2M-9M-UmSM-N
M-8M-^^M-n$4M-^M^SM-x M-OM-^@^?"256b@D#Y256#%2+md!A3#*)%)%

উপরোক্তগুলিতে ক্যারেট এবং এম স্বরলিপি ব্যবহার করা হয়েছে, যেহেতু এটিতে ছাপছাড়া অক্ষর রয়েছে। বাইট স্ট্রিমটিকে পূর্ণসংখ্যার ( 256b) রূপান্তর করার পরে , নিম্নলিখিত কোডটি কার্যকর করা হয়:

1q~]4G#b2A#md
12313030820310059479144347891900383683119627474072658988524821209446180284434934346766561958060381533656780340359503554566598728599799248566073353154035839
@D#Y256#%2+md!A3#*)%)%

আপনি সিজেএম ইন্টারপ্রেটারে এই সংস্করণটি অনলাইনে চেষ্টা করতে পারেন ।

কিভাবে এটা কাজ করে

এই জমাটি অবলম্বনের পরিবর্তে সংখ্যা তত্ত্ব ব্যবহার করে। প্রোগ্রামটি প্রায় সমস্ত ইনপুটগুলির জন্য 0 প্রদান করবে। অ-শূন্য আউটপুট তৈরির ফলাফল হিসাবে কয়েকটি ইনপুট থেকে, একটি গোপন মডুলাস উত্পন্ন হয় যা তৃতীয় পূর্ণসংখ্যার 10 টিতে অন্তত 10 টি গুরুত্বপূর্ণ বিট প্রয়োগ করা হয়।

এই চ্যালেঞ্জটি সমাধান করার সর্বাধিক দক্ষ উপায়টি (যেটি আমি ভাবতে পারি) এটি 512 বিট পূর্ণসংখ্যার গুণক তৈরি করবে, যা আমি আশা করি 72 ঘন্টার মধ্যে এটি অর্জনযোগ্য হবে না।

" Prepend 1 to the numbers read from STDIN and convert the resulting array into an integer
  (“N”) by considering them digits of a base 2**32 number.                                 ";

1q~]4G#

" Compute “N / 1024” and “N % 1024”.                                                       ";

2A#md

" Push a carefully selected 512 bit semi-prime (“S”).                                      ";

12313030820310059479144347891900383683119627474072658988524821209446180284434934346766561958060381533656780340359503554566598728599799248566073353154035839

" Compute P = (N / 1024) ** 13 % 2 ** 256 + 2.                                             ";

@D#Y256#%2+

" Compute “S / P” and “S % P”.                                                             ";

md

" Compute “M = (S / P) % (1000 * !(S % P) + 1) + 1”.

  “M” is the key if P is a divisor of S; otherwise, “M == 1”.                              ";

!A3#*)%)

" Compute the final output: “N % 1024 % M”.                                                ";

%

উদাহরণ রান

$ base64 -d > outputs.cjam <<< MXF+XTRHI2IyQSNtZCLrGNdI7gewJfV355hl65ZPEGgsjZDxobjBz/50huPoAbCw7MCbTUY9mhOxy9QyudVtU84KuJ7uJDSNE/ggz4B/IjI1NmJARCNZMjU2IyUyK21kIUEzIyopJSkl
$ wc -c outputs.cjam
105 outputs.cjam
$ LANG=en_US cjam outputs.cjam < outputs.secret; echo
1
$ LANG=en_US cjam outputs.cjam <<< '1 2 3'; echo
0

এনক্রিপশন স্টাফের সাহায্যে আপনি খুব সুন্দর হন। ;)
কোটো

11
"এই জমাটি অস্পষ্টতার পরিবর্তে সংখ্যা তত্ত্ব ব্যবহার করে।" কোডটি দেখে "হুঁ, ঠিক আছে"।
Sepuʎs

4

জাভা - 269

প্রত্যেকের ধৈর্যের জন্য ধন্যবাদ, এটি এখন ঠিক করা উচিত।

সংক্ষিপ্ত:

int a(int a,int b,int c){double d=180-360.0/(int)(Math.abs(Math.sin(a*60))*50+2),e=180-360.0/(int)(Math.abs(Math.cos(b*60))*50+2),f=180-360.0/(int)(Math.atan2(c*60, a*60)*51+2);if(Math.abs(d+e+f-360)<.1)return Integer.valueOf((int)d+""+(int)e+""+(int)f);else return 1;}

সংক্ষিপ্ত করা হয়নি:

int a(int a, int b, int c) {
    double d = 180 - 360.0 / (int) (Math.abs(Math.sin(a * 60)) * 50 + 2);
    double e = 180 - 360.0 / (int) (Math.abs(Math.cos(b * 60)) * 50 + 2);
    double f = 180 - 360.0 / (int) (Math.atan2(c * 60, a * 60) * 51 + 2);
    if (Math.abs(d + e + f - 360) < .1)
        return Integer.valueOf((int) d + "" + (int) e + "" + (int) f);
    else
        return 1;
}

আপনি পরিবর্তন করে চার অক্ষর সংরক্ষণ করতে পারবেন double e,f,d=...;e=...;f=...;করারdouble d=...,e=...,f=...;
Ypnypn

@Ypnypn ধন্যবাদ! গল্ফ সংস্করণে যুক্ত হয়েছে।
প্রসারিত পাগল

1
দ্বিতীয় প্রচেষ্টা ( সুস্পষ্ট অনুমতি সহ ): 122
ডেনিস

1
@ ডেনিস ভাল কাজ! (এটি
হ'ল

1
@ ডেনিস সে ক্ষেত্রে, আপনি ভুলে যাচ্ছেন 1এবং আপনার উত্তরও ভুল;)) (123 সঠিক হচ্ছে ... কেউ কেউ এসে ক্র্যাকিংয়ের স্কোরটি ধরে ফেলবে ...) এবং আমি অনুমান করি যে স্ট্রেচ ম্যানিয়াক sin == 1.0যখন 122 সঠিক বলেছিলেন তখন তার জন্য অ্যাকাউন্ট হয়নি ।
মার্টিন এণ্ডার

2

একটি নমুনা

অবশ্যই অফিশিয়াল এন্ট্রি নয়, এবং চরিত্রের সংখ্যাটি খুব বেশি নয়, তবে আমি অনুমান করি যে কেউ যদি মনের অবিরাম চ্যালেঞ্জ চায় তবে নীচের ফাংশনটি কতগুলি অনন্য আউটপুট উত্পন্ন করে তা নির্ধারণ করার চেষ্টা করতে পারে (ওপিতে বর্ণিত তিনটি ইনপুট দেওয়া হয়েছে) :

function z(y,_,$){M=[];N=[];O=[];C=1792814437;P=72;r=t=0;(f=function(a,k,L){if(k<a.length){for(L=a[k],a[k]=0;a[k]<L;a[k]++)f(a,k+1)}else
if(!t){f([P-1,P-1],0,++t);N=M;while(t<2*P){s=!(t&1);f([P,P,P,P],0,++t);r=r||(s?0:t);t&1&&(N=O);O=[]}}else
((t<2)&&(((d=P*a[0]+(P+1)*a[1]+P)<(P<<6))&&(M[d]=(((y^~_)>>a[0])+((_^~$)>>(a[0]-32)))&1),((a[1]<P-a[0])&&
(M[a[1]+(P+1)*a[0]]=(($^C)>>a[0]+16-a[1])&1))||1))||((t&1)&&((O[P*a[2]+a[3]]|=M[a[1]+P*a[2]]&N[P*a[0]+a[3]]&&
!(a[0]-a[1]))||1))||(s|=N[(a[0]+1)*a[1]+a[3]]);})([],0,0);return r;}

প্রকৃতপক্ষে, আমি এতটাই আত্মবিশ্বাসী যে এটি অকাট্য,

কারণ সত্যই, তারা এটি প্রাপ্য।


1
আপনি এটির জন্য একটি অনুগ্রহ করা উচিত!
অরবি

1
@ অরবি এটি দুর্দান্ত লাগবে তবে কোনও মন্তব্যে অনুদান দেওয়া শক্ত।
জিওবিটস


@COTO এখনও কি এই চ্যালেঞ্জটি চালু আছে?
সোহম চৌধুরী

@ সোহমচৌধুরী: একেবারে। যদি আপনি এটি বুঝতে পারেন, আমি ওপিতে আপনার বিজয়কে বর্ণনা করব। যদি তা না হয় তবে আমাকে জানান এবং আমি সমাধান পোস্ট করব।
COTO


2

জাভা - 245

মার্টিন বাটনার ক্র্যাকড

int a(int[]_$){return $($($_(_$[0],0)))+$_(_$[1],1)*11+$($($_(_$[1+1],0)))*(1+1);}int $_(int $,int $_){int OO=0,o=1,O=1;for($=$<0?-$:$;++O*O<=$;OO+=$%O<1?O:0,o+=$%O<1?1:0,$/=$%O<1?O--:1);return $_>0?o:OO+$;}int $(int $){return(int)Math.sqrt($);}

একটি int- এ অ্যারে হিসাবে ইনপুট ফিড: a(new int[]{1,2,3})। আমি এটি 72 ঘন্টা যেতে আশা করি না, তবে এটির সাথে মজা করুন।

এটিকে কিছুটা আরও পঠনযোগ্য করে তোলার জন্য এটি লাইন ব্রেকগুলির সাথে রয়েছে:

int a(int[]_$){return $($($_(_$[0],0)))+$_(_$[1],
1)*11+$($($_(_$[1+1],0)))*(1+1);}int $_(int $,int
$_){int OO=0,o=1,O=1;for($=$<0?-$:$;++O*O<=$;OO+=
$%O<1?O:0,o+=$%O<1?1:0,$/=$%O<1?O--:1);return $_>
0?o:OO+$;}int $(int $){return(int)Math.sqrt($);}

শুধু নিষ্ঠুরতা থেকে ... 90?
ভেক্টরাইজড

@ বিটপউনার নোপ, দুঃখিত
জিওবিটস

1
আমি এটিকে কিছুটা ডিফল্ট করেছিলাম: পেস্টবিন. com/8pvvfFYB (আমি আশা করি পরিবর্তনশীল নামগুলি প্রতিস্থাপন করার সময় আমি কোনও ভুল করিনি।)
মার্টিন এণ্ডার

4
ঠিক আছে, এখানে আমার চেষ্টা: 965?
মার্টিন এন্ডার

1
@ মার্টিনব্যাটনার সঠিক অস্পষ্ট সংস্করণের জন্য ধন্যবাদ: ডি
জিওবিটস

1

ম্যাথমেটিকা, 29 বাইট, কী: 715, ক্র্যাকড ডেনিস

এটি আমার প্রাথমিক উত্তরের কেবলমাত্র একটি স্থির সংস্করণ, যা ইতিবাচক ইনপুটগুলির পক্ষে কাজ করে না।

f=Plus@@Mod[NextPrime@#,240]&

পূর্ণসংখ্যার মতো একটি তালিকা নেয়

f[{1,2,3}]

আমি 349অনন্য ফলাফল খুঁজে পেয়েছি । পরিসীমা থেকে 3ছিল 717
ফিনোটপিপি

পুনঃটুইট (আমি ডাবল-চেক করেছি)
মার্টিন এণ্ডার

ঠিক আছে, আমি আমার ভুল এবং সঠিক উত্তর খুঁজে পেয়েছি। অনেক দেরিতে হলেও।
ফিনোটপিপি

1
ম্যাথমেটিকা ​​ডকুমেন্টেশন এবং ওল্ফ্রামআল্ফা থেকে আমি যে জিনিসগুলি একসাথে তৈরি করেছি তা যদি সঠিক হয় তবে কীটি 715 ( 3 ... 717)।
ডেনিস

2
ম্যাথমেটিকাকে দেখতে একটি দুর্দান্ত ভাষার মতো, তবে এটি হয় খুব বেশি ব্যয়বহুল বা আমি খুব সজ্জা ...
ডেনিস

0

207 টি অক্ষর, সি / সি ++ এ, এখনও অবরুদ্ধ নয়:

int x(int a, int b, int c) {
    int d, e, f;
    for (int i=0; i!=1<<31; ++i) {
        d=10*(b-a);
        e=a*(28-c)-b;
        f=a*b-2.7*c;
        a += d;
        b += e;
        c += f;
    }
    return ((a%5+5)*10+(b%5+5))*10+c%5+5;
}

কেবল আমার ভাগ্যের চেষ্টা করছি ... 729.
ভেক্টরাইজড

@ বিটপউনার ড্যাম, আমি কেবল তাই বলছিলাম। : ডি ... যদি এটি ভুল হয় তবে ওপরের দিকে আবদ্ধ।
মার্টিন এন্ডার

2
এটি বৈধ জমা নেই। লুপের ভিতরে সমস্ত অ্যাসাইনমেন্টের ফলে স্বাক্ষরিত পূর্ণসংখ্যার ওভারফ্লো হতে পারে , যার অনির্ধারিত আচরণ রয়েছে।
ডেনিস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.