একটি সাধারণ শব্দ মোড়ক তৈরি করুন


22

(দ্রষ্টব্য: এটি আমার প্রথম কোড গল্ফ প্রশ্ন, তবে যতদূর আমি বলতে পারি, অন্য কেউ ঠিক এটি করেনি, তাই আমার ভাল হওয়া উচিত))

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

উদাহরণ:

s = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed eget erat lectus. Morbi mi mi, fringilla sed suscipit ullamcorper, tristique at mauris. Morbi non commodo nibh. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Sed at iaculis mauris. Praesent a sem augue. Nulla lectus sapien, auctor nec pharetra eu, tincidunt ac diam. Sed ligula arcu, aliquam quis velit aliquam, dictum varius erat." 
n = 50

output:
Lorem ipsum dolor sit amet, consectetur adipiscing
elit. Sed eget erat lectus. Morbi mi mi, fringilla
sed suscipit ullamcorper, tristique at mauris.
Morbi non commodo nibh. Pellentesque habitant
morbi tristique senectus et netus et malesuada
fames ac turpis egestas. Sed at iaculis mauris.
Praesent a sem augue. Nulla lectus sapien, auctor
nec pharetra eu, tincidunt ac diam. Sed ligula
arcu, aliquam quis velit aliquam, dictum varius
erat.

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

স্ট্যান্ডার্ড আই / ও বিধিগুলি প্রযোজ্য এবং মানীয় লুফোলগুলি নিষিদ্ধ। চলার জায়গাগুলি অনুমোদিত।

যেহেতু এটি , তাই বাইটগুলিতে সংক্ষিপ্তসার সমাধানটি জিতে।

পাইথনের এখানে একটি উদাহরণ প্রোগ্রাম রয়েছে যা কাজ করবে।



3
n সর্বোচ্চ লাইনের দৈর্ঘ্য? নাকি লাইন ব্রেকের আগে আমাদের যে দৈর্ঘ্যে পৌঁছতে হবে?
ডেভিড

1
@ ডেভিড, না লাইনের সংখ্যা?
পিটার টেলর 13

1
28 বাইট পাইথন এটি প্রাসঙ্গিক?
ডেভিড

3
nসর্বাধিক লাইনের দৈর্ঘ্য, দুঃখিত যে এটি পরিষ্কার ছিল না। আমি পরিষ্কার করব। এছাড়াও, নিয়মগুলি এখন আপডেট করা হয়েছে যাতে একটি সাধারণ বিভাজন কাজ করে না।
এটিএমউন

উত্তর:


7

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

from textwrap import*
fill

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

মেহ ... বিল্ট-ইনগুলি বিরক্তিকর ... পরিবর্তে, এখানে একটি ভাল 87-বাইট সমাধান রয়েছে:

s,n=input()
x=''
for i in s.split():c=n<len(x+i);exec'print x'*c;x=x*-~-c+i+' '
print x

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

আউটপুটগুলি ট্রেলিং স্পেস।


5

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

স্বীকার করা সর্বাধিক মূল সমাধান নয়, তবে পিএইচপি-র একটি দেশীয় ফাংশন রয়েছে যা আপনার প্রয়োজনীয়তার সাথে পুরোপুরি মেলে!

wordwrap:

string wordwrap ( string $str [, int $width = 75 [, string $break = "\n" [, bool $cut = FALSE ]]] )

স্ট্রিং ব্রেকের অক্ষর ব্যবহার করে প্রদত্ত সংখ্যার অক্ষরে একটি স্ট্রিং মোড়ানো।

এর মতো ব্যবহার করুন:

$str = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed eget erat lectus. Morbi mi mi, fringilla sed suscipit ullamcorper, tristique at mauris. Morbi non commodo nibh. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Sed at iaculis mauris. Praesent a sem augue. Nulla lectus sapien, auctor nec pharetra eu, tincidunt ac diam. Sed ligula arcu, aliquam quis velit aliquam, dictum varius erat.";
echo wordwrap($str, 50);

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


5

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

হিসাবে ইনপুট লাগে (string)(n)

s=>n=>s.split` `.map(w=>r=(u=r?r+' '+w:w)[n]?(o+=r+`
`,w):u,o=r='')&&o+r

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

