함수 정의를 나타내는 문자열이 입력되면, 함수의 인수가 개행으로 구분되고 정렬되도록 줄 바꿈과 공백이 삽입 된 문자열을 출력하십시오.
입력 문자열은 다음 패턴을 따릅니다.
먼저 접두사로 시작합니다. 접두사는 항상 1 자 이상이며 문자를 포함하지 않습니다
,()
.열린 괄호 (
(
)는 인수 목록의 시작을 표시합니다.그런 다음 0 개 이상의 인수 목록이 이어집니다. 문자열
", "
(쉼표와 공백)로 구분됩니다. 어떤 인수도 문자를 포함하지 않습니다,()
.닫는 괄호 (
)
)는 인수 목록의 끝을 표시합니다.마지막으로 접미사가 발견 될 수 있으며, 길이는 0 자 이상이며 문자를 포함 할 수 있습니다
,()
.
입력 문자열은 인쇄 가능한 ASCII로만 구성됩니다 (즉, 줄 바꿈이 포함되지 않음).
출력은 다음과 같아야합니다.
그대로 복사 된 접두사와 열린 괄호.
이번에는 인수 목록이
", "
아니라 쉼표, 개행 및 각 인수의 첫 문자를 수직으로 정렬하는 데 필요한만큼의 공백으로 구분됩니다.닫는 paren 및 postfix (있는 경우) 그대로.
이것은 code-golf 이므로 바이트 단위의 가장 짧은 코드가 승리합니다.
테스트 사례 (형식 : 단일 행 입력, 출력 및 이중 줄 바꿈) :
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>>" "
정말 영리하다 ...