তালিকাগুলির তালিকায় ধারাবাহিকভাবে প্রবেশের মাধ্যমে টিপলস


9

চ্যালেঞ্জ:

পূর্ণসংখ্যার অকাট্য তালিকার একটি তালিকা দেওয়া, নিম্নলিখিত ফর্মের টিপলগুলির একটি তালিকা ফেরত দিন: প্রথম তালিকার প্রতিটি উপাদান দিয়ে শুরু হওয়া প্রথম তালিকার প্রতিটি পরবর্তী তালিকার প্রথম উপাদানটি অনুসরণ করে, সুতরাং আইথ টিপলটি হওয়া উচিত [ith element of first list, first element of second list, ... , first element of last list]। উদাহরণ স্বরূপ:

[[1, 2, 3], [4, 5, 6], [7, 8, 9]] => [[1, 4, 7], [2, 4, 7], [3, 4, 7], ...

তারপরে ফর্মটির টিপলগুলি করুন [last element of first list, ith element of second list, first element of third list, ..., first element of last list], সুতরাং আমাদের উদাহরণে এটি হবে:

[[1, 2, 3], [4, 5, 6], [7, 8, 9]] =>  ..., [3, 4, 7], [3, 5, 7], [3, 6, 7], ...

আপনি যতক্ষণ না পেয়েছেন প্রতিটি বাকী তালিকার সাথে চালিয়ে যান [last element of first list, ..., last element of second to last list, ith element of last list]:

[[1, 2, 3], [4, 5, 6], [7, 8, 9]] => ..., [3, 6, 7], [3, 6, 8], [3, 6, 9]]

সম্পূর্ণ আউটপুট নিম্নরূপ:

[[1, 2, 3], [4, 5, 6], [7, 8, 9]] => 
        [[1, 4, 7], [2, 4, 7], [3, 4, 7], [3, 5, 7], [3, 6, 7], [3, 6, 8], [3, 6, 9]]

ভাল পরিমাপের জন্য কিছু বয়লারপ্লেট:

  • আপনি যদি ইনপুটটি স্ট্রিংগুলির তালিকা, বা ধনাত্মক পূর্ণসংখ্যার তালিকা হতে চান তবে এটি ঠিক আছে। প্রশ্ন তালিকাগুলি হেরফের সম্পর্কে, তালিকাগুলিতে কী রয়েছে তা নয়।
  • ইনপুট এবং আউটপুট যে কোনও গ্রহণযোগ্য বিন্যাসে হতে পারে ।
  • হয় একটি সম্পূর্ণ প্রোগ্রাম বা ফাংশন অনুমোদিত হয়।
  • স্ট্যান্ডার্ড লুফোলগুলি ডিফল্টরূপে অনুমোদিত নয়।
  • এই প্রশ্নটি কোড গল্ফ, তাই সর্বনিম্ন বাইট-কাউন্ট জেতা।

উদাহরণ:

[] => [[]] (or an error, thanks to ngn for correcting the output in this case)

[[1]] => [[1]]

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

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

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

[[1, 2, 3], []] => unspecified behavior (can be an error)

[[3, 13, 6], [9, 2, 4], [5, 10, 8], [12, 1, 11], [7, 14]] => 
     [[3, 9, 5, 12, 7], [13, 9, 5, 12, 7], [6, 9, 5, 12, 7], [6, 2, 5, 12, 7], 
      [6, 4, 5, 12, 7], [6, 4, 10, 12, 7], [6, 4, 8, 12, 7], [6, 4, 8, 1, 7], 
      [6, 4, 8, 11, 7], [6, 4, 8, 11, 14]]  

[[16, 8, 4, 14, 6, 7, 10, 15], [11, 1, 12, 2, 19, 18, 9, 3], [13, 5, 17]] =>
    [[16, 11, 13], [8, 11, 13], [4, 11, 13], [14, 11, 13], [6, 11, 13], 
     [7, 11, 13], [10, 11, 13], [15, 11, 13], [15, 1, 13], [15, 12, 13], [15, 2, 13], 
     [15, 19, 13], [15, 18, 13], [15, 9, 13], [15, 3, 13], [15, 3, 5], [15, 3, 17]]

কারওরও যদি আরও ভাল শিরোনাম থাকে তবে আমাকে জানান।


1
আমার একটা অনুভূতি আছে যা [] => []সত্যই হওয়া উচিত [] => [[]]তবে কেন তা ব্যাখ্যা করার জন্য শব্দগুলি খুঁজে পাচ্ছি না।
ngn

