একে অপরের পাশে পর পর দুটি কোনও পূর্ণসংখ্যার ছাড়াই একটি ক্রম দিন


18

চ্যালেঞ্জ

একটি পূর্ণসংখ্যা n ≥ 4 প্রদান করে, সংখ্যার এক ক্রমবৃদ্ধি আউটপুট করুন [0, n-1] এমন সম্পত্তি দিয়ে যে কোনও পর পর দুটি পূর্ণসংখ্যার (নিখুঁত পার্থক্য 1 সহ পূর্ণসংখ্যা 1) একে অপরের পাশে থাকে না।

উদাহরণ

  • 4[1, 3, 0, 2]
  • 5[0, 2, 4, 1, 3]
  • 6[0, 2, 4, 1, 3, 5]
  • 7[0, 2, 4, 1, 5, 3, 6]

আপনি এর পরিবর্তে 1-ইনডেক্সিং ব্যবহার করতে পারেন ( [0, n-1] এর পরিবর্তে পূর্ণসংখ্যার [1, n] ব্যবহার করে )।

আপনার কোডটি অবশ্যই বহুপক্ষীয় সময়ে এন-তে চলতে হবে , যাতে আপনি সমস্ত ক্রমবিন্যাস চেষ্টা করতে পারবেন না এবং প্রতিটি পরীক্ষা করতে পারবেন না।


আপনি যখন "আউটপুট একটি অনুগমন" বলছেন, আপনি কি তালিকা হিসাবে বোঝাচ্ছেন? বা আমরা এমন কোনও ফাংশন তৈরি করতে পারি যা পেরেকের ম্যাপিং নিজেই প্রয়োগ করে?
xnor

@ xnor এটি কিছু মানব পাঠযোগ্য আকারে আউটপুট করা উচিত। আমি ঠিক কিভাবে যত্ন না।
আনুশ

চান [[1,3],[0,2]]একটি গ্রহণযোগ্য আউটপুট ফরম্যাট হবে?
শেগি

@ শেগি এটি দুর্দান্ত নয়। এর অর্থ কি 1,3,0,2?
আনুশ

উত্তর:


31

জেলি , 3 2 বাইট

ḂÞ

[1, ..., n] এ তাদের এলএসবি দ্বারা পূর্ণসংখ্যাগুলি সাজান।

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


কি দারুন! ওটা আশ্চর্যজনক.
আনুশ

2
"এলএসবি অনুসারে বাছাই করুন" এর অর্থ হ'ল প্রতিটি অন্যান্য শুরুতে চলে যায়, তবে জেলির সংজ্ঞাটির কি প্রতিটি অর্ধেকের সংখ্যাগুলি তাদের মূল ক্রমে থাকা প্রয়োজন? যদি না হয়, তবে 100 (4) 101 (5) এর পরেও হতে পারে এবং এখনও "এলএসবি দ্বারা বাছাই করা" যেতে পারে। আপনার কোডটিকে দোষ দিচ্ছেন না, তবে সম্ভবত বর্ণনার মন্তব্যটি সম্পূর্ণ নয়?
ডাব্লুগ্রোলাউ

1
@ ডাব্লুগ্রোলাও হ্যাঁ, Þস্থিতিশীল সাজান, কারণ এটি পাইথন sortedফাংশনটি ব্যবহার করে প্রয়োগ করা হয়েছে , এটি স্থিতিশীল হওয়ার গ্যারান্টিযুক্ত
ব্যবহারকারী 202729

3
অ্যালগরিদম তার চতুরতায় ছোট আকারের চেয়ে আমার কাছে আরও চিত্তাকর্ষক। আপনিও ধরতে পারেন, বিট অর্ডারটি বিপরীত করতে পারেন, বাছাই করতে পারেন এবং এটিকে আবার বিপরীত করতে পারেন।
ডাব্লুগ্রোলাও

4
কেবল 65536 বিভিন্ন দুটি বাইট জেলি প্রোগ্রাম থাকতে পারে। এটি আশ্চর্যজনক যে এতগুলি পিপিসিজি চ্যালেঞ্জের উত্তর হতে পারে।
আনুশ


8

পাইথন 3 , 40 , 38 বাইট

lambda n:[*range(1,n,2),*range(0,n,2)]

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

এটি O(n)সময়মতো চলে।

2 বাইট সংরক্ষণের জন্য ডেনিসকে ধন্যবাদ!


