হিলবার্টের বাইনারি হোটেল


18

এই চ্যালেঞ্জে আপনাকে দুটি বৈশিষ্ট্য পূরণ করে এমন কোনও ফাংশন (বা সম্পূর্ণ প্রোগ্রাম) প্রয়োগ করতে বলা হবে। এই বৈশিষ্ট্যগুলি হ'ল:

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

  • আপনার ফাংশনটি অবশ্যই তার ইনপুট থেকে আউটপুটে "বিটগুলিতে" মোট সংখ্যাটি সংরক্ষণ করবে। এর অর্থ যদি আপনি বহুবর্ষের প্রতিটি সহগের 1 টি বিট গণনা করেন তবে তাদের যোগফল আউটপুটের বাইনারি উপস্থাপনায় 1 বিটের সংখ্যার সমান হওয়া উচিত। উদাহরণস্বরূপ 9হয় 1001তাই এটি 2 আছে বাইনারি 1বিট।


আই

একটি অ-নেতিবাচক পূর্ণসংখ্যার বহুভুজ অ-নেতিবাচক পূর্ণসংখ্যার অসীম তালিকার সমান যেমন একটি নির্দিষ্ট বিন্দুর পরে সমস্ত পূর্ণসংখ্যা শূন্য হয়। সুতরাং, বহুপদীগুলি অসীম তালিকা (যদিও এটি সম্ভবত অনাকাঙ্ক্ষিত) দ্বারা বা তালিকা শেষ হওয়ার পরে অন্তর্নিহিত শূন্যগুলির সাথে সীমাবদ্ধ তালিকা দ্বারা প্রতিনিধিত্ব করা যেতে পারে।

বহুবর্ষ এবং সসীম তালিকার মূল পার্থক্য হ'ল তালিকার শেষে একটি শূন্য যুক্ত করা তালিকা পরিবর্তন করবে:

তালিকাসমূহ

বহুবর্ষের শেষে শূন্য যুক্ত করার পরে এর মান পরিবর্তন হয় না:

Polynomials

সুতরাং যদি আপনার ফাংশনটি ইনপুট হিসাবে বহুবর্ষের প্রতিনিধিত্ব করে একটি সীমাবদ্ধ তালিকা গ্রহণ করে তবে একটি শূন্য যুক্ত করা উচিত তার ফলাফল পরিবর্তন করা উচিত নয়।

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

সামনে বা পিছনে

প্রথম ক্ষেত্রে, তালিকার শেষে জিরো যুক্ত করার ফলে ফলাফল পরিবর্তন করা উচিত নয়; দ্বিতীয় ক্ষেত্রে তালিকার সামনের অংশে শূন্য যুক্ত করার ফলে ফলাফলটি পরিবর্তন করা উচিত নয়।

অবশ্যই যদি আপনার ভাষা বহুবচন সমর্থন করে তবে আপনি সেগুলি ইনপুট হিসাবে নিতে পারেন।

আউটপুটটি কোনও মানক পদ্ধতির মাধ্যমে একটি অ-নেতিবাচক পূর্ণসংখ্যার আউটপুট হওয়া উচিত।


এটি তাই উত্তরগুলি বাইটে স্কোর করা হবে, কম বাইট আরও ভাল।


কি []বা [0]একটি বৈধ ইনপুট?
জংহওয়ান মিন

1
@ জংহওয়ানমিন হ্যাঁ, উভয়ই হ'ল, তারা শূন্যের বহুপদী।
গম উইজার্ড

আমি জানি আপনি জিরোকে বিভক্ত করার জন্য 1 বোঝাতে চেয়েছেন তবে কিছু উপায় কার্যকর হতে পারে এবং এটি ভাল বলে মনে হয় না ...
l4m2

1
@ l4m2 আমি দুঃখিত, তবে আমি আপনার কোনও মন্তব্য বুঝতে পারছি না। আপনার প্রশ্ন যতদূর যায়, জিরোকে কী নিয়ে নেতৃত্ব দিচ্ছেন? বহুপদী, গুণফল? আমি নিশ্চিত নই যে আপনি "জিরো লিখিত নেই" দ্বারা কী বোঝাতে চেয়েছেন।
গম উইজার্ড

1
চিত্রগুলি কি আসলেই প্রয়োজনীয় (যেমন তাদের সমৃদ্ধ পাঠ্য ব্যবহার করে প্রতিনিধিত্ব করা যায় না) ??? কারণ চিত্র দেখার ক্ষমতা না থাকা লোকেরা আপনার চ্যালেঞ্জকে পুরোপুরি দেখতে পাবে না।
মাইন্ডউইন

