Tulis fungsi atau program yang menampilkan jumlah setiap jenis elemen (simpul, tepi, wajah, dll.) Dari sebuah N-dimensi hypercube.
Sebagai contoh, kubus 3 dimensi memiliki 1 sel (yaitu 1 kubus 3 dimensi), 6 wajah (yaitu 6 kubus 2 dimensi), 12 tepi (yaitu 12 kubus 2 dimensi) dan 8 simpul (yaitu 8 dimensi 0) kotak).
Rincian lebih lanjut tentang elemen Hypercube dapat ditemukan di sini
Anda juga dapat melihat urutan OEIS berikut .
Memasukkan
Kode Anda akan dimasukkan sebagai input (melalui STDIN atau parameter fungsi atau hal serupa) bilangan bulat lebih besar atau sama dengan 0, yang merupakan dimensi dari hypercube.
Kode Anda harus bekerja secara teoritis untuk setiap input> = 0, mengabaikan masalah memori dan waktu (yaitu, kecepatan dan potensi stack overflow bukan masalah bagi jawaban Anda jika inputnya besar). Masukan yang diberikan sebagai kasus uji tidak akan di atas 12.
Keluaran
Anda akan melihat daftar semua elemen hypercube, dimulai dengan elemen "dimensi tertinggi". Misalnya, untuk kubus (input = 3), Anda akan menampilkan daftar [1,6,12,8]
(1 sel, 6 wajah, 12 tepi, 8 simpul).
Format daftar dalam output relatif gratis, asalkan terlihat seperti daftar.
Anda dapat menampilkan hasilnya ke STDOUT atau mengembalikannya dari suatu fungsi.
Uji kasus
Input = 0
Output = [1]
Input = 1
Output = [1,2]
Input = 3
Output = [1,6,12,8]
Input = 10
Output = [1, 20, 180, 960, 3360, 8064, 13440, 15360, 11520, 5120, 1024]
Input = 12
Output = [1, 24, 264, 1760, 7920, 25344, 59136, 101376, 126720, 112640, 67584, 24576, 4096]
Mencetak gol
Ini adalah kode-golf , jadi jawaban tersingkat dalam byte menang.
MATL , 12 byte
Cobalah online
Penjelasan
sumber
Mathematica, 29 byte
Jawaban pertama saya di Mathematica! Ini adalah fungsi murni yang menggunakan pendekatan yang sama seperti Alephalpha ini PARI / GP jawaban . Kami membangun polinomial
(1+2x)^n
dan mendapatkan daftar koefisien, terdaftar dalam urutan kekuatan naik (yaitu konstan pertama).Contoh penggunaan:
sumber
APL,
1511 byteIni adalah kereta fungsi monadik yang menerima integer di sebelah kanan dan mengembalikan array integer.
Penjelasan, memanggil input
n
:Cobalah online
Disimpan 4 byte berkat Dennis!
sumber
PARI / GP,
2015 bytesumber
Jelly, 8 byte
Saya benar-benar harus berhenti menulis Jelly di ponsel saya.
Coba di sini .
sumber
TI-BASIC, 10 byte
sumber
binompdf
.CJam (
1714 bytes)Demo online
Pendekatan ini menggunakan fungsi pembangkit biasa
(x + 2)^n
. OEIS menyebutkan(2x + 1)^n
, tetapi pertanyaan ini mengindeks koefisien dalam urutan yang berlawanan. Saya menendang diri saya sendiri karena tidak berpikir untuk membalikkan gf sampai saya melihat pembaruan Alephalpha untuk jawaban PARI / GP yang melakukan hal yang sama.Trik yang menarik dalam jawaban ini adalah menggunakan kekuatan bilangan bulat untuk operasi daya polinomial dengan beroperasi di basis yang lebih tinggi daripada koefisien yang mungkin. Secara umum, diberikan polinomial
p(x)
yang koefisiennya semua bilangan bulat non-negatif kurang darib
,p(b)
adalahb
representasi basis dari koefisien (karena masing-masing monomial tidak "tumpang tindih"). Jelas(x + 2)^n
akan memiliki koefisien yang bilangan bulat positif dan yang berjumlah3^n
, sehingga masing-masing secara individual akan lebih kecil dari3^n
.Pendekatan alternatif: pada 17 byte
Demo online
atau
Demo online
keduanya bekerja dengan menjumlahkan baris sebelumnya dengan baris offset-dan-gandakan (dalam gaya yang mirip dengan konstruksi manual standar segitiga Pascal).
Pendekatan "langsung" menggunakan kekuatan Cartesian (berlawanan dengan kekuatan integer) untuk operasi daya polinomial, muncul pada 24 byte:
di mana peta itu, luar biasa, cukup rumit sehingga lebih pendek untuk digunakan
%
daripadaf
:sumber
ES6, 71 byte
Formula rekursif sederhana. Setiap hypercube dibuat dengan memindahkan unit hypercube 1 sebelumnya melalui dimensi Nth. Ini berarti bahwa objek dimensi M digandakan pada awal dan akhir unit, tetapi juga objek dimensi (M-1) mendapatkan dimensi ekstra, berubah menjadi objek dimensi M. Dengan kata lain
c(n, m) = c(n - 1, m) * 2 + c(n - 1, m - 1)
,. (Pengajuan aktual membalikkan parameter sehingga rumus menghasilkan dalam urutan yang diinginkan.)Secara cerdik,
fill
memungkinkanmap
untuk memberikan argumen yang benar ke fungsi rekursif, menyelamatkan saya 6 byte.sumber
Pyth,
109 byteMenggunakan algoritma nCr yang tampaknya digunakan semua orang.
sumber
.<L.cQdhQ
05AB1E , 9 byte
Kode:
Penjelasan:
Menggunakan pengodean CP-1252.
sumber
Julia, 31 byte
Ini adalah fungsi lambda yang menerima integer dan mengembalikan array integer. Untuk menyebutnya, tetapkan ke variabel.
Untuk setiap m dari 0 sampai input n , kita menghitung jumlah ( n - m ) hypercubes berdimensi pada batas induk n hypercube berdimensi. Menggunakan rumus di Wikipedia, cukup pilih 2 m * ( n , m ). Kasus m = 0 mengacu pada n- kubus itu sendiri, sehingga output dimulai dengan 1 terlepas dari input. Tepian diberikan oleh m = n , simpul oleh m = n - 1, dll.
sumber
Ruby, Rev B 57 byte
Rev sebelumnya hanya memindai melalui bagian array yang digunakan setiap kali. Rev ini memindai seluruh array pada setiap iterasi. Ini lebih lambat, tetapi menghemat byte. Byte selanjutnya disimpan dengan menggunakan 1 loop untuk melakukan pekerjaan 2.
Ruby, Rev A 61 byte
Mulai dengan titik dan secara iteratif menciptakan dimensi berikutnya
Dalam setiap iterasi, setiap elemen yang ada bertambah dalam dimensi dan menghasilkan 2 elemen baru dari dimensi aslinya. Misalnya, untuk kuadrat dalam bidang horizontal yang diperpanjang secara vertikal menjadi kubus:
1 wajah menjadi kubus dan menghasilkan 1 pasang wajah (1 di atas, 1 di bawah)
4 tepi menjadi wajah dan menghasilkan 4 pasang tepi (4 di atas, 4 di bawah)
4 simpul menjadi tepi dan menghasilkan 4 pasang simpul (4 di atas, 4 di bawah)
Tidak terkurung dalam program uji
sumber