দ্রুততম পুরষ্কার বিজয়ী! :)
আনুশ

দ্রুততম চলমান, বা প্রথম পোস্ট?
ডাব্লুগ্রোলাও

2
@WGrolau প্রথম পোস্ট করেছেন।
ব্যবহারকারী 202729


6

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

f হ'ল n এর একটি ক্রিয়া যা যথাযথভাবে অর্ডার করা তালিকাকে দেয়। আমি 1-ইনডেক্সিং বিকল্পটি ব্যবহার করছি।

f n=[2,4..n]++[1,3..n]

6

অক্টাভা , 17 বাইট

@(x)[2:2:x,1:2:x]

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

এটি অন্যান্য অনেকের মতো একই পদ্ধতির ব্যবহার করে। দুটি ভেক্টরকে সংঘবদ্ধ করুন, যার মধ্যে অন্তর্ভুক্ত ব্যাপ্তি 2 ... x এর সমস্ত সমান সংখ্যার একটি এবং সমেত পরিসীমা 1 ... x এর সমস্ত বিজোড় সংখ্যা । বাক্য গঠনটি মোটামুটি সুস্পষ্ট হওয়া উচিত, তাই আমি এটি ব্যাখ্যা করব না।


1
নয় 3এবং 2একে অপরের প্রতি পাশে f(4)?
pajonk

উফ ... স্থির একই বাইট গণনা। :-)
স্টিভি গ্রিফিন

5

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

f=
n=>[...Array(i=n)].map(_=>(i+--i)%(n|1))
<input type=number min=4 oninput=o.textContent=f(+this.value).join`\n`><pre id=o>

সম্পাদনা: @ আরনাউল্ডকে ধন্যবাদ 1 বাইট সংরক্ষিত


5

গাইয়া , 2 বাইট

r∫

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

এই কেবল (স্থিতিশীল) সীমার মধ্যে পূর্ণসংখ্যার orts [1, ইনপুট] তাদের PA দ্বারা ity।


জেলির মতো একই মন্তব্য: আলগোরিদম বা ভাষার সংজ্ঞা কি গ্যারান্টি দেয় যে দুটি অর্ধেকেরই তাদের মূল ক্রমে থাকবে?
ডাব্লুগ্রোলাও

@ ডব্লিউগ্রোলাও হ্যাঁ, গাইয়ায়, বাছাই করা মেটা-অপারেটর স্থিতিশীল।
মিঃ এক্সকোডার

5

আর , 39 36 35 বাইট

function(x)c(seq(2,x,2),seq(1,x,2))

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


বিজোড় সংখ্যাগুলির জন্য একটি পিছনে এনএ রয়েছে।
জেসি


স্ত্রীর দোষ। আমি এটি ঠিক করার আগে আমাদের বাইক যাত্রায় যেতে হয়েছিল। তবে আপনি কিছু বাইটও শেভ করেছেন।
এনজিএম

হ্যাঁ আপনাকে বাইট যুক্ত করতে বললে আমার খারাপ লাগছিল তাই আমাকে কিছু অপসারণের উপায় খুঁজে বের করতে হয়েছিল ... এটি ভালভাবে কার্যকর হয়েছিল।
জেসি


4

05 এ বি 1 , 3 বাইট

ডিজেএমসিমেহেমের পাইথন উত্তর এবং ডেনিসের জেলি উত্তর বন্দর

ÝΣÉ

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

কিভাবে?

ÝΣÉ - implicitly take input onto stack  e.g. 7
Ý   - pop a and push range(a)               [0,1,2,3,4,5,6]
 Σ  - sort by (stable):
  É -   is even? (x%2==0 ?)                 [1,3,5,0,2,4,6]
    - implicit print of top of stack

4

জাপট, 4 বাইট

আপনি একটি পৃথক অর্ডার পেতে uসঙ্গে প্রতিস্থাপন করতে vপারে।

õ ñu

চেষ্টা করে দেখুন

অথবা, যদি আমরা 2 টি অ্যারের আউটপুট করতে পারি:

õ ó

চেষ্টা করে দেখুন


প্রযুক্তিগতভাবে দ্বিতীয়টি কমা দ্বারা পৃথক করা সংখ্যার একটি তালিকা আউটপুট দেয় ;-) দু'জনেই 4দুর্ভাগ্যক্রমে ব্যর্থ হয় ; আপনি পরিবর্তন করে প্রথম এক ঠিক করতে পারবো uকরার vবা oকরতে õ
ETH প্রোডাকশনগুলি

