একটি অ্যারের অভ্যন্তরে নেস্টিং স্ট্রিং n বার


16

আপনাকে অবশ্যই এমন একটি ফাংশন তৈরি করতে হবে যা sকোনও অ্যারের ভিতরে স্ট্রিংকে nবার করে

>>> N("stackoverflow",2)
[['stackoverflow']]

পরামিতি:

  1. s - একটি আসকি স্ট্রিং
  2. n - একটি পূর্ণসংখ্যা >= 0

বিধি

  • সংক্ষিপ্ততম কোড জিতেছে।
  • আউটপুটটি নেস্টেড array, listবা tuple(বা অ্যারের ভিত্তিতে অনুরূপ টাইপ) হবে

পরীক্ষার কেস

>>> N("stackoverflow",0)
'stackoverflow'
>>> N("stackoverflow",1)
['stackoverflow']
>>> N("stackoverflow",5)
[[[[['stackoverflow']]]]]

দ্বারা অনুপ্রাণিত: তালিকার ভিতরে একটি স্ট্রিং নেস্ট করা n বার অর্থাত্ একটি তালিকার তালিকার তালিকা


6
আউটপুটটির কি কোনও তালিকা থাকতে হবে, বা এটি সেই তালিকার প্রতিনিধিত্বকারী কোনও স্ট্রিং হতে পারে?
ক্লিস্টিক

2
আমরা কোনও ক্রমে প্যারামিটারগুলি নিতে পারি?
সকরাটিক ফিনিক্স

@ গণতান্ত্রিক ফিনিক্স আমি মনে করি স্পষ্টভাবে নিষিদ্ধ না হলে, হ্যাঁ - আপনি যে কোনও যুক্তিসঙ্গত বিন্যাসে ইনপুটটি নিতে পারেন (যার মধ্যে আমি বিশ্বাস করি যে দুটিটিকে তালিকা হিসাবে অন্তর্ভুক্ত করা হবে)। হতে পারে আরও অভিজ্ঞ কেউ কোনও প্রাসঙ্গিক মেটা পোস্টে নির্দেশ করতে পারেন।
জোনাথন অ্যালান

স্ট্রিংটিতে কি কখনও পালানো অন্তর্ভুক্ত থাকবে "? উদাহরণস্বরূপN("stack\"overflow",5)
রিলে

@ রিলে এতে কোনও
আসকি

উত্তর:


11

জেলি , 2 বাইট

কিছুটা বিভ্রান্তিকর, যেহেতু: (১) জেলির কোনও স্ট্রিং নেই, কেবলমাত্র অক্ষরের তালিকা রয়েছে; এবং (2); আউটপুটটি বাসা বাঁধবে না। এটি আসলে যা করছে তা দেখার জন্য ফলাফলটির একটি পাইথন স্ট্রিং উপস্থাপনাটি দেখুন:

W¡ŒṘ

[]স্ট্রিং নিজেই অক্ষরের তালিকায় থাকবে বলে একটি অতিরিক্ত জুড়ি উপস্থিত থাকবে। উদাহরণ স্বরূপ

কিভাবে?

W¡ - Main link: s, n
W  - wrap left, initially s, in a list
 ¡ - repeat previous link n times

প্রুফ-অফ-কনসেপ্ট কোড যুক্ত করেছে:

W¡ŒṘ - Main link: s, n
  ŒṘ - Python string representation


"আরও ভাল" এতে মনে হচ্ছে স্ট্রিংগুলি ব্যবহার করা হচ্ছে ... এটি প্রদর্শিত হয় না যে অক্ষরগুলির একটি তালিকা আসলে ব্যবহৃত হচ্ছে।
জোনাথন অ্যালান

15

জাভা এবং সি #, 62 বাইট

Object f(String s,int n){return n<1?s:new Object[]{f(s,n-1)};}

জাভা এবং সি # উভয় ক্ষেত্রেই পরিবর্তন ছাড়া কাজ করা উচিত।


