Biz yaşadım birkaç ait zorlukları Ulam spiral hakkında. Ama bu yeterli değil.
Bu mücadelede üçgen Ulam spirali (normal kare Ulam spirali yerine) çizeceğiz. İşte spiralin neye benzediğinin bir taslağı.
Bildiğimiz gibi, Ulam sarmal tüm doğal sayıları dışa sarmalda düzenler ve yalnızca asal olanları işaretler. Dolayısıyla yukarıdaki çizimde sadece siyah görünen sayılar (primerler) gösterilecektir.
Meydan okuma
Giriş olarak N sayısını kabul edin ve bu sayıya kadar üçgen Ulam spiralini görüntüleyin.
- Giriş, stdin veya fonksiyon argümanı olabilir.
- Spiral, yukarıdaki şekilde olduğu gibi pozitif yönde (yani saatin tersi yönünde) dönmelidir.
- Yukarıdaki şeklin 120 derecelik dönüşlerinden herhangi biri geçerli olacaktır ve dönüş farklı girişler için farklı olabilir. Ancak, zımni üçgenlerin en alçak tarafı, izin verilen dönüşlerin (katların 120 derece) olduğu gibi yatay olmalıdır.
- Kod , varsayılan veri türünüzle yaptığınız herhangi bir ara hesaplamada izin verilene kadar herhangi bir N için teorik olarak (yeterli zaman ve hafıza verilir) çalışmalıdır .
double
yeterlidir; Büyük tamsayı türleri için gerek yok. - Tüm yerleşik işlevlere izin verilir.
- Kendi cevabımı kabul etmeyeceğim (bunun en kısa olacağını düşünüyorum sanmıyorum ...).
Çıkış biçimleri
Aşağıdakilerden herhangi birini seçin.
Asal sayılarda bir işaretleyici (nokta, daire, çapraz, ne istersen) ve asal olmayan sayılarda hiçbir şey içermeyen bir grafik görüntüleyin . Ölçek iki eksen için aynı olması gerekmez. Yani, zımni üçgenlerin eşkenar olması gerekmez. Eksenler, ızgara çizgileri ve eksen etiketleri isteğe bağlıdır. Yalnızca asal sayılardaki işaretçiler gereklidir.
N = 12 için örnek bir çıktı aşağıdaki gibi olacaktır (yukarıdaki çizim ile karşılaştırınız). İkinci çizim, N = 10000'e karşılık gelen daha ilginç bir örnektir .
- İyi bilinen herhangi bir görüntü biçiminde (png, tiff, bmp gibi), yukarıdakilerle bir görüntü dosyası oluşturun.
Spiralleri ASCII resmi olarak gösterin , asal sayılar için seçtiğiniz tek bir karakter ve asal olmayanlar için boş alan kullanın, aynı satırdaki sayı konumlarını ayırmak için boş bir alan kullanın. Öncü veya sondaki boşluklara veya yeni satırlara izin verilir. Örneğin, N = 12
o
karakter olarak kullanılan durumo · · · o · o · · · o · o
Tabii ki sadece
o
asallardaki işaret gerçekte görüntülenecektir.·
Olmayan asal de yalnızca başvuru amacıyla gösterilmiştir.
Kazanma kriteri
Asıl ödül, kendin için bu muhteşem kalıpları görmektir. Kod golf, en kısa kod kazanır.