পি আর প্রি প্রিফ প্রিফিক্স প্রিফিক্স প্রিফিক্স প্রিফিক্সস


34

কিছু সীমাবদ্ধ তালিকা দেওয়া হয়েছে, খালি তালিকা সহ এর সমস্ত উপসর্গের একটি তালিকা তাদের দৈর্ঘ্যের ক্রমবর্ধমান ক্রমে ফিরে আসুন।

(মূলত হাস্কেল ফাংশন বাস্তবায়ন করে inits)

বিস্তারিত

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

উদাহরণ

[] -> [[]]
[42] -> [[],[42]]
[1,2,3,4] -> [[], [1], [1,2], [1,2,3], [1,2,3,4]]
[4,3,2,1] -> [[], [4], [4,3], [4,3,2], [4,3,2,1]]

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

@ নাইডেজেককোব আমি নিশ্চিত না যে এই মামলায় কী forক্যমত্য রয়েছে তা আমি নিশ্চিত নই, তবে ব্রেইনফাক উত্তরটি এরকম কিছু করতে পারে বলে মনে হচ্ছে।
flawr

আমরা কি তালিকাটি বাতিল-বাতিল হওয়ার আশা করতে পারি?

এটি বিশেষত সি / সি ++ এ সাধারণ, মূল ব্যবহারের স্ট্রিং।

@ রোজেম যদি এটি সাধারণ হয় তবে আমি মনে করি এটির অনুমতি দেওয়া যুক্তিসঙ্গত।
flawr

উত্তর:


15

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

সম্পাদনা: তবুও সম্পূর্ণ আলাদা স্ক্যান সহ একটি বাইট শর্ট।

একটি বেনাম ফাংশন সামান্য তুচ্ছ আমদানি প্রহার।

scanr(\_->init)=<<id

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

  • =<<সংক্ষিপ্তসার জন্য ব্যবহার করে (scanr(\_->init)=<<id) l = scanr(\_->init) l l
  • lডান থেকে বামে একটি তালিকা স্ক্যান করে ফাংশনটির মধ্যবর্তী ফলাফল সংগ্রহ করে \_->init
  • এই ফাংশনটি স্ক্যান হওয়া উপাদানগুলিকে উপেক্ষা করে (তারা কেবলমাত্র সংগ্রহের ফলাফলের জন্য সঠিক মোট দৈর্ঘ্য পেতে ব্যবহৃত হয়), তাই সত্যই initস্ক্যানের প্রাথমিক মান প্রয়োগ করে পুনরাবৃত্তি করে l

13

brainfuck , 21 12 বাইট

-9 বাইট ধন্যবাদ বিভক্তকারীকে প্রস্তাব দেওয়ার জন্য আরনাউল্ডকে ধন্যবাদ ÿ নতুন লাইনের পরিবর্তে

-[[<]>[.>],]

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

কোনও নাল বাইট না দিয়ে STDIN এর মাধ্যমে বাইট নেয় এবং দ্বারা পৃথক করা উপসর্গগুলির একটি সিরিজ মুদ্রণ করে ÿ একটি শীর্ষস্থানীয় ÿচরিত্রের অক্ষর । উদাহরণস্বরূপ, ইনপুট জন্য Prefixes, আউটপুট হয় ÿÿPÿPrÿPreÿPrefÿPrefiÿPrefixÿPrefixeÿPrefixes

পাঠযোগ্যতার জন্য, পরিবর্তে এখানে নতুন লাইনের সাথে একটি সংস্করণ রয়েছে

ব্যাখ্যা:

-              Create a ÿ character in cell 0
 [        ,]   While input, starting with the ÿ
  [<]>           Go to the start of the string
      [.>]       Print the string
          ,      Append the input to the end of the string

1
এটি কেবল 8-বিট, স্বাক্ষরবিহীন, মোড়ানো ঘরগুলির সাথে বিএফ বাস্তবায়নে কাজ করে।
দেব

11

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

a=>[b=[],...a.map(n=>b=[...b,n])]

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

কিভাবে?

+--- a = input array
|
|       +--- initialize b to an empty array and include it as the first entry
|       |    of the output (whatever the input is)
|       |
|       |          +--- for each value n in a[]:
|       |          |
|       |          |        +--- append n to b[] and include this new array in
|       |          |        |    the final output
|       |          |        |
a => [b = [], ...a.map(n => b = [...b, n])]
               |                  |
               +---------+--------+
                         |
      spread syntax: expands all elements of
      the child array within the parent array