স্মার্ট! +1 আমি স্ট্রিং-অ্যারে বাসা বেঁধে জাভাতে এটি কাজ করার চেষ্টা করছিলাম, যা সত্যই কার্যকর হয়নি। কোনও অবজেক্টকে রিটার্ন টাইপ হিসাবে ব্যবহার করা এবং এটি কোনও অবজেক্ট [] এ বাসা বাঁধাই এই চ্যালেঞ্জের জন্য প্রয়োজনীয় সমাধান, কারণ অবজেক্ট [] (বা কোনও অ্যারে) নিজেও একটি অবজেক্ট। সুন্দর.
কেভিন ক্রুইজসেন

12

05 এ বি 1 , 3 বাইট

কোড

`F)

ব্যাখ্যা

`   # Flatten the input array on the stack.
 F  # Element_2 times do:
  ) # Wrap the total stack into a single array.

এর অর্থ হল এটি 0- স্টেস্টকেসের জন্যও কাজ করে , যেহেতু স্ট্রিংটি ইতিমধ্যে স্ট্যাকের মধ্যে রয়েছে।

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


8

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

d=>g=n=>n--?[g(n)]:d

যদিও লোকেরা সাধারণত আমাকে 1-বাইট সংরক্ষণের জন্য আমার ক্রিয়াকলাপগুলি ক্রেজি করতে ডাকা করে, এটি এমন একটি ক্ষেত্রে যেখানে এটি সমাধানে আসলে অবদান রাখে।


তরকারী ব্যবহারের দুর্দান্ত ব্যবহার। আমি মনে করি আপনি এটিকে কিছুটা বেশি পঠনযোগ্য করে তুলতে পারেন:d=>g=n=>n?[g(n-1)]:d
ETH প্রোডাকশনগুলি


5

সিজেম , 7 6 বাইট

{{a}*}

অনলাইন দোভাষী

এই একটি নামহীন ফাংশন যে স্ট্যাক থেকে তার আর্গুমেন্ট লাগে S N, Sস্ট্রিং হচ্ছে এবং Nগোপন হচ্ছে। আপনি এটিকে ~অপারেটর দিয়ে চালিত করতে পারেন , যার অর্থ eval।

ব্যাখ্যা:

{{a}*}
{      Open block    [A B]
 {     Open block    [A]
  a    Wrap in array [[A]]
   }   Close block   [A B λwrap]
    *  Repeat        [A:wrap(*B)]
     } Close block   ["S" N λ(λwrap)repeat]