ভেরিয়েবল

ফরম্যাট আউটপুট মধ্যে সংরক্ষিত হয় (নীচে সবুজ)।

আপডেট হওয়া রেখাটি তোমার দর্শন লগ করা হিসাবে সংজ্ঞায়িত করা হয়েছে:

  • বর্তমান লাইন R (নীচে কালো)
  • R ফাঁকা না থাকলে একটি স্থান , বা অন্যথায় কিছুই নেই (নীচে কমলাতে)
  • নতুন শব্দ W (নীচে নীল)

আমরা একটি লাইন বিরতি যখনই সন্নিবেশ করতে প্রয়োজন এন এর -th চরিত্র তোমার দর্শন লগ করা (0-ইন্ডেক্স, নীচের লাল) সেট করা হয়।

উদাহরণ

এন=16 এবংগুলি = "আইপাসিয়াম ডোরার"

"লোরেম" যুক্ত করা হচ্ছে:

0001020304050607080910111213141516এলহেআরএম

"আইপিএসএম" যুক্ত করা হচ্ছে:

0001020304050607080910111213141516এলহেআরএমআমিপিএসইউএম

"রঙ" যুক্ত করা হচ্ছে:

0001020304050607080910111213141516এলহেআরএমআমিপিএসইউএমডিহেএলহেআর

0001020304050607080910111213141516এলহেআরএমআমিপিএসইউএমডিহেএলহেআর


চলার জায়গাগুলি অনুমোদিত। হয়তো r+w+' '?
l4m2

5

পার্ল 6 , 46 29 বাইট

{;*.comb(/.**{1..$_}[\s|$]/)}

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

রেজেক্স ভিত্তিক সমাধান যা ইনপুট কারিড জাতীয় গ্রহণ করে f(n)(s)এবং লাইনের একটি তালিকা প্রদান করে। শেষের ব্যতীত প্রতিটি লাইনের একটি পূর্ববর্তী সাদা স্থান রয়েছে

ব্যাখ্যা:

{;*                         }   # Anonymous code block that returns a Whatever lambda
   .comb(/                /)    # Split the string by
          .**{1..$_}            # Up to n characters
                    [\s|$]      # Terminated by a whitespace char or the end of the string

4

ভিম, 15 বাইট / কীস্ট্রোক

DJ:se tw=<C-r>"
gq_

একটি পাঠ্য বিন্যাস প্রশ্ন? আমি জানি কাজের জন্য কেবল হাতিয়ার! এমনকি এটি প্রথম দুটি কীস্ট্রোকে আমার নামও রয়েছে: ডি

<C-r>মানে ctrl-r

এই পারা কি কখনো ভী যাতে সামান্য খাটো , কিন্তু আমি উত্তর যে সত্যিই দেখাতে কিভাবে সংক্ষিপ্ত তেজ অধিকার চ্যালেঞ্জ জন্য হতে পারে ভ্যানিলা তেজ উত্তর দিচ্ছেন পছন্দ। এবং পার্থক্য যাই হোক না কেন এত ছোট।

এটি 15 বাইটের জন্যও নিম্নলিখিত হতে পারে:

:se tw=<C-r><C-w>
ddgq_

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


1
ব্যাখ্যা:: DJ:এই প্রোগ্রামটি গলায় একটি হীরক দিয়ে আমাদের প্রিয় বিড়াল ডিজে করেছেন। [...]
এরিক দ্য আউটগল্ফার

4

আর , 36 27 বাইট

এটি একটি অন্তর্নির্মিত ( strwrap) হিসাবে রয়েছে, আমরা বিভক্ত লাইনের একটি ভেক্টরকে ফিরিয়ে দেব।

function(s,n)strwrap(s,n+1)

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


1
হ্যাঁ, এটি অনুমোদিত হওয়া উচিত। লাইনের অ্যারেগুলিকে অনুমতি দেওয়া হয়েছে, সুতরাং কেন এটির চেয়ে আলাদা হবে তা আমি দেখছি না।
এটিএমউন



3

জাভা (জেডিকে) , 46 44 বাইট

মূলত জাভাতে একটি খাঁটি রেইগেক্স সমাধান, আমি অবশ্যই লিখেছি সবচেয়ে ছোট।

