সর্বজনীন পূর্ণসংখ্যার ক্রম তৈরি করুন


22

সংজ্ঞা

আসুন একটি (অসীম) পূর্ণসংখ্যার সিকোয়েন্সকে সর্বজনীন বলা যাক যদি এটিতে প্রতিটি সীমাবদ্ধ সংখ্যার সাথে একটি যথাযথ উপক্রম হিসাবে অন্তর্ভুক্ত থাকে।

অন্য কথায়, পূর্ণসংখ্যা ক্রম (ক 1 , একটি 2 , ...) যদি এবং কেবল যদি প্রতিটি সসীম পূর্ণসংখ্যা ক্রম জন্য সার্বজনীন (খ 1 , ..., খ এন ) , একটি অফসেট হয় যেমন যে (ক ট + 1 টি ,…, A কে + এন ) = (খ 1 ,…, বি এন )

উদাহরণস্বরূপ, ইতিবাচক প্রাথমিক সংখ্যাগুলির ক্রম সর্বজনীন নয়, নিম্নলিখিত কারণে অন্যগুলির মধ্যে among

  • এটিতে কোনও নেতিবাচক পূর্ণসংখ্যা, 1 , বা সম্মিলিত সংখ্যা নেই।

  • যদিও এটিতে 3 রয়েছে তবে এতে স্বতন্ত্র উপসর্গ (3, 3, 3) থাকে না

  • যদিও এতে 2 এবং 5 রয়েছে তবে এতে স্বতন্ত্র উপদ্বীপ (2, 5) থাকে না

  • যদিও এটিতে সামঞ্জস্যপূর্ণ উপদ্বীপ (,, ১১, ১৩) রয়েছে তবে এতে সংক্ষিপ্ত উপসর্গ (১৩, ১১,)) থাকে না

কার্য

যে কোনও একক সার্বজনীন পূর্ণসংখ্যার সিকোয়েন্সটি বেছে নিন (একটি 1 , একটি 2 ,…) এবং নীচের নিয়মগুলি মেনে আপনার পছন্দের প্রোগ্রামিং ভাষায় এটি প্রয়োগ করুন।

  • আপনি একটি সম্পূর্ণ প্রোগ্রাম বা একটি ফাংশন জমা দিতে পারেন।

  • আপনার কাছে আই / ও এর জন্য তিনটি বিকল্প রয়েছে:

    1. কোনও ইনপুট নিবেন না এবং মুদ্রণ করুন বা পুরো ক্রমটি ফিরিয়ে দিন।

    2. ইনপুট হিসাবে একটি সূচক এন নিন এবং মুদ্রণ করুন বা একটি এন ফেরত দিন ।

    3. ইনপুট হিসাবে একটি সূচক এন নিন এবং মুদ্রণ করুন বা ফিরে (একটি 1 ,…, একটি এন )

  • I / O বিকল্পগুলির 2 এবং 3 এর জন্য , আপনি যদি পছন্দ করেন তবে 0- ভিত্তিক সূচক ব্যবহার করতে পারেন ।

  • আপনার জমাটি অবশ্যই ডিটারমিনিস্টিক হতে হবে: একই ইনপুট দিয়ে একাধিকবার চালানো হলে অবশ্যই একই আউটপুট উত্পাদন করতে হবে।

তদ্ব্যতীত, এটি অবিলম্বে সুস্পষ্ট না হলে দয়া করে প্রমাণ করুন যে আপনি যে ক্রমটি বেছে নিয়েছেন তা সর্বজনীন। আপনার প্রমাণ অপ্রমাণিত অনুমানের উপর নির্ভর করতে পারে না।

স্ট্যান্ডার্ড বিধি প্রযোজ্য। বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জয় হোক!


আপনার প্রমাণ অপ্রমাণিত অনুমানের উপর নির্ভর করতে পারে না। আমি ভেবেছিলাম যে এটি নিহিত রয়েছে: পি
এরিক দ্য আউটগল্ফার

এবং আপনি কিভাবে একটি সংখ্যার একটি নম্বর সংরক্ষণ করবেন?
রোজলুপি

উত্তর:


13

কাস্তে , 5 বাইট

এটি একটি অসীম তালিকা মুদ্রণ করে

ΣṖ…ݱ

এটি অনলাইন চেষ্টা করুন! অথবা আপনার অনুক্রমের প্রথম সূচকটি সন্ধান করুন । (বেশিরভাগ সিকোয়েন্সের জন্য প্রচুর স্মৃতি লাগে)

ব্যাখ্যা:

   ݱ   Infinite list [1,-1,2,-2,3,-3,4,-4,5,-5...]
  …     Rangify       [1,0,-1,0,1,2,1,0,-1,-2,...]
 Ṗ      Powerset
Σ       Concatenate

ইন হুস্ক অসীম তালিকার জন্য দুর্দান্ত আচরণ করে। আপনি এটি এখানে আচরণ দেখতে পারেন


কীভাবে Qকাজ করে তা আপনি বিস্তারিতভাবে বলতে চাইবেন । (আমি মনে করি এটি পেয়েছি তবে আমি নিশ্চিত নই))
ডেনিস

