মনোটোনিক ফাংশন তৈরি করুন


12

সংক্ষিপ্ত বিবরণ

এই চ্যালেঞ্জে, আপনার কাজটি এলোমেলোভাবে দুটি সেটের মধ্যে একরঙা গাণিতিক ফাংশন তৈরি করা।

ইনপুট

আপনার ইনপুট দুটি ধনাত্মক পূর্ণসংখ্যা sএবং n

এই ইনপুট পাওয়ার পর, আপনার প্রোগ্রাম একটি উৎপন্ন হইবে র্যান্ডম গাণিতিক ফাংশন fসেট থেকে থেকে । অন্য কথায়, এটি একটি "নিয়ম" যা এর মধ্যে একটি পূর্ণসংখ্যার মধ্যে এবং এর মধ্যে একটি পূর্ণসংখ্যার গ্রহণ করে such অতিরিক্তভাবে, নিম্নলিখিত অর্থে একঘেয়ে হওয়া উচিত । যদি এবং এমন দুটি দ্বিগুণ হয় যা প্রতিটি স্থানাঙ্কের জন্য ধারণ করে , তবে ।{0,1,...,s-1}n{0,1,...,s-1}fn0s-1fABnA[i] ≥ B[i]if(A) ≥ f(B)

মনোটোনিক ফাংশনগুলির যথাযথ বিতরণ fকোনও বিষয় নয়, যতক্ষণ না এই জাতীয় প্রতিটি কার্যের উত্পন্ন হওয়ার সম্ভাবনা থাকে (নিখুঁত আরএনজি ধরে)।

আউটপুট

আপনার আউটপুটটি ইনপুট এবং আউটপুটগুলির একটি গণনা হবে f। এটির nমধ্যে 0এবং s-1কিছু ক্রমের মধ্যে সমস্ত ধরণের পূর্ণসংখ্যার সমন্বয় থাকবে , প্রতিটি প্রত্যেকে এর সাথে সম্পর্কিত আউটপুট অনুসরণ করবে f। সঠিক আউটপুট ফর্ম্যাটটি নমনীয় (কারণের মধ্যে)।

উদাহরণ

ইনপুট s = 3এবং n = 2আউটপুট উত্পাদন করতে পারে

(0, 0) 0
(0, 1) 1
(0, 2) 2
(1, 0) 0
(1, 1) 1
(1, 2) 2
(2, 0) 1
(2, 1) 1
(2, 2) 2

এটিতে {0, 1, 2}ঠিক একবারে সেট জুড়ে সমস্ত জুটি থাকে এবং প্রতিটি তার fমান অনুসারে অনুসরণ করে । একঘেয়েমি শর্তটিও সন্তুষ্ট। টিপলগুলি এখানে অভিধানিক ক্রমে দেওয়া হয়েছে, তবে এটি প্রয়োজনীয় নয়।

অন্য উদাহরণ হিসাবে, s = 2এবং n = 4উত্পাদন করতে পারে

(0, 0, 0, 0) 0
(0, 0, 0, 1) 0
(0, 0, 1, 0) 0
(0, 0, 1, 1) 0
(0, 1, 0, 0) 1
(0, 1, 0, 1) 1
(0, 1, 1, 0) 1
(0, 1, 1, 1) 1
(1, 0, 0, 0) 0
(1, 0, 0, 1) 1
(1, 0, 1, 0) 0
(1, 0, 1, 1) 1
(1, 1, 0, 0) 1
(1, 1, 0, 1) 1
(1, 1, 1, 0) 1
(1, 1, 1, 1) 1

নিম্নলিখিতগুলি s = 2এবং n = 2(টিপলগুলি পুনরায় সাজানোর জন্য) সমস্ত সম্ভাব্য আউটপুট রয়েছে ; আপনার প্রোগ্রাম এলোমেলোভাবে তাদের একটি আউটপুট করা উচিত:

(0,0) 0
(0,1) 0
(1,0) 0
(1,1) 0
-------
(0,0) 0
(0,1) 0
(1,0) 0
(1,1) 1
-------
(0,0) 0
(0,1) 0
(1,0) 1
(1,1) 1
-------
(0,0) 0
(0,1) 1
(1,0) 0
(1,1) 1
-------
(0,0) 0
(0,1) 1
(1,0) 1
(1,1) 1
-------
(0,0) 1
(0,1) 1
(1,0) 1
(1,1) 1

বিধি এবং স্কোরিং

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

সময়ের জটিলতায় কোনও বিধিনিষেধ নেই, তবে আপনার সমাধানটি নির্দিষ্ট সময়ে নির্দিষ্ট পরিমাণে শেষ করার গ্যারান্টিযুক্ত থাকলে (ইনপুটগুলির উপর নির্ভর করে, এবং নিখুঁত সময়ে চলমান একটি নিখুঁত আরএনজি ধরে নিলে) আমি বোনাস দেব -15%


আপনি যদি ছোট আকারের ক্ষেত্রে যেমন s = 2 n = 2 এর জন্য সমস্ত সম্ভাব্য ফাংশন সম্পূর্ণরূপে গণনা করেন তবে এটি সহায়ক হতে পারে। এলোমেলোতা কীভাবে কার্যকর হবে তা উপলব্ধি করার জন্য আমাকে কয়েকবার বর্ণনাটি পড়তে হয়েছিল।
স্পার