বিশ্রী ইনপুট ফর্ম্যাট {{a}*}বা এড়ানোর জন্য কেবল একটি নামহীন ব্লক ব্যবহার করুন {'a*~}
মার্টিন এন্ডার

@ মার্টিনএন্ডার আমি ভয় করি যদিও এটি বাইটস নিতে পারে, এবং আমি মনে করি ইনপুট ফর্ম্যাটটি 100% গ্রহণযোগ্য। এটি কেবল একটি তালিকা, এবং আমি মনে করি যে এই দুটি পরামিতি কীভাবে প্রবেশ করা হবে সে সম্পর্কে কোনও বিধিনিষেধ নেই। এছাড়াও, আমি কখনও ব্লকের নাম রাখিনি।
এরিক দ্য আউটগল্ফার

আমি জানি না আপনি বাইটসের মানে কী? এই উভয় সমাধান মাত্র 6 বাইট।
মার্টিন এন্ডার

@ মার্টিন ইন্ডার ওহ, এই পুরো সমাধানগুলি কি ছিল? আমি ভেবেছিলাম আপনি আমার প্রোগ্রামটি প্রসারিত করার কথা বলছেন, তবে আপনি কেবল এটি একটি ফাংশনে রূপান্তর করেছেন? ভাল, যে পুরো পয়েন্ট পরিবর্তন। আমি সিজেএম / গল্ফস্ক্রিপ্ট / পাইথের নবাগত। আমি প্রথমটিকে পছন্দ করি কারণ এটি {a}দ্বিতীয়টির পরিবর্তে আরও বোধগম্য (পুনরাবৃত্তি এন বার) হয় (এন স্ট্রিং উত্পাদন করে aএবং এটি সম্পাদন করে)।
এরিক দ্য আউটগল্ফার

4

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

পুনরাবৃত্তি ফাংশন

f=(a,i)=>i?f([a],--i):a

console.log(f("stackoverflow",0))
console.log(f("stackoverflow",1))
console.log(f("stackoverflow",2))
console.log(f("stackoverflow",5))

একই দৈর্ঘ্যের ফলাফল কার্য়িং

f=a=>i=>i?f([a])(--i):a

4

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

tT,?h:T:gi

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

ব্যাখ্যা

tT,            T is the integer (second element of the Input)
   ?h:T:g      The list [String, T, built-in_group]
         i     Iterate: Apply built-in_group T times to String

এটি বাগ করা না থাকলে এটি 3 বাইট হবে। ইতিমধ্যে আমাদের ইনপুট [String, T, built-in_group]সত্ত্বেও তালিকাটি পেতে এখানে আমাদের এই সমস্ত প্রয়োজন [String, T]

দুর্ভাগ্যক্রমে :gসরাসরি ফলাফল হয় [[String, T], built-in_group], যা সঠিকভাবে স্বীকৃত নয় iকারণ পূর্ণসংখ্যা Tপ্রথম তালিকার ভিতরে রয়েছে।


4

এমএটিএল, 6 বাইট

ji:"Xh

এটি আউটপুট হিসাবে একটি নেস্টেড সেল অ্যারে উত্পাদন করে। এমএটিএল এর ডিফল্ট ডিসপ্লে সহ, তবে আপনি প্রয়োজনীয়ভাবে এটি দেখতে পাচ্ছেন না কারণ এটি কোঁকড়ানো ধনুর্বন্ধনী সমস্ত দেখায় না show নীচের ডেমোটি সামান্য পরিবর্তিত সংস্করণ যা আউটপুটটির স্ট্রিং প্রতিনিধিত্ব দেখায়।

ji:"Xh]&D

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

ব্যাখ্যা

j       % Explicitly grab the first input as a string
i       % Explicitly grab the second input as an integer (n)
:"      % Create an array [1...n] and loop through it
    Xh  % Each time through the loop place the entire stack into a cell array
        % Implicit end of for loop and display


3

পাইথ , 3 বাইট

]Fw

মাহবুব

এটি আউটপুট মত কিছু হবে ...[[[[['string']]]]]... । এটা তোলে শূন্য গভীরতা জন্য উদ্ধৃত না: string

ব্যাখ্যা:

]Fw
   Q Implicit: Eval first input line
]    Function: Wrap in array
  w  Input line
 F   Apply multiple times

আপনি যদি শূন্য গভীরতায় উদ্ধৃতি চান, তবে পরিবর্তে এই 4-বাইট সমাধান (ব্যাখ্যা) ব্যবহার করুন:

`]Fw
    Q Implicit: Eval first input line
 ]    Function: Wrap in array
   w  Input line
  F   Apply multiple times
`     Representation

3

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

for($r=$argv[1];$i++<$argv[2];)$r=[$r];echo json_encode($r);

48 টি বাইটস যদি এটি কেবল কাজের মতো দেখায় looks

for($r=$argv[1];$i++<$argv[2];)$r="[$r]";echo$r;

আমি মনে করি যে প্রশ্ন মালিকের নিজস্ব পাইথন উত্তরের সরাসরি লিখনটি পিএইচপি-তে এখনও সবচেয়ে সংক্ষিপ্ত:: function f($s,$n){return$n?[f($s,$n-1)]:$s;}
manatwork

print_r()এবং, যদি আপনি এই বিকল্পটি পছন্দ না করেন তবে আউটপুটকে পৃথক করার সময় serialize()উভয়ই আইএনপি থেকে খাটো হয় json_encode()
ব্যবহারকারী59178

বিটিডাব্লু, ')কোডের শেষে যে একাকীটি অদ্ভুত দেখাচ্ছে।
manatwork

@ মান্যাটওয়ার্ক কপি এবং পেস্ট করার ত্রুটি আপনাকে ধন্যবাদ
জার্গ হালসারম্যান

3

