Đưa ra một đầu vào của một chuỗi đại diện cho một định nghĩa hàm, xuất ra chuỗi có dòng mới và khoảng trắng được chèn để các đối số của hàm được phân tách và căn chỉnh dòng mới.
Chuỗi đầu vào sẽ theo mẫu sau:
Đầu tiên, nó sẽ bắt đầu bằng một tiền tố, luôn dài ít nhất một ký tự và không chứa bất kỳ ký tự nào
,()
.Dấu ngoặc đơn mở (
(
) sau đó sẽ đánh dấu phần đầu của danh sách đối số.Một danh sách gồm 0 hoặc nhiều đối số sau đó sẽ theo sau. Chúng được phân tách bằng chuỗi
", "
(dấu phẩy và sau đó là khoảng trắng). Không có đối số sẽ chứa bất kỳ ký tự nào,()
.Dấu ngoặc đơn đóng (
)
) sẽ đánh dấu kết thúc danh sách đối số.Cuối cùng, một hậu tố có thể được tìm thấy, có độ dài bằng 0 hoặc nhiều ký tự và có thể chứa các ký tự
,()
.
Chuỗi đầu vào sẽ chỉ bao gồm ASCII có thể in được (có nghĩa là nó sẽ không bao giờ chứa một dòng mới).
Đầu ra phải là:
Tiền tố, sao chép nguyên văn và dấu ngoặc đơn mở.
Danh sách đối số, lần này được phân tách không phải bởi
", "
dấu phẩy, dòng mới và càng nhiều khoảng trắng cần thiết để sắp xếp theo chiều dọc ký tự đầu tiên của mỗi đối số.Paren gần và postfix (nếu nó tồn tại) nguyên văn.
Vì đây là môn đánh gôn , mã ngắn nhất tính bằng byte sẽ thắng.
Các trường hợp thử nghiệm (định dạng: đầu vào một dòng theo sau là đầu ra theo sau là hai dòng mới):
def foo(bar, baz, quux):
def foo(bar,
baz,
quux):
int main() {
int main() {
fn f(a: i32, b: f64, c: String) -> (String, Vec<i32>) {
fn f(a: i32,
b: f64,
c: String) -> (String, Vec<i32>) {
function g(h) {
function g(h) {
def abc(def, ghi, jkl, mno)
def abc(def,
ghi,
jkl,
mno)
x y z(x, y, z) x, y, z)
x y z(x,
y,
z) x, y, z)
a>>" "
thực sự rất thông minh ...