Diberikan input dari string yang mewakili definisi fungsi, output string dengan baris baru dan spasi dimasukkan sehingga argumen fungsi dipisahkan oleh baris baru dan disejajarkan.
String input akan mengikuti pola berikut:
Pertama, itu akan dimulai dengan awalan, yang selalu setidaknya satu karakter dan tidak mengandung karakter apa pun
,()
.Tanda kurung terbuka (
(
) kemudian akan menandai awal daftar argumen.Daftar nol atau lebih argumen akan mengikuti. Ini dipisahkan oleh string
", "
(koma dan kemudian spasi). Tak satu pun dari argumen akan berisi karakter apa pun,()
.Tanda kurung dekat (
)
) akan menandai akhir daftar argumen.Terakhir, postfix dapat ditemukan, yang panjangnya nol atau lebih karakter dan mungkin berisi karakter
,()
.
String input hanya akan terdiri dari ASCII yang dapat dicetak (yang berarti tidak akan mengandung baris baru).
Outputnya harus:
Awalan, disalin ke bawah kata demi kata, dan tanda kurung terbuka.
Daftar argumen, kali ini tidak dipisahkan oleh
", "
tetapi oleh koma, baris baru, dan ruang sebanyak yang diperlukan untuk meluruskan karakter pertama dari setiap argumen.Tutup paren dan postfix (jika ada) kata demi kata.
Karena ini adalah kode-golf , kode terpendek dalam byte akan menang.
Kasus uji (format: input baris tunggal diikuti oleh output diikuti oleh baris ganda ganda):
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>>" "
benar-benar pintar ...Japt, 23 byte
Uji secara online!
Bagaimana itu bekerja
sumber
Perl,
6252 + 2 = 54 byteMembutuhkan
-p
bendera:Bagaimana itu bekerja:
sumber
Retina, 31 byte
Perhatikan spasi di akhir kedua garis.
Kami mengganti setiap ruang yang memiliki regex
^([^(])*\([^)]*,
sebelumnya. String pengganti akan menjadi baris baru, dan jumlah tangkapan dengan([^(])*
ditambah satu spasi.Penjelasan yang lebih masuk akal muncul kemudian.
Cobalah online di sini.
sumber
ES6,
6867 byteIni bekerja dengan mengekstraksi daftar argumen dari string asli, dan mengganti setiap pemisah argumen dengan lekukan yang dihitung dari posisi daftar argumen dalam string asli.
Sunting: Disimpan 1 byte berkat produk @ETH.
sumber
.split`, `.join(...)
bukan.replace(...)
. Ternyata yang lain adalah byte lebih pendek:s=>s.replace(/\(.*?\)/,(s,n)=>s.replace(/, /g,`,\n `+` `.repeat(n)))
Pyth,
3530 byteCoba di sini!
Penjelasan:
sumber
Groovy,
1378995 byteGroovy bukanlah "Alat yang Tepat untuk Pekerjaan" ™.Sunting: Ini berfungsi dengan baik ketika Anda memiliki seseorang dengan otak menggunakannya ...Tes:
Agak tidak terserang:
sumber
Retina , 47 byte
Hitungan byte mengasumsikan penyandian ISO 8859-1.
Cobalah online!
sumber
JavaScript (ES6), 85
Uji
sumber
"x y z(x
seperti yang Anda lihat,"
itulah sebabnya saya berpikir itu hanya berjarak satu spasi. Oleh karena itu penghapusanJelly , 39 byte
Cobalah online!
sumber