সস্তারো এনিগমা মেশিন (পুলিশ)


15

ডাকাতদের পোস্টের জন্য, সস্তারো এনিগমা মেশিন ( ডাকাত )

একজন কপির জমা দেওয়াতে এমন একটি প্রোগ্রাম / ফাংশন থাকবে যা একক বাইট ডেটা গ্রহণ করে এবং একক বাইট উপাত্ত ফেরত দেয়। প্রতিটি সম্ভাব্য ইনপুট অবশ্যই একটি অনন্য আউটপুট উত্পাদন করতে হবে। (অন্য কথায়, আপনার ফাংশনটি অবশ্যই দ্বিপ্রদীপক হবে)

ডাকাতরা যতটা সম্ভব সংক্ষিপ্ত একটি কোড ব্যবহার করে আপনার বিপরীত কার্য তৈরি করার চেষ্টা করবে। সুতরাং আপনার উদ্দেশ্য হ'ল আপনার ফাংশনটিকে উল্টানো কঠিন করা।

আপনি বিল্ট-ইনগুলি ব্যবহার করতে পারবেন না যার একমাত্র উদ্দেশ্য হ্যাশিং বা এনক্রিপশন রয়েছে।

আপনার বাইট গণনাটি 64 বাইটের বেশি হতে পারে না। 0-বাইট সমাধানগুলি জয়ের যোগ্য নয়।

ইনপুট / আউটপুট ফর্ম্যাট

8 বিট (0 বা 1), বা 1-256, 0-255 বা -128 থেকে 127 রেঞ্জের একটি বেস -10 পূর্ণসংখ্যা standard স্ট্যান্ডার্ড I / O বা ফাইল I / O ব্যবহার করতে পারে। ফাংশন আউটপুট হিসাবে একটি মানও ফিরিয়ে দিতে পারে। ইনপুট এবং আউটপুট একই পরিসীমা (বাইনারি, 1-256, 0-255 বা -128 থেকে 127) এর অন্তর্ভুক্ত হওয়া উচিত। ডাকাতটিকে ইনপুট এবং আউটপুট দেওয়ার জন্যও এই ব্যাপ্তিটি ব্যবহার করতে হবে।

স্কোরিং

আপনার বাইটের অনুপাতটি আপনার বিরুদ্ধে সেরা ডাকাতদের প্রয়াসকে গণনা করে। সর্বনিম্ন স্কোর জয়।

কোনও ডাকাত যদি আপনাকে পরাজিত করার চেষ্টা করে থাকে তবেই আপনি জয়ের যোগ্য (একজন পুলিশ হিসাবে)। (এই ডাকাত আপনি হতে পারেন)

উদাহরণ

সি ++, 0-255 ব্যাপ্তি, 31 বাইট ব্যবহার করে

int x;
cin>>x;
cout<<(x+1)%256;

সি ++, 32 বাইটে সম্ভাব্য ডাকাত জমা দেওয়া

int f(int x)
{return x?x-1:255;}

একই ভাষা বা একটি অনুরূপ অ্যালগরিদম ব্যবহার করার প্রয়োজন নেই

এটি পুলিশ এবং ডাকাত উভয়কেই 31/32 = 0.97 এর স্কোর দেয়।


1
একজন পুলিশ জমা দেওয়ার মধ্যে কী রয়েছে? ভাষা, আকার এবং সম্পূর্ণ প্রোগ্রাম / ফাংশন কোড?
আর্নৌল্ড

1
পুলিশ যদি একটি স্বেচ্ছাসেবীভাবে বড় জিনিস তৈরি করতে পারে তবে এটি কিছুটা ভাঙ্গা নয়?
ধ্বংসাত্মক লেবু

1
এই ডাকাতটি আপনিই হতে পারেন যদি আমি একটি 64৪-বাইট কপ উত্তর পোস্ট করি যা N কে N এর মানচিত্র করে এবং ডাকাত উত্তর যা একই বাইটে একই কাজ করে?
আর্নৌল্ড

1
ডাকাতরা যখন উত্তর দেয় তখন আপনি কীভাবে তা জমা দিতে আপডেট করবেন কিনা তা আপনি নির্দিষ্ট করতে চাইতে পারেন। (চলিত "কর্কশ" আপডেটটি এখানে প্রযোজ্য নয়, আমি অনুমান অন্তত একটি অনন্য এবং নির্ধারক ক্র্যাক হিসেবে নয়।।)
Arnauld

