স্বচ্ছল একটি অ্যারে


12

সবাই নীড় তালিকা পছন্দ! তবে, কখনও কখনও নেস্টেড তালিকা তৈরি করা শক্ত hard আপনি যদি সিদ্ধান্ত নিতে পারেন যে আপনি এটি আরও গভীরভাবে বাসা বাঁধতে চান, বা যদি আপনাকে এটিকে নিচু করে বাসা বাঁধতে হয়। সুতরাং আপনার চ্যালেঞ্জের জন্য, আপনাকে অবশ্যই একটি তালিকা "স্বায়ত্তশাসিত" করতে হবে। একটি তালিকা স্বায়ত্তশাসিত করতে তালিকার প্রতিটি জোড়া আইটেমের তুলনা করুন।

  • দ্বিতীয় আইটেমটি যদি ছোট হয় তবে ক্লোজিং এবং খোলার মধ্যে বন্ধনী দুটি সন্নিবেশ করে দুটি উপাদান পৃথক করুন:

      } {
    {2 , 1}
    

    উদাহরণস্বরূপ, {2, 1}হয়ে ওঠে {2}, {1}এবং {3, 2, 1}হয়{3}, {2}, {1}

  • দ্বিতীয় আইটেমটি যদি একই হয় তবে কিছুই পরিবর্তন করুন। উদাহরণস্বরূপ, {1, 1, 1}একই থাকে, এবং {2, 1, 1, 1}হয়ে যাবে {2}, {1, 1, 1}

  • যদি দ্বিতীয় আইটেমটি বড় হয়, তবে নীচের প্রতিটি আইটেমকে এক স্তর আরও নীচে বাসাতে হবে। উদাহরণস্বরূপ, {1, 2}হয়ে উঠবে {1, {2}}এবং {1, 2, 3}হয়ে যাবে{1, {2, {3}}}

চ্যালেঞ্জ

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

{1, 3, 2}                         -->   {1, {3}, {2}}
{1, 2, 3, 4, 5, 6}                -->   {1, {2, {3, {4, {5, {6}}}}}}
{6, 5, 4, 3, 2, 1}                -->   {6}, {5}, {4}, {3}, {2}, {1}
{7, 3, 3, 2, 6, 4}                -->   {7}, {3, 3}, {2, {6}, {4}}
{7, 3, 1, -8, 4, 8, 2, -9, 2, 8}  -->   {7}, {3}, {1}, {-8, {4, {8}, {2}, {-9, {2, {8}}}}}

স্ট্যান্ডার্ড লুফোলগুলি প্রয়োগ হয় এবং বাইটের মধ্যে সংক্ষিপ্ত উত্তর!


2
আমরা কি আমাদের ভাষার স্ট্রিং ফর্ম্যাটে ইনপুট নিতে পারি?
ডাউনগোট

পূর্ণসংখ্যার সর্বোচ্চ আকার কত?
thepiercingarrow

পছন্দ করুন এটি হাস্যকর কিছু হবে না। আপনার কমপক্ষে হ্যান্ডেল করতে সক্ষম হওয়া উচিত [-100, 100]তবে আমি বিশাল ইনপুট দেওয়ার পরিকল্পনা করছি না।
জেমস

"যদি দ্বিতীয় আইটেমটি ছোট হয়, তাহলে নীড় সব উপাদান নিম্নলিখিত এক স্তর উচ্চতর, একটি ক্লোজিং বন্ধনী সন্নিবেশ করার মাধ্যেমে। তারপর, একটি উদ্বোধনী বন্ধনী সন্নিবেশ নিশ্চিন্ত হন যে সমস্ত বন্ধনী মিলেছে থাকুন করা,। উদাহরণস্বরূপ, {2, 1}হয়ে {2}, {1}" কিভাবে যে এক স্তর উচ্চতর ? এক স্তর উচ্চতর হবে {2}, 1। আপনার যা আছে তা একই স্তর।
msh210

@ এমএস 210 হ্যাঁ, এটি একটি খারাপ ব্যাখ্যা ছিল। বর্তমান শব্দবন্ধ ভাল?
জেমস

উত্তর:


1

এমএটিএল , 48 43 বাইট

YY_XKx"@K<?93]44@K-?91]@XKV]v93Gd0>sQY"h4L)

এটি ইনপুট এবং আউটপুটে বর্গাকার বন্ধনী ব্যবহার করে। আউটপুটে বিভাজক হিসাবে ফাঁকা ছাড়াই কমা রয়েছে।

নোট করুন আউটপুটটি এমএটিএল-এ নেস্টেড তালিকা হিসাবে ব্যাখ্যা করা হবে না। এটি অন্যান্য ভাষায় হবে এবং এটি চ্যালেঞ্জের আউটপুট স্পেসিফিকেশনকে সন্তুষ্ট করে।

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

ব্যাখ্যা