1
@ জিএনএন আপনি ঠিক বলেছেন, এটি হওয়া উচিত [[]]কারণ সেখানে (শূন্য) সাবলিস্টগুলির প্রতিটি থেকে একটি করে প্রবেশের একটি ফাঁকা টিপল রয়েছে। সম্ভবত এটি সঠিকভাবে আউটপুট করার জন্য প্রোগ্রামগুলি প্রয়োজন খুব বিরক্তিকর, তাই আমি বলব যে এটি প্রয়োজনীয় নয়।
হুড

1
হ্যাঁ [], কঠোরভাবে বলতে গেলে, খালি নয় খালি তালিকার একটি তালিকা কিন্তু আউটপুটটি দ্ব্যর্থক []এবং [[]]এটি যদি কোনও অনুমোদিত ইনপুট থাকে। ("প্রথম তালিকার প্রতিটি উপাদান দিয়ে শুরু প্রথম তালিকার টিপলস ..." - কোনও প্রথম তালিকা নেই, তাই আমাদের করা হয়েছে -> [])
জোনাথন অ্যালান

1
@ জোনাথান অ্যালান এখন আমি নিশ্চিত যে "সঠিক" আউটপুটটি []হওয়া উচিত [[]]। উদাহরণস্বরূপ, আউটপুট টিপলগুলির সংখ্যাটি sum(inner list lengths) - length of outer list + 1যা খালি ক্ষেত্রে দেয় 1যা দৈর্ঘ্য [[]]নয় তবে দৈর্ঘ্য নয় []। যদিও এটি কিছুটা পেডেন্টিক ইস্যু ...
হুড

1
আমরা কি সমস্ত এন্ট্রি স্বতন্ত্র অনুমান করতে পারি? বা আরও দৃ strongly়তার সাথে, আপনার উদাহরণগুলিতে 1..n এর মত একটি অনুচ্ছেদ?
xnor

উত্তর:


5

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

ইতিবাচক পূর্ণসংখ্যার তালিকার একটি তালিকা আশা করে ।

f=a=>[a.map(a=>a[0]),...a.some(a=>a[1]&&a.shift())?f(a):[]]

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

কিভাবে?

প্রতিটি পুনরাবৃত্তিতে:

  • আমরা প্রতিটি তালিকার প্রথম উপাদান নিয়ে একটি নতুন তালিকা আউটপুট করি
  • আমরা কমপক্ষে 2 টি উপাদান যুক্ত প্রথম তালিকার প্রথম উপাদানটি সরিয়ে ফেলি এবং প্রক্রিয়াটি পুনরাবৃত্তি করি। অথবা আমরা যদি পুনরায় সংস্থান বন্ধ করি তবে এ জাতীয় কোনও তালিকা উপস্থিত নেই।

1
সেই a.someকৌশলটি দুর্দান্ত!
ইটিএইচ প্রডাকশন

1
@ ইথ প্রডাকশনস এখন এমন একটি চ্যালেঞ্জ খুঁজছেন যেখানে ব্যবহার করা awe.someবাইটের অপচয় হবে না ... :)
আর্নল্ড

2

পাইথন 2 , 62 বাইট

lambda M:[zip(*M)[l.pop(0)*0]for l in M+[[1,1]]for _ in l[1:]]

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

চ্যান ব্রাউন এর পপ ধারণাটি ব্যবহার করে আরনাউল্ডের জেএস জমা দিয়ে অনুপ্রাণিত ।


পাইথন 2 , 68 বাইট

M=input()
for l in[[0,0]]+M:
 for x in l[1:]:l[0]=x;print zip(*M)[0]

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

পছন্দসই মানগুলি ধরে রাখতে তালিকার প্রথম উপাদানকে রূপান্তরিত করে। [[0,0]]+প্রাথমিক প্রথম মান প্রিন্ট করতে একটি কুশ্রী হ্যাক হয়।


2

জেলি , 15 বাইট

ẈṚṪ×€PƊƤFQṚCịŒp

এটি অনলাইন চেষ্টা করুন! (পাদলেখ জেলি প্রতিনিধিত্বের পরিবর্তে আসল প্রত্যাশিত তালিকা প্রদর্শন করে)

কিভাবে?

প্রয়োজনীয় পয়েন্টগুলিতে তালিকার কার্টেসিয়ান পণ্যটিতে সূচকগুলি ...

