হায়ারার্কিকাল আউটলাইন সংখ্যায়ন


18

একটি স্ট্রিং নেয় এমন একটি প্রোগ্রাম লিখুন যেখানে প্রতিটি রেখায় 0কিছু সংখ্যক স্পেস দ্বারা ইন্টেন্ট করা অক্ষর থাকে । উপরের লাইনটি ইন্টেন্টেড নয় এবং প্রতিটি অন্যান্য লাইন তার ঠিক আগের লাইনের চেয়ে আরও একটি স্পেস দ্বারা ইন্টেন্ট করা হবে।

কোনও লাইনের পেছনের জায়গাগুলি থাকবে না তবে আপনি বিকল্পভাবে ধরে নিতে পারেন যে সেখানে একটি একক নতুন ট্রেলিং রয়েছে।

উদাহরণস্বরূপ, ইনপুটটি দেখতে এরকম কিছু দেখাচ্ছে:

0
 0
  0
  0
 0
0
 0
 0
 0
  0
0
 0
  0
  0

আপনার কাজটি লাইন শিরোনাম হিসাবে ধনাত্মক পূর্ণসংখ্যার ব্যবহার করে একটি শ্রেণিবিন্যাসের রূপরেখার মতো নাম্বার করা । উদাহরণস্বরূপ এটি আউটপুট হবে:

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

প্রতিটি হাইয়ারারিকাল ইনডেন্টেশন স্তরের কীভাবে বাড়তে থাকে তার নিজস্ব সেট থাকে তা উল্লেখ করুন, এমনকি যদি তারা কেবল একটির উপরে চলে যায়।

আউটপুটে, কোনও পেছনের জায়গাগুলি থাকা উচিত নয়, তবে optionচ্ছিকভাবে একটি একক ট্রেলিং নিউলাইন থাকতে পারে।

একটি সম্পূর্ণ প্রোগ্রাম লিখুন যা স্টিডিন বা কমান্ড লাইনের মাধ্যমে ইনপুট স্ট্রিং নেয় বা একটি ফাংশন লিখুন যা স্ট্রিংটিকে আর্গুমেন্ট হিসাবে গ্রহণ করে। ফলাফল মুদ্রণ করুন বা একটি স্ট্রিং হিসাবে ফিরে।

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

উদাহরণ

যদি খালি স্ট্রিংটি ইনপুট হয় তবে খালি স্ট্রিংটি আউটপুট হওয়া উচিত।

পরবর্তী সবচেয়ে তুচ্ছ উদাহরণ হ'ল ইনপুট

0

যা হয়ে উঠতে হবে

1

বড় উদাহরণ - ইনপুট:

0
 0
  0
 0
  0
 0
  0
  0
   0
   0
    0
     0
     0
     0
     0
    0
   0
    0
    0
  0
0
 0
  0
 0
  0
  0
  0
  0
  0
  0
  0
  0
  0
  0
  0
   0
    0
     0
  0
   0
0
0
0
 0
  0
   0
    0
     0
      0
      0
     0
    0
   0
  0
 0
  0
  0
   0
   0
0
0

আউটপুট:

1
 1
  1
 2
  1
 3
  1
  2
   1
   2
    1
     1
     2
     3
     4
    2
   3
    1
    2
  3
2
 1
  1
 2
  1
  2
  3
  4
  5
  6
  7
  8
  9
  10
  11
   1
    1
     1
  12
   1
3
4
5
 1
  1
   1
    1
     1
      1
      2
     2
    2
   2
  2
 2
  1
  2
   1
   2
6
7

উত্তর:


2

পাইথ, 18 বাইট

V.z+PNhX0=Y>lN+0Y1

এটি @ Sp3000 এর সঠিক অনুবাদ এর উত্তরের । আমি অনেকগুলি ভিন্ন পদ্ধতি এবং প্রকরণ চেষ্টা করেছি, তবে আমি এটি সংক্ষিপ্ত করতে পারিনি, তাই আমি এই সিডাব্লুয়াকে চিহ্নিত করছি।

প্রদর্শন.


8

পাইথন 2, 77

S={'0':0}
for w in input().split('\n'):S[w]+=1;S[' '+w]=0;print w[:-1]+`S[w]`

Sp3000 এর উত্তর পছন্দ করুন তবে একটি অভিধান সহ। ডিক Sপ্রতিটি বাসা বাঁধার স্তরের জন্য বর্তমান সংখ্যা সংরক্ষণ '0', ' 0', ' 0'করে। ইনপুটটির প্রতিটি লাইনের জন্য, সংশ্লিষ্ট নেস্টিং স্তরটি বাড়িয়ে নিন এবং নীড়ের স্তরটিকে এক থেকে উচ্চতায় 0 এ পুনরায় সেট করুন।


6

পাইথন 2, 86 85 81 বাইট

S=[]
for r in input().split("\n"):S=([0]+S)[-len(r):];S[0]+=1;print r[:-1]+`S[0]`