রেগেক্সের আরও বাইটগুলি আরও কেটে ফেলতে সহায়তা করার জন্য কেভিনকে চিয়ার্স!

n->s->s.replaceAll(".{1,"+n+"}( |$)","$0\n")

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

একটি ত্রিযুক্ত ল্যামডবা ব্যবহার করে, এটি লোভের সাথে nঅক্ষরগুলির সাথে মিলিত হওয়ার জন্য একটি রেজেক্স তৈরি করে যার পরে স্পেস বা স্ট্রিংয়ের শেষে হয়। এটি তখন সেই অক্ষরগুলিকে নিজের সাথে একটি নতুন লাইন অনুসরণ করে।


@ কেভিন ক্রুজসেন [ $]আসলে একটি জায়গার সাথে মিলছে বা $যদি আমি সঠিকভাবে মনে করি তবে স্ট্রিংয়ের শেষের চেয়ে। এটি যদিও কাজ করছে বলে মনে হচ্ছে না, তাই দেখে মনে হচ্ছে এটি আরও কম বাইটের জন্য কেবল কোনও এক জায়গায় ছড়িয়ে যেতে পারে।
লুক স্টিভেনস

আহ, এটি সত্যিই কেবল একটি স্থান হতে পারে, যেহেতু আপনি নতুন লাইন যুক্ত করেন এবং শেষে কোনও অতিরিক্ত ট্রেলিং নিউলাইন যুক্ত করার দরকার নেই।
কেভিন ক্রুইজসেন 10

1
আপনি রেজেক্সের প্রথম বন্ধনী অপসারণ করে আরও 2 বাইট গল্ফ করতে পারেন এবং $0পরিবর্তে ব্যবহার করতে পারেন $1
কেভিন ক্রুইজসেন

@ কেভিন ক্রুজসেন ভাল লাগছে! এটা ঠিক লজ্জাজনক যে replaceAllএতটা ভারবস!
লুক স্টিভেন্স 10

2
আমার পক্ষে এটি ভুল, উপস্থিত হওয়ার সাথে যদি আমি অনুশীলনের লাতিন বাক্যাংশটি "... ডেস্কটনের পরিবর্তে অবাক হয়ে যাই" এর সাথে শেষ হয়। সি বর্ণের পরে একটি অপ্রয়োজনীয় নতুন লাইন রয়েছে ...
রোজলুপি

2

গণিত, 16 বাইট

InsertLinebreaks

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

InsertLinebreaks["string", n]
এন অক্ষরের  চেয়ে লাইন আর দীর্ঘ না করতে নিউলাইন অক্ষর সন্নিবেশ করান ।


2

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

সংযুক্ত টেস্ট কেস n=80

param($s,$n)$s-split' '|%{if(($o+$_|% le*)-lt$n){$o+=' '*!!$o+$_}else{$o;$o=$_}}
$o

পরীক্ষার স্ক্রিপ্ট:

$f = {

param($s,$n)$s-split' '|%{if(($o+$_|% le*)-lt$n){$o+=' '*!!$o+$_}else{$o;$o=$_}}
$o

}

@(
,(50, "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed eget erat lectus. Morbi mi mi, fringilla sed suscipit ullamcorper, tristique at mauris. Morbi non commodo nibh. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Sed at iaculis mauris. Praesent a sem augue. Nulla lectus sapien, auctor nec pharetra eu, tincidunt ac diam. Sed ligula arcu, aliquam quis velit aliquam, dictum varius erat.",
"Lorem ipsum dolor sit amet, consectetur adipiscing",
"elit. Sed eget erat lectus. Morbi mi mi, fringilla",
"sed suscipit ullamcorper, tristique at mauris.",
"Morbi non commodo nibh. Pellentesque habitant",
"morbi tristique senectus et netus et malesuada",
"fames ac turpis egestas. Sed at iaculis mauris.",
"Praesent a sem augue. Nulla lectus sapien, auctor",
"nec pharetra eu, tincidunt ac diam. Sed ligula",
"arcu, aliquam quis velit aliquam, dictum varius",
"erat.")
,(80, "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed eget erat lectus. Morbi mi mi, fringilla sed suscipit ullamcorper, tristique at mauris. Morbi non commodo nibh. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Sed at iaculis mauris. Praesent a sem augue. Nulla lectus sapien, auctor nec pharetra eu, tincidunt ac diam. Sed ligula arcu, aliquam quis velit aliquam, dictum varius erat.",
"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed eget erat lectus.",
"Morbi mi mi, fringilla sed suscipit ullamcorper, tristique at mauris. Morbi non",
"commodo nibh. Pellentesque habitant morbi tristique senectus et netus et",
"malesuada fames ac turpis egestas. Sed at iaculis mauris. Praesent a sem augue.",
"Nulla lectus sapien, auctor nec pharetra eu, tincidunt ac diam. Sed ligula arcu,",
"aliquam quis velit aliquam, dictum varius erat.")
) | %{
    $n,$s,$expected = $_
    $result = &$f $s $n
    "$result"-eq"$expected"
    # $result   # uncomment this line to dispaly a result
}

