드롭 캐피탈 포맷


21

소개

단락에 드롭 대문자를 추가하는 프로그램이나 함수를 작성하십시오. 프로그램은 형식을 지정할 텍스트, 열 너비 및 대문자를 놓을 행 수를 입력합니다. 하락 수도는 다음과 같습니다.

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

이것은이다 관련 문제.

입력

  • 인쇄 가능한 ASCII 문자 (탭 또는 줄 바꿈 없음) 및 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
야, 또 다른 타이포그래피 도전! 이 중 더 많은 것이 필요합니다.
ETHproductions

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'
TFeld

또한 할 수 Lines = 1있습니까?
TFeld

답변:


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

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);
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.