Pertama-tama ... Saya ingin mengucapkan Selamat Hari Natal kepada semua orang (maaf jika saya terlambat satu hari untuk zona waktu Anda).
Untuk merayakannya, kita akan menggambar kepingan salju. Karena tahun adalah 201 5 dan Natal pada tanggal 2 5 (untuk sebagian besar orang), kita akan menggambar serpihan Penta . Pentaflake adalah fraktal sederhana yang terdiri dari segilima. Berikut adalah beberapa contoh (diambil dari sini) :
Setiap Pentaflake memiliki pesanan n. Pentaflake orde 0 hanyalah sebuah pentagon. Untuk semua pesanan lain dan n, Pentaflake terdiri dari 5 Pentaflakes dari pesanan sebelumnya yang disusun sekitar Pentaflake ke-6 dari pesanan sebelumnya. Misalnya, Pentaflake pesanan 1 terdiri dari 5 pentagon yang disusun mengelilingi pentagon pusat.
Memasukkan
Pesanan n
. Ini dapat diberikan dengan cara apa pun kecuali variabel yang sudah ditentukan sebelumnya.
Keluaran
Gambar ordo n
Pentaflake. Harus memiliki lebar minimal 100px dan panjang 100px. Ini dapat disimpan ke file, ditampilkan kepada pengguna, atau di-output ke STDOUT
. Bentuk output lain apa pun tidak diizinkan. Semua format gambar yang ada sebelum tantangan ini diizinkan.
Kemenangan
Sebagai codegolf, orang dengan jumlah byte terkecil menang.
sumber
n
tidak dapat ditentukan sebelumnya dalam file skrip Anda. Anda dapat membacan
dariSTDIN
, meminta dari pengguna, menganggapnya sebagai argumen fungsi / garis komad ... pada dasarnya apa pun yang Anda inginkan kecuali untuk langsung menyematkannya dalam kode Anda.Jawaban:
Matlab, 226
Tidak Disatukan:
Iterasi kelima (sudah cukup lama untuk membuat).
Sedikit perubahan kode (sayangnya lebih banyak byte) menghasilkan keindahan ini =)
Oh, dan satu lagi:
sumber
Mathematica, 200 byte
Baris terakhir adalah fungsi yang dapat diterapkan ke integer
n
.Nama fungsi Mathematica panjang. Seseorang harus mem-encode mereka dan membuat bahasa baru darinya. :)
Ketika diterapkan ke
1
:Ketika diterapkan ke
2
:sumber
MATLAB,
235233217 bytePembaruan: banyak saran dari @ flawr membantu saya kehilangan 16 byte. Karena hanya ini yang memungkinkan saya untuk mengalahkan solusi flawr , dan bahwa saya tidak akan menemukan tantangan tanpa bantuan flawr sejak awal, anggap ini pengajuan bersama oleh kami :)
Ini adalah solusi MATLAB lain, ini didasarkan pada filosofi sistem fungsi yang diulang. Saya sebagian besar tertarik untuk mengembangkan algoritma itu sendiri, dan saya belum terlalu banyak bermain golf pada solusinya. Pasti ada ruang untuk perbaikan. (Saya merenungkan menggunakan pendekatan fixed-point hard-coded untuk
c
, tapi itu tidak akan baik.)Versi tidak disatukan:
Hasil untuk
N=5
(denganaxis equal off
lanjutan untuk kecantikan, tapi saya harap itu tidak masuk hitungan byte-bijaksana):sumber
R=[p(:,2),[-p(2,2);p(1,2)]];
(dan menghilangkan sebelumnyaR,C,S
) dan Anda dapat menggunakanq=[q R^l*[c-1+t(1,:);t(2,:)]/c]
dan saya pikirc=1.5+5^.5/2;
q
, saya bahkan punya sepasang tanda kurung yang tidak perlu di sana ... 3. terima kasih, tapi sihir apa ini ??: D 4. karena solusinya sekarang lebih pendek dari aslinya, saya menganggap ini juga sebagian kiriman Anda.Mathematica, 124 byte
Mathematica mendukung sintaks baru
Table
sejak versi 10Table[expr, n]
:, yang menyimpan byte lain.Table[expr, n]
setara denganTable[expr, {n}]
.Inti dari fungsi ini adalah menggunakan bilangan kompleks untuk melakukan tranformasi dan kemudian mengubahnya menjadi poin
ReIm
.Kasus cobaan:
sumber
π
membutuhkan dua byte dalam UTF-8, jadi Anda menghasilkan total 125 byte.Mathematica,
199196 byteMengatasi jawaban Peter Richter dengan sehelai rambut, inilah salah satu dari saya. Ini banyak bersandar pada fungsi grafis, dan lebih sedikit pada matematika dan FP. Built-in CirclePoints adalah baru dalam 10.1 .
Sunting: Terima kasih kepada DumpsterDoofus untuk GoldenRatio
sumber
((1+Sqrt@5)/2)
denganGoldenRatio
. Juga di baris kedua saya pikir itu seharusnyap@0=Polygon@c[{1,0},5];
bukanp@0=Polygon@cp[{1,0},5];
. (BTW saya sebenarnya Peter, saya punya dua profil lol).Mathematica, 130 byte
Saya menggunakan teknik yang mirip dengan jawaban njpipeorgan (sebenarnya saya mencuri
2Pi I/5 == Pi.4I
triknya), tetapi diimplementasikan sebagai fungsi rekursif.Contoh penggunaan (gunakan
%
untuk mengakses fungsi anonim yang dihasilkan pada baris terakhir):sumber