আউটপুট:

True
True


ধন্যবাদ। জাল টেরিনারি একটি অভিব্যক্তি। এই স্ক্রিপ্ট অংশে একটি অন্তর্নিহিত returnএবং elseঅংশে একটি বিবৃতি রয়েছে then
mazzy


2

জাপট , 20 বাইট

¸rÈ+Yi[X·ÌY]¸Ê>V?R:S

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

তাদের সহায়তার জন্য বুবলার এবং শেগিকে ধন্যবাদ

ব্যাখ্যা:

¸                       #Split into words
 r                      #For each word, add them to the output in this way:
     i                  # Choose a character using this process:
       X·Ì              #  Get the last line of the output
          Y             #  And the current word
      [    ]¸           #  Join them with a space
             Ê>V?       #  If the resulting line is greater than the allowed length:
                ?R      #   Choose "/n" (newline)
                  :S    #  Otherwise choose " " (space)
     i                  # Add the chosen character to the output
  È+Y                   # Add the current word to the output

24 বাইট সহ [X,Y].join(...)
বুবলার


1

রেটিনা 0.8.2 , 37 বাইট

.+$
$*
!`(?=\S.*¶(1)+)(?<-1>.)+(?=\s)

এটি অনলাইন চেষ্টা করুন! নেয় sএবং nপৃথক লাইনে। ব্যাখ্যা:

.+$
$*

nঅ্যানারিতে রূপান্তর করুন ।

(?=\S.*¶(1)+)(?<-1>.)+(?=\s)

অ-হোয়াইটস্পেসের সাথে মিল করুন, তারপরে অপেক্ষা করুন nএবং এটি হিসাবে গণনা করুন $#1। তারপরে ফিরে যান এবং nশ্বেত স্পেস অনুসারে অক্ষরগুলির সাথে মেলে ধরে ভারসাম্যপূর্ণ গোষ্ঠীটি ব্যবহার করুন ।

!`

লাইনগুলির তালিকা হিসাবে মিলগুলি আউটপুট করুন।


আমরা দ্বিতীয় ইনপুটটি ব্যবহার করে একটি রেইজেক্সে প্রথম ইনপুট লাগানোর জন্য কি রেটিনার কোনও উপায় আছে? সুতরাং এর মতো কিছু: .{1,50} এবং$0¶ , তবে 50পরিবর্তে ইনপুট হিসাবে কোথায় পাওয়া যায়?
কেভিন ক্রুইজসেন 10

@ কেভিন ক্রুইজসেন রেটিনা ১-তে আপনি সম্ভবত একটি একই ফলাফল দেওয়ার জন্য একটি ইভাল পর্যায়টি ব্যবহার করতে পারেন, তবে এটি বিরক্তিকর, তাই আমি বিরক্ত করিনি।
নীল

1

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

Nθ←F⪪S «¿‹⁺LιⅈθM→⸿ι

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

Nθ

ইনপুট n

লুপের প্রথম পুনরাবৃত্তি থেকে ডান চলাচলের ভারসাম্য বজায় রাখার জন্য একটি স্কোয়ার বাম দিকে সরান।

F⪪S «

স্প্রেগুলিতে স্ট্রিংটি বিভক্ত করুন এবং শব্দের উপর লুপ করুন।