3
দ্বিতীয় ভাবাতে, আপনি সম্ভবত এই নিয়মটি মুছে ফেলতে চাইতে পারেন। আমি জেলিতে ডাকাত পোস্ট করে সর্বাধিক উত্তরগুলি ধ্বংস করতে পারি।
ডেনিস

উত্তর:


7

জাভাস্ক্রীপ্ট, 11 8 বাইট, স্কোর: 8/5

x=>x^x/2

ধূসর কোডের সহজ বাস্তবায়ন। সাধারণভাবে ডিকোডিংয়ের পুরো লুপ দরকার। আসুন দেখি কারা আসে সবচেয়ে ছোট বা এমনকি লুপ ছাড়াই!


আমার ধারণা x^x/4শক্ত হবে কারণ এর জন্য কোনও বিল্টিন তৈরি করা উচিত নয় ...
ক্রিস্টোফ


1
এই বাইজিকটি কেমন?
লিকি নুন

1
@ ল্যাকইনউন উহম আপনি কী ধরনের উত্তর প্রত্যাশা করছেন তা নিশ্চিত নয় তবে আমি চেষ্টা করব: গ্রে কোড এমন একটি সংখ্যাকে উপস্থাপনের একটি বিকল্প রূপ যেখানে প্রতিটি ক্রমাগত সংখ্যাটি কেবল 1 বিটে পরিবর্তিত হয় (হামিগ দূরত্ব সর্বদা 1 থাকে)। প্রতিটি সংখ্যার জন্য ঠিক একটি ধূসর এনকোডিং এবং একটি বাইনারি এনকোডিং রয়েছে তাই তারা একটি বাইজেকশন গঠন করে। উদাহরণস্বরূপ 7 বাইনারি 0111 এবং ধূসর মধ্যে 0100, পরবর্তী সংখ্যা 8 বাইনারি মধ্যে 1000 এবং ধূসর মধ্যে 1100 is গ্রে কোডিং মূলত বাইনারি এর এজ কোডিং c
ক্রিস্টোফ

1
@ ল্যাকইনুন ^বিটওয়াইজ জোর , এক্সপেনসিয়েশন নয়। যাইহোক এটি যাদু দেখায়
45

7

সি, 64 বাইট, স্কোর 64/71 = 0.901

T[256];f(x){srand(x&&f(x-1));for(;T[x=rand()%256]++;);return x;}

সীমা [0 255] এ ইনপুট নেয়।

এটি অনলাইন চেষ্টা করুন! - টিআইওতে (জিসিসি ব্যবহার করে), এটি উত্পাদন করে:

103,198,105,115,081,255,074,236,041,205,186,171,242,251,227,070,
124,194,084,248,027,232,231,141,118,090,046,099,051,159,201,154,
102,050,013,183,049,088,163,037,093,005,023,233,094,212,178,155,
180,017,014,130,116,065,033,061,220,135,112,062,161,225,252,001,
126,151,234,107,150,143,056,092,042,176,059,175,060,024,219,002,
026,254,067,250,170,058,209,230,148,117,216,190,097,137,249,187,
168,153,015,149,177,235,241,179,239,247,000,229,202,011,203,208,
072,071,100,189,031,035,030,028,123,197,020,075,121,036,158,009,
172,016,080,021,111,034,025,125,245,127,164,019,181,078,152,224,
077,052,188,095,119,108,134,043,085,162,004,211,054,226,240,228,
079,073,253,169,008,138,010,213,068,091,243,142,076,215,045,066,
006,196,132,173,222,048,246,032,133,007,244,185,195,217,160,120,
218,106,083,144,087,238,207,096,210,053,101,063,098,128,165,089,
140,012,192,131,047,039,022,147,184,109,182,193,199,237,018,069,
057,157,174,104,122,166,055,110,003,040,139,086,145,114,129,113,
206,167,191,214,146,221,136,038,156,082,200,029,044,204,223,064

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