(-৫ বাইট @ এক্সনোরকে ধন্যবাদ)

STDIN এর মাধ্যমে স্ট্রিং হিসাবে ইনপুট নেয় T

'0\n 0\n  0\n  0\n 0\n0\n 0\n 0\n 0\n  0\n0\n 0\n  0\n  0'

বিকল্পভাবে, এখানে 5 টি অতিরিক্ত বাইটের জন্য একটি ফাংশন রয়েছে:

def f(I,S=[]):
 for r in I.split("\n"):S=([0]+S)[-len(r):];S[0]+=1;print r[:-1]+`S[0]`

আমি দেখতে পেয়েছি যে আপনি প্রতিটি লাইনে S=[]\nfor w in input()[:-1].split('0\n'):S=([0]+S)[~len(w):];S[0]+=1;print w+`S[0]`
ফাঁকের ফাঁকে

আসলে, এটা সরাসরি লাইনে নেওয়া একটি বিট খাটো আছে: S=[]\nfor w in input().split('\n'):S=([0]+S)[-len(w):];S[0]+=1;print w[:-1]+`S[0]`
xnor

@ এক্সনর আবারও ধন্যবাদ - এটি অনেক সহজ :)
Sp3000

4

সিজেম, 25 বাইট

LqN/{0+I,<))_IW@toNo+}fI;

আমার পাইথন উত্তরের মতো , প্রতিটি ইনডেন্টেশন স্তরটি কোন সংখ্যাটি সঞ্চয় করতে এটি কোনও অ্যারে ব্যবহার করে। তবে একটি পার্থক্য হ'ল এটি t(অ্যারে সেট) প্রতিটি লাইনে 0 টি আমরা চাই এমন সংখ্যার সাথে প্রতিস্থাপন করতে ব্যবহার করে।

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


3

জাভাস্ক্রিপ্ট ES6, 83 81 বাইট

f=(z,a=[])=>z.replace(/ *0/g,e=>e.replace(0,a.fill(0,l=e.length)[--l]=a[l]+1||1))

এটি এমন একটি অ্যারে ব্যবহার করে যা প্রতিটি ইনডেন্টেশন স্তরের জন্য বর্তমান নম্বর ধারণ করে। স্তরের অতীতের সমস্ত কিছু 0 ব্যবহার করে পুনরায় সেট করা হয়েছে fill()। সম্পাদনা: 2 বাইট সংরক্ষণ করেছে vihan1086 এর টিপকে ধন্যবাদ

নীচের স্ট্যাক স্নিপেটটি পরীক্ষার জন্য ব্যবহার করা যেতে পারে কারণ এটি কিছুটা অবলম্বিত এবং আরও ভাল-সমর্থিত ES5 সিনট্যাক্স ব্যবহার করে। দ্বিতীয় কার্যটি হ'ল পলিফিল কারণ ইএস 6 fill()ছাড়া এটি করার কোনও ছোট উপায় নেই।

f=function(z){
  a=[]
  return z.replace(/ *0/g,function(e){
    return e.replace(0,a.fill(0,l=e.length)[--l]=a[l]+1||1)
  })
}

if(!Array.prototype.fill){
  Array.prototype.fill = function(val, start){
    var res = this;
    for(var i = start; i<this.length; i++){
      res[i] = val;
    }
    return res;
  };
}

run=function(){document.getElementById('output').innerText=f(document.getElementById('input').value)};document.getElementById('run').onclick=run;run()
<textarea id="input" rows="15" cols="10">
0
 0
  0
  0
 0
0
 0
 0
 0
  0
0
 0
  0
  0</textarea>
<pre id="output" style="display:inline-block; vertical-align:top; margin:0"></pre><br />
<button id="run">Run</button>


1

পাইথন - 191

def p(s,i,v,n=1):
    while i<len(s)and s[i]and'0'not in s[i][:v]:
        if s[i][v]=='0':s[i]=' '*v+str(n);n+=1;i+=1
        else:i=p(s,i,v+1)
    return(s,i)[v!=0]
z=lambda r:'\n'.join(p(r.split('\n'),0,0))

ফাংশনটি হ'ল z


0

পিপ -rn , 31 27 বাইট

{Wl#<alPU0l@>:-#aaR0++@l}Mg

স্টিডিন থেকে ইনপুট। এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা

                             g is list of lines of stdin (-r flag); l is []
                             Note that l is a global variable
{                       }Mg  Map this function to each a in g:
 Wl#<a                        While l is less in length than a:
      lPU0                     Push a 0 to (the front of) l
                              (This handles increasing the indent)
          l@>:                Slice and assign back to l...
              -#a              ... its last len(a) elements
                              (This handles decreasing the indent)
                 aR0          In a, replace 0 with
                      @l       the first element of l
                    ++         incremented in-place
                              The function returns the above expression
                             The resulting list from map is printed, newline-separated
                              (-n flag)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.