Biorąc pod uwagę liczbę wierzchołków n ≥ 3
i „rozmiar kroku” 1 ≤ m < n/2
(wskazujący odległość między dwoma połączonymi wierzchołkami), należy przedstawić graficzną reprezentację odpowiedniego regularnego poligamu . Jeśli polygram składa się z wielu zamkniętych pętli, każda pętla musi być renderowana w innym kolorze linii. (Jeśli brzmi to myląco, poniższe przykłady powinny mieć wyjaśnienie).
Zasady
Każde rozsądne rozwiązanie problemu prawdopodobnie automatycznie spełni te reguły - są one po to, aby wprowadzić pewne ograniczenia parametrów wyjściowych, aby zapobiec odpowiedziom typu „Ten czarny blok jest całkowicie poligamem, ale nie można go zobaczyć, ponieważ Ustawiłem szerokość linii na ponad 9000. ”
- Możesz renderować polygram do pliku (który może być zapisany na płycie lub do standardowego strumienia wyjściowego) lub wyświetlić go na ekranie.
- Możesz użyć grafiki wektorowej lub rastrowej. Jeśli wydruk jest zrasteryzowany, obraz musi mieć wymiary 400 x 400 pikseli lub więcej, a promień poligamu (odległość od środka do każdego wierzchołka) musi wynosić od 35% do 50% długości boku.
- Format obrazu poligamu musi wynosić 1 (aby jego wierzchołki leżały na odpowiednim kole) - płótno obrazu może być prostokątne.
- Linie poligamu nie mogą być grubsze niż 5% promienia (i oczywiście muszą mieć niezerową grubość, aby były widoczne).
- Oprócz poligamu możesz renderować osie lub ramę, ale nic więcej.
- Możesz wybrać dowolny (jednolity) kolor tła.
- W przypadku poligamów składających się z wielu zamkniętych pętli musisz obsługiwać co najmniej 6 wizualnie różnych kolorów, z których wszystkie muszą różnić się od tła. (Skala szarości jest w porządku, pod warunkiem, że odcienie są wystarczająco rozłożone w widmie.) Twój kod musi nadal działać dla więcej niż 6 pętli, ale kolory nie muszą być rozróżnialne dla żadnych dodatkowych pętli (tj. Możesz również użyć ponownie kolory z poprzednich pętli w tym punkcie).
To jest kod golfowy, więc wygrywa najkrótsza odpowiedź (w bajtach).
Przykłady
Oto wszystkie dane wyjściowe do n = 16
(gdzie kolumna odpowiada n
i wiersz do m
):
Kliknij, aby zobaczyć większą wersję.
Jako przykłady większych n
, oto (n, m) = (29, 11)
i (30, 12)
:
źródło
Odpowiedzi:
MATLAB,
8581Funkcja wyświetla wykres na ekranie.
Wynik dla n = 30, m = 12:
źródło
hold all
prowadzi do następnego wykresu narysowanego na pierwszym ... Nie wiem, czy mamy konsensus co do możliwości ponownego użycia funkcji szczery.hold on
zapisanie bajtu; jeśli dodasz cztery bajty, stanie się ono wielokrotnego użytku (clf\n
)hold
.hold all
naclf\nhold on
czy to rozwiązuje problem?CJam, 114
Wysyła obraz w formacie ASCII PGM.
Możesz wypróbować online , ale wynik jest dość długi. Możesz zmienić
400
i199
na mniejsze liczby, aby zmniejszyć rozmiar obrazu.CJam nie ma pojęcia o obrazach, rysunkach, liniach ani kształtach, więc wygenerowałem obraz w macierzy kwadratowej, piksel po pikselu (jedna liczba reprezentuje szary odcień dla każdego piksela).
Tak wygląda wynik
30 12
:źródło
Mathematica, 70 bajtów
Cóż ... to jest moja referencyjna implementacja, która jak dotąd pokonuje oba zgłoszenia. Nie zamierzam wygrywać własnego wyzwania, więc mam nadzieję, że ktoś to pokona.
Dane wyjściowe są jak wykresy w samym wyzwaniu, tyle że nie usuwam tutaj osi:
źródło