Tantangan ini terinspirasi oleh diagram animasi yang fantastis ini (terima kasih kepada flawr karena mempostingnya di obrolan).
Diberikan input n
, gambar semua faktor utamanya sebagai poligon titik bersarang, sebagaimana ditentukan.
Misalnya, mengingat nomornya 357 = 17x7x3
, Anda mengatur 3 titik dalam segitiga, 7 versi segitiga itu dalam heptagon, dan 17 versi heptagon tersebut dalam 17-gon. Singkatnya, poligon bersarang pergi dari faktor prima terbesar di luar ke terkecil di dalam. Sebab 357
, jawaban Anda akan terlihat sedikit seperti ini (dengan atau tanpa warna):
Setiap poligon dari setiap prime >= 3
tidak boleh diputar di sekitar diagram.
Satu-satunya pengecualian adalah yang utama 2
, khusus untuk kekuatan aneh 2
. Seperti yang Anda lihat pada contoh di 376 = 47x2x2x2
bawah ini, 8
s berputar dan bukan satu baris 2
s, tetapi adalah tumpukan vertikal untuk 4
s di dalam kotak. Bahkan kekuatan 2
, diatur dalam kotak, tidak perlu diputar dengan cara ini.
Bahkan, 448 = 7x2x2x2x2x2x2
memiliki diagram yang terlihat seperti heptagon 64
s, dan 64
disusun menjadi kuadrat kuadrat kuadrat, tetapi tanpa rotasi.
Dua contoh lagi adalah 440 = 11x5x2x2x2
dan 432 = 3x3x3x2x2x2x2
. Kita melihat bahwa 440
dengan kekuatan aneh 2, telah diputar 8
s, tetapi 432
dengan kekuatan genap 2
tidak memutar 16
s.
Dan akhirnya, ini adalah contoh minimal 10 = 5x2
, tanpa warna yang saya tiru dengan Python dan turtle
modulnya.
Tantangan
- Diberikan input di
n
mana1 <= n <= 10000
, menampilkan gambar poligon faktor bersarangnya. - Peraturan adalah:
- Gambar terdiri dari titik-titik yang tersarang dari poligon, dari poligon dengan sisi (faktor prima terbesar) di luar hingga faktor prima terkecil di bagian dalam.
- Untuk faktor 2, kekuatan 2 harus ditumpuk sebagai garis, lalu kotak, lalu garis kotak, dan sebagainya. Bahkan kekuatan 2 tidak boleh diputar. Kekuatan ganjil 2 harus diputar di sekitar poligon masing-masing, dan mereka harus ditumpuk secara vertikal sebelum rotasi.
- Anda dapat mengorientasikan gambar sesuka Anda (meskipun saya lebih suka ke atas), tetapi setiap poligon bersarang harus menghadap ke arah yang sama seperti poligon lain dengan satu-satunya pengecualian kekuatan ganjil 2.
- Anda memiliki dua opsi untuk ukuran gambar dan ukuran titik:
- Ukuran gambar statis dan ukuran titik berkurang seiring
n
meningkatnya (seperti dalam animasi). - Ukuran titik statis dan ukuran gambar bertambah seiring
n
bertambahnya.
- Ukuran gambar statis dan ukuran titik berkurang seiring
- Pertama tiga lapisan poligon harus dibedakan dari tetangga poligon (yaitu tidak menyentuh), tapi mengingat ukuran gambar pada dan sekitar
n=10000
, tidak apa-apa jika lapisan setelah mulai sentuh. Saya lebih suka jika mereka tidak melakukannya, tetapi mungkin tidak dapat dihindari untuk memuat gambar yang dapat diunggah ke Stack Exchange. - Warna adalah opsional.
- Bentuk titik-titik itu terserah Anda. Jika kotak lebih baik untuk bahasa Anda, gunakan itu.
- Tidak ada bonus, tapi saya ingin melihat seseorang menghidupkan dan mewarnai diagram seperti di pos asli.
Terima kasih kepada Conor O'Brien, EasterlyIrk, Martin Ender, Kritixi Lithos, Mego, DJ McMayhem, dan El'endia Starman atas bantuan mereka dalam menulis pertanyaan ini.
Golf kode ini, jadi kode terpendek menang. Semoga berhasil dan bermain golf dengan baik!
sumber
n = n //= i
seharusnyan//= i
?n = n // i
. Saya akan memperbaikinya dan menambahkan penjelasan sementara saya melakukannya.