3

গণিত, 50 -> 47 -> 42 বাইট

p = Join[Range[2, #, 2], Range[1, #, 2]] &

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

ব্যবহারকারীর জন্য ধন্যবাদ 202729 দ্বিগুণ অপ্টিমাইজেশান সম্ভাবনা দেখানোর জন্য []] ফ্ল্যাটেনের অন্তর্নির্মিত [] শুদ্ধ ফাংশন ব্যবহার করার জন্য।

আমি দুটি মন্তব্য যোগ করতে চাই।

1) অনুরূপ এন ওপি হিসাবে এন> = 4 এর জন্য কোনও পতন বা উত্থানের ধারাবাহিকতা ছাড়াই একটি নির্দিষ্ট ক্রমানুসারে নির্মাণ করা মোটামুটি সরল।

এটি পরপর দুটি তালিকা নিয়ে গঠিত।

এমনকি এন এর জন্য: তালিকা
1 = (2,4, ..., এন / 2) তালিকা 2
= (1,3, ..., এন / 2-1)

বিজোড় n এর জন্য আমাদের রয়েছে: তালিকা
1 = (2,4, ..., তল [n / 2])
= (1,3, ..., তল [এন / 2])

এই "অ্যালগরিদম" এর জন্য কেবল একটি সিদ্ধান্ত নিতে হবে (এন সম বা বিজোড়), বাকি কেবল এন সংখ্যাগুলি লিখে রাখা হচ্ছে।

শীর্ষে একটি সম্ভাব্য গণিত সমাধান সরবরাহ করা হয়।

2) একটি সম্পর্কিত প্রশ্ন হ'ল এন এর ক্রিয়াকলাপ হিসাবে এরকম কতগুলি অনুমান রয়েছে।

গণিত, 124 বাইট

a[0] = a[1] = 1; a[2] = a[3] = 0;
a[n_] := a[n] = (n + 1)*a[n - 1] - (n - 2)*a[n - 2] - (n - 5)*a[n - 3] + (n - 3)*a[n - 4]

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

উদাহরণ:

