Di APL, Anda dapat menulis fungsi diam-diam, yang disebut kereta . Cara mereka bekerja tidak relevan untuk tantangan ini. Berikut adalah berbagai cara mereka dapat dikelompokkan, menggunakan ⍴
fungsinya:
⍴ -> ⍴
⍴⍴ -> ⍴⍴
⍴⍴⍴ -> ⍴⍴⍴
⍴⍴⍴⍴ -> ⍴(⍴⍴⍴)
⍴⍴⍴⍴⍴ -> ⍴⍴(⍴⍴⍴)
⍴⍴⍴⍴⍴⍴ -> ⍴(⍴⍴(⍴⍴⍴))
...
Urutannya tetap sama. Prosedurnya adalah selama ada lebih dari 3 fungsi, 3 fungsi terakhir dikelompokkan menjadi satu fungsi. Jika kita bertemu kereta bersarang, kita kurung itu terlebih dahulu, sebelum melanjutkan. Berikut adalah prosedur yang diterapkan untuk ⍴⍴⍴⍴⍴⍴
:
Step 0: ⍴⍴⍴⍴⍴⍴
There are strictly more than 3 functions, repeat.
Step 1: ⍴⍴⍴(⍴⍴⍴)
There are strictly more than 3 functions, repeat.
Step 2: ⍴(⍴⍴(⍴⍴⍴))
There are 3 or less functions, we're done.
Berikut adalah prosedur yang sama diterapkan untuk ⍴⍴⍴(⍴⍴)⍴(⍴⍴⍴⍴(⍴⍴⍴))⍴⍴
:
Step 0: ⍴⍴⍴(⍴⍴)⍴(⍴⍴⍴⍴(⍴⍴⍴))⍴⍴
There are strictly more than 3 functions, repeat.
We have met a nested train, applying procedure to that first:
Step 0: ⍴⍴⍴⍴(⍴⍴⍴)
There are strictly more than 3 functions, repeat.
We have met a nested train, applying procedure to that first:
Step 0: ⍴⍴⍴
There are 3 or less functions, we're done.
Step 1: ⍴⍴(⍴⍴(⍴⍴⍴))
There are 3 or less functions, we're done.
Step 1: ⍴⍴⍴(⍴⍴)⍴((⍴⍴(⍴⍴(⍴⍴⍴)))⍴⍴)
There are strictly more than 3 functions, repeat.
We have met a nested train, applying procedure to that first:
Step 0: ⍴⍴
There are 3 or less functions, we're done.
Step 2: ⍴⍴⍴((⍴⍴)⍴((⍴⍴(⍴⍴(⍴⍴⍴)))⍴⍴))
There are strictly more than 3 functions, repeat.
Step 3: ⍴(⍴⍴((⍴⍴)⍴((⍴⍴(⍴⍴(⍴⍴⍴)))⍴⍴)))
There are 3 functions or less, we're done.
Memasukkan
Untuk tantangan ini, input akan disederhanakan. Ini artinya Anda dapat memilih 2 karakter berbeda untuk membuka dan menutup tanda kurung dan 1 karakter untuk fungsi, berbeda dari yang dipilih untuk tanda kurung. Karakter yang Anda pilih harus konsisten. Input tidak akan kosong, dan tidak akan mengandung tanda kurung tanpa konten (yaitu ()
).
Keluaran
Sekali lagi, Anda dapat memilih 3 karakter yang berbeda, 2 untuk tanda kurung dan 1 untuk fungsi. Perhatikan bahwa mereka tidak harus sama dengan yang dipilih untuk input, tetapi mereka harus konsisten.
Aturan
- Jika ada tanda kurung yang hanya menyertakan satu fungsi di dalamnya dalam input, Anda harus menghapusnya di output. Output Anda mungkin tidak mengandung tanda kurung yang tidak dibutuhkan (yaitu, hanya melampirkan satu fungsi, atau melampirkan seluruh output).
- Anda tidak perlu menerapkan algoritme yang digunakan di sini, selama solusi Anda valid untuk tantangan ini.
- Input dan output adalah string dalam format yang dijelaskan di bagian Input dan Output. Input akan memiliki setidaknya satu karakter.
- Dilarang menggunakan celah standar .
- Ini kode-golf , jadi jawaban tersingkat menang. Namun, tidak akan ada jawaban yang diterima, karena ini adalah kompetisi per-bahasa, dan untuk mendorong penjawab dalam bahasa-bahasa di mana tugas ini akan menghasilkan kode yang lebih panjang dibandingkan dengan kode yang ditulis dalam bahasa lain.
Uji kasus
Karakter yang digunakan di sini adalah ()⍴
, Anda harus menggantinya dengan karakter yang Anda pilih.
⍴ -> ⍴
⍴ -> ⍴
⍴⍴ -> ⍴⍴
⍴⍴⍴ -> ⍴⍴⍴
⍴⍴⍴⍴ -> ⍴(⍴⍴⍴)
⍴⍴⍴⍴⍴⍴⍴⍴⍴⍴⍴⍴⍴⍴⍴ -> ⍴⍴(⍴⍴(⍴⍴(⍴⍴(⍴⍴(⍴⍴(⍴⍴⍴))))))
⍴⍴⍴⍴⍴(⍴⍴⍴)⍴⍴(⍴(⍴⍴⍴)⍴⍴⍴)⍴⍴⍴ -> ⍴(⍴⍴(⍴⍴((⍴⍴⍴)⍴(⍴(⍴(⍴⍴⍴)(⍴⍴⍴))(⍴⍴⍴)))))
(⍴⍴⍴)(⍴⍴⍴)(⍴⍴⍴) -> (⍴⍴⍴)(⍴⍴⍴)(⍴⍴⍴)
(⍴⍴⍴)(⍴⍴⍴)⍴⍴⍴ -> (⍴⍴⍴)(⍴⍴⍴)(⍴⍴⍴)
⍴⍴(⍴)⍴⍴ -> ⍴⍴(⍴⍴⍴)
((⍴⍴)) -> ⍴⍴
⍴⍴((⍴⍴))⍴⍴ -> ⍴⍴((⍴⍴)⍴⍴)
Tantangan ini telah diposting di Sandbox. Jika Anda memiliki hak istimewa yang diperlukan, Anda dapat melihat posting sandbox di sini .