ক্রসিং ক্রম


11

ক্রসিং সিকোয়েন্সস

ধনাত্মক পূর্ণসংখ্যা একটি তালিকা দেওয়া A, এটি একটি কল বৃদ্ধি ক্রম যদি প্রতিটি উপাদান এর চেয়ে বড় বা আগের সমান; এবং প্রতিটি উপাদান পূর্ববর্তীটির চেয়ে কম বা সমান হলে এটিকে ক্রমহ্রাসমান ক্রম বলুন।

কিছু ক্রমবর্ধমান ক্রম:

[1,2,4,7]
[3,4,4,5]
[2,2,2]
[]

কিছু ক্রম হ্রাস:

[7,4,2,1]
[5,4,4,3]
[2,2,2]
[]

একটি ক্রসিং ক্রম একটি তালিকা দুই টুকরো করা subsequences, এক একটি ক্রমবর্ধমান ক্রম এবং অন্যান্য হ্রাসকারী ক্রম মধ্যে পচে যেতে পারে।

উদাহরণস্বরূপ, তালিকা:

[3,5,2,4,1]

এটি একটি ক্রসিং ক্রম, যেহেতু এটিতে পচে যাওয়া যায়:

[3,    4  ]
[  5,2,  1]

যেখানে [3,4]ক্রমবর্ধমান উপসাগর এবং [5,2,1]হ্রাস পর্ব হ'ল। আমরা এই জাতীয় যুগকে (ক্রমবর্ধমান, হ্রাস করা) ক্রসিং ক্রমের ক্ষয়কে কল করব ।

ক্রমতালিকা:

[4,5,2,1,3]

ক্রসিং ক্রম নয়; এটিকে ক্রমবর্ধমান এবং হ্রাসকারী উপকূলে পরিণত করার কোনও উপায় নেই।

আপনার কাজ হ'ল একটি প্রোগ্রাম / ফাংশন লিখুন ইনপুট হিসাবে ইতিবাচক পূর্ণসংখ্যার একটি তালিকা; এবং যদি এটি ক্রসিংয়ের ক্রম হয় তবে দুটি তালিকাকে তার পচে যাওয়াগুলির মধ্যে একটিতে ফিরিয়ে দিন; বা কিছু ধারাবাহিক "ভুয়া" মান যদি তালিকাটি ক্রসিং ক্রম নয়।

এটি ; প্রতিটি ভাষার সংক্ষিপ্ততম প্রোগ্রাম / ফাংশনটি বিজয়ী।

নিয়মাবলী:

  • ইনপুট নমনীয়।
  • সাধারণ ফাঁকগুলি নিষিদ্ধ।
  • যদি ইনপুট পচন করার একাধিক বৈধ উপায় থাকে তবে আপনি সেগুলির একটি বা সমস্ত আউটপুট নিতে পারেন।
  • পচন জন্য আউটপুট বিন্যাস নমনীয়; তবে এটি অবশ্যই দুটি অনুচ্ছেদের মধ্যে পার্থক্য সম্পর্কে দ্ব্যর্থহীন হতে হবে।
  • ইনপুটটি ক্রসিং ক্রম নয় তা বোঝাতে আপনি কোনও সামঞ্জস্যপূর্ণ আউটপুট মান ব্যবহার করতে পারেন; যেহেতু এটি কোনও ক্রসিং সিকোয়েন্সের আউটপুটটির তুলনায় দ্ব্যর্থহীন as আপনার উত্তরের ক্ষেত্রে আপনার মিথ্যা মান নির্দিষ্ট করা উচিত।

পরীক্ষার কেস:

Falseঅ-ক্রসিং ক্রমগুলি নির্দেশ করতে ব্যবহার করা:

[3, 5, 2, 4, 1] => [3, 4], [5, 2, 1]
[3, 5, 2, 4, 4, 1, 1] => [3, 4, 4], [5, 2, 1, 1]

[7, 9, 8, 8, 6, 11] => [7, 8, 8, 11], [9, 6]
[7, 9, 8, 8, 6, 11] => [7, 9, 11], [8, 8, 6] # also valid
[7, 9, 8, 8, 6, 11] => [7, 8, 11], [9, 8, 6] # also valid

[7, 8, 9, 10, 20, 30] => [7, 8, 9, 20, 30], [10]
[7, 8, 9, 10, 20, 30] => [8, 9, 10, 20, 30], [7] # this is also valid

[5, 5, 5] => [5, 5, 5], []

[4, 5, 2, 1, 3] => False
[3, 4, 3, 4, 5, 2, 4] => False

2
সম্ভাব্য সদৃশ । আমি কেবল দুটি পার্থক্য দেখতে পাচ্ছি যে অন্য চ্যালেঞ্জটি ইনপুটটির দৈর্ঘ্যে বহুত্ববর্তী সময়ে চালানো উচিত, এবং দুটি উপকেন্দ্রের পরিবর্তে সত্যবাদী মানের অনুমতি দেয় (উপ-স্থানগুলি ফেরত দেওয়ার পরে তারা 20% বোনাস পাবেন)। এখনও আমার কাছে ডুপের মতো শোনাচ্ছে তবে আমি তা হাতুড়ি করব না।
কেভিন ক্রুইজসেন

কেভিন ক্রুইজসেন সময় সীমাবদ্ধতা সম্ভবত এটি নিজেই যথেষ্ট নয় এটিকে ডুপ করার জন্য নয়।
নিক কেনেডি

1
@ নিক কেনেডি সম্ভবত হ্যাঁ, এ কারণেই আমি এটি হাতুড়ি থেকে বিরত ছিলাম। :)
কেভিন ক্রুইজসেন

