ডি-নেস্টিং তালিকাগুলি


12

এর ভিতরে নেস্টেড তালিকাগুলি সহ একটি তালিকা দেওয়া, নীড়যুক্ত তালিকাগুলির আইটেমগুলি ডি-নেস্টেডের সাথে তালিকাটি ফিরিয়ে দিন।

ইনপুট

এই তালিকাটিতে সর্বাধিক 4-গভীর নেস্টেড তালিকা থাকবে। শূন্য স্থান হিসাবে ইনপুটটির মধ্যে সমস্ত 0 টি গণনা করুন।

আউটপুট

স্বতন্ত্রভাবে প্রতিটি আইটেম মুদ্রণ। তালিকা হিসাবে আউটপুট মুদ্রণ করবেন না। আপনি প্রতিটি আইটেমকে যে কোনও ধরণের সাদা জায়গা দিয়ে আলাদা করতে পারেন।

উদাহরণস্বরূপ কেস

[[1, 0], [2, 0], [2, 3]] -> 1 2 2 3
[[[4, 5, 8]], [[5, 6, 20]], [[1, 20, 500]]] -> 4 5 8 5 6 20 1 20 500
[[[1, 0], [0, 0], [0, 0]], [[1, 0], [1, 2], [2, 0]], [[2, 0], [0, 0], [0, 0]]] -> 1 1 1 2 2 2

সংক্ষিপ্ততম কোডটি জয়ী।


আপনার 4-গভীর তালিকার কমপক্ষে একটি উদাহরণ অন্তর্ভুক্ত করা উচিত। আমি যদি সঠিকভাবে বুঝতে পারি, 4-গভীরের মতো কিছু ঠিক আছে [[[[5]]]], তাই না?
সার্জিওল

[[[[5]]]]tio.run/… এ কাজ করে তবে tio.run/… তে নয়
সার্জিওল

হার্ড যে চিনতে Count all 0's within the input as a null space.গড়ignore zeros
l4m2

উত্তর:


7

এপিএল (10)

0~⍨⍎⍞~'[]'