YY_XKx   % Push -inf. Copy to clipboard K (represents previous input entry). Delete
"        % Take numerical array implicitly. For each entry:
  @K<    %   Is current entry less than the previous one?
  ?93]   %   If so, push 93 (ASCII for ']')
  44     %   Push 44 (ASCII for comma)
  @K-    %   Is current entry different from the previous one?
  ?91]   %   If so, push 91 (ASCII for '[')
  @XKV   %   Push current entry, copy into clipboard K, convert to string
]        % End for each
v        % Concat vertically all stack contents, converting to char
93       % Push 93 (ASCII for ']') (to be repeated the appropriate number of times)
Gd0>sQ   % Determine how many times the input increases, plus 1
Y"       % Repeat 93 that many times
h        % Concat horizontally with previous string. Gives a row array, i.e. string
4L)      % Remove first char, which is an unwanted comma. Display implicitly

3

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

a#b|a<b=",{"|a>b="},{"|1<2=","
f(a:b:c)=show a++a#b++f(b:c)++['}'|a<b]
f[x]=show x++"}"
('{':).f

ব্যবহারের উদাহরণ: ('{':).f $ [7,3,3,2,6,4]-> "{7},{3,3},{2,{6},{4}}"

হাস্কেলের নেস্টেড তালিকা না থাকায় আমি ফলাফলটিকে স্ট্রিং হিসাবে ফিরিয়ে দিই। নেস্টিং অ্যালগরিদম সহজ: ক) মুদ্রণ নম্বর, খ) পরবর্তী সংখ্যাটি যদি বেশি হয় (কম, সমান), মুদ্রণ ,{( },{, ,), সি) বাকী তালিকার সাথে একটি পুনরাবৃত্ত কল করুন, ঘ) }নম্বরটি প্রিন্ট করুন পরেরটির চেয়ে কম, ঙ) {এবং এর মধ্যে সমস্ত কিছু বন্ধ করে দিন }


দুঃখিত, আমি ভুল
গণনা

3

পাইথন 3, 98 বাইট

p,*i=eval(input())
c=[p]
a=b=[c]
for x in i:
 if x>p:b=c
 if x!=p:c=[];b+=[c]
 c+=[x];p=x
print(a)

উদাহরণ:

$ python3 autonest.py <<< "[7, 3, 1, -8, 4, 8, 2, -9, 2, 8]"
[[7], [3], [1], [-8, [4, [8], [2], [-9, [2, [8]]]]]]

2

জাভা 8 197 187 193 192 বাইট


যারা এই একত্ববাদ নিয়ে আমার সাথে কাজ করেছেন তাদের সকলকে ধন্যবাদ। আমি ব্যয়বহুল বাগটি না পাওয়া পর্যন্ত এটি 187 বাইটে নেমে গেছে। তবে ব্ল্যাক ম্যাজিকের শক্তির কারণে "" "অপারেটর" -> "ডাউন হয়ে বাইট গণনাটি স্বাস্থ্যকর 192 বাইটে রয়েছে tes


String a(int[]b){int l=b.length,d=1,i=0;String c="{";for(;i<l-1;i++)if(b[i]>b[i+1])c+=b[i]+"},{";else if(b[i]<b[i+1]){d++;c+=b[i]+",{";}else c+=b[i]+",";c+=b[l-1];while(d-->0)c+="}";return c;}

দুঃখিত এখনই ব্লু
রোহান ঝুনঝুনওয়ালা

এছাড়াও, কয়েকটি টিপস: ১. আপনি ইনপুটটিকে একটি সিক্যুয়েন্সের পরিবর্তে অ্যারে হিসাবে নিতে পারেন: (ইনট [] খ) ২. আপনি একই সাথে একাধিক ইনট সংজ্ঞা দিতে পারবেন কমা ব্যবহার করে (int l = b.length, D = 1, i = 0)। ৩. আপনার যতটা শ্বেত গতি হবে তা মুছে ফেলা উচিত (উদাহরণস্বরূপ পরিবর্তনশীল কার্যভারের মধ্যে) আশাকরি এটা সাহায্য করবে!
নীল

হ্যালো, এবং পিপিসিজিতে আপনাকে স্বাগতম! স্নিপেটগুলি জাভাস্ক্রিপ্ট কোডের জন্য যা ব্রাউজারে মৃত্যুদন্ড কার্যকর করার জন্য বোঝানো হয়, জমা দেওয়ার চ্যালেঞ্জ নয়। এছাড়াও, আপনি পরে কোনও স্থান ভুলে গেছেনlength,
মালতীসেন

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