রুবি: 23 বাইট

->n,s{n.times{s=[s]};s}

মূল স্নিপেটের পরিবর্তে এটিকে কলযোগ্য প্রস তৈরি করতে আপডেট করা হয়েছে। sসুস্পষ্টভাবে ফিরিয়ে দেওয়ার পরিবর্তে সুস্পষ্টভাবে ফিরে আসার উপায় আছে কিনা তা জানতে আগ্রহী হব ।


2
সাধারণত আপনার "আরও কয়েকটি শব্দ" আপনার কোড কীভাবে কাজ করে তার ব্যাখ্যা হওয়া উচিত। তবে এটি একটি ভাল উত্তর।
wizzwizz4

"আপনাকে অবশ্যই একটি ফাংশন তৈরি করতে হবে" এটি একটি কোড স্নিপেট। স্পষ্টভাবে অন্যথায় নির্দিষ্ট না করা না হলে ইনপুট এবং আউটপুট কোড দ্বারা স্পষ্টভাবে পরিচালনা করতে হবে বা ইন্টারপ্রিটার দ্বারা স্পষ্টভাবে হ্যান্ডেল করতে হবে যদি এর মধ্যে এমন বৈশিষ্ট্য থাকে। আপনি কিছু গ্লোবাল ভেরিয়েবল সেট হওয়ার আশা করতে পারবেন না এবং আপনি কিছু গ্লোবাল ভেরিয়েবলের ফলাফলটি ছেড়ে দিতে পারবেন না।
manatwork

পিপিসিজিতে আপনাকে স্বাগতম! সমস্ত উত্তর কলযোগ্য ফাংশন বা পূর্ণ প্রোগ্রাম হওয়া উচিত, যদিও। আপনার ক্ষেত্রে, সংক্ষিপ্ত সংশোধনটি হবে নামবিহীন কোনও ফাংশন ব্যবহার করা ->s,n{...}
মার্টিন ইন্ডার

@ উইজউইজ্জেড ৪ এবং মার্টিন, আপনার উত্সাহ এবং সহায়ক ইনপুটটির জন্য আপনাকে ধন্যবাদ, আমি কিছু শিখেছি এবং আপডেট করব। ম্যানটওয়ার্ক, আমি পুরু ত্বক পেয়েছি এবং এসও-তে প্রচুর পয়েন্ট পেয়েছি তবে আপনি জানেন যে এই জাতীয় ভোঁতা বক্তব্য স্ট্যাক সাইটগুলি থেকে নতুনদের ভয় দেখায় এবং তাদের ভয় দেখায়। কোন লজ্জা লাগছে না?
পিটার নিক্সে

3

সি, 44 বাইট , 41 বাইট

int*n(int*s,int a){return a?n(&s,a-1):s;}

আপনি নিম্নলিখিতটি দ্বারা এটি পরীক্ষা করতে পারেন:

int main(void) {
    char* s = "stackoverflow";

    /* Test Case 0 */
    int* a = n(s,0);
    printf("'%s'\n", a);

    /* Test Case 1 */
    int* b = n(s,1);
    printf("['%s']\n", *b);

    /* Test Case 2 */
    int** c = n(s,2);
    printf("[['%s']]\n", **c);

    /* Test Case 3 */
    int*** d = n(s,3);
    printf("[[['%s']]]\n", ***d);

    /* Test Case 4 */
    int********** e = n(s,10);
    printf("[[[[[[[[[['%s']]]]]]]]]]\n", **********e);

    return 0;
}

আউটপুট:

'stackoverflow'
['stackoverflow']
[['stackoverflow']]
[[['stackoverflow']]]
[[[[[[[[[['stackoverflow']]]]]]]]]]

অবশ্যই, আপনি সতর্কতা পাবেন। এটি gccআমার উইন্ডোজ মেশিনে বাশ নিয়ে কাজ করে ( gcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.3)পাশাপাশি একটি সত্য লিনাক্স মেশিনেও gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5))।


2
অন্যান্য সংকলক সম্পর্কে নিশ্চিত না, তবে int*n(s,a)int*s;{return!a?s:n(&s,a-1);}জিসিসি নিয়ে কাজ করে।
ডেনিস

