pengantar
Mirip dengan Urutan Fibonacci, Urutan Padovan ( OEIS A000931 ) adalah urutan angka yang dihasilkan dengan menambahkan istilah sebelumnya dalam urutan. Nilai awal didefinisikan sebagai:
P(0) = P(1) = P(2) = 1
Istilah 0, 1, dan 2 semuanya 1. Relasi perulangan dinyatakan di bawah ini:
P(n) = P(n - 2) + P(n - 3)
Dengan demikian, ia menghasilkan urutan berikut:
1, 1, 1, 2, 2, 3, 4, 5, 7, 9, 12, 16, 21, 28, 37, 49, 65, 86, 114, 151, 200, 265, 351, ...
Menggunakan angka-angka ini sebagai panjang sisi dari segitiga sama sisi menghasilkan spiral yang bagus ketika Anda menempatkan semuanya, seperti Fibonacci Spiral:
Gambar milik Wikipedia
Tugas
Tugas Anda adalah menulis program yang membuat ulang spiral ini dengan output grafis, dengan input yang sesuai dengan istilah mana.
Aturan
- Kiriman Anda harus dapat menangani setidaknya hingga jangka waktu 10 (9)
- Kiriman Anda harus berupa program atau fungsi lengkap yang mengambil input dan menampilkan hasil grafis (baik output gambar atau grafik, dll)
- Anda harus menunjukkan bukti output grafis Anda dalam kiriman Anda
- Rotasi output diperbolehkan, dalam kelipatan 60 derajat, dengan representasi yang sama
- Berlawanan arah jarum jam juga diperbolehkan
- Celah standar dilarang
Anda dapat berasumsi bahwa input akan> 0 dan format input yang benar akan diberikan.
Mencetak gol
Ini adalah kode-golf , jadi kode terpendek dalam byte menang. Selamat Tahun Baru semuanya!
sumber
Jawaban:
Mathematica,
119108 byteTerima kasih kepada Martin Ender karena telah menghemat 11 byte!
Fungsi tanpa nama mengambil argumen bilangan bulat positif (1-diindeks) dan mengembalikan output grafis. Contoh output untuk input
16
:Dikembangkan secara simultan dengan jawaban Matlab sempurna tetapi dengan banyak kesamaan dalam desain-bahkan termasuk definisi
I^(2/3)
untuk akar keenam persatuan! Versi yang lebih mudah dibaca:Baris 1 mendefinisikan urutan Padovan
±n = P(n)
. Baris 4 menciptakan susunan angka-angka kompleks bersarang, mendefinisikanz
sepanjang jalan; bagian terakhir±# z^(#+{2,4,1})&~Array~#
menghasilkan banyak tiga kali lipat, yang masing-masing sesuai dengan vektor yang perlu kita gambar untuk melengkapi segitiga yang sesuai (±#
kontrol panjang sementaraz^(#+{2,4,1})
kontrol arah). Baris 3 menghilangkan daftar yang bersarang dan kemudian menghitung jumlah total bilangan kompleks yang berjalan, untuk mengkonversi dari vektor ke koordinat murni; baris 2 kemudian mengonversi bilangan kompleks menjadi pasangan bilangan real, dan mengeluarkan garis poligon yang sesuai.sumber
Matlab,
202190 byteOutput untuk
N=19
(pengindeksan berbasis 1):Penjelasan
Ide dasarnya adalah bekerja dengan bilangan kompleks. Kemudian ujung-ujung segitiga selalu mengarah ke akar persatuan keenam.
sumber
PHP + SVG, 738 Bytes
Output untuk 16
sumber
$k%6==0
bisa$k%6<1
dan$k%6==5
bisa$k%6>4
.Python 3,
280, 262 byte18 byte disimpan berkat ovs
Golf:
Hal yang sama dengan beberapa komentar:
Tangkapan layar untuk
N=9
:sumber
dwitter 151
dapat diuji di http://dwitter.net (gunakan layar penuh)
Ide dasarnya adalah logo penyu, golf. mencuri fungsi P () dari atas!
Saya membayangkan lebih banyak yang bisa golf dengan rekursi tetapi ini tidak buruk.
sumber
LOGO, 119 byte
Untuk menggunakan, lakukan sesuatu seperti ini :
Output sampel (tidak dapat disematkan karena bukan HTTPS dan gagal diunggah ke imgur)
sumber