@ স্পার ভাল ধারণা; সম্পাদনা করা হয়েছে।
জাগারব

আবদ্ধ রানটাইম একটি প্রয়োজনীয়? আমি এমন একটি সমাধান নিয়ে ভাবছি যা এলোমেলো ক্রিয়াকলাপ তৈরি করে যতক্ষণ না এটি একরঙা খুঁজে পায়।
স্পার

@ স্পার আমার মনে হয় আমি সীমাবদ্ধ রানটাইমের জন্য একটি বোনাস যুক্ত করব, সুতরাং এই জাতীয় সমাধানটিকে অযোগ্য ঘোষণা করা হবে না।
জাগারব

@ জগারব - সম্ভবত সীমাবদ্ধ এবং এক ঘন্টার মধ্যেই শেষ হওয়ার সম্ভাব্য সমাধানগুলির জন্য আপনার একটি বৃহত বোনাস তৈরি করা উচিত।
গ্লেন ও

উত্তর:


4

পাইথ, 35 বাইট (38 - 15% = 31.45 আরও নিচে)

#I!sm><FhMds<MCeMd^JC,mOQK^UQvzK2JB

প্রদর্শন

ইনপুটটি ফর্ম্যাটে রয়েছে:

n
s

আউটপুটটি ফর্ম্যাটে রয়েছে:

[[value, tuple], [value, tuple], ...]

কেবল এলোমেলো সম্ভাবনা তৈরি করে এবং সেগুলি পরীক্ষা করে।


বিকল্প 37 বাইট সংস্করণ যা আমি বিশ্বাস করি বোনাসের জন্য যোগ্য:

Of!sm><FhMds<MCeMd^T2mC,d^UQvz^UQ^Qvz

প্রদর্শন

এটি সমস্ত সম্ভব মনোোটোনিক ফাংশন উত্পন্ন করে শুরু হয়, তারপরে এলোমেলোভাবে একটি আউটপুট দেয়। এটি অনেক ধীর গতিতে এবং শীর্ষে 2,2


ইনপুট সহ দুর্দান্ত উদাহরণ 3, 2। দুর্ভাগ্যক্রমে, আমি এমনকি 3, 3অনলাইন পাইথ এক্সিকিউটারের জন্য কোনও প্রতিক্রিয়া পাইনি। এই সমন্বয়ের জন্য কি অন্তহীন লুপ আছে ?!
বববেল

@ বুবল অনলাইন অনলাইন নির্বাহকের একটি সময়সীমা আছে, আমি মনে করি। আমি এটি স্থানীয়ভাবে চেষ্টা করি।
isaacg

@ বুবল এটি এতটা নয় যে কোনও ইনফিটির লুপের খুব ধীর গতি রয়েছে। এটি এর জন্যও কাজ করে 2, 4তবে অন্য কিছু নয়।
isaacg

@ ব্লবেল আমি আরও ধীরে ধীরে কিছু যুক্ত করেছি।
isaacg

1

সিজেএম, 40 বাইট - 15% = 34 বাইট

q~1$\m*\1$,m*{W$\.+2m*{:.<2b}%1&!},mR]zp

এই পদ্ধতির সমস্ত বৈধ ফাংশন উত্পন্ন করে এবং তারপরে এলোমেলোভাবে নির্বাচন করে। রান সময়টি কমপক্ষে ও (এস 2 এস এন ) হয় তবে প্রদত্ত ইনপুটটির জন্য ধ্রুবক।

আমি সন্দেহ করি যে ওপি এর মনে এটি ছিল তবে এটি নির্দিষ্ট সময়ের (ইনপুটগুলির উপর নির্ভর করে [...]) শেষ করার গ্যারান্টিযুক্ত এবং তাই বোনাসের জন্য যোগ্যতা অর্জন করে।

সিজেএম ইন্টারপ্রেটারে এটি অনলাইনে চেষ্টা করুন ।


1

জুলিয়া, 64 বাইট (-15% = 54.4)

g(s,n)=(K=rand(0:s-1,ntuple(n,i->s));for i=1:n K=sort(K,i)end;K)

Ungolfed:

function g(s,n)
  # Generates a random n-dimensional array with s per dimension
  # and all values being integers between 0 and s-1
  K=rand(0:s-1,ntuple(n,i->s))
  # Loop over the various dimensions
  for i=1:n
    # Sort in the current dimension
    K=sort(K,i)
  end
  return K
end

এটি দ্রুত সঞ্চালিত হবে, কেবলমাত্র একমাত্র সম্ভাব্য সমস্যাটি মেমরির সাথে যথেষ্ট পরিমাণে বড় পরিমাণে এন এবং এন (জি (10,10) এর সাথে একটি 10 ​​^ 10 অ্যারে তৈরি করতে হবে, সুতরাং স্পষ্টতই এটি স্মৃতি থেকে বেরিয়ে যাচ্ছে - এমনকি প্রতিটি সংখ্যা হলেও এক বাইট, এটি 10 ​​গিগাবাইট ডেটা)।

আউটপুটটি 1-ভিত্তিক সূচক, সুতরাং প্রদত্ত ইনপুটটির ফলাফল নির্ধারণ করতে আপনাকে প্রতিটি ইনপুট মানটিতে একটি যোগ করতে হবে। উদাহরণস্বরূপ, চ (1,2,6,0,3) সন্ধানের জন্য আপনাকে পরীক্ষা করতে হবে K[2,3,7,1,4]

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