এটি cc -v-> এর জন্য সেগফাল্ট করে Apple LLVM version 8.0.0 (clang-800.0.38)
নিমি

2
আপনি ড্রপ করতে পারেন !তিন শর্ত থেকে ক্রম সুইচ sএবং n(&s,a-1)একটি বাইট সংরক্ষণ করতে?
রাইলি

2
@VolAnd আপনি কল যখন n(s,6), আপনি পরিবর্তন করতে হবে ***করতে ******পরিবর্তনশীল ঘোষণা এবং ব্যবহারে রয়েছে। এটি ঠিক প্রয়োজন কারণ ফাংশনটি এটি থেকে প্রত্যাশিত যা করে তা করে: স্ট্রিংটিকে অ্যারেতে বেশ কয়েকটি (এখানে: 6) বার করে। অবশ্যই আপনি এখনও তিনটি স্তর পাবেন []কারণ তারা হার্ডকোডযুক্ত। আমি মনে করি প্রোগ্রামটি তাদের মোটেও আউটপুট করা উচিত নয়। এই চ্যালেঞ্জটি বন্ধনী সম্পর্কে নয়, এটি বাসা বাঁধার বিষয়ে। কিছু ভাষা বন্ধনী সহ অ্যারেগুলি মুদ্রণ করে, সি এগুলি মুদ্রণের জন্য কোনও বিল্টিন ফাংশন নেই। তাতে কি? এটি এখানে প্রয়োজন হয় না।
ক্রিশ্চান সিভর্স

1
*ফাংশন স্বাক্ষরের পরে আপনি ফাঁকা স্থানগুলি ফেলে দিতে পারেন ?
মনিকার লকসুট


2

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

এর লেখা jamylak এর পাইথন সমাধান

f=->s,n{n>0?[f[s,n-1]]:s}

নমুনা রান:

irb(main):001:0> f=->s,n{n>0?[f[s,n-1]]:s}
=> #<Proc:0x00000002006e80@(irb):1 (lambda)>

irb(main):002:0> f["stackoverflow",0]
=> "stackoverflow"

irb(main):003:0> f["stackoverflow",1]
=> ["stackoverflow"]

irb(main):004:0> f["stackoverflow",5]
=> [[[[["stackoverflow"]]]]]

2

সি # 6, 50 বাইট

dynamic a(dynamic s,int n)=>n<2?s:a(new[]{s},n-1);

1
এটা করা উচিত নয় n<1? এর objectপরিবর্তে -2 বাইট ব্যবহার করুন dynamic
দুধ

2

রুবি, 24 বাইট

f=->*s,n{s[n]||f[s,n-1]}

মানাটওয়ার্কের উত্তরের মতোই বলা হয়েছে , তবে একটি উইডার বাস্তবায়ন। *sএকটি অ্যারেতে ইনপুট (একটি সম্ভবত নেস্টেড স্ট্রিং) মোড়ানো ps তারপরে যদি nশূন্য হয় s[n]তবে প্রথম উপাদানটি প্রদান করে s, ফাংশনটিকে নো-ওপিতে পরিণত করে। অন্যথায়, এটি প্রত্যাবর্তন করে nilযেহেতু sকেবলমাত্র একটি উপাদান থাকবে তাই আমরা পুনরাবৃত্তির কলটিতে যাব।



2

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

{($^a,{[$_]}...*)[$^b]}

সম্প্রসারিত:

{ # bare block lambda with two placeholder parameters 「$a」 and 「$b」
  (

    # generate Sequence

    $^a,       # declare first input
    { [ $_ ] } # lambda that adds one array layer
    ...        # do that until
    *          # Whatever

  )[ $^b ]     # index into the sequence
}

পার্ল তার সিনট্যাক্সটি দিয়ে আমাকে বিস্মিত করার জন্য কখনই থামে না
ফান্ড মনিকার লসুইট

2

আগদা, 173 বাইট

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

