दो-कई आउटपुट


17

चुनौती

मैं आपके सामने एक और जासूस बनाम जासूस चुनौती पेश करने वाला पटाखे बनाम पटाखे। इस मामले में, हालांकि, संरक्षित किया जाने वाला डेटम एक इनपुट नहीं बल्कि एक आउटपुट है

चुनौती के नियम सरल हैं। निम्नलिखित विनिर्देशों के साथ एक दिनचर्या लिखें:

  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 की एक प्रमुख है क्योंकि यह (उम्मीद) कर सकते हैं केवल उत्पादन नौ मूल्यों 16, 17, 18, 19, 20, 21, 22, 23, और 24

कुछ अतिरिक्त सीमाएँ इस प्रकार हैं:

  1. नियमित रूप से पूरी तरह से नियतात्मक और समय-अपरिवर्तनीय होना चाहिए, समान इनपुट के लिए समान आउटपुट लौटाता है। दिनचर्या को छद्म आयामी संख्या जनरेटर के लिए कोई कॉल नहीं करना चाहिए।
  2. दिनचर्या "छिपी हुई चर" जैसे कि फाइलों, सिस्टम चर, या गूढ़ भाषा सुविधाओं में डेटा पर निर्भर नहीं हो सकती है। उदाहरण के लिए, रूटीन को आमतौर पर स्थिरांक का उल्लेख नहीं करना चाहिए जब तक कि कोड में खुद को स्पष्ट रूप से परिभाषित नहीं किया जाता है। कंपाइलर क्वर्की पर निर्भर रहने वाले रूटीन, गणितीय रूप से अपरिभाषित संचालन से उत्पन्न आउटपुट, अंकगणितीय त्रुटियां, आदि भी दृढ़ता से हतोत्साहित होते हैं। जब संदेह हो, तो कृपया पूछें।
  3. आप (कोडर) को यह जरूर पता होना चाहिए कि रूटीन कितने अनूठे आउटपुट का उत्पादन कर सकता है, और कम से कम एक इनपुट अनुक्रम प्रदान करने में सक्षम होना चाहिए जो इसके आउटपुट का उत्पादन करता है। (चूंकि संभावित रूप से सैकड़ों अद्वितीय आउटपुट हो सकते हैं, यह सेट केवल उस स्थिति में अनुरोध किया जाएगा जब आपकी कुंजी प्रतियोगिता में है।)

चूंकि यह समस्या पिछले एक की तुलना में शास्त्रीय एन्क्रिप्शन से बहुत कम समानता रखती है, मुझे उम्मीद है कि यह व्यापक दर्शकों के लिए सुलभ होगा।

जितना रचनात्मक, उतना बेहतर।

स्कोरिंग

सबसे कम गैर-क्रैक सबमिशन (एस) प्रति बाइट काउंट को विजेता घोषित किया जाएगा।

यदि कोई भ्रम है, तो कृपया बेझिझक पूछें या टिप्पणी करें।

द काउंटर-चैलेंज

सभी पाठकों, जिनमें उन लोगों ने भी अपनी दिनचर्या प्रस्तुत की है, उन्हें "दरार" प्रस्तुत करने के लिए प्रोत्साहित किया जाता है। जब संबंधित कुंजी अनुभाग में इसकी कुंजी पोस्ट की जाती है तो एक सबमिशन क्रैक किया जाता है। यदि सबमिशन संशोधित या क्रैक किए बिना 72 घंटे तक रहता है, तो इसे "सुरक्षित" माना जाता है और इसे क्रैक करने में किसी भी बाद की सफलता को प्रतियोगिता के लिए नजरअंदाज कर दिया जाएगा।

प्रति पाठक प्रति प्रस्तुत केवल एक खुर की कोशिश की अनुमति है। उदाहरण के लिए, यदि मैं उपयोगकर्ता X को प्रस्तुत करता हूं: "आपकी कुंजी 20 है" और मैं गलत हूं, तो उपयोगकर्ता X मेरे अनुमान को गलत बता देगा और मैं अब उस सबमिशन के लिए अतिरिक्त अनुमान प्रस्तुत नहीं कर पाऊंगा।

क्रैक किए गए सबमिशन को विवाद से समाप्त कर दिया जाता है (बशर्ते वे "सुरक्षित" न हों)। उन्हें संपादित नहीं किया जाना चाहिए। यदि कोई पाठक एक नई दिनचर्या प्रस्तुत करना चाहता है, तो उसे एक अलग उत्तर में ऐसा करना चाहिए।

क्रैकर का स्कोर सबमिशन की संख्या है (या तो आज्ञाकारी है या नहीं) वह दरार करता है। समान गणना वाले पटाखे के लिए, रैंकिंग सभी टूटे हुए सबमिशन (उच्च, बेहतर) में कुल बाइट काउंट द्वारा निर्धारित की जाती है।

