To wyzwanie jest inspirowane fantastycznym animowanym diagramem (dzięki flawr za opublikowanie go na czacie).
Biorąc pod uwagę dane wejściowe n
, narysuj wszystkie jego czynniki pierwsze jako zagnieżdżone wielokąty kropek, jak określono.
Na przykład, biorąc pod uwagę liczbę 357 = 17x7x3
, układasz 3 kropki w trójkącie, 7 wersji tych trójkątów w heptagonie i 17 wersji tych heptagonów w 17-gon. Krótko mówiąc, zagnieżdżone wielokąty przechodzą od największego czynnika pierwotnego na zewnątrz do najmniejszego w środku. Dla 357
Twoja odpowiedź powinna wyglądać trochę tak (z lub bez koloru):
Każdy wielokąt każdej liczby pierwszej >= 3
nie powinien być obracany wokół diagramu.
Jedynym wyjątkiem jest liczba pierwsza 2
, szczególnie dla nieparzystych mocy 2
. Jak widać na poniższym przykładzie 376 = 47x2x2x2
, 8
s obracają się i nie są pojedynczymi liniami 2
s, ale pionowymi stosami dla 4
s w kwadracie. Nawet moce 2
ułożone w kwadraty nie muszą być obracane w ten sposób.
W rzeczywistości 448 = 7x2x2x2x2x2x2
ma schemat, który wygląda jak heptagon 64
s, i 64
jest ułożony w kwadrat kwadratów kwadratów, ale bez obrotu.
Dwa kolejne przykłady to 440 = 11x5x2x2x2
i 432 = 3x3x3x2x2x2x2
. Widzimy, że 440
przy nieparzystej sile 2 obrócił 8
s, ale 432
przy parzystej sile 2
nie obraca 16
s.
I na koniec, oto minimalny przykład, 10 = 5x2
bez koloru, który wyśmiewałem za pomocą Pythona i jego turtle
modułu.
Wyzwanie
- Biorąc pod uwagę wejście, w
n
którym1 <= n <= 10000
wyprowadza obraz jego zagnieżdżonych wielokątów czynnikowych. - Zasady są następujące:
- Obraz składa się z zagnieżdżonych wielokątów kropek, od wielokąta o bokach (największy czynnik pierwotny) na zewnątrz do najmniejszego czynnika pierwotnego wewnątrz.
- Dla współczynnika 2 potęgi 2 powinny się kumulować jako linia, następnie kwadraty, następnie linia kwadratów i tak dalej. Nawet potęgi 2 nie należy obracać. Dziwne moce 2 powinny być obracane wokół ich odpowiednich wielokątów i powinny być ułożone pionowo przed obrotem.
- Możesz ustawić obraz w dowolny sposób (chociaż wolę w górę), ale każdy zagnieżdżony wielokąt powinien być skierowany w tym samym kierunku, co każdy inny wielokąt, z wyjątkiem nieparzystych potęg 2.
- Masz dwie opcje rozmiaru obrazu i rozmiaru kropki:
- Rozmiar obrazu jest statyczny, a rozmiar kropki zmniejsza się wraz ze
n
wzrostem (jak w animacji). - Rozmiar kropki jest statyczny, a rozmiar obrazu rośnie wraz ze
n
wzrostem.
- Rozmiar obrazu jest statyczny, a rozmiar kropki zmniejsza się wraz ze
- Pierwsze trzy warstwy wielokątów powinny być odróżnialne od sąsiednich wielokątów (tj. Nie dotykają się), ale biorąc pod uwagę rozmiar obrazów w okolicach
n=10000
, dobrze jest, jeśli warstwy po dotknięciu zaczną się dotykać. Wolałbym, gdyby tak nie było, ale dopasowanie obrazu, który można załadować do Stack Exchange, może być nieuniknione. - Kolor jest opcjonalny.
- Kształt kropek zależy od ciebie. Jeśli kwadraty są lepsze dla twojego języka, użyj ich.
- Brak bonusów, ale chciałbym zobaczyć, jak ktoś animuje i pokoloruje diagramy jak w oryginalnym poście.
Podziękowania dla Conora O'Briena, EasterlyIrk, Martina Endera, Kritixi Lithos, Mego, DJ McMayhem i El'endii Starman za pomoc w napisaniu tego pytania.
Ten kod golfowy, więc najkrótszy kod wygrywa. Powodzenia i dobrej gry w golfa!
źródło
n = n //= i
miało byćn//= i
?n = n // i
. Zajmę się tym i dodam wyjaśnienie, gdy będę przy nim.