আমি বেশ হতাশ হয়েছি যে f(x){return rand(srand(x*229))/229%256;}টিআইওতে কাজ করার জন্য আমি আমার মূল ( ) এর মতো সংস্করণ পাচ্ছি না, যেহেতু আমি মনে করি এটি আরও মার্জিত leg যেহেতু এটি কেবল ওএস এক্সে চলমান কলংয়ের জন্য কাজ করে, এটি প্রতিযোগিতার পক্ষে মোটেও উপযুক্ত নয়। এইটির বিপরীত হওয়া এখনও বেশ বিশ্রী, তাই আমার ধারণা যথেষ্ট।


আচ্ছা..এটা মজাদার!
ম্যাথু রোহ

সমাধান এখানে করুন , তবে আপনার সাথে আমার কিছুটা কঠিন সময় ছিল srand(), সুতরাং আপনাকে এই সিদ্ধান্তটি গ্রহণ করতে হবে যে এটি এই ফর্মটিতে গ্রহণযোগ্য কিনা।
অ্যাপলশেল

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

2
সমস্যা বাস্তবায়ন নয়। সমস্যাটি হ'ল এতে আমার চ্যালেঞ্জের সমস্ত মূল ধারণাগুলি কী বলে মনে হচ্ছে তার অভাব রয়েছে: একটি ট্রিভাল অ্যালগরিদম সন্ধান করা (অতএব সীমাবদ্ধ 64৪ বাইট এবং ভাষা স্বাধীন) যা বিপরীতে অনিয়ন্ত্রিত। আপনার জমাটি এটিকে ফাঁস করতে "অনুভব করে": ভাষা স্বাতন্ত্র্য, বিল্টিনের অজানা বাস্তবায়নকে আউটসোর্স করে by৪ বাইট সীমা (র্যান্ড ভাষার উপর নির্ভর করে না তবে স্থানীয় স্টাডলিব ) এবং হ্যাশ / এনক্রিপশন নিয়ম। এটি পিপিসিজির নিয়মের মধ্যে রয়েছে তবে ভূত_স_নি_কোড তার নিয়মের সাথে কী ইচ্ছা করেছিল তা নয়।
ক্রিস্টোফ

1
@ ঝোস্ট_ইন_এই_ কোডটি ভাল আরএনজি এবং হ্যাশ ফাংশন দু'টিই খুব সহজেই পাল্টে দেওয়ার জন্য নকশাকৃত। অতএব আমি মনে করি তাদের সেই নিয়মে অন্তর্ভুক্ত করা উচিত (এমনকি প্রকৃত বাস্তবায়নটি এইভাবে ডিজাইন করা নাও হতে পারে)। যাইহোক আমি এই পর্যায়ে নিয়ম পরিবর্তন করে পুনর্নির্মাণ করতে চাই না।
ক্রিস্টোফ


2

জাভাস্ক্রিপ্ট, 44 বাইট 22/3

x=>a.sort()[x]
for(a=[],i=0;i<256;)a[i]=i++;

0-255 থেকে সমস্ত সংখ্যা পুনর্বিন্যস্ত করতে লেক্সিকোগ্রাফিক সাজান (জাভাস্ক্রিপ্ট ডিফল্ট) ব্যবহার করে

এটি অনলাইন চেষ্টা করুন!


1
22/3 - কিছুটা বিজোড় হলেও ভিন্ন ভাষা গ্রহণযোগ্য বলে মনে হয়। আমি ভেবেছিলাম আমার 5 টি আছে তবে 256 আমার পথে চলে গেছে :)।
জোনাথন অ্যালান


1

জাভাস্ক্রিপ্ট, 11/8 বাইট

x=>x**5%257

ডোমেন / ব্যাপ্তি 256 এর মধ্যে 1।


এইচএম, জাভাস্ক্রিপ্ট কি বিপুল সংখ্যক এক্সপোশন দিয়ে খারাপ? এটি রুবিতে কাজ করে: repl.it/HXvZ/0
হিস্টোক্র্যাট

জাভাস্ক্রিপ্টে কেবল ডাবল-স্পষ্টতা ভাসমান রয়েছে, তাই ~ 53 বিটের বেশি কোনও কিছুই হুবহু উপস্থাপন করা যায় না। x**3এবং x**5কাজ করা উচিত।
ডেনিস

ঠিক আছে, ধরে নেওয়ার জন্য আমার সঠিক সেবা করে। আমি ভাষা পরিবর্তন করব।
হিস্টোক্র্যাট