ẈṚṪ×€PƊƤFQṚCịŒp - Link: list of lists  e.g. [[6,8,4,9],[7,1,5],[3,2]]
Ẉ               - length of each            [4,3,2]
 Ṛ              - reverse                   [2,3,4]
       Ƥ        - for each prefix:             [2]      [2,3]      [2,3,4]
      Ɗ         -   last 3 links as a monad:
  Ṫ             -     tail (pop rightmost)     2        3          4
     P          -     product (of remaining)   1        2          6
    €           -     for €ach (range tail)    [1,2]    [1,2,3]    [1,2,3,4]   
   ×            -       multiply               [1,2]    [2,4,6]    [6,12,18,24]
        F       - flatten                   [1,2,2,4,6,6,12,18,24]
         Q      - de-duplicate              [1,2,4,6,12,18,24]
          Ṛ     - reverse                   [24,18,12,6,4,2,1]
           C    - complement (1-x)          [-23,-17,-11,-5,-3,-1,0]
             Œp - Cartesian product (of the input)
                -         -> [[6,7,3],[6,7,2],[6,1,3],[6,1,2],[6,5,3],[6,5,2],[8,7,3],[8,7,2],[8,1,3],[8,1,2],[8,5,3],[8,5,2],[4,7,3],[4,7,2],[4,1,3],[4,1,2],[4,5,3],[4,5,2],[9,7,3],[9,7,2],[9,1,3],[9,1,2],[9,5,3],[9,5,2]]
            ị   - index into (1-based & modular)
                -   indexes:      -23,                                            -17,                                            -11,                                             -5,             -3,             -1,     0
                -    values: [[6,7,3],                                        [8,7,3],                                        [4,7,3],                                        [9,7,3],        [9,1,3],        [9,5,3],[9,5,2]]
                -         -> [[6,7,3],[8,7,3],[4,7,3],[9,7,3],[9,1,3],[9,5,3],[9,5,2]]

ẈṚ’ṣ1T$¦ƬUṚị"€(14 বাইট) দৈর্ঘ্যের একটি তালিকার ইনপুটগুলির জন্য ব্যর্থ হয়; তবে কি ṣ1T$অন্য কিছু দিয়ে প্রতিস্থাপন করা যেতে পারে?


2

কে (এনএনজি / কে) , 40 21 19 18 বাইট

{x@'/:?|\+|!|#:'x}

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

@ H.PWiz এর উত্তর থেকে ধারণাগুলি ব্যবহার করে

{ } যুক্তি দিয়ে ফাংশন x

#:' প্রতিটি দৈর্ঘ্য

| বিপরীত

! সমস্ত সূচী একটি ম্যাট্রিক্সে কলাম হিসাবে সেই মাত্রাগুলি সহ অ্যারের জন্য তালিকাগুলি (তালিকার তালিকা)

| বিপরীত

+ TRANSPOSE

|\ চলমান ম্যাক্সিমা

? অনন্য

x@'/: থেকে সূচক হিসাবে ডানদিকে প্রতিটি tuple ব্যবহার করুন x


1

কাঠকয়লা , 33 বাইট

IE⊕ΣEθ⊖LιEθ§λ⌈⟦⁰⌊⟦⊖Lλ⁻ι∧μΣE…θμ⊖Lν

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। ব্যাখ্যা:

তালিকাগুলির জন্য ডিফল্ট আউটপুট ফর্ম্যাটটি স্পষ্টভাবে মুদ্রণের আগে পূর্ণসংখ্যার স্ট্রিংগুলিতে কাস্ট করুন যা প্রতিটি নিজস্ব আইনের আইটেম এবং নেস্টেড তালিকাগুলি ডাবল-স্পেসযুক্ত।

E⊕ΣEθ⊖Lι

তালিকার দৈর্ঘ্যের যোগফল নিন এবং তালিকার তালিকার দৈর্ঘ্যের বিয়োগ করুন। তারপরে 0 থেকে এই মানটি অন্তর্ভুক্ত করে লুপ করুন।

Eθ§λ

প্রতিটি তালিকার তালিকাগুলির তালিকা এবং সূচকের উপরে মানচিত্র।

⌈⟦⁰⌊⟦⊖Lλ

সূচকটি 0 এ এবং তালিকার শেষ সূচকটি ক্ল্যাম্প করুন। (বন্ধনী বন্ধনী আবদ্ধ হয়।)

⁻ι∧μΣE…θμ⊖Lν

প্রথম তালিকার পরে, বাইরেরতম সূচী থেকে পূর্ববর্তী সমস্ত তালিকার হ্রাস দৈর্ঘ্য বিয়োগ করুন। (এটি প্রথম তালিকার পক্ষে কাজ করে না কারণ তালিকার দৈর্ঘ্য খালি এবং যোগফল কোনও সংখ্যা নয়))



1

এপিএল (ডায়ালগ ক্লাসিক) , 32 30 27 বাইট

1↓¨∪⊃{(⍵,¨⊃⍺),⍺,¨⍨⊢/⍵}/⌽0,⎕

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

সম্পূর্ণ প্রোগ্রাম, ইনপুটটি কীবোর্ড থেকে ( )

ইনপুট []আউটপুট [[]](তাদের এপিএল সমতুল্য 0⍴⊂⍬এবং ,⊂⍬)

