একটি ড্রপ মূলধন ফর্ম্যাট করুন


21

ভূমিকা

এমন একটি প্রোগ্রাম বা ফাংশন লিখুন যা অনুচ্ছেদে একটি ড্রপ মূলধন যুক্ত করে। প্রোগ্রামটি পাঠ্যকে ফর্ম্যাট করতে, কলামের প্রস্থ এবং মূলধনকে ছাড়ার জন্য লাইনের সংখ্যার ইনপুট দেবে। ড্রপ মূলধনগুলি এর মতো দেখায়:

Lines:        2     3      4 
Drop capital: A|    A.|    A..|
              ~'    ..|    ...|    etc.
                    ~~'    ...|
                           ~~~'

এটি একটি সম্পর্কিত চ্যালেঞ্জ।

ইনপুট

  • মুদ্রণযোগ্য এএসসিআইআই অক্ষরের একটি স্ট্রিং ইনপুট করুন (কোনও ট্যাব বা নিউলাইন নেই) এবং 2 এর চেয়ে বেশি সংখ্যক পূর্ণসংখ্যা।
  • একটি পূর্ণসংখ্যা হ'ল আউটপুটটিতে থাকা কলামগুলির সংখ্যা।
  • অন্যটি হ'ল ড্রপ মূলধন দ্বারা বিস্তৃত রেখার সংখ্যা।
  • পাঠ্য স্ট্রিংয়ে শব্দগুলি একক স্পেস দ্বারা পৃথক করা থাকে।
  • ধরুন কোনও একটি শব্দ কলামের প্রস্থের চেয়ে দীর্ঘ হবে না। এটাই,column width > longest word + drop capital height
  • সমস্ত লাইনে কমপক্ষে একটি শব্দ থাকবে।
  • এই চ্যালেঞ্জের জন্য, একটি শব্দ একটি স্থান ছাড়া অন্য কোনও চরিত্র নিয়ে গঠিত।
  • উপরের নিয়মগুলি অনুসরণ করে ইনপুট কোনও সুবিধাজনক বিন্যাসে থাকতে পারে।

আউটপুট

  • নির্দিষ্ট সংখ্যক রেখার সাথে একটি ড্রপ মূলধনীযুক্ত পাঠ্যের একটি বাম-ন্যায়সঙ্গত ব্লক।
  • একটি লাইনে কলামের প্রস্থের চেয়ে দীর্ঘ না হয়ে যতটা সম্ভব শব্দ থাকা উচিত।
  • ড্রপ মূলধন এবং প্রতিটি লাইনের বাকী অংশের মধ্যে একটি স্থান রয়েছে।
  • একটি ট্রেলিং স্পেস বা নিউলাইন অনুমোদিত।

উদাহরণ

Lines: 2 Columns: 10 Text: The quick brown fox jumped over the lazy dog.

T| he
~' quick
brown fox
jumped
over the
lazy dog.

Lines: 3 Columns: 10 Text: (Same as above)

T.| he
..| quick
~~' brown
fox jumped
over the
lazy dog.

Lines: 4 Columns: 10 Text: (Same as above)

T..| he
...| quick
...| brown
~~~' fox
jumped
over the
lazy dog.

Lines: 2 Columns: 80 Text: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus. Sed sit amet ipsum mauris. Maecenas congue ligula ac quam viverra nec consectetur ante hendrerit. Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor.

L| orem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus.
~' Sed sit amet ipsum mauris. Maecenas congue ligula ac quam viverra nec
consectetur ante hendrerit. Donec et mollis dolor. Praesent et diam eget libero
egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem
lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor.

Lines: 3 Columns: 80 Text: (Same as above)

L.| orem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus.
..| Sed sit amet ipsum mauris. Maecenas congue ligula ac quam viverra nec
~~' consectetur ante hendrerit. Donec et mollis dolor. Praesent et diam eget
libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta
lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non
tortor.

Lines: 4 Columns: 80 Text: (Same as above)

L..| orem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam
...| lectus. Sed sit amet ipsum mauris. Maecenas congue ligula ac quam viverra
...| nec consectetur ante hendrerit. Donec et mollis dolor. Praesent et diam
~~~' eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim,
ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies
a non tortor.

এটি এবং মানক লুফোলগুলি প্রযোজ্য।


3
হ্যাঁ, অন্য টাইপোগ্রাফির চ্যালেঞ্জ! আমাদের এগুলির আরও প্রয়োজন।
ইটিএইচ প্রডাকশনস

2
কোনও শব্দ যখন কলামের প্রস্থের চেয়ে দীর্ঘ হয়, The quick brown fox jumped over the unenthusiastic dogতবে প্রথম তিনটি উদাহরণের কোনওটির জন্য কী হয় ?
মিকিটি

@ মিকিটি ধরে নিন যে কোনও শব্দই কলামের প্রস্থের চেয়ে দীর্ঘ হবে না। এটি হ'লcolumn width > longest word + drop capital height
ইন্ট্রিপিডকোডার

মূলধন রেখাগুলি যদি পাঠ্য রেখার চেয়ে বেশি হয় তবে কী হবে? অর্থাৎ। L:4,C:100,T:'Stuff'
TFeld

এছাড়াও, পারেন Lines = 1?
টিফিল্ড

উত্তর:


1

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

def f(l,c,t):
 l-=1;s=['.'*l+'|']*l+['~'*l+"'"]
 s[0]=t[0]+s[0][1:];t=t[1:].split();j=0
 while t:
  w=t.pop(0)
  if len(s[j]+w)>=c:j+=1
  if j>=len(s):s.append(w)
  else:s[j]+=' '+w
 return '\n'.join(s)

যেমন কল f(Lines, Columns, Text)

f(4,100,'Stuff') দেয়

S..| tuff
...|
...|
~~~'

1

সি #, 244 বাইট

string F(int d,int c,string t){var w=t.Substring(1).Split(' ');t=""+t[0];for(int i=0,x=c,y=0;i<w.Length;x+=w[i++].Length+1)t+=(1>(x=x+w[i].Length>c?0:x)?"\n"+(y++<d?(y<d?"| ":"' ").PadLeft(x=d+1,y<d?'.':'~'):""):" ")+w[i];return t.Remove(1,2);}

স্পষ্টতার জন্য সূচক, নতুন লাইন এবং মন্তব্য:

string F(int d,int c,string t){
    var w=t.Substring(1).Split(' ');
    t=""+t[0];
    for(int i=0,x=c,y=0;i<w.Length;x+=w[i++].Length+1)
        t+=(1>(x=x+w[i].Length>c?0:x)?"\n"+(y++<d?(y<d?"| ":"' ").PadLeft(x=d+1,y<d?'.':'~'):""):" ")+w[i];
    return t.Remove(1,2);
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.