tugas
Tugas Anda adalah membangun struktur dengan kubus. Volume kubus mengikuti urutan berikut (bawah -> atas)
memasukkan
Total volume struktur ( ).
keluaran
nilai ( ), yaitu: Jumlah total kubus.
catatan
- Input akan selalu berupa bilangan bulat.
- Kadang-kadang tidak mungkin untuk mengikuti urutan, yaitu: tidak mewakili nilai spesifik untuk n . Dalam acara tersebut, kembalikan -1, atau nilai palsu yang Anda pilih (meskipun diperlukan konsistensi).
- Ini adalah kode-golf sehingga jawaban terpendek dalam byte untuk setiap bahasa menang.
- Tidak ada jawaban yang ditandai diterima karena alasan yang disebutkan di atas.
permintaan
- Ini adalah tantangan pertama saya di situs ini jadi bersabarlah, dan maafkan (dan ceritakan tentang) kesalahan yang saya buat.
- Mohon berikan tautan agar kode Anda dapat diuji.
- Jika Anda bisa, silakan tulis penjelasan tentang cara kerja kode Anda, sehingga orang lain dapat memahami dan menghargai karya Anda.
contoh
input : 4183059834009
output : 2022
input : 2391239120391902
output : -1
input : 40539911473216
output : 3568
Terima kasih kepada @Arnauld untuk tautannya:
Bukankah itu bagus?
Tautan ke orignial: Tautan
4183059834009
memberikan output2022
?Jawaban:
JavaScript (ES7), 31 byte
Formula langsung. Kembali
0
jika tidak ada solusi.Cobalah online!
Bagaimana?
Jumlah dari n pertama kubus diberikan oleh:Sn n
(Ini A000537 . Formula ini dapat dengan mudah dibuktikan dengan induksi. Berikut ini adalah representasi grafis .)S5
Secara timbal balik, jika adalah jumlah dari kubus x pertama , persamaan berikut mengakui solusi bilangan bulat positif:v x
Karena positif, ini mengarah ke:(x2+x)/2
Solusi positif siapa diberikan oleh:
Jika adalah bilangan bulat, dijamin aneh, karenaΔitu sendiri ganjil. Oleh karena itu, solusinya dapat dinyatakan sebagai:r=Δ−−√ Δ
Berkomentar
Versi rekursif,
3635 byteKembali
NaN
jika tidak ada solusi.Cobalah online!
Berkomentar
sumber
05AB1E , 6 byte
Cobalah online!
Port of Jonathan's Jelly menjawab. Ambil jumlah kumulatif [0 ... n] , persegi masing-masing dan menemukan indeks V .
05AB1E , 7 byte
Cobalah online!
Bagaimana itu bekerja
8-byte alternatif:
ÝÝÅΔ3mOQ
.sumber
3mO
dannO
bekerja ... Mungkin juga menyebutkan -1 adalah nilai palsu.R ,
4240 byte-2 byte terima kasih kepada Giuseppe
Cobalah online!
Jawaban JavaScript Port of Arnauld . Juga mengembalikan 0 jika tidak ada solusi.
sumber
Jelly ,
54 byteTautan monadik, menghasilkan
0
jika tidak memungkinkan.Cobalah online! terlalu tidak efisien untuk kasus uji! (O (V) spasi: p)
Berikut adalah versi 8-byte yang melakukan cube-root dari V terlebih dahulu untuk membuatnya O (V ^ (1/3)) sebagai gantinya. Menggunakan versi 8-byte di sini adalah test-suite
Bagaimana?
sumber
36
IJi
berperilaku seperti²⁼
(Ị
, dengan kata lain).Elixir , 53 byte
Cobalah online!
Port of Jonathan's Jelly menjawab.
Elixir , 74 byte
Cobalah online!
Jelas kurang optimal. Tapi saya hanya pemula Elixir! :) Pengembalian
nil
untuk nilai "tidak valid" dariV
.sumber
Japt, 7 byte
Cobalah
Penjelasan
Alternatif
Cobalah
sumber
Cubix , 27 byte (atau volume 27?)
Sepertinya tempat yang tepat untuk bahasa ini.
Cobalah online!
Ini membungkus ke kubus 3x3x3 sebagai berikut
Lihat saja
Ini penting kekuatan kasar dengan mengambil kubus meningkat dari input. Jika hasilnya nol,
n
hasilkan sebaliknya jika ada hasil negatif, cetak 0 dan keluar.sumber
Perl 6 ,
302926 byte-4 byte terima kasih kepada Jo King
Cobalah online!
Solusi brute force untuk n <10000. Menggunakan persamaan dari jawaban Jonathan Allan.
3736 byte solusi untuk n yang lebih besar ( -1 byte berkat Jo King ):Cobalah online!
Kembali
False
jika tidak ada solusi.Penjelasan
sumber
0..$_
untuk menjadi valid untuk semua angka, bahkan jika itu akan habis pada yang lebih besar. Untuk bermain golf normal, Anda dapat menghapus yang.
pertama dan mengubah yang kedua dari0>=*
menjadi1>*
JavaScript (Node.js) , 28 byte
Cobalah online!
Saya tahu itu pertanyaan saya sendiri dan semuanya, tapi saya punya jawaban yang lebih baik (untuk bahasa ini) kemudian hadir, jadi saya memposting. Semoga tidak apa-apa
sumber
APL (Dyalog) , 18 byte
Cobalah online!
sumber
Matlab, 27 byte
Mengembalikan
n
jika ada atau matriks kosong jika tidak.Bagaimana itu bekerja
Cobalah secara Online!
Catatan Gagal untuk besar
v
karena keterbatasan memori.sumber
Python 3 , 60 byte
Cobalah online!
-6 terima kasih kepada Tn . Xcoder .
Jika kita bisa melempar kesalahan kalau-kalau tidak adan untuk tertentu V , kita bisa mendapatkan ini hingga 51 byte:
Cobalah online!
sumber
Perl 6 , 33 byte
Cobalah online!
Ini menggunakan metode Arnauld . Mengembalikan objek Kosong jika nomor tidak valid.
sumber
dc , 19 byte
Input dan output berasal dari stack, mengembalikan 0 jika tidak ada solusi.
Cobalah online!
Penjelasan
Jika ada solusi n, inputnya adalah
((n^2+n)^2)/4
. Jadi kami akan menghitung solusi percobaan sebagain=sqrt(sqrt(4*input))
, menggunakan dc default 0 desimal tempat presisi untuk akar kuadrat, kemudian membandingkan(n^2+n)^2
untuk4*input
untuk melihat apakah itu sebenarnya solusi.Garis kedua dari belakang bergantung pada fakta yang tidak jelas bahwa untuk dc,
0^x=0
untuk semua bukan nolx
(bahkan negatifx
!) Tetapi0^0=1
.sumber
Python 3 ,
5348 byteCobalah online!
-3 byte dari Jo King
Kembali
-1
tanpa jawaban.Hanya bekerja hingga
n=997
batas rekursi default.Berulang kali mengambil kubus yang lebih besar dan lebih besar dari volume sampai tiba di nol (sukses, mengembalikan jumlah kubus dihapus), atau angka negatif (tidak ada jawaban).
Penjelasan:
sumber
and/or
atau daftar biasanya lebih pendek dariif/else
. 50 bytenot V
=>V==0
atauV>-1
gvm (commit 2612106 ) bytecode,
7059 byte(-11 byte dengan mengalikan dalam satu lingkaran alih-alih menulis kode untuk mengalikan dua kali)
Hexdump:
Tes berjalan:
Tidak benar-benar skor rendah, hanya menggunakan pertanyaan yang bagus ini untuk pengujian di
gvm
sini;) Komit lebih tua dari pertanyaan tentu saja. Catatan ini adalah mesin virtual 8bit, jadi menggunakan beberapa kode hanya menangani rentang nomor yang tidak ditandai0-255
, kasus uji yang diberikan dalam pertanyaan tidak akan berfungsi.Dirakit secara manual dari ini:
sunting : Saya baru saja memperbaiki bug di
gvm
; tanpa perbaikan ini,gvm
cobalah membaca program biner dalam mode teks , yang mungkin rusak (kode di atas tidak mengandung0xd
byte sehingga tidak akan rusak di windows tanpa perbaikan ini).sumber
K (oK) , 21 byte
Cobalah online!
Pelabuhan JS Arnauld menjawab .
Bagaimana:
fungsi akan mengembalikan
(_r%2)
iff1!r == 0
, kalau tidak mengembalikan null (0N
). Itu karena elemen tunggal dalam daftar memiliki indeks 0, dan mencoba mengindeks daftar itu dengan angka apa pun selain 0 akan menghasilkan nol.sumber