a[#] & /@ Range[4, 12]

{2, 14, 90, 646, 5242, 47622, ​​479306, 5296790, 63779034}

এই জাতীয় অনুমতি সংখ্যা গণনা একটি মান সমস্যা।

এন = 4 এর জন্য এখানে 2: {4 2,4,1,3}, {3,1,4,2}

এন = 5 এর জন্য 14 রয়েছে: {{1,3,5,2,4}, {1,4,2,5,3}, {2,4,1,3,5}, {2,4, 1,5,3}, {2,5,3,1,4}, {3,1,4,2,5}, {3,1,5,2,4}, {3,5,1, 4,2}, {3,5,2,4,1}, {4,1,3,5,2}, {4,2,5,1,3}, {4,2,5,3, 1}, {5,2,4,1,3}, {5,3,1,4,2}}

এই অনুমতিগুলির একটি (এন) এর সংখ্যাটি দ্রুত বৃদ্ধি পায়: 2, 14, 90, 646, 5242, 47622, ​​479306, 5296790, 63779034, ...

বৃহত n এর জন্য অনুপাত a (n) / n! মনে হয় সীমাটি 1 / e ^ 2 = 0.135335 এর কাছে পৌঁছেছে ... আমার কাছে কোনও কঠোর প্রমাণ নেই তবে এটি সংখ্যাগত প্রমাণ থেকে অনুমান মাত্র। আপনি অনলাইনে প্রোগ্রামটি চালানোর চেষ্টা করে এটি পরীক্ষা করতে পারেন।

উপরের প্রোগ্রাম (নীচে দেওয়া রেফারেন্সের ভিত্তিতে) এই সংখ্যাগুলি গণনা করে।

আপনি OEIS: A002464- এ প্রাসঙ্গিক ক্রমটিতে আরও তথ্য পেতে পারেন । হার্টজস্প্রংয়ের সমস্যা: এন-এক্স-বোর্ড বোর্ডে এন-আক্রমণকারী রাজাদের সাজানোর উপায়, প্রতিটি সারি এবং কলামে 1 দিয়ে। ক্রমবর্ধমান বা পতন ছাড়াই দৈর্ঘ্যের এনের ক্রম সংখ্যা।


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

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

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

যে কোনও লিঙ্ক ব্যবহার করে তৈরি করা যেতে পারে [some text](the_link)। বিশেষত "এটি চেষ্টা করুন অনলাইনে" লিংকের জন্য, আমাদের নিজস্ব @ ডেনিস দ্বারা পরিচালিত ওয়েবসাইটটি https://tio.run/ ওয়েবসাইটটিতে সমস্ত ধরণের প্রোগ্রামিং ভাষার লিঙ্ক রয়েছে। ওল্ফ্রাম ল্যাঙ্গুয়েজ (ম্যাথমেটিকা) তাদের মধ্যে একটি। শীর্ষে আপনি তারপরে কোডটি চালানোর জন্য প্লে বাটনে ক্লিক করতে পারেন বা "অনলাইনে এটি চেষ্টা করে দেখুন" অনুলিপি করতে হাইপারলিংক বোতামটি ক্লিক করতে পারেন। (markup-) লিঙ্ক। এবং আপনি একটি বা একাধিক পরীক্ষার কেস মুদ্রণের জন্য prettyচ্ছিক শিরোনাম / পাদচরণ সহ আপনার কোডটিকে আসল "কোড" (আপনার জমা দেওয়া) হিসাবে বিভক্ত করতে পারেন।
কেভিন ক্রুইজসেন

আমার কিছুটা কথায় কথায় কথায় কথায় কথায় কথায় কথায় কথায় কথায় ক্ষমা জানাচ্ছি! উত্তরটি পর্যালোচনা সারিতে হাজির হয়েছিল এবং ফর্ম্যাটের কারণে আমি কোডটি লক্ষ্য করিনি। নতুন ব্যবহারকারীরা এর প্রকৃত উত্তর না দিয়ে চ্যালেঞ্জের জন্য "আকর্ষণীয় পর্যবেক্ষণ" পোস্ট করার বিষয়টি অস্বাভাবিক নয়। এটি ভাল বিশ্বাসের সাথে করা অবস্থায়, সাইটটি কী তা নয়। আমি ভেবেছিলাম এটি এমন উত্তর ছিল। আপনার মন্তব্যে আমার প্রতিক্রিয়া জানানো উচিত ছিল, তবে আমি তাড়াহুড়ো করেছিলাম এবং একটি নতুন মন্তব্য লিখতে পারি না, তাই পরিবর্তে আমি কেবল পুরানোটি সরিয়ে ফেললাম। দুঃক্ষিত! এবং সাইটে আপনাকে স্বাগতম! আমি আশা করি আপনি কাছাকাছি থাকবেন! :)
স্টিভি গ্রিফিন



2

সাদা ব্যবধান , 161 বাইট

এখানে অফিশিয়াল, নিঃশর্ত জমা দেওয়া: অনলাইনে চেষ্টা করে দেখুন!

push_0   
read_n	
		push_0   
retreive_n			push_1  		
subtract	   dup_and_out[ 
 	
 	]label_s'
   
'push_2  		 
subtract	   dup[ 
 ]jump_next_if_neg:
		  
:dup_and_out[ 
 	
 	]else_jump_back:
 
 
:label_ss'
    
'push_0   
retreive_n			push_2  		 
subtract	   dup_and_out[ 
 	
 	]dup[ 
 ]jump_next:
 
    
:label_ssss'
      
'push_2  		 
subtract	   dup[ 
 ]jump_end_if_neg:
		   
:dup_and_out[ 
 	
 	]else_jump_back:
 
    
:label_sss'
     
'end



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

আমি কয়েকটি বাইট ত্যাগ করেছি যাতে প্রোগ্রামটি কোনও ত্রুটি ছাড়াই সম্পাদন করতে পারে, আমি বিশ্বাস করি যে আমি প্রায় 7-8 বাইট হারাতে পারি এবং এটি এখনও সঠিকভাবে আউটপুট পাবে, তবে এটি ত্রুটির বার্তাগুলিও বহন করবে এবং কেউ এটি চায় না।

পূর্ণ বাইট ব্যাখ্যা:

