テキスト、列数、および列幅を指定して、テキストを列にフォーマットするプログラムまたは関数を記述します。これは平文のタイポグラフィです。
ルール
入力
- テキストは印刷可能なASCIIの文字列であり、改行とスペースが含まれる場合があります(タブは含まれません)。
- 列の数は正の整数になります。
- 列幅は、列あたりの文字数を指定する2以上の整数です。
この課題では、単語は空白以外の文字で構成されます。入力は1つの文字列と2つの整数で構成され、任意の順序で取得できます。
出力
出力は、各行に収まるだけ多くの単語を含むバランスのとれた列にフォーマットされたテキストです。
- 単語が長すぎて列に収まらない場合、現在の行に別の単語があり、その行は列の幅まで3つ以下のスペースで埋め込まれる可能性があります。
- それ以外の場合は、単語のハイフンを付けて、残りの行を埋めます。行の終わりにハイフンを付ける; 音節間のハイフネーションについて心配する必要はありません。
- 列は、4つのスペース文字のマージンで区切る必要があります。
- 可能であれば、すべての列の行数が同じになるように、列のバランスをとる必要があります。
- 左端の列には、必要に応じて追加の行が必要です。
- 改行や複数のスペースは保持する必要があります。最後の列の後の末尾のスペースはオプションです。
例
テキスト:
The number of columns will be a positive integer. Columns should be separated by a margin of four space characters.
The columns should be balanced. The column width is greater than two.
列:3、幅:10
The number separated ns should
of columns by a marg- be balanc-
will be a in of four ed. The
positive space cha- column wi-
integer. racters. dth is gr-
Columns eater than
should be The colum- two.
テキスト:
This line is hyphenated.
This line, on the other hand, is not.
列:1、幅:20
This line is hyphen-
ated.
This line, on the
other hand, is not.
テキスト:Tiny columns.
列:4、幅:2
T- c- u- s.
i- o- m-
ny l- n-
テキスト:Two spaces.<space>
列:5、幅:2
T- p- c- s.
wo s- a- e-
テキスト:<newline>A phrase
列:2、幅:5
rase
A ph-
テキスト:A short sentence.
列:10、幅:5
A sh- ort sent- ence.
テキスト:It's "no word" 1234567890 -+-+-+-+ (*&!)
列:3、幅:6
It's 12345- +-+
"no 67890 (*&!)
word" -+-+--
これはコードゴルフです。標準ルールが適用されます。
可能性のあるだまし絵
—
Mego、
@Mego課題は関連していますが、これは特定の単語をハイフンでつなぎ、列のバランスをとる必要があるため、十分に異なると思います。
—
intrepidcoder 2015年
です
—
TFeld 2015年
s:'tiny', c:4, w:2
= t- i- n- y
かt- i- ny
??
@TFeld私の例は間違っていました
—
intrepidcoder
t- i- ny
。今はすべてですか、それとももう一度修正する必要がありますか?
必ず、すべきでない
—
TFeld
tiny s
ことt- i- n- y_ s
かt- i- ny s