Lihatlah bunga chamomile ini:
Cantik, bukan? Nah, bagaimana jika saya katakan bahwa ini sebenarnya bukan satu bunga?
Banyak bunga (termasuk bunga matahari, chamomile, bunga aster dan lainnya) sebenarnya terdiri dari banyak bunga yang sangat kecil (titik-titik hitam pada bunga matahari) pada kepala bunga. Bunga mini ini disebut kuntum bunga , dan disusun dengan cara yang sangat istimewa.
Pada dasarnya, posisi floret ke-9 pada kepala bunga adalah (dalam koordinat kutub):
di mana c = 1 (Perhatikan bahwa 137.508 derajat = sudut emas. Anda tidak harus menggunakan presisi yang tepat ini.)
Ini menyebabkan kuntum terbentuk dalam bentuk spiral yang disebut Fermat's Spiral. Penentuan posisi kuntum juga terhubung dengan nomor Fibonnaci, tetapi itu adalah kisah untuk lain waktu.
Jadi, inilah tantangannya. Diberikan bilangan bulat n sebagai input, hitung posisi kuntum n pertama dan plot mereka . Ini adalah grafis-output , jadi saya benar-benar ingin Anda menampilkan titik-titik di jendela atau semacam dikeluarkan sebagai data dalam beberapa format gambar umum untuk STDOUT atau file. Selain itu, tantangan ini harus cukup mudah. Ini kode-golf , jadi kode terpendek menang. GLHF!
Berikut adalah contoh gambar dari apa yang mungkin terlihat seperti output:
sumber
Jawaban:
TI-BASIC, 34 byte
Untuk seri kalkulator TI-83+ / 84+.
Ini menganggap titik pada titik asal sebagai titik 0.
Berkat
sinh⁻¹(
token satu byte ,2πe^(-2sinh⁻¹(.5
merupakan cara singkat untuk mendapatkan sudut emas pada radian. Ini berasal dari fakta bahwa itue^(sinh⁻¹(.5
adalah rasio emas.Ini adalah screenshot untuk N = 50.
(Ya, itu adalah tampilan monokrom 96x64 pada TI-84 +. Kalkulator warna yang lebih baru memiliki peningkatan resolusi, tetapi masih memiliki hanya 3,7% piksel dari iPhone.)
Tekan TRACEuntuk melangkah melewati setiap titik.
sumber
sinh⁻¹
terlihat (jika saya mengerti penjelasan Anda), akan dihitung lebih dari satu byte.Python 2,
858281 byteDisingkat satu byte oleh marinus.
Menggunakan sudut emas dalam radian. Panjang byte sama jika saya menggunakan 137.508 sebagai gantinya, tetapi entah bagaimana tidak terlihat bagus. Menghasilkan plot kutub menggunakan pylab. Di bawah ini adalah 300 (untuk versi yang lebih lama) adalah input dan 7000 (untuk versi yang lebih baru) adalah input. Bisa membulatkan sudut hingga 2,4 untuk menurunkan jumlah byte menjadi 77.
Berikut versi yang lebih panjang yang menghasilkan tampilan yang lebih bersih dengan menghapus kisi dan sumbu:
Alasan untuk warna yang berbeda adalah karena setiap titik diplot secara terpisah dan diperlakukan sebagai set data sendiri. Jika sudut dan jari-jari dilewatkan sebagai daftar, maka mereka akan diperlakukan sebagai satu set dan satu warna.
sumber
for
loop normal alih-alih pemahaman daftar. Itu harus berada di jalurnya sendiri, tetapi;
dan\n
memiliki panjang yang sama, jadi itu tidak masalah. Yakni:from pylab import*
-for i in arange(0,input(),2.39996):polar(i,sqrt(i),'o')
-show()
Blitz 2D / 3D , 102 byte
(Jawaban PERTAMA Blitz 2D / 3D di situs ini!)
Input
50
mengisi jendela. (Ya, saya bisa mengurangi dua byte dengan melakukanGraphics 99,99
, tapi itu tidak begitu menarik atau berguna secara visual.)Versi lebih cantik (dan keluar dengan lebih baik):
sumber
Mathematica,
4342 byteIni adalah fungsi tanpa nama yang mengambil argumen integer, misalnya
Tangkapan layar menggunakan versi yang lebih lama, tetapi hasilnya terlihat sama.
Mathematica sebenarnya memiliki built-in
GoldenAngle
untuk hasil yang lebih akurat, tetapi itu lebih lama dari itu2.39996
.sumber
GoldenAngle
! Apakah ini fungsi baru di Mathematica 10.2?MATLAB, 42 byte
Mendapat nomor input, membuat rentang dari 1 hingga angka itu.
Mengalikan rentang dengan sudut emas dalam radian (nilai yang digunakan lebih dekat dengan nilai sebenarnya dari 137,508 derajat menjadi 6 dtk).
Maka cukup plot plot theta vs r pada grafik koordinat kutub menggunakan titik. Di sini ditunjukkan dengan 2000 poin
Grafik yang tampak lebih cantik (tanpa garis kisi) adalah kode ini:
Padahal itu dengan mengorbankan 31 byte. Lagi di sini ditunjukkan dengan 2000 poin
sumber
polar
solusinya, saya belum pernah menggunakan yang sebelumnya. Saya pikir Anda dapat menyimpan dua byte dengan menggunakant.^.5
instadsqrt(t)
!R,
585554 byteIni membutuhkan
plotrix
paket untuk diinstal, tetapi paket tidak harus diimpor karena kami mereferensikan namespace secara eksplisit.Tidak Disatukan:
Contoh output untuk n = 1500:
Disimpan 3 byte berkat plannapus!
sumber
R,
5554 byteIni adalah hasil untuk n = 1000:
Sunting: Disimpan 1 byte menggunakan pencocokan sebagian argumen (
as
bukanasp
) berkat @AlexA.!sumber
R,
4847 byteSaya pikir ini cukup berbeda dari solusi R lainnya sejauh ini. Yang ini menggunakan vektor kompleks untuk membangun koordinat. sqrt dari t dan t dimasukkan ke dalam parameter modulus dan argumen dan x, y mengambil dari yang nyata dan imajiner. Terima kasih kepada @AlexA. untuk byte.
sumber
as
dapat digunakan sebagai penggantiasp
.Html + JavaScript 179
sumber
Jolf, 25 byte
(output untuk n = 5000)
Cobalah online. (perhatikan bahwa spiral yang dihasilkan kecil)
Non-bersaing sejak Jolf diciptakan setelah tantangan ini. Ini adalah 25 byte ketika dikodekan dengan ISO-8859-7, dan mengandung satu yang tidak patut dicetak (ini hexdump):
Penjelasan
sumber
Python 2, 74 byte
sumber
MATL , 20 byte (tidak bersaing)
Ditandai sebagai tidak bersaing karena bahasa memposting tantangan
Cobalah di MATL Online!
Sudut emas,
137.708
deg =pi*(3-sqrt(5))
rad =2.39996...
rad diperkirakan sebagai2.4
rad.Versi berikut ( 25 byte ) menggunakan nilai yang tepat, hingga
double
presisi floating-point:Cobalah di MATL Online!
sumber
Tcl / Tk, 114
Contoh penggunaan:
dan menampilkan jendela
sumber