Kami sudah beberapa dari tantangan tentang spiral Ulam. Tapi itu tidak cukup.
Dalam tantangan ini kita akan memplot spiral Ulam segitiga (sebagai lawan dari spiral Ulam persegi). Berikut ini sketsa bentuk spiral itu.
Seperti kita ketahui, spiral Ulam mengatur semua bilangan alami dalam spiral luar, dan hanya menandai yang prima. Jadi dalam sketsa di atas hanya angka yang muncul dalam warna hitam (bilangan prima) yang akan ditampilkan.
Tantangan
Terima angka N sebagai input dan tampilkan spiral Ulam segitiga ke angka itu.
- Input dapat berupa stdin atau argumen fungsi.
- Spiral harus berputar ke arah positif (yaitu, berlawanan arah jarum jam), seperti pada gambar di atas.
- Setiap belokan 120 derajat pada gambar di atas akan valid, dan belokan mungkin berbeda untuk input yang berbeda. Tetapi sisi terendah dari segitiga tersirat harus horisontal, karena satu-satunya belokan yang diizinkan adalah (kelipatan) 120 derajat.
- Kode harus berjalan secara teoritis (diberikan waktu dan memori yang cukup) untuk setiap N hingga apa yang diizinkan oleh perhitungan perantara yang Anda lakukan dengan tipe data default Anda.
double
cukup; tidak perlu untuk tipe integer besar. - Semua fungsi bawaan diizinkan.
- Saya tidak akan menerima jawaban saya sendiri (bukan berarti saya pikir itu akan menjadi yang terpendek ...).
Format output
Pilih salah satu dari yang berikut ini.
Tampilkan grafik dengan marker (titik, lingkaran, silang, apa pun yang Anda inginkan) di bilangan prima, dan tidak ada pada bilangan non-prima. Skala tidak harus sama untuk kedua sumbu. Artinya, segitiga tersirat tidak harus sama sisi. Sumbu, garis kisi, dan label sumbu adalah opsional. Hanya penanda di nomor utama yang diperlukan.
Contoh output untuk N = 12 adalah sebagai berikut (bandingkan dengan sketsa di atas). Plot kedua adalah contoh yang lebih menarik, sesuai dengan N = 10.000.
- Menghasilkan file gambar dengan di atas, dalam format gambar apa pun yang dikenal (seperti png, tiff, bmp).
Tampilkan spiral sebagai seni ASCII , menggunakan satu karakter pilihan Anda untuk bilangan prima dan ruang kosong untuk non-bilangan prima, dengan ruang kosong untuk memisahkan posisi angka di baris yang sama. Ruang terdepan atau tertinggal atau baris baru diizinkan. Sebagai contoh, kasus N = 12 menggunakan
o
karaktero · · · o · o · · · o · o
di mana tentu saja hanya
o
tanda di bilangan prima yang benar-benar akan ditampilkan. Di·
non-prima ditampilkan di sini hanya untuk referensi.
Kriteria kemenangan
Hadiah yang sebenarnya adalah melihat sendiri pola-pola yang luar biasa itu Kode golf, kode menang paling pendek.