¿‹⁺Lιⅈθ

পরবর্তী শব্দটি ডান প্রান্তে পৌঁছাবে কিনা তা গণনা করুন।

M→

যদি তা না হয় তবে এক বর্গাকার ডানদিকে সরান।

⸿

এটি যদি তখন একটি নতুন লাইন শুরু করে।

ι

শব্দটি আউটপুট করুন।



1

05 এ বি 1 ই , 18 বাইট

õs#vDy«g²›i,}yðJ}?

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

ব্যাখ্যা:

õ                   # Push an empty string "" to the stack
 s                  # Swap to take the (implicit) string input
  #                 # Split it by spaces
   v            }   # For-each `y` over the words:
    D               #  Duplicate the top of the stack
                    #  (which is the empty string in the very first iteration)
     y«             #  Append the current word `y`
       g            #  Get its length
        ²›i }       #  If its lengthy is larger than the second input:
           ,        #   Pop and output the current duplicated value with trailing newline
             yð     #  Push the word `y` and a space " "
               J    #  Join the entire stack together
                 ?  # After the loop, output the last part as well (without newline)

1

জাভা 8, 135 বাইট

n->s->{String r="",S[]=s.split(" "),t=r;for(int i=0;i<S.length;)if((t+S[i]).length()>n){r+=t+"\n";t="";}else t+=S[i++]+" ";return r+t;}

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

ব্যাখ্যা:

n->s->{                      // Method with integer & String parameters and String return
  String r="",               //  Result-String, starting empty
         S[]=s.split(" "),   //  Input-String split by spaces
         t=r;                //  Temp-String, starting empty as well
  for(int i=0;i<S.length;)   //  Loop `i` in the range [0, amount_of_words):
    if((t+S[i]).length()>n){ //   If `t` and the word are larger than the integer input:
      r+=t+"\n";             //    Add `t` and a newline to the result
      t="";}                 //    And reset `t` to an empty String
     else                    //   Else:
       t+=S[i++]+" ";        //    Append the word and a space to `t`
                             //    (and then increase `i` by 1 with `i++` for the next word
                             //     of the next iteration)
  return r+t;}               //  Return the result-String appended with `t` as result


1

এপিএল (ডায়ালগ ইউনিকোড) , 14 বাইট এসবিসিএস

ইনফিক্স ফাংশন; বাম আর্গুমেন্ট হয় n, ডান আর্গুমেন্ট হয় n

CY'dfns'wrap

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

⎕CY অপ Y মধ্যে dfns গ্রন্থাগার

 তারপর

wrap[সি]  মোড়ক [n] ফাংশনব্যবহার করুন

[সি]  function ফাংশনের কোড
[এন]  এই ফাংশনের জন্য নোট


গল্ফড সংস্করণ wrap, 59 বাইট এসবিসিএস

{⍺≥≢⍵:⍵⋄(t↑⍵),2↓⎕TC,⍺∇⍵↓⍨t+b⊃⍨t←⊃⌽⍺,g/⍨⍺≥g←⍸(⍺+1)↑b' '=⍵}

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

{} ডিএফএন; বাম আর্গুমেন্ট (প্রস্থ), ডান আর্গুমেন্ট (স্ট্রিং)

≢⍵ স্ট্রিং এর ট্যালি (অক্ষরের সংখ্যা)