@ ডেনিস জানতে পেরেছিলেন , আমি চেয়েছিলামQ
এইচ.পি.উইজ

9

পাইথন 2 , 49 46 43 বাইট

def f(n):d=len(`n`);return n/d**(n%d)%d-d/2

f(n)আয় একটি এন শুধুমাত্র। এটি উচ্চতর সংখ্যার একটি বের করার জন্য nবেসের ক্ষুদ্রতম dসংখ্যাটি ব্যবহার করে।

এটি অনলাইন চেষ্টা করুন! এই স্ক্রিপ্ট (ডেনিসের সৌজন্যে) যে কোনও সীমাবদ্ধ সিক্যুয়েন্স নিয়েছে এবং আপনাকে nসেই সিকোয়েন্সটি শুরু হওয়ার জায়গা দেয়।

ব্যাখ্যা

n/d**(n%d)%d-d/2
     (n%d)         least significant digit of n
n/d**(   )%d       get n%d-th digit of n
            -d/2   offset to get negative values

উদাহরণস্বরূপ, জন্য nসীমার মধ্যে 3141592650থেকে 3141592659, d=10এবং শেষের ডিজিটটি nনির্বাচন অন্যান্য ডিজিটের করুন। তারপর আমরা -d/2নেতিবাচক মান পেতে যোগ ।

n%d:       0  1  2  3  4  5  6  7  8  9
f(n)+d/2:  0  5  6  2  9  5  1  4  1  3
f(n):     -5  0  1 -3  4  0 -4 -1 -4 -2

স্বতন্ত্র বিকল্প, এছাড়াও 43 বাইট:

n=input();d=len(`n`);print n/d**(n%d)%d-d/2

আপনি len(`n`)পরিবর্তে ব্যবহার করতে পারেন len(str(n))
ডেনিস

ধন্যবাদ @ ডেনিস কারও যদি প্রয়োজন হয় তবে আমি আরও ব্যাখ্যা যুক্ত করতে পারি।
জাপা

আমি একটি ফাংশন লিখেছি যা একটি সীমাবদ্ধ সিকোয়েন্স দেওয়া আপনার সিকোয়েন্সিতে একটি অফসেট খুঁজে পায়। এটি অনলাইন চেষ্টা করুন!
ডেনিস

এটি খুব দুর্দান্ত।
হিস্টোক্র্যাট

খুশী হলাম। n=2**63-1প্রতিনিধিত্বটি Lসংযুক্ত হওয়ার পরে এটি কেবল উপরের দিকেই ভেঙে str(n)যাবে ( এটি প্রয়োজন হলে তিন বাইটের জন্য সম্বোধন করবে)।
জোনাথন অ্যালান

5

ব্র্যাচল্যাগ 2, 11 বাইট

≜~×-₂ᵐ~ȧᵐ≜∋

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

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

ব্যাখ্যা

ক্রমানুসারে সমস্ত সম্ভাব্য পূর্ণসংখ্যার চেষ্টা করে প্রোগ্রামটি শুরু হয় ( ডিফল্টরূপে পূর্ণসংখ্যার জন্য বাকি সমস্ত সম্ভাবনার চেষ্টা করে)। এটি 0, 1, -1, 2, -2 ইত্যাদি। (যদিও negativeণাত্মক পূর্ণসংখ্যা প্রোগ্রামের শেষে পৌঁছায় না)। এটি প্রোগ্রামটির একমাত্র "অসীম" পদক্ষেপ; অন্য সব সীমাবদ্ধ।

তারপরে পূর্ণসংখ্যার সমস্ত সম্ভাব্য কারণগুলি তৈরি করে, বিভিন্ন আদেশকে আলাদা হিসাবে বিবেচনা করে, এবং 2 থেকে উপরের মানগুলি ব্যবহার করে (সুতরাং কেবল চূড়ান্তভাবে অনেকগুলি থাকে); নোট করুন যে যৌগিক সংখ্যাগুলি কেবল প্রাইমসগুলিতেই নয়, অনুষঙ্গকে অনুমোদিত। এর অর্থ হল যে ক্রিয়াকলাপের সঞ্চালনের এক পর্যায়ে এই ধাপের মাধ্যমে পূর্ণসংখ্যার সমস্ত সম্ভাব্য ক্রম 2 generated 2 উত্পন্ন হবে (যেমন ক্রমটি অবশ্যই প্রয়োজনীয় কিছু পণ্য রয়েছে এবং সেই পণ্যটি প্রাথমিক পর্যায়ে কোনও এক সময়ে উত্পন্ন হবে )।