বাহ, এটি কোড ব্যাখ্যার সম্পূর্ণ নতুন স্তর, দুর্দান্ত কাজ: ও
ব্রায়ান এইচ।

@BrianH। ধন্যবাদ! সরল কাজগুলি হ'ল সংক্ষিপ্ত কোডে আনা যায় না এমন বিশদ বিবরণ লেখার জন্য ভাল সুযোগ।
আর্নল্ড

হাত দিয়ে বানিয়েছ? বা এমন কোনও অদ্ভুত সফ্টওয়্যার সম্পর্কে শুনেছি যা আমি কখনও শুনিনি?
ব্রায়ান এইচ।

2
কিছু কলাম মোড সম্পাদনা সহ নোটপ্যাড ++ ।
আর্নৌল্ড

8

সমস্ত তুচ্ছ এন্ট্রি জন্য সিডাব্লু

পরিষ্কার , 19 বাইট

হাস্কেল সংস্করণ ক্লিনেও কাজ করে।

import StdLib
inits

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

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

import Data.List
inits

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

প্রোলোগ (এসডাব্লুআই) , 6 বাইট

prefix

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


এত ছেঁড়া - to upvote or not। একদিকে, আমি এক জায়গায় সমস্ত অন্তর্নির্মিত সমাধানগুলির প্রশংসা করি। অন্যদিকে, আমি বিল্টিনগুলি সত্যিই অপছন্দ করি কারণ তারা এতটাই বেসিক ...



6

পার্ল 6 , 13 বাইট

{(),|[\,] @_}

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

ব্যাখ্যা করতে:

পার্ল 6-এ আপনি তালিকা হ্রাস লেখার বিকল্প উপায় হিসাবে অপারেটরটিকে বর্গাকার বন্ধনীগুলিতে মোড়তে পারেন। [+] @arrayউপাদানগুলির যোগফল প্রদান করে @array, [*] @arrayপণ্য ফেরত দেয় ইত্যাদি You "ত্রিভুজাকার" হ্রাস করতে আপনি অপারেটরটিকে ব্যাকস্ল্যাশের আগেও যেতে পারেন, যা কিছু ভাষায় "স্ক্যান" বলে। সুতরাং [\+] @arrayপ্রথম উপাদানটির সমন্বয়ে একটি তালিকা দেয়@array প্রথম দুটি উপাদানের যোগফল, তারপরে প্রথম দুটি উপাদানগুলির যোগফল, তারপরে প্রথম তিনটি উপাদানের যোগফল ইত্যাদির

এখানে [\,] @_ইনপুট অ্যারের উপর একটি ত্রিকোণ কমানো @_তালিকা নির্মাণ অপারেটর ব্যবহার ,। সুতরাং এটি তালিকাগুলির তালিকাগুলির মূল্যায়ন করে: এর প্রথম উপাদান @_, প্রথম দুটি উপাদান @_ইত্যাদি That's এটি যা প্রয়োজন তা প্রায়, তবে সমস্যাটি প্রথমে একটি একক খালি তালিকার জন্য বলে। সুতরাং রিটার্ন তালিকার প্রথম উপাদানটি একটি আক্ষরিক খালি তালিকা (),, তারপরে ইনপুট তালিকার উপরের হ্রাসটি রিটার্ন তালিকার বাকী অংশে সমতল করা হয় |


2
ও_ও এখানে কী ঘটছে
ASCII-

1
@ এএসসিআইআই-কেবলমাত্র ত্রিভুজাকার হ্রাস
ব্যবহারকারী 202729


5

আর , 40 39 বাইট

function(L)lapply(0:length(L),head,x=L)

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

-1 বাইট ধন্যবাদ digEmAll

আর এর listধরণের আউটপুটটি কিছুটা অদ্ভুত; এটি অনুক্রমিক সূচক ব্যবহার করে, উদাহরণস্বরূপ, এর জন্য আউটপুট

list(1,2) হয়

[[1]]                     # first list element
list()

[[2]]                     # second list element
[[2]][[1]]                # first element of second list element
[1] 1


[[3]]                     # third list element
[[3]][[1]]                # first element of third list element
[1] 1

[[3]][[2]]                # etc.
[1] 2

পরিবর্তে ভেক্টর হিসাবে ইনপুট নেওয়া একটি সুন্দর আউটপুট ফর্ম্যাট দেয়, যদিও তখন ইনপুটগুলি প্রযুক্তিগতভাবে হয় না list



