Anda harus menghasilkan fungsi yang membuat string s
di dalam array, n
kali
>>> N("stackoverflow",2)
[['stackoverflow']]
Parameter:
s
- Sebuah string asciin
- Bilangan bulat>= 0
Aturan
- Kode terpendek menang.
- Outputnya akan bersarang
array
,list
atautuple
(atau sejenisnya berdasarkan dari array)
Uji Kasus
>>> N("stackoverflow",0)
'stackoverflow'
>>> N("stackoverflow",1)
['stackoverflow']
>>> N("stackoverflow",5)
[[[[['stackoverflow']]]]]
Terinspirasi oleh: Menempatkan string di dalam daftar n kali yaitu daftar daftar daftar
"
? MisalnyaN("stack\"overflow",5)
Jawaban:
Jelly , 2 byte
Agak membingungkan, karena: (1) Jelly tidak memiliki string, hanya daftar karakter; dan (2); output tidak akan menunjukkan sarang. Untuk melihat bahwa ini sebenarnya adalah melakukan apa yang diminta, lihat representasi string Python dari hasil dengan:
Sepasang tambahan
[]
akan hadir karena string itu sendiri akan menjadi daftar karakter. Sebagai contohBagaimana?
Kode proof-of-concept menambahkan:
sumber
Java dan C #, 62 byte
Harus bekerja tanpa modifikasi di Java dan C #.
sumber
05AB1E , 3 byte
Kode
Penjelasan
Ini berarti bahwa ini juga berfungsi untuk 0 -testcase, karena string sudah ada di stack.
Cobalah online!
sumber
JavaScript (ES6), 20 byte
Meskipun orang biasanya mengomel saya untuk menjelajah fungsi saya untuk penghematan 1-byte, ini adalah kasus di mana ia sebenarnya berkontribusi pada solusi.
sumber
d=>g=n=>n?[g(n-1)]:d
Mathematica, 13 byte
sumber
CJam ,
76 bytePenerjemah online
Ini adalah fungsi tanpa nama yang mengambil argumennya dari stack sebagai
S N
,S
menjadi string danN
menjadi pembungkus. Anda dapat menjalankannya dengan~
operator, yang berarti eval.Penjelasan:
sumber
{{a}*}
atau{'a*~}
.{a}
n kali) daripada yang kedua (menghasilkan string na
s dan jalankan).Javascript ES6, 23 byte
Fungsi rekursif
Currying menghasilkan panjang yang sama
sumber
Brachylog , 10 byte
Cobalah online!
Penjelasan
Ini akan menjadi 3 byte jika tidak disadap. Di sini kita perlu semua ini untuk mendapatkan daftar
[String, T, built-in_group]
meskipun[String, T]
sudah menjadi masukan kita.Sayangnya
:g
langsung menghasilkan[[String, T], built-in_group]
, yang tidak dikenali dengan benari
karena bilangan bulatT
ada di dalam daftar pertama.sumber
MATL, 6 byte
Ini menghasilkan array sel bersarang sebagai output. Namun, dengan tampilan standar MATL, Anda tidak perlu melihat seperti itu karena tidak akan menampilkan semua kurung kurawal. Demo di bawah ini adalah versi yang sedikit dimodifikasi yang menunjukkan representasi string dari output.
Cobalah secara Online
Penjelasan
sumber
Pyke, 3 byte
Coba di sini!
sumber
Pyth , 3 byte
Permalink
Ini akan menampilkan sesuatu seperti
...[[[[['string']]]]]...
. Itu tidak akan mengutip untuk kedalaman nol:string
.Penjelasan:
Jika Anda ingin mengutip pada kedalaman nol, gunakan solusi 4-byte ini sebagai gantinya (penjelasan):
sumber
PHP, 60 Bytes
48 Bytes jika terlihat hanya seperti tugas
sumber
function f($s,$n){return$n?[f($s,$n-1)]:$s;}
.print_r()
and, if you don't like that option,serialize()
are both shorter thanjson_encode()
ing it while differentiating the output.')
at the end of code looks strange.Ruby: 23 bytes
This is updated to make it a callable Proc rather than the original snippet. I'd be interested to know whether there's a way to have
s
implicitly returned rather than having to explicitly return it.sumber
->s,n{...}
.C,
44 byte, 41 byteAnda dapat mengujinya dengan melakukan hal berikut:
Hasil:
Tentu saja, Anda akan mendapat peringatan. Ini berfungsi pada
gcc
bash di mesin Windows saya (gcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.3)
, dan juga pada mesin Linux yang sebenarnya (gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5)
).sumber
int*n(s,a)int*s;{return!a?s:n(&s,a-1);}
works with gcc.cc -v
->Apple LLVM version 8.0.0 (clang-800.0.38)
.!
from the ternary condition and switch the order ofs
andn(&s,a-1)
to save a byte?n(s,6)
, you have to change***
to******
in the variable declaration and use. This is needed exactly because the function does what it is expected to do: nest the string into an array several (here: 6) times. Of course you would still get three levels of[]
because they are hardcoded. I think the program shouldn't output them at all. This challenge is not about brackets, it is about nesting. Some languages print arrays with brackets, C hasn't any builtin function to print them at all. So what? It is not needed here.*
in the function signature?Python, 32 bytes
sumber
Ruby, 25 characters
Rewrite of jamylak's Python solution.
Sample run:
sumber
C# 6, 50 bytes
sumber
n<1
? Also -2 bytes if you useobject
instead ofdynamic
.Ruby, 24 bytes
Disebut sama dengan jawaban manatwork, but a weirder implementation.
*s
wraps the input (a possibly-nested string) in an array. Then ifn
is zero,s[n]
returns the first element ofs
, turning the function into a no-op. Otherwise, it returnsnil
sinces
will only ever have one element, so we pass through to the recursive call.sumber
V , 6 byte
Cobalah online!
Penjelasan:
sumber
Perl 6 , 23 byte
Diperluas:
sumber
Agda, 173 byte
Karena tipe kembalinya fungsi tergantung pada angka yang diberikan sebagai argumen, ini jelas merupakan kasus di mana bahasa yang diketik secara dependen harus digunakan. Sayangnya, bermain golf tidak mudah dalam bahasa di mana Anda harus mengimpor naturals dan daftar untuk menggunakannya. Di sisi positifnya, mereka menggunakan di
suc
mana saya harapkan verbosesucc
. Jadi, inilah kode saya:(Saya harap saya menemukan semua tempat di mana spasi dapat dihilangkan.)
L
Adalah fungsi tipe yang diberikan alamin
dan tipea
mengembalikan jenisn
kali daftar bersaranga
, jadiL 3 Bool
akan menjadi jenis daftar daftar daftarBool
(jika kita memiliki diimporBool
). Ini memungkinkan kita untuk mengekspresikan jenis fungsi kita sebagai(n : ℕ) -> {a : Set} -> a -> L n a
, di mana kurung kurawal membuat argumen itu tersirat. Kode ini menggunakan cara yang lebih pendek untuk menulis jenis ini. Fungsi sekarang dapat didefinisikan dengan cara yang jelas dengan pencocokan pola pada argumen pertama.Memuat file ini dengan
.agda
ekstensi ke emacs memungkinkan untuk digunakanC-c C-n
(mengevaluasi jangka ke bentuk normal), masukan misalnyaf 2 3
dan mendapatkan jawaban yang benar dalam bentuk canggung:(3 ∷ []) ∷ []
. Sekarang tentu saja jika Anda ingin melakukannya dengan string, Anda harus mengimpornya ...sumber
→
alih-alih->
, tetapi tentu saja itu meningkatkan ukuran file yang disandikan UTF-8.k, 3 byte
Diambil sebagai fungsi diad,
/
secara iteratif akan menerapkan fungsi tangan kiri,:
(enlist
) n kali pada argumen kedua.Contoh:
sumber
PHP, 44 byte
tidak ada yang canggih, hanya fungsi rekursif
sumber
Python 2, 32 byte
Letakkan
n
tanda kurung di depan string dann
tutup tanda kurung di depannya, lalu evaluasi hasilnya. Jika output string diizinkan,eval
dapat dihapus.sumber
Sebenarnya , 4 byte
Masukan
string
kemudiann
. Saran golf diterima. Cobalah online!Tidak melakukanolf
sumber
R,
3940 byteEDIT: Memperbaiki
n=0
masalah ini berkat @rturnbull.Fungsi yang mengambil dua input
s
(string) dann
(nestedness) dan menampilkan daftar bersarang. Perhatikan bahwa R-classlist
mencetak hasil asli secara berbeda dari kebanyakan bahasa lain, secara fungsional mirip dengan peta kunci / nilai (dengan kunci yang mungkin tidak disebutkan namanya) atau daftar dengan python.Contoh
sumber
n=0
. Sebelum saya melihat jawaban Anda, saya datang dengan solusi rekursif yang dapat menanganin=0
, tetapi 1 byte lebih lama dari solusi Anda (40 byte):f=function(s,n)if(n)list(f(s,n-1))else s
n=0
case. However, your solution is actually38
bytes excluding the naming of the function and hence shorter. Great catchf(s,n-1)
call inside of it.) Recursive anonymous functions are not possible in R, as far as I know.f=function(s,n)'if'(n,list(f(s,n-1)),s)
.Racket 83 byte
Tidak Terkumpul:
Pengujian:
Keluaran:
sumber
Haskell,
4038 byteSistem tipe ketat Haskell mencegah pengembalian tipe yang berbeda (Strings vs. List of Strings vs. List of Strings, ...), jadi saya harus mendefinisikan tipe saya sendiri yang mengakomodasi semua case. Fungsi utama
f
secara rekursif memanggiln
kali konstruktorC
untuk bersarang danN
untuk kasing.Contoh penggunaan (dengan
deriving (Show)
ditambahkan kedata
tipe baru untuk dapat mencetaknya):f 4 "codegolf"
->C (C (C (C (N "codegolf"))))
.Edit: @Christian Sievers saved 2 bytes by rewriting the function in a point-free style for the string argument. Thanks!
sumber
deriving
clause: the parens aren't needed. - Not sure if it's okay to only nest theC
constructor which isn't list-like. My very similar attempt was based on a data type defined asdata D x=J x|L[D x]
.f 0=N;f n=C. f(n-1)
1:(2:(3:([])))
with C (C (C (N "codegolf"))).C
is cons (:
),N
is nil ([]
).C
doesn't cons, it only embeds, your data type can't express[["a","b"],["c"]]
. But maybe that is fine as this problem only needs singletons. -f n=...
isn't point-free. Point-reduced?Either
) even if it meant the constructors were a little more verbose?tinylisp (repl), 34 bytes
Defines a function
F
. Technically, tinylisp doesn't have strings, but this code will work for any data type it's given.Ungolfed (key to builtins:
d
= define,q
= quote,i
= if,c
= cons,s
= subtract):Example usage:
sumber
Clojure, 24 bytes
Clojure is somewhat competitive here.
iterate
creates a sequence ofx, (f x), (f (f x)) ...
,nth
returns needed element.See it online: https://ideone.com/2rQ166
sumber