Mengingat jumlah simpul n ≥ 3
dan "ukuran langkah" 1 ≤ m < n/2
(menunjukkan jarak antara dua simpul yang terhubung), output representasi grafis dari poligon reguler yang sesuai . Jika polygram terdiri dari beberapa loop tertutup, setiap loop harus dirender dalam warna garis yang berbeda. (Jika ini kedengarannya membingungkan, contoh-contoh di bawah ini semoga dapat menjelaskan semuanya.)
Aturan
Setiap solusi yang masuk akal untuk masalah ini kemungkinan akan memenuhi aturan-aturan ini secara otomatis - mereka hanya ada di sana untuk meletakkan beberapa batasan pada parameter output untuk mencegah jawaban seperti "Blok hitam ini benar-benar sebuah polygram, tetapi Anda tidak dapat melihatnya karena Saya mengatur lebar garis menjadi lebih dari 9000. "
- Anda dapat membuat polygram ke file (yang dapat ditulis ke disk atau ke aliran output standar) atau menampilkannya di layar.
- Anda dapat menggunakan grafik vektor atau raster. Jika output Anda dirasterisasi, gambar Anda harus memiliki dimensi 400x400 piksel atau lebih, dan jari - jari polygram (jarak dari pusat ke setiap titik) harus antara 35% dan 50% dari panjang sisi.
- Rasio aspek dari polygram harus 1 (sehingga simpulnya terletak pada lingkaran yang tepat) - kanvas gambar mungkin persegi panjang.
- Garis-garis polygram harus tidak lebih tebal dari 5% dari jari-jari (dan tentu saja, mereka harus memiliki ketebalan non-nol agar dapat terlihat).
- Anda dapat membuat kapak atau bingkai sebagai tambahan dari polygram, tetapi tidak ada yang lain.
- Anda dapat memilih warna latar belakang (solid).
- Untuk polygram yang terdiri dari beberapa loop tertutup, Anda harus mendukung setidaknya 6 warna yang berbeda secara visual , yang semuanya harus berbeda dari latar belakang. (Skala abu-abu baik-baik saja, asalkan warna cukup menyebar melalui spektrum.) Kode Anda masih harus bekerja selama lebih dari 6 loop, tetapi warna tidak harus dapat dibedakan untuk loop tambahan apa pun (yaitu Anda juga dapat menggunakan kembali warna dari loop sebelumnya pada saat itu).
Ini kode golf, jadi jawaban tersingkat (dalam byte) menang.
Contohnya
Berikut adalah semua output hingga n = 16
(di mana kolom sesuai dengan n
dan baris ke m
):
Klik untuk versi yang lebih besar.
Sebagai contoh untuk yang lebih besar n
, berikut adalah (n, m) = (29, 11)
dan (30, 12)
:
sumber
Jawaban:
MATLAB,
8581Fungsi ini menampilkan plot di layar.
Hasil untuk n = 30, m = 12:
sumber
hold all
mengarah ke plot berikutnya digambar di atas yang pertama ... Saya tidak tahu apakah kita memiliki konsensus tentang penggunaan kembali fungsi yang akan jujur.hold on
menyimpan byte juga; jika Anda menambahkan empat byte itu menjadi dapat digunakan kembali (clf\n
)hold
.hold all
keclf\nhold on
apakah itu memperbaiki masalah?CJam, 114
Ini menghasilkan gambar dalam format ASCII PGM.
Anda dapat mencobanya secara online , tetapi hasilnya cukup panjang. Anda dapat mengubah
400
dan199
ke nomor yang lebih kecil untuk mengurangi ukuran gambar.CJam tidak memiliki konsep gambar, gambar, garis atau bentuk, jadi saya membuat gambar dalam matriks persegi, piksel demi piksel (satu angka mewakili warna abu-abu untuk setiap piksel).
Seperti inilah hasilnya untuk
30 12
:sumber
Mathematica, 70 byte
Yah ... ini adalah implementasi referensi saya yang mengalahkan kedua kiriman sejauh ini. Saya tidak bermaksud memenangkan tantangan saya sendiri, jadi saya berharap seseorang akan mengalahkan ini.
Outputnya seperti plot dalam tantangan itu sendiri, kecuali saya tidak menghapus sumbu di sini:
sumber