Anscheinend ja! In drei einfachen Schritten.
Schritt 1
Sei f ( n ) die Primzahlfunktion (Anzahl der Primzahlen kleiner oder gleich n ).
Definieren der ganzzahlige Sequenz s ( n ) wie folgt. Für jede positive ganze Zahl n ,
- Initiiere t zu n .
- Solange t weder Primzahl noch 1 ist, ersetzen Sie t durch f ( t ) und iterieren Sie.
- Die Anzahl der Iterationen ist s ( n ).
Es ist garantiert, dass der iterative Prozess endet, da f ( n ) < n für alle n .
Betrachten Sie zum Beispiel n = 25. Wir initialisieren t = 25. Da dies weder eine Primzahl noch eine 1 ist, berechnen wir f (25), was 9 ist. Dies wird der neue Wert für t . Dies ist weder eine Primzahl noch eine 1, also fahren wir fort: f (9) ist 4. Wir fahren erneut fort: f (4) ist 2. Da dies eine Primzahl ist, hören wir hier auf. Wir haben 3 Iterationen durchgeführt (von 25 bis 9, dann bis 4, dann bis 2). Somit ist s (25) 3.
Die ersten 40 Terme der Sequenz lauten wie folgt. Die Sequenz ist nicht in OEIS.
0 0 0 1 0 1 0 2 2 2 0 1 0 2 2 2 0 1 0 3 3 3 0 3 3 3 3 3 0 3 0 1 1 1 1 1 0 2 2 2
Schritt 2
Gegeben eine ungerade positive ganze Zahl N , bauen eine N × N - Matrix (Matrix) durch die endliche Sequenz Wicklung s (1), s (2), ..., s ( N 2 ) ein Quadrat nach außen bilden Spirale . Zum Beispiel ist die Spirale bei N = 5
s(21) s(22) s(23) s(24) s(25)
s(20) s(7) s(8) s(9) s(10)
s(19) s(6) s(1) s(2) s(11)
s(18) s(5) s(4) s(3) s(12)
s(17) s(16) s(15) s(14) s(13)
oder durch Ersetzen der Werte
3 3 0 3 3
3 0 2 2 2
0 1 0 0 0
1 0 1 0 1
0 2 2 2 0
Schritt 3
Stellen Sie das N × N-Array als Bild mit einer grauen Farbkarte oder einer anderen Farbkarte nach Ihrem Geschmack dar. Die Karte sollte graduell sein, damit die Reihenfolge der Zahlen einer visuell offensichtlichen Reihenfolge der Farben entspricht. Die folgenden Testfälle zeigen einige Beispiele für Farbkarten.
Die Herausforderung
Erzeugen Sie bei einer ungeraden positiven ganzen Zahl N das oben beschriebene Bild.
Regeln
Die Spirale muss nach außen zeigen, kann jedoch im oder gegen den Uhrzeigersinn verlaufen und sich nach rechts (wie im obigen Beispiel), links, unten oder oben bewegen.
Die Maßstäbe der horizontalen und vertikalen Achse müssen nicht identisch sein. Auch Achsenbeschriftungen, Farbbalken und ähnliche Elemente sind optional. Solange die Spirale gut sichtbar ist, ist das Bild gültig.
Bilder können mit jedem der Standardmittel ausgegeben werden . Insbesondere kann das Bild auf dem Bildschirm angezeigt werden, oder es kann eine Grafikdatei erzeugt werden, oder es kann ein Array von RGB-Werten ausgegeben werden. Wenn Sie eine Datei oder ein Array ausgeben, veröffentlichen Sie bitte ein Beispiel dafür, wie es bei der Anzeige aussieht.
Eingabemittel und Format sind wie gewohnt flexibel . Ein Programm oder eine Funktion kann bereitgestellt werden . Standardlücken sind verboten .
Kürzester Code in Bytes gewinnt.
Testfälle
Die folgenden Bilder (Klicken für volle Auflösung) entsprechen mehrere Werte von N . Eine im Uhrzeigersinn nach rechts gerichtete erste Spirale wird wie im obigen Beispiel verwendet. Die Bilder veranschaulichen auch mehrere gültige Farbkarten.
imshow
tun
imshow
das so ist.
s(n)
/ ein Paketimshow
eingegeben werden kann, ohne dass dies geändert wird (ich denke, dass matplotlib dies zum Beispiel handhaben könnte), ist dies eine akzeptable Ausgabeform?