উত্তর:


6

জেলি , 8 বাইট

BFṢḄæ«ÆẸ

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

বাম উল্টো, 5 বাইট

Bċ0ÆE

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

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

BFṢḄæ«ÆẸ  Main link. Argument: A (array)

B         Binary; convert each integer in A to base 2.
 F        Flatten; concatenate the resulting binary arrays.
  Ṣ       Sort the resulting bit array.
   Ḅ      Convert from base 2 to integer, yielding an integer x with as much set
          bits as there are set bits in A.
      ÆẸ  Unexponents; convert A = [a1, a2, ...] to y = (p1**a1 + p2**a2 + ...),
          where pn is the n-th prime number.
          By the fundamental theorem of arithmetic, the resulting integer is unique
          for each array A without trailing zeroes.
    æ«    Bitshift left; compute x * 2**y.

6

ওল্ফ্রাম ভাষা (গণিত) , 36 20 বাইট a

x#/.x->2^(#/.x->2)!&

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

ইনপুট হিসাবে বহুপদী f (x) নেয়। Y * f (y) এর মূল্যায়ন করে, যেখানে y = 2 ^ (f (2)!)। আফসোস, এর অর্থ এই যে আউটপুটগুলি বেশ বড় আকার ধারণ করে।

Y * f (y) মূল্যায়ন 1-বিটের সংখ্যা সংরক্ষণ করবে যখনই y যে কোনও সহগের চেয়ে 2 টির বড় হবে, যা উপরে নির্বাচিত মানটির জন্য সত্য। ফলাফলটি ইনজেকশন হিসাবে তৈরি করতে আমরা y = 2 ^ (f (2)!) নির্বাচন করি:

  • Y এর একই মান সহ দুটি পৃথক ইনপুট বিভিন্ন আউটপুট দেবে কারণ আমরা বেস y তে মূলত দুটি পৃথক সংখ্যা পড়ছি।
  • যদি আমরা k = f (2) এবং তাই y স্থির করি তবে y * f (y) এর সর্বনিম্ন মান অর্জন করা হয় যখন ইনপুটটি কে এর সমান ধ্রুবক বহুপদী হয় এবং যখন ইনপুটটি বেস প্রদান করে তখন বহুল সংখ্যা হয় -২ এর বিস্তৃতি। প্রথম ক্ষেত্রে, y * f (y) = 2 ^ (k!) * K, এবং দ্বিতীয় ক্ষেত্রে, y * f (y) <2 ^ (কে! * সিল (এলজি কে)), যা কম 2 than ((কে + 1) এর চেয়ে বেশি!) * (কে + 1)।
  • ফলস্বরূপ, f এবং 2 (<) <g (2) সহ দুটি বহুবর্ষের জন্য, আমরা চ থেকে প্রাপ্ত পূর্ণসংখ্যাটি জি থেকে প্রাপ্ত পূর্ণসংখ্যার চেয়ে কম হবে।

5

ওল্ফ্রাম ভাষা (গণিত) , 61 বাইট matic