@ ডিজিএম সমস্ত ধন্যবাদ!
জিউসেপে


4

গণিত, 22 21 বাইট

-১ বাইট ধন্যবাদ মিশা লাভরভকে !

{}~FoldList@Append~#&

খাঁটি ফাংশন। ইনপুট হিসাবে একটি তালিকা নেয় এবং আউটপুট হিসাবে তালিকার একটি তালিকা ফেরত দেয়। আমি বিশ্বাস করি এটিই সংক্ষিপ্ততম সমাধান।


আমরা আরও কমপ্যাক্ট হিসাবে একই সমাধান লিখতে পারি {}~FoldList@Append~#&
মিশা লাভরভ

@ মিশা লাভরভ ধন্যবাদ! আমি ততক্ষণ 1 + 2-যুক্তিযুক্ত ফর্মটি ব্যবহার করার জন্য ভাবি নি।
LegionMammal978



3

পাওয়ারশেল , 65 বাইট

param($a)'';$x=,0*($y=$a.count);0..--$y|%{$x[$_]=@($a[0..$_])};$x

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

প্রোগ্রাম শুরুর পরে ডিফল্ট ঘটলে পাওয়ারশেল সহায়কভাবে তালিকাগুলির তালিকাগুলিকে তালিকাভুক্ত করে Write-Output, যাতে আপনি প্রতি লাইনে একটি আইটেম পান। টেক এ-join',' ভাল তালিকা অফ তালিকা দেখতে স্ট্রিং মধ্যে ভেতরের তালিকা রূপান্তর দ্বারা।

(আব) এই সত্যটি ব্যবহার করে যে একটি খালি অ্যারে আউটপুট করার চেষ্টা করার ফলে (যেমন, @()) কোনও আউটপুট আসে না, সুতরাং খালি অ্যারে ইনপুটটি ''আউটপুট হিসাবে ঠিক থাকে , যেহেতু $a[0..$_]ফলাফল কিছুই হবে না nothing এটি কিছু দর্শনীয় ত্রুটি বার্তা ফেলে দেবে


এটিকে বরাদ্দ করার পরিবর্তে পেরেনগুলিতে মোড়ানো 20 বাইট সংরক্ষণ করে । আপনি যদি না ভাবেন যে তালিকার তালিকার প্রত্যাবর্তন হিসাবে গণনা করা হয়। আমি সবসময় এই পার্থক্য সম্পর্কে अस्पष्ट ছিলাম।
ভেস্কাহ

@ ওয়েভস্কাহ হ্যাঁ, এই সংস্করণটিতে আমার সম্পাদনার আগে আমার প্রায় এটিই ছিল। আপনার সমাধান বা আমার আগের সমাধানের সাথে সমস্যা - এটি তালিকার কোনও তালিকা ফেরত দেয় না। টিআইও 1 বনাম টিআইও 2
অ্যাডমবর্কবর্ক

3

1
এটি একধরনের ভুডু। ,\(,()),কে 4 এ। তালিকাভুক্ত ইনপুট সহ তালিকাভুক্ত নালটিতে যোগদান করছেন? howsitwork?
স্ট্রিস্টার

1
@ স্ট্রিস্টস্টার ()একটি খালি তালিকা। (,()),xএটি এপেন্ড করে x। অবশেষে ,\ একটি কনক্যাট-স্ক্যান করে। xএকটি রচনা গঠনের বাদ দেওয়া হয়। নোট চিহ্ন যে ,, dyadic তাই এটি এর "CONCAT", নয় "পক্ষভুক্ত"।
এনজিএন 21

1
@ স্ট্রিস্টস্টার কে 4 এ এটি একটি বাইট সংক্ষিপ্ত হতে পারে: 1_',\0,তবে আমার পার্সার এটিকে পরিচালনা করতে যথেষ্ট স্মার্ট নয় ...
এনজিএন

3

কমন লিস্প , 39 বাইট