বা ডারিসের পরামর্শটি করুন, নিয়মগুলি টেস্টার ভাষার পক্ষে ing :) ধন্যবাদ!
হিস্টোক্র্যাট

দুর্ভাগ্যক্রমে, এই মুহুর্তে নিয়মগুলি কিছুটা ভাঙা হয়েছে, এবং আমাকে এটি অন্য ভাষার সাথে উল্টে দেওয়ার অনুমতি দেওয়া হবে। স্পষ্টভাবে সুনির্দিষ্ট সীমাটির কারণে, এটি জেএস ব্যবহার করে উল্টিয়ে ফেলার পরিবর্তে ভার্বোজ হবে।
ডেনিস


1

জাভাস্ক্রিপ্ট, 27/29 বাইট

x=>x-6?x*95%127+x*98%131:65

সম্পাদনা করুন: পরিসীমা / ডোমেনটি 1..256। কমবেশি, নিষ্ঠুর বলের মাধ্যমে উত্পন্ন হয়।


দুঃখজনকভাবে এটি দ্বিপ্রদীপক তবে পরিসরে নয় [0,256): ১৩০ এর মান কখনই আউটপুট হয় না তবে 256 এর মান হয় (যা কোনও 8 বিট ইন্টি মেলে না)।
ক্রিস্টোফ

স্কোর 27/29 । আমি এটা পছন্দ করি !
ক্রিস্টোফ

1
ধন্যবাদ! বিধিগুলি আমাকে [1,256] এর একটি ব্যাপ্তি নির্দিষ্ট করার অনুমতি দেয় এবং এটি এই ব্যাপ্তির বাইজেক্টিক।
হিস্টোক্র্যাট

1

1
স্কোর: 16/6 (দ্রষ্টব্য: আমি মনে করি না যে এটি ডাকাতদের জমা দেওয়ার জন্য অন্য কোনও ভাষা ব্যবহারের অনুমতি দেওয়া উচিত , তবে এই মুহুর্তে এটি।)
ডেনিস

1
আমি অন্য ডাক্তার (আবার জেলি বা এমএটিএলও ব্যবহার করে) আপনার ডাকাতদের জমা দেওয়ার চেষ্টা করতে পারি কিনা তা জানতে আগ্রহী হবে
flawr


1

রুবি, 23 বাইট

->x{('228'*x).to_i%257}

ব্যাপ্তি এবং ডোমেন 0..255। নিজে থেকে 228 বার x কনটেনেট করুন, তারপরে ফলাফলটি মডুলো 257 (0 মানচিত্রে 0) নিন। 228 9 এর পরে প্রথম ম্যাজিক নম্বর যা এই ব্যাপ্তির জন্য কাজ করে (স্বতন্ত্র মান দেয় যা 256 টি অন্তর্ভুক্ত করে না)।




0

গণিত, 13 বাইট

Mod[#^7,257]&

[০.২৫6] এর ব্যাপ্তিটি ব্যবহার করে, যদিও এটি [0..255] রেঞ্জের সমানভাবে বৈধ। পুরো টেবিলটি দেখতে, ওল্ফ্রাম স্যান্ডবক্সে নিম্নলিখিত কোডের একটি লাইন অনুলিপি করুন / আটকান :

Array[ Mod[#^7,257]&, 256]   (for a list of values in order)
Array[ Rule[#,Mod[#^7,257]]&, 256]   (for a list of input-output rules)

0

ব্রেইনফাক , 37/11

,+++++[>+++++++<-]>++[<+++++++++>-]<.

এটি অনলাইন চেষ্টা করুন!

খুব ভাল নয় তবে 0-255 এর পরিসীমা



@ ডেনিস ভাল কাজ! আমার এ জাতীয় বাইট ভাষা ব্যবহার করা উচিত নয়।
ক্রিস্টোফার

3
যাইহোক, ভাষার নামগুলি সেন্সর করা ভাল ধারণা নয়। হ্যাঁ, এই বিশেষ ভাষাগুলির একটি সাধারণ এবং শিশুসুলভ নাম রয়েছে তবে তারা সবাই জানেন যে তারাটি কী হিসাবে দাঁড়ায়, এবং এটি বর্তমান রূপে অনুসন্ধান ইঞ্জিনের দ্বারা এটি খুঁজে পাওয়া যায় না।
ডেনিস

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