Tr[2^((2#2-1)2^#)&@@@Position[Reverse/@#~IntegerDigits~2,1]]&

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

একটি ধনাত্মক পূর্ণসংখ্যায় দুটি ধনাত্মক পূর্ণসংখ্যা ম্যাপ করা যায়। a, bদুটি ধনাত্মক পূর্ণসংখ্যা হওয়া যাক । তারপরে a, b -> (2a - 1) 2^(b-1)এনএক্সএন থেকে এন তে একটি বাইজেকশন is

এই ফাংশনটি 1ইনপুট (1 স্থান থেকে) সমস্ত বিটের অবস্থান সন্ধান করে এবং প্রতিটি অবস্থানে উপরের মানচিত্রের ইনজেকশন-কেবল বৈকল্পিক প্রয়োগ করে। তারপরে, প্রতিটি ফলস্বরূপ সংখ্যা দুটি এর শক্তিতে উত্থাপিত হয় এবং সমস্ত সংখ্যা একসাথে যুক্ত হয় (যেহেতু আমরা একটি ইনজেকশন এনএক্সএন -> এন মানচিত্র প্রয়োগ করেছি তাই ঠিক আছে)।

উদাহরণ স্বরূপ:

{1, 2, 3}
{{1}, {1, 0}, {1, 1}}             (* Convert to binary *)
{{1}, {0, 1}, {1, 1}}             (* Reverse each *)
{{1, 1}, {2, 2}, {3, 1}, {3, 2}}  (* Position of 1s *)
{2, 12, 8, 24}                    (* Inject to N *)
{4, 4096, 256, 16777216}          (* Raise to the power of 2 *)
16781572                          (* Add *)

বিপরীত ফাংশন (124 বাইট)

##+#&~Fold~#&@*Reverse/@Normal@SparseArray[{Log2[j=#~BitAnd~-#],(#/j+1)/2}->1&@@@(Reverse[#~IntegerDigits~2]~Position~1-1)]&

ইনজেকটিভিটির পরীক্ষার জন্য এখানে একটি বিপরীত ফাংশন।

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


5

পাইথন 2 , 118 117 114 103 100 বাইট

জোনাথন ফ্রেচের 100 বাইট:

a=input()
while a[0]<1:a.pop(0)
y="".join("2"+bin(v)[2:]for v in a)
print~-2**y.count("1")<<int(y,3)

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

একটি গল্ফ সম্ভাবনা সহ 103 বাইট 1

a=input()
while a[0]<1:a.pop(0)
x="".join(map(bin,a))
print~-(1<<x.count("1"))<<int(x.replace(*"b2"),3)

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

-15 বাইট জোনাথন ফ্রেচের জন্য ধন্যবাদ

এটি এমন একটি সংখ্যা তৈরি করে যা প্রথমে "অন বিটস" এবং তারপরে অ্যারেটির অবিচ্ছিন্ন উপস্থাপনা ট্রাইনারি সংখ্যা হিসাবে ব্যাখ্যা করা হয়।

ট্রাইনারি সংখ্যাটি সংখ্যাগুলি বাইনারি স্ট্রিংগুলিতে রূপান্তর করে তৈরি করা হয় ( 0bNNN), তারপরে প্রতিস্থাপন bকরে 2

1 আমি এর পরিবর্তে একটি বেস -১২ সংখ্যাতে রূপান্তর করে ১৪ বাইট সংরক্ষণ করতে পারতাম, তবে টিআইও স্মৃতিশক্তি হারিয়েছে তাই আমি এটি ব্যবহার করার সিদ্ধান্ত নিয়েছি।



1

05 এ বি 1 ই , 14 বাইট

gÅpImPoIbS{2β*

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

ডেনিসের জেলি সমাধান হিসাবে একই ফলাফলের ফলন দেয়, তবুও কৌশলটি কিছুটা আলাদা।

কিভাবে?

আসুন ইনপুটটি চেষ্টা করুন [1, 2, 3]:

gÅpImPoIbS{2β* | Full program.
               | STACK: [[1, 2, 3]]
               |
g              | Push the length.
               | STACK: [3]
 Åp            | Generate the first N primes.
               | STACK: [[2, 3, 5]]
   Im          | Push the input, and apply pairwise exponentiation.
               | STACK: [2, 9, 125]
     P         | Push the product.
               | STACK: 2250
      o        | Push 2 ** N.
               | STACK: 2 ** 2250 (way too large)
       Ib      | Push the input and convert to binary.
               | STACK: [2 ** 2250, ['1', '10', '11']].
         S{    | Sort all the characters.
               | STACK: [2 ** 2250, ['0', '1', '1', '1', '1']]
           2β  | Convert from binary.
               | STACK: [2 ** 2250, 15]
             * | Multiplication.
               | STACK: [2 ** 2250 * 15]
               | Implicitly print the top of the stack (2 ** 2250 * 15).


0

জাভাস্ক্রিপ্ট 6, 96 83 বাইট

x=>(t=x.map(k=>(x[0]+=k)&&2+k.toString(2)).join``).replace(/0|2/g,'')+'0'.repeat(t)

একটি বাইনারি এক্সপ্রেশন আউটপুট

([1,2]) => 3*2^21210(Decimal)
([0,1,2]) => 3*2^21210
([1,2,0]) => 3*2^2121020
([1,2,3,4]) => 31*2^212102112100(Threotically)

শূন্য শূন্যটি শূন্যের প্রতিনিধিত্ব করবে
l4m2

replace(/0|2/g,0)কাজটি মনে হয় তবে ডিকোড করা আরও শক্ত
l4m2

সম্পর্কে নিশ্চিত না x=>(t=x.map(k=>(x[0]+=k)&&2+k.toString(2)).join``).replace(/2/g,'0'.repeat(t))। ঠিক আছে মনে হচ্ছে তবে প্রমাণ করতে পারে না
l4m2
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.