তারপরে আমাদের সমস্ত সংখ্যার ক্রমগুলির সেটগুলিতে সেই সিকোয়েন্সগুলির সেটটি ম্যাপ করতে হবে, যা দুটি ধাপে করা হয়: -₂প্রতিটি উপাদান ( ) থেকে 2 ( ) বিয়োগ করে , আমাদেরকে সমস্ত অণুগঠিত পূর্ণসংখ্যার অনুক্রমের সেট দেয়, তারপরে প্লাস বা বিয়োগ গ্রহণ করা হয় ( যেমন, "একটি মান যার পরম মান") প্রতিটি উপাদান ()। পরবর্তী পদক্ষেপটি স্পষ্টতই নন-নির্ধারিত, সুতরাং ব্র্যাচল্যাগ এটিকে জেনারেটর হিসাবে বিবেচনা করে, সমস্ত সম্ভাব্য তালিকা তৈরি করে যার উপাদানগুলি ইনপুট তালিকার সংশ্লিষ্ট উপাদানটি প্লাস বা বিয়োগ করে। এর অর্থ হ'ল আমাদের কাছে এখন সম্ভাব্য পূর্ণসংখ্যার সিকোয়েন্সগুলির জন্য একটি জেনারেটর রয়েছে এবং এটি সেগুলি এমনভাবে তৈরি করে যার অর্থ তারা সবাই উত্পন্ন হয় (বিশেষত, প্রতিটি আদেশের পরম মূল্য গ্রহণ করলে আপনি যে আদেশটি পান, প্রতিটিটিতে 2 যোগ করুন উপাদান এবং তারপরে ফলাফলের উপাদানগুলির ক্রম অনুসারে)।

দুর্ভাগ্যক্রমে, প্রশ্নটি একটি একক ক্রম চায়, অনুক্রমের অনুক্রম নয়, সুতরাং আমাদের আরও দুটি কমান্ডের প্রয়োজন। প্রথমে, ব্র্যাচল্যাগকে অনুরোধটি স্পষ্টভাবে সিক্যুয়েন্সের ক্রম উত্পন্ন করার জন্য অনুরোধ করলেন (এই পদ্ধতির মাধ্যমে উত্পন্ন সিকোয়েন্সের ধারণাটি বর্ণনা করে এমন একটি ডেটা স্ট্রাকচার তৈরির বিপরীতে, এবং প্রয়োজন পর্যন্ত যথাযথ ক্রমগুলি উত্পন্ন না করে); এটি উভয়ই এই ক্ষেত্রে প্রোগ্রামটিকে দ্রুততর করে তোলে এবং অনুরোধ করা ক্রমে আউটপুট উত্পাদিত হয়েছে তা নিশ্চিত করে। অবশেষে, জেনারেটরের একসাথে একের পৃথক সিকোয়েন্সগুলির উপাদানগুলি আউটপুট তৈরি করে তোলে (পূর্ববর্তী ক্রমের দিকে এগিয়ে যাওয়ার পরে এটি পূর্ববর্তী সমস্ত উপাদানগুলিকে আউটপুট দেয়)।

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


ais523… আপনি যে !?
6:43 এ ফল্টলাইজ করুন

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


4

পাইথন 2 , 100 99 বাইট

  • ওভ্সকে ধন্যবাদ একটি বাইট সংরক্ষণ করা ; itertoolsঅনির্দিষ্টকালের লুপের জন্য অন্তর্নির্মিতের উপরে পুনরাবৃত্তি করা ।
from itertools import*
for n in count():
 for P in permutations(range(-n,n)*n):
	for p in P:print p

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

অনির্দিষ্টকালের জন্য সমস্ত অ- nনেজিটিভ পূর্ণসংখ্যার [-n; n)জন্য বারবার পুনরাবৃত্তি পূর্ণসংখ্যার পরিসরের সমস্ত অনুমতি মুদ্রণ করে n
আপনি এই সংশোধিত সংস্করণটিk ব্যবহার করে যে কোনও উপসর্গের জন্য প্রথম অফসেট অনুসন্ধান করতে পারেন ।


while~0:। হিহে হি ...
চ্যাস ব্রাউন

99 বাইট ব্যবহার করছেitertools.count
ovs

@ovs ধন্যবাদ; অন্তর্নির্মিত সম্পর্কে জানতেন না।
জোনাথন ফ্রেচ

2

পার্ল 6 , 91 বাইট

loop (my$i=1;;$i++){my@n=(-$i..$i);my@m=@n;loop (my$k=1;$k <$i;$k++){@m=@m X@n;};print @m;}

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

অন্যান্য উত্তরগুলির সাথে এটি একই পদ্ধতি ব্যবহার করে। এটি কার্টেসিয়ান পণ্যগুলির উপাদানগুলি মুদ্রণের জন্য ব্যবহার করে (-1,0,1), এরপরে সমস্ত উপাদানের (-2,-1,0,1,2)জোড় জোড় যুক্ত করে, তারপরে সমস্ত উপাদানগুলিকে তিনটির অর্ডার করে (-3,-2,-1,0,1,2,3)ইত্যাদি print

আমি পার্লে নতুন, তাই আরও গল্ফিং হতে পারে যা করা যেতে পারে।

আরও পঠনযোগ্য সংস্করণ:

loop (my $i = 1; ; $i++) {
  my @n = (-$i..$i);
  my @m = @n;
  loop (my $k=1; $k <$i; $k++) {
    @m = @m X @n;
  }
  print @m;
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.