কল্পনা করুন আপনার দুটি বাক্স রয়েছে B(x)
এবং B(y)
প্রত্যেকটিতে একটি অজানা বিট রয়েছে - 0 বা 1 এবং এমন একটি মেশিন F
যা সেগুলিকে এক্স-রে করতে পারে এবং B(x^y)
( জোর ) এর জন্য একটি তৃতীয় বাক্স তৈরি করতে পারে । ( এবং ) ওF
গণনা করতে পারে । প্রকৃতপক্ষে, মেশিনগুলি যে একক ক্রিয়াকলাপটি সম্পাদন করতে পারে তার কেবলমাত্র বিশেষ ঘটনা - প্রতিটি অভ্যন্তর পণ্য , নীচে দিয়ে বোঝানো।B(x*y)
F()
দুটি একই দৈর্ঘ্যের অ্যারে
[B(x[0]), B(x[1]), ..., B(x[n-1])]
[B(y[0]), B(y[1]), ..., B(y[n-1])]
অভ্যন্তরীণ পণ্য হিসাবে সংজ্ঞায়িত করা হয়
B(x[0]*y[0] ^ x[1]*y[1] ^ ... ^ x[n-1]*y[n-1])
" প্রতিটি " অর্থ F()
একাধিক জোড়া প্রক্রিয়া করতে পারি x[]
, y[]
এক বারেই। x[]
এবং y[]
এক জোড়া থেকে একই দৈর্ঘ্যের হতে হবে; x[]
-s এবং y[]
-s বিভিন্ন জোড়া থেকে অগত্যা প্রয়োজন হয় না।
বাক্সগুলি অনন্য পূর্ণসংখ্যার আইডি দ্বারা প্রতিনিধিত্ব করা হয়।
জাভাস্ক্রিপ্ট প্রতিটি অভ্যন্তরীণ পণ্য একটি বাস্তবায়ন এর মত দেখতে হতে পারে
var H=[0,1]; // hidden values, indexed by boxId
function B(x) { // seal x in a new box and return the box id
return H.push(x)-1;
}
function F(pairs) { // "inner product each"
return pairs.map(function (pair) {
var r = 0, x = pair[0], y = pair[1];
for (var i = 0; i < x.length; i++) r ^= H[x[i]] * H[y[i]];
return B(r);
})
}
(দয়া করে উপরোক্ত আপনার পছন্দমতো ভাষা অনুবাদ করুন।)
F()
আপনার ভাষার জন্য উপযুক্ত হিসাবে একটি প্রয়োগকরণে অ্যাক্সেস দেওয়া হয়েছে (তবে কোনও অ্যাক্সেস নেই H
বা নেই B()
) এবং দুটি আইডির 16-বিট বাইনারি উপস্থাপনা গঠনের বাক্স আইডির দুটি অ্যারে দেওয়া হয়েছে a
এবং b
, আপনার কাজটি 16-বিট বাইনারি উপস্থাপনার জন্য বক্স আইডি উত্পাদন করা এর a+b
ন্যূনতম নম্বর দিয়ে (খারিজ ওভারফ্লো) F()
কল।
যে সমাধানটি F()
সর্বাধিক সময়কে কল করে তা জয়ী হয়। টাইস মোট সংখ্যা বেড়ে চলেছে দ্বারা ভাঙ্গা হবে x[],y[]
জোড়া F()
দিয়ে বলা হয় - তার চেয়ে কম উত্তম। এখনও বাঁধা থাকলে, আপনার কোডের আকার (বাস্তবায়ন F()
এবং এর সাহায্যকারীদের বাদে ) traditionalতিহ্যবাহী কোড গল্ফ পথে বিজয়ীকে নির্ধারণ করে। আপনার উত্তরের জন্য দয়া করে "মাই ল্যাং, 123 কল, 456 জোড়া, 789 বাইট" এর মতো একটি শিরোনাম ব্যবহার করুন।
একটি ফাংশন বা একটি সম্পূর্ণ প্রোগ্রাম লিখুন। ইনপুট / আউটপুট / আর্গুমেন্ট / ফলাফলটি কোনও যুক্তিসঙ্গত বিন্যাসে অন্তর্ভুক্ত অ্যারে হয়। বাইনারি উপস্থাপনা অল্প- বা বড়-এন্ডিয়ান হতে পারে - একটি চয়ন করুন।
পরিশিষ্ট 1: চ্যালেঞ্জটি কিছুটা সহজ করার জন্য, আপনি ধরে নিতে পারেন যে আইডিস 0 এবং 1 সহ বাক্সগুলিতে 0 এবং 1 মান রয়েছে। এটি আপনাকে ধ্রুবক দেয়, উপকারী উদাহরণস্বরূপ উপেক্ষার জন্য ( x^1
"নয়")। অবশ্যই ধ্রুবকের অভাবের বিভিন্ন উপায় ছিল অবশ্যই, তবে চ্যালেঞ্জের বাকি অংশগুলি যাইহোক যথেষ্টই শক্ত, তাই আসুন আমরা এই বিভ্রান্তি দূর করি।
পরিশিষ্ট 2: অনুগ্রহ অর্জন করতে, আপনাকে নিম্নলিখিতগুলির একটি করতে হবে:
আপনার স্কোর (কল, জোড়, বাইট) এবং আপনার কোডটি সময়সীমার আগে পোস্ট করুন
সময়সীমার আগে আপনার স্কোর এবং আপনার কোডের একটি শ 256 হ্যাশ পোস্ট করুন; তারপরে সময়সীমার 23 ঘন্টা পরে আসল কোডটি পোস্ট করুন
y=f(x)
এবং x
উপর নির্ভর করি y
।
data Box = B Int deriving (Show); f :: [[[Box]]] -> [Box]
কীভাবে প্রয়োগ করতে হবে তা নির্ধারণ করার জন্য আমার আরও সময় প্রয়োজন f
(হাস্কেল এখানে ছোট হাতের চাপ প্রয়োগ করে ) - আমি আগামীকাল এটি চেষ্টা করব।
F
কেবল একবার কল করতে পারি । এটি অবশ্যই প্রতারণা করবে, তবে আমি নিশ্চিত নই যে এটি ভাল প্রতারণা বা খারাপ প্রতারণা হবে কিনা I'm