⍺≥: যদি প্রস্থ এর চেয়ে বড় বা এর সমান হয় তবে:

   স্ট্রিং ফিরে

 অন্যথায়:

  ' '=⍵ বুলিয়ান মাস্ক যেখানে ফাঁকা স্ট্রিংয়ের সমান

  b← সংরক্ষণ b(জন্য lanks)

  ()↑ এটি থেকে নিম্নলিখিত সংখ্যক উপাদানগুলি নিন:

   ⍺+1 প্রস্থের চেয়ে আরও একটি

  আমি যেখানে সত্য সত্য

  g← সংরক্ষণ g(জন্য গ্রাম এপিএস)

  ⍺≥ বুলিয়ান মাস্ক যেখানে প্রস্থ তার চেয়ে বড় বা এর সমান

  g/⍨ এর দ্বারা ফাঁক সূচকগুলি ফিল্টার করুন

  ⍺, প্রস্থে এটি যুক্ত করুন

  ⊃⌽ এর শেষ উপাদানটি বেছে নিন (লিটার। বিপরীত প্রথমটি চয়ন করুন)

  t← সংরক্ষণ t(জন্য টি Ake)

  b⊃⍨বি লঙ্কগুলির  মুখোশ থেকে কোনও উপাদান বাছাই করতে এটি ব্যবহার করুন

  t+ এটি যোগ করুন t

  ⍵↓⍨ স্ট্রিং থেকে যে অনেক অক্ষর ড্রপ

  ⍺∇ একই বাম বাম যুক্তি দিয়ে এটি পুনরাবৃত্তি

  ⎕TC,টি এরমিনাল সি অনট্রোল অক্ষরের  তালিকায় এটি যুক্ত করুন (8: এইচটি, 10: এনএল, 13: সিআর)

  2↓ এটি থেকে প্রথম দুটি অক্ষর ফেলে দিন (কেবলমাত্র একটি অগ্রণী 13: সিআর ছেড়ে)

  (), এটি নিম্নলিখিত সংযুক্ত করুন:

   t↑⍵tস্ট্রিংয়ের  প্রথম অক্ষর


0

গল্ফযুক্ত সংস্করণ @ এরিক দি আউটগলফারকে ধন্যবাদ:

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

def f(t,n):
 while t:i=n+(t[min(len(t)-1,n)]==" "or-t[n-1::-1].find(' '));print(t[:i]);t=t[i:]

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

# পাইথন 3 , 130 বাইট

def f(t,n):
 l=[]
 while len(t):
  i=(n-t[:n][::-1].find(' '),n+1)[t[min(len(t)-1,n)]==" "]
  l.append(t[:i])
  t=t[i::]
 return l

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

এত গল্ফ করা সংস্করণ নয় ...


1
কিছু গল্ফ। (প্রবন্ধগুলি STDOUT এ ফিরে আসে না)।
এরিক আউটগল্ফার 18

0

জাভাস্ক্রিপ্ট + এইচটিএমএল + সিএসএস, 117 64 বাইট

-53 বাইট সৌজন্যে @ নীল

n=50
s="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed eget erat lectus. Morbi mi mi, fringilla sed suscipit ullamcorper, tristique at mauris. Morbi non commodo nibh. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Sed at iaculis mauris. Praesent a sem augue. Nulla lectus sapien, auctor nec pharetra eu, tincidunt ac diam. Sed ligula arcu, aliquam quis velit aliquam, dictum varius erat."
f=(n,s)=>document.body.innerHTML+=`<tt><p style=width:${n}ch>${s}`
f(n,s)


1
কমপক্ষে আমার ব্রাউজারে আপনি এটিকে (n,s)=>document.body.innerHTML+=`<p style=width:${n}ch><tt>${s}</tt></p>` 74 বাইটে কেটে ফেলতে পারেন । আপনি যদি ফায়ারফক্সের পুরানো সংস্করণগুলি সন্ধান করতে চান তবে আপনি আরও 8 টি বাইট সংরক্ষণ করতে পারবেন (n,s)=>document.body.innerHTML+=`<pre wrap width=${n}>${s}</pre>`
নীল

@ নিল chইউনিটগুলির দুর্দান্ত ব্যবহার । ফায়ারফক্স 65 গণনা 50chহিসাবে 500px; 50chহিসাবে ক্রোমিয়াম 70 গণনা400px
অতিথি 271314

এই উত্তরটি ভুল। elit. Sed eget erat lectus. Morbi mi mi, fringilla sed(২ য় লাইন) 50 টিরও বেশি অক্ষর। আমি সবচেয়ে নতুন ক্রোম ব্যবহার করছি।
mbomb007

আমি রেখে Chrome এ কাজ করার জন্য আমার মূল প্রস্তাবনা খামচি করতে সক্ষম হন <p>ভিতরে <tt>
নিল



0

সি # (.নেট কোর) , 162 বাইট

string[]t(string n,int a){var g="";for(int i=0;i++<Math.Floor((double)n.Length/a);)g+=$"^.{{{i*a-1}}}|";return Regex.Split(n,$@"(?n)(?<=({g.Trim('|')})\S*)\s");}}