module l where
open import Data.List
open import Data.Nat
L : ℕ -> Set -> Set
L 0 a = a
L(suc n)a = List(L n a)
f : ∀ n{a}-> a -> L n a
f 0 x = x
f(suc n)x = [ f n x ]

(আমি আশা করি আমি সব জায়গায় যেখানে স্পেস বাদ দেওয়া যেতে পারে খুঁজে পাওয়া যায়নি।) Lএকটি টাইপ ফাংশন যা একটি প্রাকৃতিক দেওয়া হয় nএবং একটি টাইপ aআয় ধরণ nবার তালিকার নেস্টেড a, তাই L 3 Boolতালিকা তালিকা তালিকা ধরণ হবে Bool(যদি আমরা ছিল আমদানি করা Bool)। এটি আমাদের হিসাবে আমাদের ফাংশনের ধরণটি প্রকাশ করতে দেয়(n : ℕ) -> {a : Set} -> a -> L n a সেখানে কোঁকড়ানো ধনুর্বন্ধনী এটি যুক্তিটিকে অন্তর্নিহিত করে। কোডটি এই ধরণের লেখার জন্য একটি ছোট্ট উপায় ব্যবহার করে। প্রথম যুক্তিটির সাথে প্যাটার্ন মিলিয়ে এখন ফাংশনটি সুস্পষ্ট উপায়ে সংজ্ঞায়িত করা যায়।

একটি দিয়ে এই ফাইলটি লোড হচ্ছে .agda Emacs এক্সটেনশান ব্যবহার করার অনুমতি দেয় C-c C-nউদাহরণস্বরূপ, ইনপুট (স্বাভাবিক ফর্মে শব্দ মূল্যায়ন) f 2 3এবং একটি বিশ্রী আকারে সঠিক উত্তর পাবেন: (3 ∷ []) ∷ []। এখন অবশ্যই যদি আপনি স্ট্রিং দিয়ে এটি করতে চান তবে আপনাকে সেগুলি আমদানি করতে হবে ...


কেবল মনে আছে যে আমি পরিবর্তে লিখতে পারি ->, তবে অবশ্যই এটি কোনও ইউটিএফ -8 এনকোডযুক্ত ফাইলের আকার বাড়ে।
খ্রিস্টান সিভর্স

হাস্কেলের মধ্যে আমার এটির কুৎসিত অনুবাদ কিছুটা ছোট। এটি ছোট রাখার জন্য আমাকে ম্যানুয়াল অ্যানারিতে লেগে থাকতে হবে।
dfeuer

2

কে, 3 বাইট

,:/

একটি ডায়াডিক ফাংশন হিসাবে নেওয়া, /পুনরাবৃত্তভাবে দ্বিতীয় আর্গুমেন্টে বাম-হাত ফাংশন ,:( enlist) n বার প্রয়োগ করবে ।

উদাহরণ:

k),:/[3;"hello"]
,,,"hello"

1

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

function n($s,$n){return$n?n([$s],--$n):$s;}

পরিশীলিত কিছুই, শুধু একটি পুনরাবৃত্তি ফাংশন


1

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

lambda s,n:eval('['*n+`s`+']'*n)

রাখে nস্ট্রিং সামনে বন্ধনী এবং খোলা nঘনিষ্ঠ বন্ধনী আগেই, তারপর ফলাফলের evals। যদি একটি স্ট্রিং আউটপুট অনুমোদিত হয়, তবে evalএটি সরানো যেতে পারে।



1

আর, 39 40 বাইট

সম্পাদনা: n=0@ আর্টারনবুলকে ধন্যবাদ সমস্যার সমাধান করা হয়েছে Fix

ফাংশন যা দুটি ইনপুট s(স্ট্রিং) এবং n(নেস্টনেডনেস) নেয় এবং নেস্টেড তালিকার আউটপুট দেয়। নোট করুন যে আর-ক্লাসটি listস্থানীয়ভাবে অন্যান্য ভাষার চেয়ে আলাদাভাবে আউটপুট প্রিন্ট করে তবে কোনও কী / মান মানচিত্র (সম্ভবত নামবিহীন কীগুলি সহ) বা পাইথনের একটি তালিকার মতো কার্যকরীভাবে অনুরূপ।