ইনপুটটিতে সংখ্যার স্বতন্ত্রতা ধরে নেয়


1
এটি আউটপুটটিতে কোনও পার্থক্য তৈরি করে না, তবে আমি মনে করি দ্বিতীয় পরীক্ষার জন্য ইনপুটটি হওয়া উচিত,⊂,1
এইচ.পি.উইজ

@ এইচ.পি.উইজ এটি সঠিক, স্থির, চিয়ার্স
এনজিএন

1

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

h=(x,s)=>[x.map(y=>s|y?y[0]:s=y.shift()),...s?h(x):[]]

আমার কোডটি গল্ফ করার 14+ চেষ্টার পরে (যখন সমস্ত লুপগুলি সরানো হবে push, এবং concat), আমি @ আরনাউল্ডের জবাবের মতো অ্যালগোরিদমিকভাবে অনুরূপ একটি পুনরাবৃত্তিতে পৌঁছেছি , এটি কতটা সংশ্লেষিত তা অবাক করে দেওয়া!

ধনাত্মক পূর্ণসংখ্যার তালিকার একটি তালিকা গ্রহণ করে। এটি অনলাইন চেষ্টা করুন!

58 বাইট

1 এর আরও বেশি বাইট জন্য প্রতিস্থাপন s = y.shift()সঙ্গে y.shift(s = 1)সব পূর্ণসংখ্যার হ্যান্ডেল করা হয় (সম্ভবত, হিসাবে আমি ব্যক্তিগতভাবে এটা পরীক্ষিত নয়)।

h=(x,s)=>[x.map(y=>!s/y[1]?s=y.shift():y[0]),...s?h(x):[]]

58 বাইট

সামান্য পুনরায় সাজানো সহ বোনাস সংস্করণ:

h=x=>[x.map(y=>s&&y[1]?y.shift(s=0):y[0],s=[]),...s||h(x)]

ব্যাখ্যা

কোডের প্রথম সংস্করণগুলি প্রতিটি অ্যারের প্রথম উপাদানগুলির (একটি অ্যারের) একটি ক্লোন সংশোধন করার চেষ্টা করেছিল, তবে সেই অ্যারেটি শুরু করার অতিরিক্ত ধাপটি ব্যয়বহুল ... যতক্ষণ না বুঝতে পেরেছি যে প্রতিটি অ্যারের প্রথম উপাদানগুলির উপর ম্যাপিং মোটামুটি ছিল যদি আমি মূল অ্যারেগুলিকে পরিবর্তন করি তবে "কেবল" অপারেশনটি প্রয়োজনীয়।

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

var
h = (x, s) => 
    [
        x.map(y =>                 // map to first element of each array
            s|y                    // if s == 1 (i.e. an array has been shortened)
                                   // or the current array y has length == 1
                ? y[0]
                : s = y.shift()    // remove first element of y and set s to truthy
        ),
        ...s ? h(x) : []           // only concatenate a recurrence of the function if an array has had a value removed
    ]

1

এপিএল (ডায়ালগ) , 15 বাইট ( এসবিসিএস )

অপ্রয়োজনীয় বাইট দেখানোর জন্য ধন্যবাদ এনএনজি

{∪⌈\,⍉⍳≢¨⍵}⊃¨¨⊂

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

{∪⌈\,⍉⍳≢¨⍵}ইনপুট ইনডেক্সে তালিকা তৈরি করে। যেমন(1 2 3) (4 5 6) (7 8 9) -> (0 0 0) (1 0 0) (2 0 0) (2 1 0) (2 2 0) (2 2 1) (2 2 2)

≢¨⍵: ইনপুট প্রতিটি তালিকার দৈর্ঘ্য

,⍉⍳এটির ইনপুট পর্যন্ত সমস্ত সংখ্যার সমন্বয় তৈরি করে। যেমন2 3 -> (0 0) (1 0) (0 1) (1 1) (0 2) (1 2)

⌈\: সর্বাধিক দিয়ে স্ক্যান। যেমন উপরের উদাহরণটি এখন হবে(0 0) (1 0) (1 1) (1 1) (1 2) (1 2)

: সদৃশ অপসারণ

⊃¨¨⊂ উভয় যুক্তির গভীরতার প্রতি অনুধাবন করে সূচীকরণ করে


দুর্দান্ত উত্তর! আপনি আমার প্রায় অর্ধেক বাইট দ্বারা আমাকে মারধর। মনে হয় অপ্রয়োজনীয়
এনজিএন


@ এনএনজি নিস, আমি মনে করতে পারি না কী কারণে আমাকে মনে হয়েছিল যে এটি ছিল। ধন্যবাদ!
এইচ.পি.উইজ 4'18

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