ভাঙা স্ট্রিংগুলির পিরামিড


10

একটি স্ট্রিং এন দেওয়া হয়েছে, বর্তমান সারির তুলনায় স্ট্রিংয়ের বিভক্ত একটি পিরামিড তৈরি করুন।

প্রথম সারিটিতে স্ট্রিংটি অপরিবর্তিত রয়েছে।

দ্বিতীয় সারিতে পাইপ দ্বারা অর্ধে পৃথক স্ট্রিং রয়েছে।

তৃতীয় সারিতে এটি তৃতীয়াংশ দ্বারা পৃথক করে ...

ইত্যাদি। প্রতিটি স্ট্রিংয়ের দৈর্ঘ্য, যেখানে l স্ট্রিং n এর দৈর্ঘ্য সমান

মেঝে (ঠ / ঢ)

বাকী অক্ষরগুলি তাদের নিজস্ব স্ট্রিংগুলিতে রাখা হয়। ব্যবহৃত সর্বশেষ সারিতে প্রথমটি যেখানে সাবস্ট্রিংগুলি দৈর্ঘ্যে 2 হয়।

পরীক্ষার কেস:

ইনপুট: হ্যালো, বিশ্ব

আউটপুট:

Hello, world.

Hello,| world|.

Hell|o, w|orld|.

Hel|lo,| wo|rld|.

He|ll|o,| w|or|ld|.

ইনপুট: abcdefghij

আউটপুট:

abcdefghij

abcde|fghij

abc|def|ghi|j

ab|cd|ef|gh|ij

ইনপুট: 01234567890abcdef

আউটপুট:

01234567890abcdef

01234567|890abcde|f

01234|56789|0abcd|ef

0123|4567|890a|bcde|f

012|345|678|90a|bcd|ef

01|23|45|67|89|0a|bc|de|f

অতিরিক্ত নিয়ম:

  • আপনি একটি কম প্রোগ্রাম বা একটি ফাংশন লিখতে পারেন, যে কোনও কোডই কম ব্যবহার করে।

  • ইনপুট সর্বদা কমপক্ষে 4 টি অক্ষরের দৈর্ঘ্যে থাকবে।

  • আপনার ভাষা যদি তাদের সমর্থন করে তবে আপনাকে অবশ্যই লাইন ব্রেকগুলি ব্যবহার করতে হবে। যদি সম্ভব না হয় তবে লাইন ব্রেকগুলি প্রতিস্থাপন করুন:

  • ইনপুট সর্বদা প্রিন্টযোগ্য এএসসিআইআই হবে।

  • বিয়োগ 100% যদি আপনার প্রোগ্রামটি পি বনাম এনপি সমাধান করে।


লিডারবোর্ড:



3
ভাল লাগলো প্রথম চ্যালেঞ্জ! কয়েকটি স্পেসিফিকেশন প্রশ্ন - ইনপুটটি কি কেবল প্রিন্টযোগ্য এএসসিআইআই (আমি দৃ strongly়ভাবে "হ্যাঁ" পরামর্শ দিই)? "সম্ভব হলে" লাইন ব্রেকগুলি কী প্রয়োজন?
অ্যাডমবর্কবার্ক

3
এটা একটা রসিকতা. পি বনাম এনপি কম্পিউটিংয়ে একটি অমীমাংসিত সমস্যা। রসিকতাটি হ'ল যদি আপনি এটি সমাধান করতে পারেন তবে আপনার প্রোগ্রামটি চ্যালেঞ্জটি সমাধান করে না সে বিষয়ে আমি যত্ন নেওয়া বন্ধ করব।
জুলিয়ান ল্যাচনিয়েট

3
কম্পিউটিংয়ে আসল অমীমাংসিত সমস্যা হ'ল "ট্যাব বা স্পেস" ...
ফ্লিপট্যাক

3
না, আসল সমস্যাটি ইন্টারনেট এক্সপ্লোরার।
জুলিয়ান ল্যাচনিয়েট

উত্তর:


0

জাভাস্ক্রিপ্ট (ES6), 103 101 91 84 বাইট

চ্যালেঞ্জ প্রয়োজনীয়তা সম্মান স্থির

f=(s,n=0,p=s.length/++n|0)=>p>1?s.match(eval('/.{1,'+p+'}/g')).join`|`+'\n'+f(s,n):''

লাম্বদা fযা প্রথম প্যারামিটার হিসাবে ইনপুট স্ট্রিং নেয় sএবং স্প্লিট স্ট্রিংটি কনসোল করার জন্য পুনরাবৃত্তভাবে মুদ্রণ করে। খুব সোজা: সরল দৈর্ঘ্য যতক্ষণ না p1 এর উপরে, স্ট্রিংটি একটি '|' দ্বারা বিভক্ত করুন প্রতিটি pঅক্ষর, তারপরে নীচের স্তরটি যুক্ত করে এগিয়ে যান। এটি তখন মেঝেযুক্ত pথাকার সাথে ফাংশনটিকে আবার কল করে t / n, tমূল স্ট্রিংয়ের দৈর্ঘ্য এবং nবর্ধিত বিভাজক হওয়া।


আমি মনে করি না nপ্রতিবার 2 দ্বারা ভাগ করা সঠিক is
নীল

@ নীল আপনি সঠিক, আমার পক্ষ থেকে ভুল। আমি সমস্যাটি স্থির করেছি এবং প্রক্রিয়াতে 2 বাইট সংরক্ষণ করেছি।
জাভকো 7

