Najwyraźniej tak! W trzech łatwych krokach.
Krok 1
Niech f ( n ) oznacza funkcję zliczania liczb pierwszych (liczba liczb pierwszych mniejsza lub równa n ).
Zdefiniuj sekwencję całkowitą s ( n ) w następujący sposób. Dla każdej dodatniej liczby całkowitej N ,
- Zainicjuj t do n .
- Dopóki t nie jest ani liczbą pierwszą ani 1, zamień t na f ( t ) i iteruj.
- Liczba iteracji to s ( n ).
Proces iteracyjny gwarantuje zakończenie, ponieważ f ( n ) < n dla wszystkich n .
Rozważmy na przykład n = 25. Inicjalizujemy t = 25. Ponieważ nie jest to liczba pierwsza ani 1, obliczamy f (25), które wynosi 9. To staje się nową wartością dla t . To nie jest liczba pierwsza ani 1, więc kontynuujemy: f (9) wynosi 4. Kontynuujemy ponownie: f (4) wynosi 2. Ponieważ jest to liczba pierwsza, zatrzymujemy się tutaj. Zrobiliśmy 3 iteracje (od 25 do 9, następnie do 4, a następnie do 2). Zatem s (25) wynosi 3.
Pierwsze 40 elementów sekwencji są następujące. Sekwencja nie znajduje się w 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
Krok 2
Biorąc pod uwagę nieparzystą dodatnią liczbę całkowitą N , zbuduj tablicę N × N (macierz), nawijając skończoną sekwencję s (1), s (2), ..., s ( N 2 ), aby utworzyć kwadratową spiralę na zewnątrz . Na przykład, biorąc pod uwagę N = 5, spirala jest
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)
lub zastępując wartości,
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
Krok 3
Przedstaw tablicę N × N jako obraz za pomocą szarej mapy kolorów lub innej mapy kolorów według własnego gustu. Mapa powinna być stopniowa, aby kolejność liczb odpowiadała wizualnie oczywistej kolejności kolorów. Poniższe przypadki testowe pokazują przykładowe mapy kolorów.
Wyzwanie
Biorąc pod uwagę nieparzystą dodatnią liczbę całkowitą N , wykonaj zdjęcie opisane powyżej.
Zasady
Spirala musi być skierowana na zewnątrz, ale może być zgodna z ruchem wskazówek zegara lub przeciwna do ruchu wskazówek zegara i może zacząć przesuwać się w prawo (jak w powyższym przykładzie), w lewo, w dół lub w górę.
Skale osi poziomej i pionowej nie muszą być takie same. Również etykiety osi, pasek kolorów i podobne elementy są opcjonalne. Dopóki spirala jest wyraźnie widoczna, obraz jest prawidłowy.
Obrazy można wyprowadzać dowolnym standardowym sposobem . W szczególności obraz może być wyświetlany na ekranie lub może zostać utworzony plik graficzny lub może zostać wyprowadzony szereg wartości RGB. Jeśli wyprowadzasz plik lub tablicę, zamieść przykład tego, jak to wygląda po wyświetleniu.
Środki wprowadzania i format są jak zwykle elastyczne . Program lub funkcja może być zapewnione . Standardowe luki są zabronione .
Najkrótszy kod w bajtach wygrywa.
Przypadki testowe
Poniższe zdjęcia (kliknij w pełnej rozdzielczości) odpowiadają kilku wartości N . Zastosowano spiralę, zgodnie z ruchem wskazówek zegara, pierwszą w prawo, jak w powyższym przykładzie. Obrazy ilustrują również kilka prawidłowych map kolorów.
imshow
robi Matlab (i prawdopodobnie Matplotlib)
imshow
robi.
s(n)
może być wprowadzona do jakiejś funkcji / pakietu kreślącego bez modyfikacji (myślę, żeimshow
w matplotlib mógłby to na przykład poradzić), czy jest to akceptowalna forma wyjściowa?