f=function(s,n)if(n)list(f(s,n-1))else s

উদাহরণ

> f=function(s,n)if(n)list(f(s,n-1))else s
> f("hello",3)
[[1]]
[[1]][[1]]
[[1]][[1]][[1]]
[1] "hello"


> # to access the string nested 5 times in the "list-object" named "list" we can do the following
> list = f("nested string",5)
> list[[1]][[1]][[1]][[1]][[1]]
[1] "nested string"

1
খুব সুন্দর! এটি এর জন্য পছন্দসই আউটপুট দেয় না n=0। আমি আপনার উত্তরটি দেখার আগে, আমি একটি পুনরাবৃত্ত সমাধানটি নিয়ে এসেছি যা মোকাবেলা করতে পারে n=0তবে এটি আপনার সমাধানের চেয়ে 1 বাইট বেশি (40 বাইট):f=function(s,n)if(n)list(f(s,n-1))else s
rturnbull

@rturnbull আপনি অবশ্যই ঠিক আছেন। আপনার সমাধানটি আমার মতে অনেক বেশি মার্জিত এবং আমি n=0মামলার বিষয়টি পুরোপুরি ভুলে গেছি । যাইহোক, আপনার সমাধানটি আসলে 38ফাংশনটির নাম বাদ দিয়ে বাইটস এবং তাই খাটো। দুর্দান্ত ক্যাচ
বিলিওব

1
এটি একটি পুনরাবৃত্ত ফাংশন যেহেতু এটির নামকরণ করা উচিত, দুর্ভাগ্য! (অন্যথায় এটি এর f(s,n-1)অভ্যন্তরীণ কলটির ব্যাখ্যা করতে পারে না urs) আর যতক্ষণ না জানি, পুনরাবৃত্তিমূলক বেনামি ফাংশনগুলি সম্ভব নয়।
rturnbull

@ আর্টারনবুল আপনি আবার ঠিক আছেন। উত্তর আপডেট করা হচ্ছে।
বিলিওব

এক বছর পরে, আমি অন্য বাইট বন্ধ golfed করেছি: f=function(s,n)'if'(n,list(f(s,n-1)),s)
rturnbull

1

রেকেট 83 বাইট

(for((c n))(set! s(apply string-append(if(= c 0)(list"[\'"s"\']")(list"["s"]")))))s

Ungolfed:

(define (f s n)
  (for ((c n))
    (set! s (apply string-append
                   (if (= c 0)
                       (list "[\'" s "\']")
                       (list "[" s "]"))
                   )))
  s)

পরীক্ষামূলক:

(f "test" 3)

আউটপুট:

"[[['test']]]"

1

হাস্কেল, 40 38 বাইট

data L=N[Char]|C L 
f 0=N
f n=C. f(n-1)

হাস্কেলের কঠোর প্রকারের সিস্টেম বিভিন্ন ধরণের (স্ট্রিংস বনাম স্ট্রিংগুলির তালিকা বনাম স্ট্রিংগুলির তালিকার তালিকা, ...) ফিরিয়ে আটকায়, সুতরাং আমাকে নিজের ধরণের সংজ্ঞা দিতে হবে যা সমস্ত ক্ষেত্রে উপযুক্ত accom মূল ফাংশনটি বার বার বাসা বাঁধার জন্য এবং বেস কেসের জন্য কনস্ট্রাক্টরকে বারবার fকল nকরে ।CN

ব্যবহারের উদাহরণ (সাথে deriving (Show) নতুন dataপ্রকারের সাথে এটি প্রিন্ট করতে সক্ষম হবে): f 4 "codegolf"-> C (C (C (C (N "codegolf"))))

সম্পাদনা করুন: @ ক্রিশ্চিয়ান সিভারস স্ট্রিং আর্গুমেন্টের জন্য পয়েন্ট-ফ্রি স্টাইলে ফাংশনটি পুনরায় লিখে 2 বাইট সংরক্ষণ করেছেন। ধন্যবাদ!