এই ফাংশনটি এমন একটি রেজেক্স ব্যবহার করে যা নিকটতম শ্বেতস্পেসের সাথে মিলিত হয় যা নবম বা নবম বর্ণের একাধিকের নিকটে রয়েছে এবং এর ভিত্তিতে স্ট্রিংকে বিভক্ত করে।

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

টিআইও লিঙ্কটি একটি সম্পূর্ণ প্রোগ্রাম, এবং ফাংশনটির একটি স্ট্যাটিক কীওয়ার্ড রয়েছে যাতে ফাংশনটি মূল থেকে কল করা যায়।

টেস্ট রেজেক্স


এটি পরীক্ষার ক্ষেত্রে সঠিক আউটপুট দেয় না - কিছু লাইন 50 টির চেয়ে বেশি অক্ষরের। আপনি "কাছাকাছি" আগে "চাই" না, এবং এক বিন্দুতে বিভাজকটি আগে কোথায় বিভক্ত হয়েছিল তার উপর নির্ভর করে।
janrjan জোহানসেন

0

সি # (ভিজ্যুয়াল সি # ইন্টারেক্টিভ সংকলক) , 78 বাইট

s=>n=>System.Text.RegularExpressions.Regex.Replace(s,".{1,"+n+"}( |$)","$0\n")

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

