Latar Belakang
The berarti logam , dimulai dengan terkenal rata-rata emas , didefinisikan untuk setiap nomor alam (bilangan bulat positif), dan masing-masing merupakan konstanta irasional (memiliki ekspansi non-recurring desimal tak terbatas).
Untuk bilangan alami , rata- rata logam adalah akar dari persamaan kuadrat
Akarnya selalu
tetapi rata-rata logam biasanya diberikan sebagai akar positif. Jadi untuk pertanyaan ini akan ditentukan oleh:
Untuk hasilnya adalah rasio emas yang terkenal:
Tantangan
Kode Anda harus mengambil 2 input: n dan p (urutannya tidak penting asalkan konsisten)
- n adalah bilangan alami yang menunjukkan rata-rata logam mana
- p adalah bilangan alami yang menunjukkan berapa banyak tempat desimal presisi
Kode Anda harus menampilkan rata-rata logam n ke presisi tempat desimal.
Keabsahan
Kode Anda valid jika berfungsi untuk nilai n dan p dari 1 hingga 65.535.
Anda harus mengeluarkan desimal dalam formulir
digit .digit (tanpa spasi)
Misalnya, rata-rata emas ke 9 tempat desimal adalah
1.618033988
Tampilkan digit terakhir tanpa pembulatan, karena akan muncul dalam ekspansi desimal yang lebih panjang. Angka berikutnya dalam mean emas adalah angka 7, tetapi angka 8 terakhir pada contoh tidak boleh dibulatkan menjadi angka 9.
Jumlah digit desimal harus p, yang berarti setiap trailing nol juga harus dimasukkan.
Jawaban formulir
tidak valid - Anda harus menggunakan ekspansi desimal.
Anda dapat menampilkan hingga 1 baris baru dan hingga 1 baris baru. Anda tidak boleh mengeluarkan spasi apa pun, atau karakter lain selain digit dan titik tunggal / berhenti penuh / periode.
Skor
Ini adalah golf kode standar: skor Anda adalah jumlah byte dalam kode Anda.
Papan peringkat
(Menggunakan cuplikan leaderboard Martin )
R, 116 byte
Ini membaca dua bilangan bulat dari STDIN dan mencetak hasilnya ke STDOUT. Anda dapat mencobanya secara online .
Penjelasan + tidak dikumpulkan:
Jika Anda tidak memiliki
Rmpfr
perpustakaan yang diinstal, Anda dapatinstall.packages("Rmpfr")
dan semua impian Anda akan menjadi kenyataan.sumber
Mathematica, 50 byte
Menentukan fungsi anonim yang mengambil
n
danp
berurutan. Saya gunakanFloor
untuk mencegah pembulatanSetAccuracy
, yang saya butuhkan untuk mendapatkan output desimal.sumber
p>15
.CJam, 35 byte
Baca p pertama, lalu n .
Cobalah online di penerjemah CJam .
Bagaimana itu bekerja
Kami cukup menghitung rumus dari pertanyaan untuk n × 10 p , dapatkan bagian bilangan bulat dan fraksional dari hasil dibagi 10 p , pad bagian fraksional dengan nol terkemuka untuk mendapatkan angka p dan mencetak bagian-bagian yang dipisahkan oleh titik.
sumber
Python 2, 92 Bytes
Saat saya sekarang melihat jawabannya, sepertinya jawaban CJam menggunakan metode dasar yang sama seperti ini. Ini menghitung jawaban untuk
n*10**p
dan kemudian menambahkan dalam titik desimal. Ini sangat tidak efisien karena cara menghitung bagian integer dari akar kuadrat (hanya menambahkan 1 sampai tiba di sana).sumber
PHP,
8578 byteIni menggunakan ekstensi matematika BC Math yang, pada beberapa sistem, tidak dapat tersedia. Itu perlu dimasukkan pada waktu kompilasi dengan menentukan
--enable-bcmath
opsi baris perintah. Itu selalu tersedia di Windows dan tampaknya itu termasuk dalam versi PHP yang dibundel dengan OSX juga.Perbarui :
Saya menerapkan semua peretasan yang disarankan oleh @blackhole dalam komentar mereka (terima kasih!) Lalu saya meremas inisialisasi
$n
penggunaan pertama (3 lebih byte disimpan) dan sekarang kode tersebut cocok dalam satu baris pada kotak kode di atas.sumber
echo
, cukup sisakan spasi setelahnya.bcscale
untuk kembalitrue
, Anda dapat menggunakan$n=$argv[bcscale($argv[2])];
dan menyimpan 2 byte lebih banyak.bcpow($n,2)
bukannyabcmul($n,$n)
menghemat 1 byte.J, 27 Bytes
Penjelasan:
Sebut saja seperti ini:
Solusi lain yang sedikit lebih dingin:
Yang menghitung akar polinomial x ^ 2 - nx - 1. Sayangnya, cara J memformat hasil membuat retreving root yang diinginkan sedikit lebih lama.
sumber