Mengingat urutan Oei A033581 , yang merupakan urutan yang tak terbatas, yang n 'th jangka (0-pengindeksan) diberikan oleh bentuk tertutup rumus 6 × n 2 .
Tugas Anda adalah menulis kode, yang menampilkan semua himpunan bagian dari himpunan N angka pertama dalam urutan, sehingga jumlah dari himpunan bagian adalah kuadrat sempurna.
Aturan
- Bilangan bulat
N
diberikan sebagai input. - Anda tidak dapat menggunakan kembali nomor yang sudah digunakan dalam jumlah. (yaitu, setiap nomor dapat muncul di setiap subset paling banyak sekali)
- Angka yang digunakan bisa non-berturut-turut.
- Kode dengan ukuran paling tidak menang.
Contoh
Urutan yang diberikan adalah {0,6,24,54,96, ..., 15000}
Salah satu himpunan bagian yang diperlukan adalah {6,24,294}, karena
6+24+294 = 324 = 18^2
Anda perlu menemukan semua set tersebut dari semua panjang yang mungkin dalam rentang yang diberikan.
code-golf
math
sequence
subsequence
prog_SAHIL
sumber
sumber
Jawaban:
05AB1E , 10 byte
Cobalah online!
Bagaimana?
sumber
Haskell ,
114 104 10386 byteTerima kasih kepada Laikoni dan Ørjan Johansen untuk sebagian besar bermain golf! :)
Cobalah online!
Versi yang sedikit lebih mudah dibaca:
sumber
Pyth , 12 byte
-2 byte terima kasih kepada Tn. Xcoder
Cobalah online!
2 byte lagi perlu ditambahkan untuk menghapus
[]
dan[0]
, tetapi mereka sepertinya keluaran yang valid untuk saya!Penjelasan
sumber
fsI@sT2ym*6*
.Bersih ,
145... 97 byteCobalah online!
Menggunakan fungsi helper
@
untuk menghasilkan power set ton
term dengan menggabungkan setiap istilah[[],[6*n^2],...]
dengan masing-masing istilah[[],[6*(n-1)*2],...]
secara rekursif, dan dalam urutan terbalik.Fungsi parsial
f
kemudian disusun (di mana->
menunjukkano
komposisi) sebagai:apply @ -> take the elements where -> the sum -> is a square
Sayangnya tidak mungkin untuk melewatkan
f=
dan menyediakan fungsi parsial literal , karena aturan diutamakan mengharuskannya memiliki tanda kurung ketika digunakan inline.sumber
Jelly , 12 byte
Cobalah online!
Output adalah daftar subset termasuk
0
s dan subset kosong.sumber
Bahasa Wolfram (Mathematica) , 49 byte
Pendekatan kekerasan
Cobalah online!
sumber
JavaScript (ES7), 107 byte
Demo
Tampilkan cuplikan kode
Berkomentar
sumber
Japt , 15 byte
Cobalah
Penjelasan
Hasilkan di array bilangan bulat dari 0 ke input (
ò
) dan melewati masing-masing melalui fungsi (_ Ã
), kuadratkan itu (²
) & mutiplying oleh 6 (*6
). Dapatkan semua kombinasi array itu (à
) dan hapus yang mengembalikan truey (k
) ketika melewati fungsi (_
) yang menambahkan elemen mereka (x
), dapatkan akar kuadrat dari hasil (¬
) dan mod dengan 1 (u1
)sumber