একটি ডেভেনপোর্ট-সিনজেল সিকোয়েন্স তৈরি করুন


11

পটভূমি

একটি ডেভেনপোর্ট-শিনজেল ক্রম দুটি ধনাত্মক পূর্ণসংখ্যা পরামিতি dএবং n। আমরা প্রদত্ত প্যারামিটারগুলির জন্য সমস্ত ডেভেনপোর্ট-শিনজেল সিকোয়েন্সগুলির সেটটি নির্দেশ করব DS(d,n)

স্বাভাবিক সংখ্যার সব সিকোয়েন্স বিবেচনা 1করতে nসমেত, যা সন্তুষ্ট:

  • ধারাবাহিকতায় পরপর দুটি সংখ্যা অভিন্ন নয়।
  • এর চেয়ে বেশি দৈর্ঘ্যের কোনও উপসর্গ (অগত্যা ধারাবাহিকভাবে নয়) রয়েছে dযা দুটি পৃথক সংখ্যার মধ্যে পরিবর্তিত হয়।

Lএই জাতীয় ক্রমের সর্বাধিক দৈর্ঘ্য (প্রদত্ত dএবং n) বোঝাতে দিন । তারপরে, DS(d,n)দৈর্ঘ্য সহ এই জাতীয় ক্রমের সমস্ত সেট L

কিছু উদাহরণ সাহায্য করতে পারে। যাক d = 4, n = 3। এই সীমাবদ্ধতাগুলির সাথে দীর্ঘতম সম্ভাব্য ক্রমগুলি রয়েছে L = 8। সুতরাং নিম্নলিখিত একটি সদস্য DS(4,3):

[1, 2, 1, 3, 1, 3, 2, 3]

এখানে পরপর কোনও অভিন্ন সংখ্যা নেই এবং দৈর্ঘ্যের বিকল্প বিকল্পগুলি রয়েছে 4, তবে এর চেয়ে বেশি নয়:

 1  2  1           2
 1  2        1     2
 1        3  1  3
 1        3  1        3
    2     3        2  3
    2           3  2  3
       1  3  1  3
       1  3  1        3

নিম্নলিখিত উদাহরণ নাDS(4,3):

[1, 2, 2, 3, 1, 3, 2, 3]  # Two consecutive 2's.
[1, 2, 1, 3, 1, 3, 2, 1]  # Contains alternating subsequences of length 5.
[1, 2, 1, 3, 1, 3, 2]     # Longer valid sequences for d = 4, n = 3 exist.

আরও তথ্যের জন্য ম্যাথওয়ার্ল্ড এবং ওইআইএস এবং তাদের তালিকাভুক্ত রেফারেন্সগুলি দেখুন।

চ্যালেঞ্জ

দুটি ধনাত্মক পূর্ণসংখ্যা দেওয়া হয়েছে nএবং এতে dকোনও ডেভেনপোর্ট-শিনজেল ক্রম উত্পন্ন করুন DS(d,n)। নোট করুন যে এগুলি সাধারণত অনন্য নয়, সুতরাং কোনও একক বৈধ ফলাফল আউটপুট করুন।

আপনি STDIN (বা নিকটতম বিকল্প), কমান্ড-লাইন আর্গুমেন্ট বা ফাংশন আর্গুমেন্টের মাধ্যমে ইনপুট নিয়ে কোনও প্রোগ্রাম বা ফাংশন লিখতে পারেন, এবং ফাংশন থেকে ফলাফলটি ফেরত পাঠাতে বা এটি STDOUT (বা নিকটতম বিকল্প) এ মুদ্রণ করতে পারেন।

আপনি আউটপুট জন্য যে কোনও সুবিধাজনক, দ্ব্যর্থহীন স্ট্রিং বা তালিকার বিন্যাস ব্যবহার করতে পারেন।

এটি কোড গল্ফ, তাই সংক্ষিপ্ততম জমা (বাইটে) জিতেছে।

সিকোয়েন্স দৈর্ঘ্য

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

 \ 
 d\n 1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 
   \-----------------------------------------------------------
 1 | 1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1
 2 | 1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20
 3 | 1  3  5  7  9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39
 4 | 1  4  8 12 17 22 27 32 37 42 47 53 58 64 69 75 81 86 92 98
 5 | 1  5 10 16 22 29 ...
 6 | 1  6 14 23 34 ...
 7 | 1  7 16 28 41 ...
 8 | 1  8 20 35 53 ...
 9 | 1  9 22 40 61 ...
10 | 1 10 26 47 73 ...

আপনার সারণিতে অবশ্যই এই টেবিল থেকে কোনও তথ্য হার্ডকোড করা উচিত নয়।

1 এই টেবিলটি 1994-এর, সুতরাং সেই থেকে আরও বেশি অগ্রগতি হতে পারে তবে আমি সন্দেহ করি যে কোনও জমাটি এই টেবিলের এমনকি বৃহত্তর এন্ট্রিগুলিকেও যথাসময়ে পরিচালনা করতে সক্ষম হবে।

উত্তর:


2

পাইথন 2: 172

from itertools import*
d,n=input();S=[[1]]
for s in S:
 for v in range(1,n+1):
  if(v!=s[-1])*all(w[2:]!=w[:-2]for w in combinations(s+[v],d+1)):S.append(s+[v])
print S[-1]

ইনপুট কেবল বিন্যাসে 4, 3

আমি iteratively এই সব সিকোয়েন্স, যা দিয়ে শুরু তৈরি 1এবং দুই বৈশিষ্ট সন্তুষ্ট, এবং তাদের সঞ্চয় S। যেহেতু আমি এগুলিকে সাজানো ক্রমে তৈরি করেছি (দৈর্ঘ্যের অনুসারে বাছাই করা [এবং মানগুলি]), শেষ প্রবেশটি একটি ডেভেনপোর্ট-শিনজেল-সিকোয়েন্স হতে হবে। দুর্দান্ত সত্যটি ব্যবহার করে, আপনি কোনও তালিকার সাথে সংযোজন করার সময় পুনরাবৃত্তি করতে পারেন।


আপনি যদি ইতিমধ্যে পাইথন 2 ব্যবহার করে থাকেন তবে আপনি একটি ট্যাবে একত্র করে (যা আমি দুটি স্পেস হিসাবে ধরে নিচ্ছি) একত্র করে একটি বাইট সংরক্ষণ করতে পারেন। আমি ভুল হলে শুধরে.
জাকারি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.