Given a width and a block of
text containing possible hyphen-
ation points, format it fully-
justified (in monospace).
Hoàn toàn hợp lý có nghĩa là nó được căn chỉnh ở bên trái và bên phải, và đạt được bằng cách tăng khoảng cách giữa các từ cho đến khi mỗi dòng phù hợp.
Liên quan:
- Xác minh một văn bản bằng cách thêm khoảng trắng
- Căn chỉnh văn bản thành một khối
- Và theo một cách nào đó, đây có thể được coi là bước tiếp theo trong Xử lý văn bản # 1: Dấu gạch nối (dường như chưa bao giờ được đăng).
Đầu vào
Bạn có thể lấy đầu vào ở bất kỳ định dạng nào bạn thích. Bạn sẽ được:
- Độ rộng mục tiêu (tính bằng ký tự), trong phạm vi 5-100 (đã bao gồm);
- Một khối văn bản chứa các từ có thể gạch nối. Đây có thể là một chuỗi được phân tách bằng dấu cách, một mảng các từ hoặc một mảng các mảng của các đoạn từ (hoặc bất kỳ biểu diễn dữ liệu nào khác mà bạn mong muốn).
Một đầu vào điển hình có thể là:
Width: 25
Text: There's no bu-si-ne-ss lik-e s-h-o-w busine-ss, n-o bus-iness I know.
Trường hợp dấu gạch nối biểu thị các điểm gạch nối có thể và khoảng trắng biểu thị ranh giới từ. Một đại diện thay thế có thể của văn bản:
[["There's"], ["no"], ["bu", "si", "ne", "ss"], ["lik", "e"], (etc.)]
Đầu ra
Văn bản đầu vào với khoảng trắng được thêm vào giữa các từ, dòng mới ở độ rộng cột và các điểm gạch nối được chọn để chứng minh đầy đủ cho chiều rộng cột. Đối với các hàm, một chuỗi các chuỗi (một cho mỗi dòng) có thể được trả về thay vì sử dụng phân tách dòng mới.
Một đầu ra có thể cho đầu vào trên có thể là:
There's no business like
show business, no bus-
iness I know.
Lưu ý rằng tất cả các dấu gạch nối đã bị xóa ngoại trừ dấu gạch ngang trong "bus-iness" cuối cùng, được giữ để hiển thị rằng từ đó kết thúc với dòng tiếp theo và được chọn để đảm bảo dòng thứ hai chứa càng nhiều văn bản càng tốt.
Quy tắc
Trong mỗi dòng, số lượng khoảng trắng giữa các từ không thể thay đổi nhiều hơn 1, nhưng nếu bạn chèn thêm khoảng trắng thì tùy thuộc vào bạn:
hello hi foo bar <-- not permitted (1,1,5) hello hi foo bar <-- not permitted (2,1,4) hello hi foo bar <-- OK (2,2,3) hello hi foo bar <-- OK (2,3,2) hello hi foo bar <-- OK (3,2,2)
Không có dòng nào có thể bắt đầu hoặc kết thúc bằng dấu cách (ngoại trừ dòng cuối cùng, có thể kết thúc bằng dấu cách).
Dòng cuối cùng phải được để lại hợp lý, chứa khoảng trắng đơn giữa mỗi từ. Nó có thể được theo sau bởi khoảng trắng tùy ý / một dòng mới nếu muốn, nhưng điều này là không bắt buộc.
Các từ sẽ bao gồm AZ, az, 0-9 và dấu câu đơn giản (
.,'()&
)Bạn có thể giả định rằng không có đoạn từ nào dài hơn chiều rộng mục tiêu và sẽ luôn có thể điền các dòng theo quy tắc (nghĩa là sẽ có ít nhất 2 đoạn từ trên mỗi dòng hoặc 1 đoạn từ sẽ điền vào dòng hoàn hảo)
Bạn phải chọn các điểm gạch nối để tối đa hóa số lượng ký tự từ trên các dòng trước đó (nghĩa là các từ phải được tiêu thụ một cách tham lam bởi các dòng), ví dụ:
This is an input stri-ng with hyph-en-at-ion poi-nts. This is an input stri- <-- not permitted ng with hyphenation points. This is an input string with hyph- <-- not permitted enation points. This is an input string with hyphen- <-- OK ation points.
Mã ngắn nhất tính bằng byte
Ví dụ
Width: 20
Text: The q-uick brown fox ju-mp-s ove-r t-h-e lazy dog.
The quick brown fox
jumps over the lazy
dog.
Width: 32
Text: Given a width and a block of text cont-ain-ing pos-sible hyphen-ation points, for-mat it ful-ly-just-ified (in mono-space).
Given a width and a block of
text containing possible hyphen-
ation points, format it fully-
justified (in monospace).
Width: 80
Text: Pro-gram-ming Puz-zles & Code Golf is a ques-tion and ans-wer site for pro-gram-ming puz-zle enth-usi-asts and code golf-ers. It's built and run by you as part of the St-ack Exch-ange net-work of Q&A sites. With your help, we're work-ing to-g-et-her to build a lib-rary of pro-gram-ming puz-zles and their sol-ut-ions.
Programming Puzzles & Code Golf is a question and answer site for programming
puzzle enthusiasts and code golfers. It's built and run by you as part of the
Stack Exchange network of Q&A sites. With your help, we're working together to
build a library of programming puzzles and their solutions.
Width: 20
Text: Pro-gram-ming Puz-zles & Code Golf is a ques-tion and ans-wer site for pro-gram-ming puz-zle enth-usi-asts and code golf-ers. It's built and run by you as part of the St-ack Exch-ange net-work of Q&A sites. With your help, we're work-ing to-g-et-her to build a lib-rary of pro-gram-ming puz-zles and their sol-ut-ions.
Programming Puzzles
& Code Golf is a
question and answer
site for programming
puzzle enthusiasts
and code golfers.
It's built and run
by you as part of
the Stack Exchange
network of Q&A
sites. With your
help, we're working
together to build a
library of program-
ming puzzles and
their solutions.
Width: 5
Text: a b c d e f g h i j k l mm nn oo p-p qq rr ss t u vv ww x yy z
a b c
d e f
g h i
j k l
mm nn
oo pp
qq rr
ss t
u vv
ww x
yy z
Width: 10
Text: It's the bl-ack be-ast of Araghhhhh-hhh-h-hhh-h-h-h-hh!
It's the
black be-
ast of
Araghhhhh-
hhhhhhhhh-
hhh!
anybod-y
với chiều rộng 7, chúng ta có thể chọn xuất anybody
hoặc anybod-\ny
không?