格式化首付资金


21

介绍

编写为段落添加首字母大写的程序或函数。该程序将输入要设置格式的文本,列宽以及要删除大写字母的行数。首字母大写如下:

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

这是与有关的挑战。

输入项

  • 输入一串可打印的ASCII字符(没有制表符或换行符),以及两个大于1的整数。
  • 一个整数是输出应具有的列数。
  • 另一个是下降资本跨越的行数。
  • 文本字符串包含用单个空格分隔的单词。
  • 假设所有单词都不超过列宽。 那是,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
是的,另一个排版挑战!我们需要更多这些。
ETHproductions 2015年

2
当单词长于列宽时(即The quick brown fox jumped over the unenthusiastic dog前三个示例中的任何一个),会发生什么?
MickyT

@MickyT假设所有单词都不会长于列宽。也就是说,column width > longest word + drop capital height
intrepidcoder

如果大写的行大于文本的行怎么办?就是 L:4,C:100,T:'Stuff'
TF

另外,可以Lines = 1吗?
TF

Answers:


1

Python 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

C#,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);
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.