Định dạng vốn thả


21

Giới thiệu

Viết chương trình hoặc hàm thêm vốn thả vào đoạn văn. Chương trình sẽ nhập văn bản để định dạng, độ rộng cột và số dòng để bỏ vốn. Thủ đô thả như thế này:

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

Đây là một thách thức liên quan đến .

Đầu vào

  • Nhập một chuỗi các ký tự ASCII có thể in (không có tab hoặc dòng mới) và 2 số nguyên lớn hơn một.
  • Một số nguyên là số cột mà đầu ra nên có.
  • Cái khác là số dòng được kéo dài bởi vốn thả.
  • Chuỗi văn bản chứa các từ được phân tách bằng khoảng trắng đơn.
  • Giả sử không có từ nào sẽ dài hơn chiều rộng cột. Đó là,column width > longest word + drop capital height
  • Tất cả các dòng sẽ có ít nhất một từ.
  • Đối với thử thách này, một từ bao gồm bất kỳ ký tự nào ngoài khoảng trắng.
  • Đầu vào có thể ở bất kỳ định dạng thuận tiện theo các quy tắc trên.

Đầu ra

  • Một khối văn bản được chứng minh bên trái có chứa vốn thả với số dòng được chỉ định.
  • Một dòng nên chứa càng nhiều từ càng tốt mà không dài hơn chiều rộng cột.
  • Có một khoảng trống giữa vốn thả và phần còn lại của mỗi dòng.
  • Một không gian dấu hoặc dòng mới được cho phép.

Ví dụ

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.

Đây là và sơ hở tiêu chuẩn áp dụng.


3
Yay, một thách thức typography khác ! Chúng tôi cần nhiều hơn trong số này.
Sản phẩm ETH

2
Điều gì xảy ra khi một từ dài hơn chiều rộng cột, nghĩa là The quick brown fox jumped over the unenthusiastic dogđối với bất kỳ trong ba ví dụ đầu tiên?
MickyT

@MickyT Giả sử không có từ nào dài hơn chiều rộng cột. Đó là,column width > longest word + drop capital height
intrepidcoder

Nếu dòng vốn lớn hơn dòng văn bản thì sao? I E. L:4,C:100,T:'Stuff'
TFeld

Ngoài ra, có thể Lines = 1?
TFeld

Câu trả lời:


1

Python 2, 202 byte

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)

Gọi như f(Lines, Columns, Text)

f(4,100,'Stuff') cho

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

1

C #, 244 byte

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);}

Ấn định, dòng mới và ý kiến ​​cho rõ ràng:

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);
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.