2
প্রস্তাবিত পরীক্ষা মামলা: [3, 5, 2, 4, 4, 1, 1]। বর্তমান পরীক্ষার কেসগুলি আপনাকে >=/ দিয়ে দূরে সরে যায় <, যখন এটি সত্যই >=/ হওয়া উচিত <=
গ্রিমি

1
@ আর্নল্ড: হ্যাঁ, এটি কোনও মান হতে পারে ("ভুয়া" বলতে কেবল এটিই বলা যায়: ইনপুটটি ক্রসিংয়ের ক্রম হয়)।
চ্যাস ব্রাউন

উত্তর:


1

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

2.Œ.ΔćRšεü@}W

এটি অনলাইনে চেষ্টা করুন বা সমস্ত পরীক্ষার কেসকে বৈধতা দিন

ব্যাখ্যা:

2.Œ                    # all partitions of the input in 2 subsequences
   .Δ                  # find the first partition such that the following gives 1
     ćRš               # reverse the first subsequence
        ε  }           # map each subsequence to
         ü@            # pairwise greater-than
            W          # minimum (1 if all 1s, 0 otherwise)


1

জাভাস্ক্রিপ্ট (ES6),  110 105  104 বাইট

[[decreasing], [increasing]]1

f=(a,n,b=[[],[]])=>a.some((v,i)=>[...x=b[i=n>>i&1]].pop()*(x.push(v),i-=!i)>v*i)?n>>a.length||f(a,-~n):b

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

কিভাবে?

আমরা একটি বিটমাস্ক এর সমস্ত মান চেষ্টা করিএন02এলএল

[0][1]আমিএন

1আমি=1-1আমি=0

[...x = b[i = n >> i & 1]].pop() * (x.push(v), i -= !i) > v * i

some() দেব এবং সমস্ত মানগুলি পাস হওয়ার সাথে সাথে , অর্থাত্ মিথ্যা।


1

হাস্কেল, 84 বাইট

(([],[])#)
(d,i)#(a:b)=(#b)=<<[(d++[a],i)|all(a<=)d]++[(d,i++[a])|all(a>=)i]
p#_=[p]

সমস্ত বৈধের একটি তালিকা ফেরত দেয় (decreasing,increasing) জোড়গুলির তালিকা বা খালি তালিকার মধ্যে যদি এরকম কোনও জুটি না থাকে।

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


1

পাইথন 3 , 109 107 বাইট

def f(l,i=[],d=[]):
 if l:s,*r=l;i and s<i[-1]or f(r,i+[s],d);d and s>d[-1]or f(r,i,d+[s])
 else:print(i,d)

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

ফাংশনটি স্ট্যান্ডার্ড আউটপুটে সমস্ত সম্ভাব্য পচনকে মুদ্রণ করে। যদি কোনও সম্ভাব্য পচন না হয় তবে কিছুই মুদ্রিত হয় না।

উন্নতির পরামর্শের জন্য @ শ্রীওচিলিজম ও'জাইককে ধন্যবাদ।


সাইটে স্বাগতম। আমি উভয় একটি বাইট সংরক্ষণ s<i[-1]না করে i[-1]>s এবং এর সাথে অনুরূপ করার পরামর্শ দিই d[-1]<s
অ্যাডহক গার্ফ হান্টার

পরামর্শের জন্য ধন্যবাদ. আমি উত্তর আপডেট করেছি। উত্তরগুলি প্রকাশের জন্য এখানে কোনও অনুলিপি-পকেটেবল টেম্পলেট আছে?
জোয়েল

আপনি কি বোঝাতে চাচ্ছেন তা আমি নিশ্চিত নই? টিআইওর একটি টেম্পলেট রয়েছে যা আপনি ইতিমধ্যে ব্যবহার করছেন বলে মনে হচ্ছে।
অ্যাডহক গার্ফ হান্টার

আমি কেবল টিআইওতে একটি লিঙ্ক তৈরি করেছি এবং আমার পোস্টে লিঙ্কটি যুক্ত করেছি। আমি সেখানে কোনও টেম্পলেট ব্যবহার করিনি। এটা কোথায়?
জোয়েল

1
@ জোয়েল - টিআইও পৃষ্ঠার শীর্ষে একটি আইকন রয়েছে যা দেখতে কিছু চেইন লিঙ্কের মতো দেখাচ্ছে। এটি ক্লিক করুন, এবং তারপরে আপনি বিকল্পগুলির একটি পৃষ্ঠা পাবেন। এর মধ্যে একটি হ'ল 'কোড গল্ফ সাবমিশন'। এটি আপনার কপিরাইট বাফারে ফর্ম্যাট করা স্টাফগুলি আপনার পছন্দমতো রাখবে! স্বাগতম, এবং দুর্দান্ত সমাধান!
চেস ব্রাউন

0

ব্র্যাচল্যাগ , 17 বাইট

;Ṣzpᵐz{ℕˢ}ᵐ≤₁ʰ≥₁ᵗ

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

এটি গল্ফ করার জন্য সম্ভবত যথেষ্ট জায়গা আছে।


2
আপনি এখানে আগেই এই চ্যালেঞ্জটির জবাব দিয়েছেন , যেখানে আপনি এটি 16 বাইটে করেছেন। ;)
কেভিন ক্রুইজসেন

আমি অনুভূতি ছিল অনুরূপ কিছু আমি কাজ শেষ করলেন ঝাঁকি পারে না, কিন্তু কিছু কারণে আমার মন সিদ্ধান্ত নিয়েছে তা হয়েছে ছিল এই পরিবর্তে
অসম্পর্কিত স্ট্রিং

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