জাভা সংস্করণ নিয়ে আসার জন্য ক্রেডিট @ লুক্স স্টেভেন্সগুলিতে যায় ... স্পষ্টতই .NET আপনাকে RegularExpressionsপ্রতিস্থাপনের জন্য নেমস্পেসটি আমদানি করে তোলে :(

এখানে আমার আসল সংস্করণটি যা স্পেস অক্ষরটিতে বিভক্ত হয়ে যায় এবং তাদের সাথে আবার যোগ দিতে লিনকিউ ব্যবহার করে:

সি # (ভিজ্যুয়াল সি # ইন্টারেক্টিভ সংকলক) , 91 বাইট

s=>n=>s.Split(' ').Aggregate((a,w)=>a+(a.Length-a.LastIndexOf('\n')+w.Length>n?'\n':' ')+w)

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



0

এপিএল (এনএআরএস), 48 টি চর, 96 বাইট

{⊃⍵{⍺≥≢⍵:⊂⍵⋄k←1+⍺-' '⍳⍨⌽r←⍺↑⍵⋄(⊂k↑r),⍺∇k↓⍵}⍨⍺+1}

পরীক্ষা:

  f←{⊃⍵{⍺≥≢⍵:⊂⍵⋄k←1+⍺-' '⍳⍨⌽r←⍺↑⍵⋄(⊂k↑r),⍺∇k↓⍵}⍨⍺+1}
  s←"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed eget erat lectus. Morbi mi mi, fringilla sed suscipit ullamcorper, tristique at mauris. Morbi non commodo nibh. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Sed at iaculis mauris. Praesent a sem augue. Nulla lectus sapien, auctor nec pharetra eu, tincidunt ac diam. Sed ligula arcu, aliquam quis velit aliquam, dictum varius erat."
  50 f s
Lorem ipsum dolor sit amet, consectetur adipiscing 
elit. Sed eget erat lectus. Morbi mi mi, fringilla 
sed suscipit ullamcorper, tristique at mauris.     
Morbi non commodo nibh. Pellentesque habitant      
morbi tristique senectus et netus et malesuada     
fames ac turpis egestas. Sed at iaculis mauris.    
Praesent a sem augue. Nulla lectus sapien, auctor  
nec pharetra eu, tincidunt ac diam. Sed ligula     
arcu, aliquam quis velit aliquam, dictum varius    
erat.                                              

আমি "{⊃⍵ {⍺≥≢⍵: ⊂⍵⋄ ..." এ জানি না যদি এটি সঠিক হয় ≥ বা এটি ঠিক সেখানে থাকে> ...
রোজলুপুর

0

সি, 63 বাইট

b(a,n)char*a;{while(strlen(a)>n){for(a+=n;*a-32;--a);*a++=10;}}

এই অনুশীলন বি (অ, এন) এর ক্রিয়াটি "ক" রেখাটি ভেঙে দেবে যেমন অনুশীলন বলেছে, উপায়টির দৈর্ঘ্যটি পরিবর্তন করবেন না (যদি আমরা ফলাফলটিকে একটি স্ট্রিং হিসাবে দেখি) কারণ space n বা নতুন লাইনে কিছু স্পেস পরিবর্তন করে জায়গা। ইনপুট স্ট্রিং "এ" এর বি () ফাংশনের জন্য খুব বেশি have n অক্ষর থাকা উচিত (এটি বিএস ()) এর জন্য ইনপুট স্ট্রিংয়ে \ n থাকতে পারে

খ (ক, এন) ফাংশনটি কেবল ঠিক হবে কারণ এই অনুশীলনের সীমাবদ্ধতা, যে "a" স্ট্রিংয়ের প্রতিটি শব্দের দৈর্ঘ্য থাকে <n যদি এটি সত্য না হয় তবে সেই ফাংশনটি
একটি অসীম লুপে যেতে পারে ... (খুব আমার দেখার মতো ভুল তাই আমি ফাংশনটি আরও ভালভাবে অনুলিপি করি কারণ সেই ক্ষেত্রে -1 ফিরে আসবে এবং একটি অসীম লুপে যাবে না; এটি বিএস (ক, এন) নীচে রয়েছে) আমি উভয় ফাংশন বগড বাদ দিই না .. ।

#define R(x,y) if(x)return y
#define U unsigned
U bs(char*a,U n)
{U c,q,r=1,i,j;
 R(!a||n<1||n++>0xFFFF,-1);
 for(j=c=i=0;;++i,++c)
    {R(i==-1,-1);q=a[i];
     if(q==10)goto l;
     if(c>=n){R(i-j>n,-1);a[i=j]=10;l:c=-1;++r;}
     R(!q,r);
     if(q==32)j=i;
    }
}

খ () এর ফলাফল এমন একটি ফাংশনে পাস হয়েছে যা প্রতিটি লাইনে লাইন যুক্ত করে

Lorem ipsum dolor sit amet, consectetur adipiscing [50]
elit. Sed eget erat lectus. Morbi mi mi, fringilla [50]
sed suscipit ullamcorper, tristique at mauris. [46]
Morbi non commodo nibh. Pellentesque habitant [45]
morbi tristique senectus et netus et malesuada [46]
fames ac turpis egestas. Sed at iaculis mauris. [47]
Praesent a sem augue. Nulla lectus sapien, auctor [49]
nec pharetra eu, tincidunt ac diam. Sed ligula [46]
arcu, aliquam quis velit aliquam, dictum varius [47]
erat. [5]

@ এসিলিংক্যাট ঠিক আছে, উপরের কোডটি consideration nকেও বিবেচনা করবে ... কোড সহ একটি বাগ আমি পেয়েছি যে শেষ লাইনটি সঠিকভাবে মুদ্রণ করা হয়নি ... আপনি নিজের সি উত্তরটি অন্য হিসাবে কেন লেখেন না? এটি আমার পক্ষে জিতবে কারণ এটি আরও সংক্ষিপ্ত ... সত্য বলে আমি কেবল ইনপুট পরীক্ষা করার জন্য প্রথম লাইনটি (বা বিবৃতি ";") ব্যবহার করি কারণ আমার জন্য ইনপুটটি আরও কিছুটা হলেও চেক করতে হবে দীর্ঘ; আমি
এপিএলে

@ উত্তরের উত্তরটিতে সেলিংক্যাটটি, এই প্রশ্নটি দেখে না বলে ইনপুট স্ট্রিংটিতে এটি থাকা উচিত ছিল না '' 'n' এবং উদাহরণটিতে '\ n' নেই বলে আমি মনে করি ইনপুট স্ট্রিংটিতে কোনও নতুন রেখার অক্ষর নেই ...
রোজলুপ

কেবল 83 ... হ্যাঁ আমাকে দেখতে হবে যে আমি 3 বছরের পুরানো ফাংশন সংজ্ঞা ব্যবহার করে লাভ করি ...
RosLuP

মাত্র 81 .... .... ....
RosLuP

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