(defun f(l)`(,@(if l(f(butlast l))),l))

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

ব্যাখ্যা

(defun f(l)                           )  ; Define a function f
           `(                        )   ; With the list (essentially capable of interpolation), containing:
             ,@                          ;     The value of, flattened to one level
               (if l              )      ;         If l is not the empty list (which is the representation of nil, i.e. the only falsy value)
                    (f(butlast l))       ;         Recurse with all of l but the tail
                                   ,l    ;     The value of l

3

এফ #, 53 বাইট

আমি এর জন্য দুটি একই অনুরূপ উত্তর পেয়েছি, উভয় একই দৈর্ঘ্য। তারা উভয়ই sপ্যারামিটার হিসাবে জেনেরিক ক্রম নেয় ।

প্রথম সমাধান:

let i s=Seq.init(Seq.length s+1)(fun n->Seq.take n s)

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

Seq.takenক্রমের প্রথম উপাদানগুলি গ্রহণ করে। Seq.initসিকোয়েন্স sপ্লাস 1 এর দৈর্ঘ্যের একটি গণনা (এই ক্ষেত্রে) দিয়ে একটি নতুন সিক্যুয়েন্স তৈরি করে এবং অনুক্রমের প্রতিটি উপাদানের জন্য প্রথম nউপাদানগুলিকে গ্রহণ করে s

দ্বিতীয় সমাধান:

let i s=Seq.map(fun n->Seq.take n s){0..Seq.length s}

আগের মতো, এটি 0 থেকে দৈর্ঘ্যের ক্ষেত্রে একটি ক্রম তৈরি করে s। তারপরে থেকে সেই সংখ্যক উপাদান গ্রহণ করে s

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


fun s->Seq.map(fun n->Seq.take n s){0..Seq.length s} 1 বাইট সংরক্ষণ করে
অজ্ঞতার

3

এমএটিএল, 15 12 বাইট

3 বাইট সংরক্ষিত @ জিউজ্পে ধন্যবাদ

vin:"G@:)]Xh

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

এমএটিএল যেভাবে আউটপুট প্রদর্শন করে তার কারণে আপনি সেল অ্যারেতে খালি অ্যারেটি স্পষ্টভাবে দেখতে পাচ্ছেন না। এখানে এমন একটি সংস্করণ যা আউটপুটটিকে আরও কিছুটা স্পষ্টভাবে দেখায়।

ব্যাখ্যা

v       # Vertically concatenate the (empty) stack to create the array []
i       # Explicitly grab the input
n       # Compute the number of elements in the input (N)
:       # Create an array from [1, ..., N]
"       # Loop through this array
  G     # For each of these numbers, M
  @:    # Create an array from [1, ..., M]
  )     # Use this to index into the initial array
]       # End of the for loop
Xh      # Concatenate the entire stack into a cell array

vপরিবর্তে ব্যবহার করুন []। এবং ডিফল্ট প্রথম যুক্তি হিসাবে :ব্যবহার করবেন না 1? সুতরাং এটি vin:"G@:)]Xh12 বাইটের জন্য হতে পারে ।
জিউসেপ

@ জিউসেপ ধন্যবাদ! আমার MATL একটু মরিচা মনে হয় :( হয়
Suever


2

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

Eθ…θκθ

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

 θ      Input array
E       Map over elements
   θ    Input array
  …     Moulded to length
    κ   Current loop index
        Implicitly print each array double-spaced
     θ  Input array
        Implicitly print

n+1চারকোলকে একটি এলিমেন্ট অ্যারে প্রিন্ট করতে বলার জন্য 1 বাইট ব্যয়ে এটি সম্ভব হয় যার মধ্যে শেষ উপাদান হিসাবে ইনপুট অন্তর্ভুক্ত থাকে তবে আউটপুট একই হয়, আপনি যদি অন্য কিছু মুদ্রণ করতে যান তবে কার্সারের অবস্থানটি আলাদা হবে।



2

আরএডি , 7 বাইট

(⊂⍬),,\

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

এটি ডায়ালগ এপিএলে একটি ফাংশন হিসাবেও কাজ করে।

কিভাবে?

এটি এপিএল এবং আরএডি উভয়ের জন্য একই রকম কাজ করে, তাদের ঘনিষ্ঠ সম্পর্কের প্রেক্ষিতে।

  • (⊂⍬) খালি অ্যারে
  • , প্রতিশোধ
  • ,\ উপসর্গ (যা খালি অ্যারে বাদ দেয়))



2

brainfuck , 43 বাইট

ইনপুট হিসাবে নন-নাল অক্ষরের একটি তালিকা নিন এবং নিউলাইন দ্বারা পৃথক সমস্ত উপসর্গ প্রদান করে। ডাবল-অসীম বা মোড়ানোর টেপ প্রয়োজন।

,>-[+>,]<[-<]<<++++++++++[[<]>[.>]>[-<+>]<]

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