@ এথ প্রডাকশনগুলি আমি এটির কথা ভেবেছিলাম, তবে আমি জানি না যে এটি স্টটআউট হিসাবে গণ্য হবে ... আমার ধারণা alert(f(s))ঠিক ঠিক পরে আমার কী করা দরকার ?
XavCo7

4

পার্ল, 46 + 1 = 47 বাইট

-nপতাকা নিয়ে দৌড়াও

say s/.{$=}(?=.)/$&|/gr while($==y///c/++$,)-2

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

কোড ভাঙ্গা

-n                                              #Reads input into the $_ variable
say s/.{$=}(?=.)/$&|/gr while($==y///c/++$,)-2
                                 y///c          #Transliteration.  Implicitly operates on $_, replacing every character with itself and counting replacements
                                                #y///c effectively returns the length of $_
                                      /++$,     #Increments $, (which starts off at 0) and divides the length of $_ by $,
                              $==               #Stores the result of this division into $=
                                                #$= forces its contents to be an integer, so it truncates any decimal
                             (             )-2  #Returns 0 if $= is equal to 2
                        while                   #Evaluates its RHS as the condition.  If truthy, evaluates its LHS.
    s/          /   /gr                         #Substitution.  Implicitly operates on $_.
                                                #Searches for its first argument and replaces it with its second argument, repeating until it's done, and returns the new string.  $_ is not modified.
      .{$=}                                     #Looks for a string of $= characters...
           (?=.)                                #...that is followed by at least one non-newline character, but does not include this character in the match...
                 $&|                            #...and replaces it with itself followed by a pipe character.
say                                             #Output the result of the substitution.

এটি আর ইনপুটগুলির জন্য কাজ করে না বলে মনে হচ্ছে।
নিল

2

পাইথ, 16 বাইট

Vh/lQ3j\|cQ/lQhN

V                # For N in range(1, \/ )
 h/lQ3           # 1+lenght(input)/3
      j\|        # join with '|'
         cQ      # chop input in
           /lQhN # lenght(input)/(N+1) pieces

এখানে চেষ্টা করুন


1
এটি পরীক্ষাগুলির ক্ষেত্রে কাজ করতে পারে তবে আমি মনে করি না এটি দীর্ঘতর ইনপুটগুলির জন্য কাজ করে।
নীল

2

সি, 145 131 128 125 বাইট

l,n,i=1,j;f(char*s){l=strlen(s);puts(s);do{n=l/++i;for(j=0;j<l;)j&&(j%n||putchar('|')),putchar(s[j++]);puts("");}while(n>2);}

এটি এমন একটি ফাংশন যা তার আর্গুমেন্ট হিসাবে স্ট্রিং নেয় এবং আউটপুটটি STDOUT এ মুদ্রণ করে।

l,n,i=1,j;       // declare some variables
f(char*s){       // declare the function
l=strlen(s);     // get the length of the string
puts(s);         // output the initial version, with trailing newline
do{n=l/++i;      // n is the number of characters per "section",
                 //  and we'll do-while n>2 to stop at the right time
for(j=0;j<l;)    // loop through the characters of the string
j&&(             // if j != 0,
j%n||            // and j % n == 0,
putchar('|')),   // insert a | before this character
putchar(s[j++]); // print the character
puts("");        // print a newline after the loop
}while(n>2);}

কিভাবে এই কাজ একবার i*i>l? দেখে মনে হচ্ছে এটি বিভাগগুলি পুনরাবৃত্তি করতে শুরু করবে।
নীল

@ নিল আমি নিশ্চিত আপনি কি বলতে চাইছেন তা নিশ্চিত নই। আপনি একটি উদাহরণ দিতে পারেন?
ডোরকনবব

@ নীল আহ, কিছু মনে করবেন না, আপনি কী বলছেন তা আমি দেখতে পাচ্ছি। এটি স্পেসিফিকেশনের একটি গর্ত বলে মনে হয়, যা স্পষ্টভাবে বলে যে প্রতিটি স্ট্রাস্টিংয়ের দৈর্ঘ্য floor(l/n); আমি নিশ্চিত নই যে দীর্ঘতর ইনপুটগুলির জন্য অভিযুক্ত আচরণটি কী বা ওপি যদি অনুমান করে থাকে।
ডুরকনব

1

পাইথ, 17 বাইট

jmj\|cQ/lQdSh/lQ3

ব্যাখ্যা

     cQ/lQ         Divide into equal pieces (with the last shorter)
  j\|              Join with pipes
 m        d        Map to each row index...
           Sh/lQ3  ... up to the first row with substrings of length 2
j                  Join with newlines



0

পাইথন 3, 123 বাইট

f=lambda s:print(*['|'.join(s[i:i+n]for i in range(0,len(s),n))for n in[len(s)//i for i in range(1,len(s)//2+1)]],sep='\n')

স্ট্রিংয়ের দৈর্ঘ্যের সূত্র হিসাবে দীর্ঘতর স্ট্রিংগুলিতে কিছু অংশ পুনরাবৃত্তি হবে floor(l/n)। উদাহরণস্বরূপ, একটি স্ট্রিং 13 অক্ষর দীর্ঘ দিয়ে স্ট্রিংকে 5 এর মধ্যে বিভক্ত করা স্ট্রিংটির 6 টির মতো বিভক্ত হবে floor(13/5)==floor(13/6)। আমি নিশ্চিত নই যে ওপি আশা করেছিল বা এটি যদি কোন তদারকি করে।

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