Formatta un capitale di lancio


21

introduzione

Scrivi un programma o una funzione che aggiunge un capitale di goccia a un paragrafo. Il programma inserirà il testo da formattare, la larghezza della colonna e il numero di righe per eliminare il capitale. Le maiuscole si presentano così:

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

Questa è una sfida relativa alla .

Ingresso

  • Immettere una stringa di caratteri ASCII stampabili (senza tabulazioni o nuove righe) e 2 numeri interi maggiori di uno.
  • Un numero intero è il numero di colonne che dovrebbe avere l'output.
  • L'altro è il numero di righe attraversate dal capitale di rilascio.
  • La stringa di testo contiene parole separate da spazi singoli.
  • Supponiamo che nessuna delle parole sia più lunga della larghezza della colonna. Questo è,column width > longest word + drop capital height
  • Tutte le righe avranno almeno una parola.
  • Per questa sfida, una parola è composta da qualsiasi personaggio diverso da uno spazio.
  • L'input può essere in qualsiasi formato conveniente seguendo le regole sopra.

Produzione

  • Un blocco di testo giustificato a sinistra contenente un maiuscolo con il numero specificato di righe.
  • Una riga dovrebbe contenere quante più parole possibile senza essere più lunga della larghezza della colonna.
  • C'è uno spazio tra il capitale di rilascio e il resto di ogni riga.
  • È consentito uno spazio finale o una nuova riga.

Esempi

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.

Si tratta di e si applicano scappatoie standard.


3
Già, un'altra sfida tipografica ! Ne abbiamo bisogno di più.
ETHproductions

2
Cosa succede quando una parola è più lunga della larghezza di una colonna, ovvero The quick brown fox jumped over the unenthusiastic dogper uno dei primi tre esempi?
MickyT

@MickyT Supponiamo che nessuna delle parole sarà più lunga della larghezza della colonna. Cioè,column width > longest word + drop capital height
intrepidcoder il

Cosa succede se le linee maiuscole sono maggiori della linea di testo? Vale a dire. L:4,C:100,T:'Stuff'
TFeld,

Inoltre, puoi Lines = 1?
TFeld,

Risposte:


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)

Chiama come f(Lines, Columns, Text)

f(4,100,'Stuff')

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

Rientro, nuove righe e commenti per chiarezza:

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);
}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.