1
@ রোহানঝুনঝুনওয়ালা দুঃখিত, আরও স্পষ্ট হওয়া উচিত ছিল। যখন আমি "স্নিপেট" বলেছিলাম, আমি আপনার কোডের কথা বলছিলাম না, বরং আপনার ফর্ম্যাটিংয়ের কথা বলছিলাম। কোনও পোস্টে কোড দেওয়ার চেষ্টা করার সময়, "স্নিপেট" বোতামটি ক্লিক করবেন না, বরং এটি একটি কোড ব্লক (4 স্পেস বা
সিটিআরএল

2

সি, 145 138 বাইট

গিয়াকোমোকে 7 বাইটের জন্য ধন্যবাদ!

#define P printf(
n;main(c,v,p,t)char**v;{p=-101;for(v++;*v;v++){t=atoi(*v);if(t<p)P"}{");if(t>p)P"{",n++);P"%d ",p=t);}for(;n--;)P"}");}

কমান্ড লাইন আর্গুমেন্টের মাধ্যমে ইনপুট নেওয়া হয় এবং স্ট্যান্ডআউট হলেও আউটপুট দেওয়া হয়।

নমুনা রান:

$ ./autonest 7 3 1 -8 4 8 2 -9 2 8
{7 }{3 }{1 }{-8 {4 {8 }{2 }{-9 {2 {8 }}}}}

1
উত্সেরt=atoi(*v); পরিবর্তে ব্যবহার করার চেষ্টা করুনsscanf(*v,"%d",&t);
গিয়াকোমো গারাবেলো

ব্যবহারের for(;*++v;)জন্য সংরক্ষণ করুন প্রথম 4 এবং তারপর এর insted if(t<p)P"}{");if(t>p)P"{",n++);ব্যবহার t>p?P"}{"):P"{",n++);আরো 10 জন্য।
গিয়াকোমো গারাবেলো

1

সিজেম, 51 49 48 46 বাইট

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

এবং আমি ewঅপারেটর জানি না এর আগে আমাকে পুনরায় সংশোধন করতে হয়েছিল।

ইনপুটটি স্পেস বিভাজিত তালিকা বর্গাকার বন্ধনী দ্বারা সীমাবদ্ধ।

'[q~_W=\2ew_{~\_@-g)["["S"]["]=}%@@{~>M']?}%']

ব্যাখ্যা

'[q~_W=\2ew_{~\_@-g)["["S"]["]=}%@@{~>M']?}%']
'[                                             e# Opening bracket
  q~                                           e# Read the input
    _W=\2ew                                    e# Save the last item and turn array into array of pair of next item and the item itself.
            _                                  e# We need two copies of that item                                       
             {~\_@-g)["["S"]["]=}%             e# Build the "body" that consist of the item and the suitable delimiter, space if equal, opening brace if the first item is the smallest, otherwise, closing bracket and opening bracket.
                                  @@           e# Put in the last item. (It was omitted in previous phase)
                                    {~<']""?}% e# Create the closing bracket as many as the number of increasing adjacent pair
                                               '] e# And one more bracket.

আমি সুন্দর ছাপানোর উপর নির্ভর না করে প্রকৃত নেস্টেড অ্যারে দিয়ে এটি কীভাবে করব তা আমি খুঁজে বের করব।

পরিশেষে, এমএটিএল এর উত্তরের সাথে সমান


অবশেষে, এমএটিএল এর উত্তরটি এখনই পরাজিত নয় :
লুইস মেন্ডো

পুনঃটুইট
আকংকা

1

রেটিনা, 71 70 বাইট

তালিকাসমূহ স্থান কোঁকড়া ধনুর্বন্ধনী সঙ্গে পৃথক করা হয়: {1 2 3}। নেতিবাচক সংখ্যাগুলি সমর্থিত নয়, সুতরাং যদি এটি সমস্যা হয় তবে আমি কেবল আমার উত্তরটি মুছব। রেটিনা + নেতিবাচক সংখ্যা = এটি মূল্যবান নয়।

\d+
$*
+`\b(1+) (1+\1\b.*)
$1 {$2}
+`\b(1(1+)1*) (\2)\b
$1} {$2
1+
$.0

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


0

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

a=>a.map(r=>l-r?(n=l<r?m:n).push(m=[l=r]):m.push(l),l=a[0],o=n=[m=[]])&&o

ব্যাখ্যা: একটানা সমান আইটেমগুলির ক্ষেত্রে সহজ; আইটেমটি কেবলমাত্র অন্তঃস্থ অ্যারেতে যুক্ত করা হয়েছে (এখানে mভেরিয়েবল দ্বারা প্রতিনিধিত্ব করা হয় ; nঅ্যারে যা mএর শেষ উপাদান হিসাবে উপস্থিত থাকে , যখন oআউটপুট থাকে)। বিভিন্ন আইটেমের ক্ষেত্রে, আইটেমটি সর্বদা একটি নতুন অন্তর্নির্মিত অ্যারেতে যায়, কেবলমাত্র পার্থক্যটি হ'ল অ্যারেটি সহোদর বা পূর্ববর্তী অন্তরেরতম অ্যারের শিশু whether অতিরিক্ত গল্ফনেসের জন্য আমি অ্যারেগুলি সেট আপ করি যাতে প্রাথমিক আইটেমটি একটানা সমান আইটেম হিসাবে গণ্য হয়।

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