Bạn đã được thuê để viết một số mã cho một ứng dụng đọc chính tả, lấy đầu vào bằng giọng nói từ một nguồn nói, phân tích nó thành các từ và viết nó xuống trên màn hình.
Ban quản lý không thực sự tin tưởng bạn với tất cả sức mạnh của dự án mà bạn đã biết ngồi quanh và chơi golf cả ngày thay vì làm công việc của mình, thật không may, vì vậy họ chỉ giao cho bạn một nhiệm vụ thực sự đơn giản: thực hiện Câu có dấu chấm xen kẽ vào một câu được định dạng đúng, trong đó 'được định dạng đúng' được định nghĩa bên dưới.
Câu là chuỗi đầu vào. Một từ là một nhóm các ký tự không phải không gian dự phòng. Dấu chấm câu là một từ có ký tự đầu tiên
^
.Một từ được viết hoa nếu chữ cái đầu tiên của Word không phải là chữ cái viết thường (các từ viết hoa khớp với biểu thức chính quy
/[^a-z].*/
).Lời đầu tiên của câu phải được viết hoa.
A
^COMMA
là ký tự dấu phẩy,
và có khoảng trắng theo sau nhưng không đứng trước.aaa ^COMMA bbb
trở thànhaaa, bbb
.A
^COLON
là một dấu phẩy trông giống như:
.A
^SEMICOLON
là một dấu phẩy trông giống như;
.A
^PERIOD
là một dấu phẩy trông giống như.
. Các từ theo sau^PERIOD
phải được viết hoa.A
^BANG
là một khoảng thời gian trông như thế!
.A
^DASH
là ký tự gạch ngang-
và có khoảng trắng ở cả trước và sau.A
^HYPHEN
cũng là ký tự gạch ngang-
nhưng không có khoảng trắng theo sau hoặc trước.An
^EMDASH
là một dấu gạch nối (không phải dấu gạch ngang!) Được đánh vần--
.An
^OPENQUOTE
là một ký tự trích dẫn"
có một khoảng trắng ở trước nhưng không theo sau. Các từ theo sau^OPENQUOTE
phải được viết hoa. Nếu một từ^OPENQUOTE
đứng trước một từ không có dấu chấm câu, hãy thêm một^COMMA
từ giữa từ đó và^OPENQUOTE
. Nếu an^OPENQUOTE
đứng trước Dấu chấm câu làm cho từ tiếp theo được viết hoa, thì từ này sẽ bỏ qua^OPENQUOTE
từ tiếp theo.A
^CLOSEQUOTE
là sơ đồ,"
có không gian theo sau nhưng không có trước. Nếu^CLOSEQUOTE
là trước bởi một^COMMA
,^PERIOD
hoặc^BANG
, đó Punctuation biến mất và^CLOSEQUOTE
được đánh vần,"
,."
hoặc!"
tương ứng. Nếu Dấu chấm câu biến mất chỉ định viết hoa, thì viết hoa đó vẫn phải xuất hiện trên từ có sẵn tiếp theo.Các không gian ban đầu hoặc dấu trong kết quả cuối cùng phải được loại bỏ và bất kỳ chuỗi nào có hai hoặc nhiều khoảng trắng trong một hàng phải được thu gọn thành một ký tự khoảng trắng.
Bất kỳ trường hợp nào không được đề cập ở trên (ví dụ
^COMMA ^COMMA
hoặc^SEMICOLON ^CLOSEQUOTE
hoặc^UNDEFINEDPUNCTUATION
) sẽ không xảy ra trong đầu vào được định dạng tốt và do đó là hành vi không xác định.
Nhóm phát triển thông báo cho bạn về những điều sau đây:
Dự án đang được viết bằng ngôn ngữ [ ngôn ngữ của bạn ở đây] và nên càng ngắn càng tốt để nó chiếm ít không gian nhất có thể khi đó là một ứng dụng cho Android / iPhone. Bạn cố gắng giải thích rằng đó không phải là cách phát triển ứng dụng hoạt động, nhưng họ không lắng nghe. Nhưng này, thật là một sự trùng hợp! Bạn là một tay golf tuyệt vời trong [ngôn ngữ của bạn ở đây] !
Ứng dụng sẽ không có bất kỳ quyền truy cập web nào và sẽ không có bất kỳ thư viện nào được cài đặt thực hiện định dạng này cho bạn. Bạn có thể có thể thuyết phục nhóm trưởng cho phép bạn một thư viện regex nếu một ngôn ngữ tồn tại cho ngôn ngữ của bạn, tuy nhiên, nếu bạn nghĩ rằng bạn cần một thư viện.
Hỗ trợ cho các trích dẫn lồng nhau sử dụng các trích dẫn kép / đơn đúng cách được lên kế hoạch cho phiên bản mới hơn của ứng dụng, nhưng không phải là phiên bản mà bạn đang làm việc bây giờ, vì vậy đừng lo lắng về nó.
Ban quản lý là một fan hâm mộ lớn của sự phát triển dựa trên thử nghiệm, và vì vậy nhóm phát triển đã có một số khỉ bàn phím không may viết ra một số bài kiểm tra cho phần chương trình của bạn: (dòng mới được thêm vào để dễ đọc, coi chúng là khoảng trắng)
Đầu vào:
hello ^COMMA world ^BANG
Đầu ra:
Hello, world!
Đầu vào:
once upon a time ^COMMA there was a horse ^PERIOD that horse cost me $50 ^PERIOD ^OPENQUOTE eat your stupid oats ^COMMA already ^BANG ^CLOSEQUOTE I told the horse ^PERIOD the horse neighed back ^OPENQUOTE no ^CLOSEQUOTE and died ^PERIOD THE END
Đầu ra:
Once upon a time, there was a horse. That horse cost me $50. "Eat your stupid oats, already!" I told the horse. The horse neighed back, "No," and died. THE END
Đầu vào:
begin a ^PERIOD b ^COMMA c ^COLON d ^SEMICOLON e ^BANG f ^HYPHEN g ^DASH h ^EMDASH i ^OPENQUOTE j ^PERIOD ^OPENQUOTE k ^SEMICOLON ^OPENQUOTE l ^CLOSEQUOTE m ^BANG ^CLOSEQUOTE n ^PERIOD 0x6C6F6C end
Đầu ra:
Begin a. B, c: d; e! F-g - h--i, "j. "K; "l," m!" N. 0x6C6F6C end
Đây là một mã golf: điểm thấp nhất sẽ thắng. Bạn có thể viết một hàm của một đối số chuỗi hoặc một chương trình đọc từ STDIN và ghi vào STDOUT.
prompt()
?