[Space][Space][Space][N]                   Push a 0 on the stack
[Tab][Tab][N][Tab][Tab][Tab][Tab]          Read input value and store in heap
[Space][Space][Space][N]                   Push a 0 on the stack again
[Tab][Tab][Tab]                            Retrieve the value from the heap
[Space][Space][Tab][Tab][N]                Push a -1 on the stack
[Tab][Space][Space][Space]                 Add -1 to value
[Space][N][Space]                          Duplicate 
[Tab][N][Space][Tab]                       Output
[N][Space][Space][Space][N]                Set First Label
[Space][Space][Tab][Tab][Space][N]         Push a -2 on the stack
[Tab][Space][Space][Space]                 Subtract 2 from value
[Space][N][Space]                          Duplicate
[N][Tab][Tab][Space][Space][N]             If negative, jump to second label
[Space][N][Space]                          Duplicate
[Tab][N][Space][Tab]                       Output
[N][Space][N][Space][N]                    Jump back to first label
[N][Space][Space][Space][Space][N]         Set Second Label
[Space][Space][Space][N]                   Push a 0 on the stack
[Tab][Tab][Tab]                            Retrieve input value from heap again
[Space][Space][Tab][Tab][Space][N]         Push a -2 on the stack
[Tab][Space][Space][Space]                 This time, Add a -2 to the value
[Space][N][Space]                          Duplicate
[Tab][N][Space][Tab]                       Output
[Space][N][Space]                          Duplicate
[N][Space][N][Space][Tab][N]               Jump to third label
[N][Space][Space][Space][Tab][N]           Set third label
[Space][Space][Tab][Tab][Space][N]         Push a -2 on the stack
[Tab][Space][Space][Space]                 Subtract 2 from value
[Space][N][Space]                          Duplicate
[N][Tab][Tab][Space][Space][Space][N]      Jump to end if negative
[Space][N][Space]                          Duplicate
[Tab][N][Space][Tab]                       Output
[N][Space][N][Space][Tab][N]               Jump back to third label
[N][Space][Space][Space][Space][Space][N]  Set fourth label/end
[N][N][N]                                  Terminate

গলফ কিছু জিনিস: push_0, read_STDIN_as_int, push_0, retrieveহতে পারে push_0, duplicate_0, read_STDIN_as_int, retrieveএকটি বাইট সংরক্ষণ করুন। এবং প্রথম লেবেলের NSSNপরিবর্তে খালি একটি হতে পারে NSSSN(এবং তারপরে দ্বিতীয় লেবেল হতে পারে NSSSN; তৃতীয় NSSTN; এবং চতুর্থ NSSSSN)। এটির পাশাপাশি 8 টি বাইট সংরক্ষণ করা উচিত। এছাড়াও, আপনি প্রথমটি সরিয়ে ফেলতে পারেন Jump_to_third_labelকারণ এর Set_third_labelনিচে ইতিমধ্যে আপনার ডান দিক রয়েছে। মোট: 140 বাইট ; (বা মন্তব্য সহ: এটি অনলাইনে চেষ্টা করুন )) -3 বাইট আপনি NNNপ্রস্থানটি সরিয়ে ফেললে।
কেভিন ক্রুইজসেন


1

গোল> <> , 14 বাইট

FL:2%Z}:3=?$|B

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

সম্পূর্ণ প্রোগ্রাম এবং এটি কীভাবে কাজ করে তার উদাহরণ

1AGIE;GDlR~
FL:2%Z}:3=?$|B

1AG          Register row 1 as function G
   IE;       Take number input; halt on EOF
      GD     Call G and print the stack
        lR~  Empty the stack
             Repeat indefinitely

F           |   Repeat n times...
 L              Push loop counter (0..n-1)
  :2%Z}         If even, move to bottom of the stack
       :3=?$    If top == 3, swap top two
                  This is activated only once to make [2 0 3 1]
             B  Return


1

জাভা 8, 56 বাইট

n->{for(int i=n;i>0;)System.out.println((i+--i)%(n|1));}

@ নীল এর জাভাস্ক্রিপ্ট (ES6) উত্তর এর পোর্ট ।

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


পুরাতন 66 বাইট উত্তর:

n->{String[]r={"",""};for(;n-->0;)r[n%2]+=n+" ";return r[0]+r[1];}

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

ব্যাখ্যা:

n->{                  // Method with integer parameter and String return-type
  String[]r={"",""};  //  Result-Strings, both starting empty
  for(;n-->0;)        //  Loop in the range (n, 0]
    r[i%2]+=i+" ";    //   Append `i` and a space to one of the two result-Strings,
                      //   depending on if it is even (first) or odd (second)
  return r[0]+r[1];}  //  Return the two result-Strings appended to each other

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