অবশ্যই হাস্কেলের তালিকাগুলি নেস্ট করা যেতে পারে তবে একটি ফাংশন একই মানের জন্য একটি স্ট্রিং এবং স্ট্রিংয়ের তালিকার একটি তালিকা একই ধরণের অন্য মানের জন্য ফেরত দিতে পারে না। অতিরিক্ত derivingধারাটি গল্ফ করা: প্যারেনগুলির দরকার নেই। - নিশ্চিত না যে কেবলমাত্র সেই Cনির্মাণকারীর বাসা বাঁধাই ঠিক আছে যা তালিকার মতো নয়। আমার খুব অনুরূপ প্রচেষ্টা হিসাবে সংজ্ঞায়িত একটি ডেটা টাইপের উপর ভিত্তি করে ছিল data D x=J x|L[D x]
খ্রিস্টান সিভর্স

আপনি যদি আর্গুমেন্টের ক্রমটিকে বিপরীত করেন এবং কোনও ইনফিক্স অপারেটর ব্যবহার না করেন তবে আপনাকে দ্বিতীয় যুক্তিটি উল্লেখ করার দরকার নেই:f 0=N;f n=C. f(n-1)
খ্রিস্টান সিভর্স

@ খ্রিস্টিয়ানসিভারস: হ্যাঁ, আপনি ঠিক বলেছেন, নেস্টেড তালিকা সম্পর্কে আমার ব্যাখ্যা সঠিক ছিল না - আমি এটিকে পরিবর্তন করেছি it তালিকার মতামত সম্পর্কিত: আমার ধারণা আমার ডেটা কাঠামো তালিকার মতো। 1:(2:(3:([])))সি (সি (সি (এন "কোডগল্ফ")) এর সাথে নেটিভ হাস্কেলের তালিকার তুলনা করুন । Cis cons ( :), Nis nil ( [])।
নিমি

Cকনস না, এটি কেবল এম্বেড করে, আপনার ডেটা টাইপটি প্রকাশ করতে পারে না [["a","b"],["c"]]। তবে সম্ভবত এটি ঠিক আছে কারণ এই সমস্যাটির জন্য কেবল সিলেটলেট দরকার। - f n=...বিন্দু মুক্ত নয়। পয়েন্ট-হ্রাস?
খ্রিস্টান সিভর্স

আপনি আপনার ডেটার ধরণ নির্ধারণ করে 19 টি অক্ষর ব্যয় করেছেন। Eitherকন্সট্রাক্টররা আরও কিছু ভার্জোজ থাকলেও কি এটি বিদ্যমান ধরণের (যেমন ) ব্যবহার করা বেশি বুদ্ধিমান হবে না ?
পেরিটা ব্রেটা

1

tinylisp (repl), 34 বাইট

(d F(q((S N)(i N(F(c S())(s N 1))S

একটি ফাংশন সংজ্ঞা দেয় F । প্রযুক্তিগতভাবে, টিনাইলিস্পে স্ট্রিং নেই, তবে এই কোডটি প্রদত্ত যে কোনও ডেটা টাইপের জন্য কাজ করবে।

অবহেলিত (বিল্টিনগুলির কী: d= সংজ্ঞায়িত, q= উদ্ধৃতি, i= যদি, c= কনস, s= বিয়োগ):

(d nest
 (q
  ((item number)
   (i number
    (nest (c item ()) (s number 1))
    item))))

ব্যবহারের উদাহরণ:

tl> (d F(q((S N)(i N(F(c S())(s N 1))S
F
tl> (F 2 3)
(((2)))
tl> (F () 1)
(())
tl> (F (q Hello!) 7)
(((((((Hello!)))))))
tl> (F c 3)
(((<builtin function tl_cons>)))

1

ক্লোজার, 24 বাইট

#(nth(iterate list %)%2)

ক্লোজার এখানে কিছুটা প্রতিযোগিতামূলক। iterateএর ক্রম তৈরি করে x, (f x), (f (f x)) ...,nth প্রয়োজনীয় উপাদানকে প্রদান করে।

এটি অনলাইনে দেখুন: https://ideone.com/2rQ166

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