ব্যাখ্যা:

  • ⍞~'[]': অক্ষর ( ) ছাড়াই ব্যবহারকারীর ইনপুট ( ) এটি এরকম কিছু দেয়~'[]'
    '1,2,0,2,3'
  • : এই স্ট্রিং মূল্যায়ন। এটি ঘটেছে যা ,কনক্রিটেশন অপারেটর, সুতরাং এখন আমাদের একটি তালিকা রয়েছে: 1 2 0 2 3(এপিএল তালিকা ডিফল্টরূপে সাদা স্থানকে পৃথক করা হয়েছে)
  • 0~⍨: এই তালিকা থেকে সমস্ত সংখ্যা 0 সরান। (এটি এখনকার সংখ্যার একটি তালিকা, স্ট্রিংয়ের নয়, সুতরাং সংখ্যার মধ্যে শূন্যগুলি অপসারণ করা হবে না।
  • এই মানটি আউটপুট (ডিফল্টরূপে, কারণ এটি পুরো প্রোগ্রামের মান, একধরণের গল্ফস্ক্রিপ্ট)। এপিএল তালিকাগুলি ডিফল্টরূপে হোয়াইটস্পেস-দ্বারা পৃথক করা হয় তাই এটিকে প্রশ্নের মধ্যে দেখতে ঠিক দেখতে লাগে।

সংক্ষিপ্ত উত্তর, সুতরাং এটি একটি পিষ্টক নেয়। সমস্ত অ-উত্তরগুলির জন্য, যদি আপনার কোডটি আসলে সংক্ষিপ্ত বা সৃজনশীল ছিল তবে আমি একটি + দিয়েছি।
beary605

7

সেড, 20 অক্ষর

সমাধান পসিক্স এক্সটেন্ডেড নিয়মিত এক্সপ্রেশন ভিত্তিক।

s;[^0-9]+0|[],[]+;;g

আউটপুট :

bash-3.2$ sed -rf sedFile <<< "[[[4, 5, 8]], [[5, 6, 20]], [[1, 20, 500]]]" 
4 5 8 5 6 20 1 20 500

সম্পাদনা করুন : পসিক্স বেসিক নিয়মিত এক্সপ্রেশন ( @ ক্লোলেস এর সমাধান), 19 টি অক্ষর :

s/[^0-9][^1-9]*/ /g

1
s/[^0-9][^1-9]*/ /gএছাড়াও কাজ করে এবং বর্ধিত নিয়মিত প্রকাশের প্রয়োজন হয় না।
ক্লুলেস

7

পাইথন, 45

w00, গল্ফ ব্যতিক্রম হ্যান্ডলিং!

def d(x):
 try:map(d,x)
 except:print`x`*(x!=0)

প্রকারের জন্য চেক করার খুব চালাক উপায়।
beary605

আমি সমাধানটি পছন্দ করি, যদিও আমি মনে করি এটি d(input())চরিত্রের গণনায় কোনও লাইন অন্তর্ভুক্ত না করার জন্য প্রতারণা করছে ।
ক্লুলেস

চ্যালেঞ্জটি অস্পষ্ট ... না, বিপরীত, যখন আই / ও এর কথা আসে to
বুথবি

5

পার্ল, 20 16 13 টি অক্ষর

perl -ple 's/\D+0?/ /g'

-lসুইচ আউটপুটে চূড়ান্ত সম্পর্কে newline সংরক্ষণ করা প্রয়োজন।

এখানে একটি বিকল্প সংস্করণ যা প্রকৃতপক্ষে তালিকার সাথে শব্দার্থতভাবে কাজ করে (51 অক্ষর)।

perl -E '$,=$";sub p{map{ref$_?p(@$_):$_||""}@_}say p eval<>'

এই উভয় প্রোগ্রামই সমস্যাটির অনুচ্ছেদের সুযোগ নিয়েছে যে এটি "প্রতিটি আইটেমকে যে কোনও ধরণের সাদা জায়গার সাথে আলাদা করতে পারে", এবং শূন্যগুলি পুরোপুরি সরানোর পরিবর্তে ফাঁকা দিয়ে প্রতিস্থাপন করে।


4

কে, 12

{x@?&x:,//x}

k){x@?&x:,//x}((1;0);(2;0);(2;3))
1 2 2 3
k){x@?&x:,//x}(((4;5;8));((5;6;20));((1;20;500)))
4 5 8 5 6 20 1 20 500
k){x@?&x:,//x}(((1;0);(0;0);(0;0));((1;0);(1;2);(2;0));((2;0);(0;0);(0;0)))
1 1 1 2 2 2

কে এর সংস্করণের উপর নির্ভর করে আপনি "ব্যতীত" ( x^y) এর মতো: {(,//x)^0}বা এমনকি ব্যবহার করতে পারবেন {,/x^0}/। কাজ johnearnest.github.io/ok/index.html
ngn

3

পার্ল 13 , 14 চর ডিট: pএকটি চরের জন্য গণনা করুন

s/\D+|\b0/ /g

ব্যবহার:

cat '[[1, 0], [2, 0], [2, 3]]' | perl -pe 's/\D+|\b0/ /g'

সাবাশ. যদিও আপনার গণনাটি আসলে 14 টি চর (আপনাকে pগণিতে স্যুইচ অন্তর্ভুক্ত করতে হবে)।
ব্রেডবক্স

@ ব্রেডবক্স: হ্যাঁ, আপনি ঠিক বলেছেন। আমি সেটা মিস করছিলাম.
টোটো

কাটার পরিবর্তে প্রতিধ্বনির সাহায্যে এটি এমনকি কাজ করবে - চর গণনায় নিরপেক্ষ অপারেশন।
ব্যবহারকারীর অজানা

2

রুবি, 38 টি অক্ষর

puts eval(gets).flatten.reject &:zero?

সংখ্যাগুলি একটি লাইন বিরতি দ্বারা পৃথকভাবে মুদ্রিত হয়।


2

গল্ফস্ক্রিপ্ট 15

~{[]*}4*{},' '*

ইনপুট

কমান্ড লাইন থেকে চালান, যেমন:

echo [[[1 0] [0 0] [0 0]] [[1 0] [1 2] [2 0]] [[2 0] [0 0] [0 0]]] | ruby golfscript.rb x.gs

(ধরে নিলাম যে x.gsফাইলটিতে উপস্থাপিত কোড রয়েছে)।

দ্রষ্টব্য যে ,অ্যারেগুলি সংজ্ঞায়িত করার সময় কোনও কমা নেই ( ); এটি গল্ফস্ক্রিপ্ট সিনট্যাক্স

আউটপুট

ইনপুট বিভাগে বর্ণিত কমান্ডটি জারি করা হলে আউটপুটটি হয়:

1 1 1 2 2 2

2

পাইথন 3, 49 টি অক্ষর

import re
print(*re.findall('[1-9]\d*',input()))

পাইথন 2, 58 টি অক্ষর

import re
print re.sub('\D[^1-9]*',' ',raw_input())[1:-1]

2

জাপট , 5 বাইট

c f ¸

এটা পরীক্ষা করো


ব্যাখ্যা

অ্যারের অন্তর্নিহিত ইনপুট U। অ্যারে দিয়ে ফ্ল্যাট করুন c। গুলি fমুছে ফেলতে এটি দিয়ে ফিল্টার করুন 0। এর সাথে স্পেসগুলি ব্যবহার করে একটি স্ট্রিংয়ে যোগ দিন ¸। ফলাফল স্ট্রিং এর অন্তর্নিহিত আউটপুট।


2

জাভা 10, 106 বাইট

void c(Object i){for(var o:(Object[])i)try{System.out.print((int)o>0?o+" ":"");}catch(Exception e){c(o);}}

নেস্টেড হিসাবে ইনপুট Object[], আউটপুট STDOUT এ মুদ্রিত।

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


46 বাইট

s->s.replaceAll("[^0-9 ]","").replace(" 0","")

ইনপুট এবং আউটপুট উভয় হিসাবে String

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


@ জিউসেপ উফ .. এটি একটি দুর্দান্ত বোকা ভুল। এখনই ঠিক করা উচিত।
কেভিন ক্রুইজসেন 14

1

সি, 45 অক্ষর

for(;s=strtok(s,"[], ");s=0)atoi(s)&&puts(s);

এটা তোলে ধরে নেয় যে ইনপুট একটি সংশোধনযোগ্য মেমরির এলাকার উল্লেখ দেওয়া হয় s


উত্তরটি কোনও প্রোগ্রাম বা কমপক্ষে কোনও ফাংশন হওয়া উচিত নয়? যদি নম্বরটি ব্যর্থ হয় 01(আমার কাছে এটি আইনী বলে মনে হচ্ছে)। এবং *s-49&&puts(s)খাটো হয়।
ugoren

@ugoren আমি কেবলমাত্র কোনও প্রোগ্রাম / ফাংশন সম্পূর্ণরূপে কোনও উত্তর সীমাবদ্ধ করে এমন কোনও প্রয়োজনীয়তা পাইনি। কোন আছে?
আলেকজান্ডার বকুলিন

নেতৃস্থানীয় শূন্যগুলির সাথে সংখ্যার সাথে লড়াই করতে @ ইউগোরেন পুনরায় লিখেছেন। সংক্ষিপ্তকরণের পরামর্শের জন্য ধন্যবাদ!
আলেকজান্ডার বকুলিন

1

পাইথন, 99 111 অক্ষর

def d(l):
    if list==type(l):return[y for x in l for y in d(x)]
    return[str(l)]*(l!=0)
print" ".join(d(input()))

পূর্ববর্তী 99 চর সংস্করণ - ব্যর্থ হয় যখন জিরো সহ তালিকাগুলি কেবল অন্তর্ভুক্ত থাকে:

d=lambda l:list==type(l)and[y for x in l for y in d(x)]or[str(l)]*(l!=0)
print" ".join(d(input()))

d(l)lশূন্যগুলি ফিল্টার করার সময় এবং সংখ্যাকে স্ট্রিতে রূপান্তর করার সময় পুনরাবৃত্তভাবে তালিকাটি সমতল করে ।


এটি তৃতীয় পরীক্ষার ক্ষেত্রে 1 [0, 0] [0, 0] 1 1 2 2 2 [0, 0] [0, 0] এর জন্য ফিরে আসে।
beary605

@ বেরি 5০৫, আমি কেবল এই একটি পরীক্ষা এড়িয়ে গেছি ... আমি a and b or cসি এর পরিবর্তে ব্যবহার করি a?b:c, তবে bমিথ্যা (এই ক্ষেত্রে খালি তালিকা) মূল্যায়নের সময় এটি ব্যর্থ হয় ।
ugoren


1

প্রোলোগ ()৯)

এটি একটি পদ হিসাবে তালিকাকে অন্তর্ভুক্ত করে, সুতরাং আপনার একটি 'লাগানো দরকার।' ইনপুট তালিকার পরে।

প্রকৃতপক্ষে তালিকা সমতল করা হয়।

x([H|T]):-x(H),x(T).
x(0). x([]).
x(M):-write(M),put(32).
:-read(X),x(X),halt.



0

স্কালা 147:

সত্যিকারের তালিকায় কাজ করা, স্ট্রিংগুলিতে নয়:

def f[A](l:List[_]):List[_]=l match{
case Nil=>l
case(l:List[_])::s=>(f(l):::f(s))
case e::s=>e::f(s)}
def p(l:List[_])=f(l)filter(!=0)mkString " "

এখন টেস্টডেটা:

val l1 = List (List (1, 0), List (2, 0), List (2, 3))
val l2 = List (List (List (4, 5, 8)), List (List (5, 6, 20)), List (List (1, 20, 500)))
val l3 = List (List (List (1, 0), List (0, 0), List (0, 0)), List (List (1, 0), List (1, 2), List (2, 0)), List (List (2, 0), List (0, 0), List (0, 0)))
val l4 = List (l1, l2, l3)

scala> l4.map(p)
res94: List[String] = List(1 2 2 3, 4 5 8 5 6 20 1 20 500, 1 1 1 2 2 2)

scala> p(l4)
res95: String = 1 2 2 3 4 5 8 5 6 20 1 20 500 1 1 1 2 2 2

0

বাশ: 29 টি অক্ষর

l=$(echo "[[[1, 0], [0, 0], [0, 0]], [[1, 0], [1, 2], [2, 0]], [[2, 0], [0, 0], [0, 0]]]")
echo $l|tr -d '][,'|sed 's/\b0\b/ /g'
1           1   1 2 2   2          

গণনা লাইন 2 কেবল 'প্রতিধ্বনি $ l |' ছাড়াই। 3 নমুনার জন্য পরীক্ষা:

  1    2    2 3
   4 5 8   5 6 20   1 20 500
   1               1    1 2  2     2            

0

Tcl , 47 বাইট

proc D L {concat {*}[concat {*}[concat {*}$L]]}

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

4-গভীর ধরে নেওয়া এমন কিছু {{{{5}}}}। পরীক্ষার ক্ষেত্রে এ জাতীয় কোনও উদাহরণ নেই বলে এ জাতীয় কিছু হতে পারে {{{5}}}; যদি তা হয় তবে আমি আমার কোডটি আরও ছোট করতে পারি!

Tcl , 66 বাইট

proc D L {lsearch -al -inl -not "[string map {\{ "" \} ""} $L]" 0}

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





0

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

ċ∋↰|ℕ₁ẉ⊥

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

ইনপুট ভেরিয়েবলের মাধ্যমে ইনপুট নেয় এবং নিউলাইন দ্বারা পৃথক আউটপুট প্রিন্ট করে। সাধারণত আমি আউটপুট ফর্ম্যাট সম্পর্কে অভিযোগ করতাম, তবে এটি আসলে আমার বাইটটি এমনভাবে সাশ্রয় করেছিল যা আমি অন্যথায় ভাবিও না - ẉ⊥এটিকে মোড়কের চেয়ে শেষ প্রান্তটি আরও ছোট করা {}ᶠ

ċ           If the input is a list,
 ∋          pick some element of it
  ↰         and recur with it as the input.
   |        Otherwise, if the input
    ℕ₁      is a natural number,
      ẉ     print it with a trailing newline
       ⊥    then trigger backtracking.

যদি তালিকা আইটেমগুলি অ-নেতিবাচক পূর্ণসংখ্যা হিসাবে সীমাবদ্ধ না হয়:

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

ċ!∋↰|0!⊥|ẉ⊥

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


0

পিএইচপি , 70 বাইট

function($a){array_walk_recursive($a,function($a){echo$a?"$a ":'';});}

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

এটি সবচেয়ে সংক্ষিপ্ত (না সবচেয়ে দীর্ঘ) হতে চলেছে, তবে এটি ব্যবহার করার সুযোগ হবে বলে array_walk_recursive()মনে হয়েছে, যা আজ অবধি আমি এর জন্য কখনও ব্যবহারের কথা ভাবতে পারি না! কমপক্ষে এটি একটি স্বেচ্ছাসেবী স্তরের গভীর নেস্টেড তালিকা পরিচালনা করতে সক্ষম হওয়া উচিত।


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