একটি তালিকার পার্টিশন


9

উত্তর এই প্রশ্ন অত্যন্ত দীর্ঘ অনেক

আপনার চ্যালেঞ্জটি হ'ল স্বল্প সংখ্যক অক্ষরের মধ্যে একটি বিভাজন ফাংশন লিখুন ।

ইনপুট উদাহরণ

['a', 'b', 'c']

আউটপুট উদাহরণ

[(('a'),('b'),('c')),
 (('a', 'b'), ('c')),
 (('a', 'c'), ('b')),
 (('b', 'c'), ('a')),
 (('a', 'b', 'c'))]

ইনপুটটি কোনও তালিকা / অ্যারে / সেট / স্ট্রিং ইত্যাদি হতে পারে যা আপনার ফাংশনটি প্রক্রিয়া করার জন্য সহজ eas

কাঠামোগুলি যতক্ষণ পরিষ্কার থাকে ততক্ষণ আপনি নিজের অনুসারে আউটপুট ফর্ম্যাটও চয়ন করতে পারেন।

আপনার ফাংশনটি ইনপুটটিতে কমপক্ষে 6 টি আইটেমের জন্য কাজ করা উচিত


খালি বিভাজনও কি আউটপুট অংশ হতে পারে?
FUZxxl

উত্তর:


3

গল্ফস্ক্রিপ্ট (৪৩ টি চর)

{[[]]:E\{:v;{:^E+1/{^1$-\[~[v]+]+}/}%}/}:P;

অথবা

{[[]]:E\{:v;{:^E+1/{^1$-\{[v]+}%+}/}%}/}:P;

হাওয়ার্ডের সমাধান হিসাবে একই ইনপুট ফর্ম্যাট, আউটপুট ফর্ম্যাট এবং ফাংশনের নাম। কোনও জোর জবরদস্তি নেই: প্রতিবার বাইরের লুপের চারপাশে পার্টিশনে ইনপুট তালিকা থেকে একটি উপাদান যুক্ত করার সহজ পুনরাবৃত্তি পদ্ধতি গ্রহণ করে।


6

গল্ফস্ক্রিপ্ট, ৫১ টি অক্ষর

{[[]]\{[.;]`{1$[1$]+@@`1$`{[2$]-@@[+]+}++/}+%}/}:P;

স্ক্রিপ্টটি একটি ভেরিয়েবল সংজ্ঞায়িত করে Pযা স্ট্যাকের শীর্ষ থেকে একটি অ্যারে নেয় এবং সমস্ত পার্টিশনের তালিকার পিছনে ধাক্কা দেয়, যেমন

[1 2] P            # => [[[1] [2]] [[1 2]]]
["a" "b" "c"] P    # => [[["a"] ["b"] ["c"]] [["b"] ["a" "c"]] [["a"] ["b" "c"]] [["a" "b"] ["c"]] [["a" "b" "c"]]]

এটি বৃহত্তর তালিকাগুলিতেও কাজ করে:

6, P ,p            # prints 203, i.e. Bell number B6
8, P ,p            # 4140

আপনি অনলাইনে নিজের পরীক্ষা করতে পারেন


6

জে, 51 টি অক্ষর

([:<a:-.~])"1~.((>:@i.#:i.@!)#l)<@;/."1[l=:;:1!:1[1

কীবোর্ড থেকে ইনপুট নেয়, আইটেমগুলি ফাঁক দিয়ে পৃথক করে:

   ([:<a:-.~])"1~.((>:@i.#:i.@!)#l)<@;/."1[l=:;:1!:1[1
a b c
+-----+------+------+------+-------+
|+---+|+--+-+|+--+-+|+-+--+|+-+-+-+|
||abc|||ab|c|||ac|b|||a|bc|||a|b|c||
|+---+|+--+-+|+--+-+|+-+--+|+-+-+-+|
+-----+------+------+------+-------+

1

হাস্কেল, 90 87 71 66

নিমিকে ধন্যবাদ 5 বাইট সংরক্ষণ করা

x#[]=[[[x]]]
x#(y:s)=((x:y):s):map(y:)(x#s)
p=foldr((=<<).(#))[[]]

উদাহরণ:

*Main> p "abc"
[["abc"],["bc","a"],["ac","b"],["c","ab"],["c","b","a"]]

কয়েক বাইট সংরক্ষণ করতে: এর 2nd লাইন প্রথম বন্ধনী নতুন করে সাজানো #: :map(y:)(x#s)এবং পয়েন্ট-মুক্ত সংস্করণ মধ্যে ল্যামডা চালু: foldr((=<<).(#))[[]]
নিমি

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