Dengan bilangan bulat non-negatif atau daftar angka, tentukan dalam berapa cara bilangan dapat dibentuk dengan menggabungkan bilangan kuadrat, yang mungkin memiliki angka nol di depan.
Contohnya
input -> output # explanation
164 -> 2 # [16, 4], [1, 64]
101 -> 2 # [1, 01], [1, 0, 1]
100 -> 3 # [100], [1, 00], [1, 0, 0]
1 -> 1 # [1]
0 -> 1 # [0]
164900 -> 9 # [1, 64, 9, 0, 0], [1, 64, 9, 00], [1, 64, 900], [16, 4, 900], [16, 4, 9, 0, 0], [16, 4, 9, 00], [16, 49, 0, 0], [16, 49, 00], [16, 4900]
Aturan
- Celah Standar Berlaku
- Ini adalah kode-golf sehingga jawaban tersingkat dalam byte menang
code-golf
math
number
combinatorics
set-partitions
HyperNeutrino
sumber
sumber
Jawaban:
Haskell , 135 byte
Cobalah online!
Mungkin belum bermain golf dengan baik, tetapi ini merupakan masalah yang sangat sulit
sumber
Jelly , 8 byte
Tautan monadik mengambil daftar angka dan mengembalikan bilangan bulat non-negatif
Cobalah online! atau lihat test suite .
Bagaimana?
sumber
Haskell , 88 byte
Menentukan fungsi
f
yang mengambil string dan mengembalikan float. Sangat lambat. Cobalah online!Penjelasan
Saya menggunakan tip Haskell saya untuk menghitung semua partisi string dengan
mapM
danwords
. CuplikanmapM(\c->[[c],c:" "])x
menggantikan setiap karakter'c'
stringx
dengan string satu elemen"c"
atau string dua elemen"c "
, dan mengembalikan daftar semua kombinasi yang mungkin. Jika saya mengambil salah satu hasilnya,,y
menyatukannya dan memanggilwords
hasilnya, itu akan dibagi pada spasi yang dimasukkan olehmapM
. Dengan cara ini saya mendapatkan semua partisix
menjadi substring yang berdekatan. Lalu saya hanya menghitung hasil di mana setiap elemen partisi adalah kuadrat sempurna (dengan menemukannya dalam daftar[0,1,4,9,..,x^2]
). Sebuah peringatan adalah bahwa setiap partisi dihitung dua kali, dengan dan tanpa spasi tambahan, jadi saya mengambil jumlah0.5
s bukannya1
s; inilah mengapa tipe hasil adalah float.sumber
Pyth , 16 byte
Suite uji .
sumber
Python 3 ,
148139135134 byte10 byte berkat Arnold Palmer.
Cobalah online!
sumber
%1
danfor
...[[a[0]]]
dengan[a[:1]]
akan menghemat byteMathematica, 141 byte
input (daftar digit)
sumber
{1,64,9}
,{16,4,9}
dan{16,49}
) tetapi fungsi Anda mengembalikan 4.Table[(function of s[[i]]),{i,Length[s=(stuff)]}]
beberapa kali; Anda biasanya bisa bermain golf hingga ini(function of #)&/@(stuff)
.Python 2 ,
173163 byteCobalah online!
Sunting: Disimpan 10 byte karena ArnoldPalmer
sumber
.5
alih-alih0.5
?