उच्चतम स्कोर के साथ पटाखा (ओं) को विजेता दिनचर्या के डेवलपर्स के साथ विजेता घोषित किया जाएगा।

कृपया अपनी खुद की सबमिशन क्रैक न करें।

शुभकामनाएँ। :)

लीडरबोर्ड

अंतिम अद्यतन 2 सितंबर, 10:45 पूर्वाह्न ईएसटी

अचल बाधाएँ (गैर-दरार प्रस्तुतियाँ):

  1. CJam, 105 [डेनिस]

अजेय बल (पटाखे):

  1. डेनिस [ जावा, 269 ; सी, 58 ; गणितज्ञ, 29 ]
  2. मार्टिन ब्यूटनर [ जावा, 245 ]

11
क्या मुझे इन चुनौतियों के टैग के रूप में [पुलिस और लुटेरों] का सुझाव देना चाहिए? मुझे लगता है कि यह सुरक्षा में इस तरह के खेलों के लिए एक काफी स्थापित नाम है और यह शायद तब और अधिक रुचि को बढ़ाएगा [प्रतिकूल]।
मार्टिन एंडर

ज़रूर। मैं इसे अब बदल दूंगा।
सीओटीओ

किस तरह का आउटपुट स्वीकार्य है? STDOUT, returnआदि ...
Ypnypn

2
आपका उदाहरण गलत है; इसका हस्ताक्षर 9.% 5 है, -4 से 4 में से कुछ भी वापस कर सकता है।
कीथ रान्डेल

1
@ डेनिस मैं फिर से कोशिश करके आपके साथ ठीक हो जाऊंगा। यह मेरी गलती थी कि यह गड़बड़ हो गया।
स्ट्रेच

जवाबों:


7

CJam, 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#*)%)%

आप इस संस्करण को CJam दुभाषिया में ऑनलाइन आज़मा सकते हैं ।

यह काम किस प्रकार करता है

यह सबमिशन ऑबफ्यूजन के बजाय नंबर थ्योरी का उपयोग करता है। कार्यक्रम लगभग सभी इनपुट के लिए 0 लौटाएगा। गैर-शून्य आउटपुट के परिणामस्वरूप कुछ इनपुट से, एक गुप्त मापांक निकाला जाता है जो तीसरे पूर्णांक के 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

आप एन्क्रिप्शन सामग्री के साथ बहुत अच्छे हैं। ;)
COTO

11
"यह सबमिशन ऑबफ्यूजेशन के बजाय नंबर थ्योरी का उपयोग करता है।" कोड को देखता है "हम्म, ठीक है।"
atı 16:uʎ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($);}

एक अंतर सरणी के रूप में इनपुट फ़ीड 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?
सप्तऋषि

@bitpwner नहीं, क्षमा करें।
ज्योबिट्स

1
मैंने इसे थोड़ा हटकर बताया : pastebin.com/8pvvfFYB (मुझे उम्मीद है कि चर नामों की जगह लेते समय मैंने कोई गलती नहीं की।)
मार्टिन एंडर

4
ठीक है, यहाँ मेरा प्रयास है: 965?
मार्टिन एंडर

1
@ मार्टिनबटनर सही।
ओफ़्फ़ुसेटेड

1

मैथमेटिका, 29 बाइट्स, की: 715, डेनिस द्वारा क्रैक किया गया

यह मेरे प्रारंभिक उत्तर का एक निश्चित संस्करण है, जो गैर-सकारात्मक इनपुट के लिए काम नहीं करता है।

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

पूर्णांकों की एक सूची लेता है जैसे

f[{1,2,3}]

मुझे 349अद्वितीय आउटपुट मिले । सीमा से था 3करने के लिए 717
PhiNotPi 11

@PhiNotPi गलत। (मैंने डबल-चेक किया)
मार्टिन एंडर

खैर, मुझे अपनी गलती और सही जवाब मिला। हालांकि देर से।
PhiNotPi

1
अगर मैथमेटिका के डॉक्यूमेंटेशन और वोल्फग्रामएल्फा से एक साथ भरा गया सामान सही है, तो कुंजी 715 ( 3 ... 717) है।
डेनिस

2
गणितज्ञ एक अच्छी भाषा की तरह दिखता है, लेकिन यह या तो बहुत महंगा है या मैं बहुत सस्ता हूँ ...
डेनिस

0

207 अक्षर, C / C ++ में, अभी तक बाधित नहीं:

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. कोशिश कर
vectorized

@bitpwner लानत है, मैं बस कहने वाला था। : D ... यदि यह गलत है, तो यह ऊपरी सीमा है।
मार्टिन एंडर

2
यह एक मान्य सबमिशन नहीं है। लूप के अंदर सभी असाइनमेंट पर हस्ताक्षर किए गए पूर्णांक ओवरफ़्लो हो सकते हैं , जिसमें अपरिभाषित व्यवहार होता है।
डेनिस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.