আরেকটি উত্তর আমাকে অর্ধেকেরও বেশি ছাপিয়ে গেছে, কারণ পড়ার সময় আমি মুদ্রণ আউটপুট সম্পর্কে ভাবি না । অবশ্যই সেই পদ্ধতিটি ক্রমবর্ধমান প্রত্যয় মুদ্রণের সাথে কাজ করবে না।
ব্যবহারকারী 202729

কিছু পুনরায় সাজানো সহ 40 বাইট
জো কিং

2

System.Linq; আপনার বাইটাউন্টে ব্যবহারটি আপনাকে অন্তর্ভুক্ত করতে হবে । এবং মনে হচ্ছে আপনার কিছু আউটপুট যুক্তি আপনার অ্যারে আউটপুটটিংয়ে রয়েছে। কারণ খালি অ্যারে খালি অ্যারে ফিরিয়ে দেয়।
LiefdeWen

@ লিফডওয়েভেন - আমার বোঝার বিষয়টি হ'ল যেহেতু এই দোভাষীর একটি উল্লেখ উল্লেখ রয়েছে System.Linq, তাই আমাকে এটি বাইট গণনায় অন্তর্ভুক্ত করতে হবে না। আমার জমাটি বলার চেয়ে আলাদা ভাষা হিসাবে বিবেচিত হবে.NET Coregithub.com/dotnet/roslyn/wiki/C%23- ইন্টারেক্টিভ- ভালকথ্রো - আপনি মুদ্রণের উল্লেখ করেছেন যা একটি পৃথক সমস্যা, আমি প্রথমে এই বিষয়ে স্পষ্টতা পেতে চাই।
ডানা

মুদ্রণের সাথে সম্পর্কিত, এখানে একটি সংস্করণ যা মূলত ফলাফলটি কনসোলে ফেলে দেয় - tio.run/##XY29CsIwGEX3PEXGBGKhtVt/… - নিশ্চিতভাবে ততটা সুন্দর নয়! আমার কাছে প্রশ্নটি কখন Arrayবনাম IListবনাম ব্যবহার করা গ্রহণযোগ্য IEnumerable
ডানা

2

এফ # (মনো) , 45 বাইট

fun x->List.mapi(fun i y->List.take i x)x@[x]

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

এটি বৈধ কিনা আমি পুরোপুরি নিশ্চিত নই, তবে মনে হয় এটি একই "বেনাম ল্যাম্বডা" সিনট্যাক্সটিকে অনুসরণ করে যা আমি অন্য কয়েকটি ভাষায় ব্যবহার করেছি বলে মনে হয়।


2

জাভা 8+ , 86 77 বাইট

-9 বাইট ধন্যবাদ কেভিন ক্রুইজসেনকে (আমদানি থেকে মুক্তি)!

x->java.util.stream.IntStream.range(0,x.size()+1).mapToObj(t->x.subList(0,t))

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

বিকল্প, 65 বাইট

নিম্নলিখিতটি স্টাডাউটে ফলাফল মুদ্রণ করবে ( অলিভিয়ের গ্রাগোয়ারের কারণে) ) :

x->{for(int i=0;i<=x.size();)System.out.print(x.subList(0,i++));}

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


আপনি java.util.stream.IntStreamসরাসরি ব্যবহার করে আমদানিটি ড্রপ করে এটি 77 বাইটে গল্ফ করতে পারেন ।
কেভিন ক্রুইজসেন

@ কেভিন ক্রুজসেন: ওহ ধন্যবাদ! আমি এমনকি জানতাম না যে এটি সম্ভব, এটি অবশ্যই সহায়ক (অন্তত গল্ফিংয়ের উদ্দেশ্যে)।
19

x->{for(int i=0;i<=x.size();)System.out.println(x.subList(0,i++));}( 67 বাইট ) এই প্রিন্টগুলি স্ট্রীমগুলি ব্যবহার না করে। মুদ্রণ সাধারণত জটিল কাঠামো আউটপুট করার সবচেয়ে সংক্ষিপ্ততম উপায়।
অলিভিয়ার গ্রাওগায়ার

@ অলিভিয়ারগ্রোওয়ের: System.out.printআউটপুট এখনও সুস্পষ্ট না হওয়ার কারণে আপনি সম্ভবত এখান থেকে দূরে সরে যেতে পারেন ।
5

@ বিএমও প্রকৃতপক্ষে, এটি সম্ভব হবে!
অলিভিয়ার গ্রাগোয়ার


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