Dane wyjściowe to kształt obejmujący 1009 pikseli.
- Kształt musi mieć postać pojedynczej, zamkniętej, nieprzecinającej się pętli.
Dane wejściowe to dodatnia niezerowa liczba całkowita.
- Każde wejście musi dawać wyjście, które jest unikalne - to znaczy każde wyjście musi być unikalne od tych wygenerowanych przy użyciu niższego wejścia.
O zwycięstwie decyduje największy limit wejściowy:
- Limit wejściowy przesłanych danych jest uważany za 1 mniej niż najniższy wkład, który daje nieunikalny lub w inny sposób nieprawidłowy wynik.
- Na przykład, jeśli dla danych wejściowych 1, 2 lub 3, ale nie 4, generowane są prawidłowe i unikalne dane wyjściowe, limit wejściowy wynosi 3.
Kod źródłowy ma limit 1009 bajtów. Jeśli jest remis, wygrywa pozycja z najmniejszą liczbą bajtów.
Ograniczenia i wyjaśnienia:
- Maksymalny rozmiar kształtu to 109 na 109 pikseli. Rozmiar obejmuje linię użytą do narysowania kształtu.
- Linia ma stałą szerokość.
- Zamknięta przestrzeń musi być całkowicie zamknięta przez linię - nie można użyć granicy pliku obrazu.
- Zamknięte 1009 pikseli odnosi się tylko do zamkniętej przestrzeni. Nie zawiera linii.
- Dane wyjściowe to obraz.
- Nie ma żadnych dalszych ograniczeń graficznych - np. Dotyczących koloru, grubości linii itp.
- Wyjątkowość wyjścia odnosi się tylko do zamkniętej przestrzeni. Zmiany linii lub inne zmiany graficzne nie mają znaczenia, jeśli zamknięta przestrzeń nie jest unikalna.
- Tłumaczenie kształtu nie jest unikalne. Obroty, odbicia i wszelkie inne transformacje liczą się jako niepowtarzalne.
- Wyjście musi być odtwarzalne - to samo wejście zawsze daje takie samo wyjście
- Nie musi istnieć związek między wyjściami, kolejnymi lub innymi.
- Poza „limitem wejściowym” przedłożenia nie ma określonego wyniku.
- Żadne inne wprowadzanie lub pobieranie danych zewnętrznych jest niedozwolone.
- Linia musi być ciągła - tzn. Piksele muszą się dotykać (dotknięcie rogu się liczy).
- Piksel to najmniejsza jednostka „rysowania” używana w metodzie rysowania i niekoniecznie odpowiada pikselowi ekranowemu.
Przykłady:
Oto przykład prawidłowego kształtu:
Następujące kształty są nieprawidłowe:
EDYCJA: Dotykanie linii:
- Zamknięta przestrzeń musi być ciągła, co definiuje się jako dotykanie pikseli. Dotykanie narożników się liczy.
Linia nie może otaczać żadnej przestrzeni po swojej zewnętrznej stronie. Ten obraz opublikowany przez @Sparr ilustruje ten punkt - poprawny jest tylko pierwszy kształt w każdym rzędzie:
Zewnętrzne boki linii mogą się dotykać, ale nie w sposób, który zamyka przestrzeń.
- Linie dotykające nie mogą się nakładać - np. Dwie dotykające linie o grubości 1 piksela miałyby łączną grubość 2px, nigdy 1px.
Odpowiedzi:
Python + Pycairo, 2 100 kształtów
Zacznijmy od oczywistości.
Pobiera numer z wiersza poleceń i zapisuje
o.png
.źródło
Rotations [...] count as unique.
BBC Basic, wynik 10 ^ 288 (minus 1, jeśli zero nie jest liczone)
Pobierz interpretator ze strony http://sourceforge.net/projects/napoleonbrandy/ (nie mój zwykły podstawowy interpreter BBC, ten nie obsługuje wystarczająco długich łańcuchów.)
Aby zakodować wiele informacji, potrzebujesz dużo obwodu. To oznacza cienki kształt. Zaczynam od pionowego paska 49 pikseli po lewej stronie i dodaję do niego dziesięć macek po 96 pikseli. Każda macka może zakodować 96 bitów w podobny sposób jak w rozwiązaniu @ ell, w sumie 960 bitów.
Ponieważ BBC Basic nie obsługuje tak dużych liczb, liczba do 288 cyfr dziesiętnych jest wprowadzana jako ciąg, a każdy zestaw 3 cyfr dziesiętnych jest konwertowany na 10-bitową liczbę binarną. Każdy bit jest następnie używany do poruszania jedną macką w górę o jeden piksel, jeśli jest to
1
(ale nie, jeśli jest to0
). Program może obsłużyć do 288/3 = 96 takich zestawów 3 cyfrWydajność
Typowe wyjście dla liczby 288 cyfr. Zauważ, że 999 to 1111100111 w systemie binarnym. Możesz zobaczyć, jak zestawy 9 cyfr powodują falowanie macek.
Techniczne
A. Odpowiedź na punkt 3 Martina „czy kształt jest połączony, jeśli jego piksel dotyka tylko narożnika?” było „tak”, więc rozumiem, że moja odpowiedź jest zgodna. Niemniej jednak, jeśli naprzemiennie (na przykład) 999 i 000 w każdym rzędzie, wygląda na bardzo zajęty.
B. Jeśli widzimy to jako prostokąt z ukąszeniami wyciągniętymi z boku, widać, że pozwoliłem na trzy piksele między każdą parą sąsiednich macek, aby upewnić się, że czarna linia wokół zewnętrznej strony nigdy się nie dotyka. Nie ma w tym żadnej konkretnej zasady (mam nadzieję, że mój powód pytania jest jaśniejszy w świetle mojej odpowiedzi). Jeśli linia może dotykać się NA ZEWNĄTRZ kształtu, mogłabym przesunąć macki razem i użyć mniejszej liczby pikseli dla pionowy pasek (a więc sprawiają, że macki są nieco dłuższe). Jednak byłoby bardzo mylące ustalanie wzrokowo, czy piksel znajduje się wewnątrz czy na zewnątrz kształtu, więc myślę, że moja interpretacja, że zewnętrzna strona czarnej linii nigdy nie powinna się dotykać sam jest najlepszy.
C. BBC basic w tym trybie ekranu traktuje kwadrat 2x2 pikseli ekranu jako pojedynczy piksel. Zostawiłem to tak, jak jest, ponieważ pomaga zobaczyć, czy kształt nie jest zbyt mały. Każdy z tych podstawowych pikseli BBC jest traktowany jako pudełko jednostek logicznych 4x4. Od samego początku twórcy BBC basic mieli zdolność przewidywania, że któregoś dnia wzrosną rozdzielczości ekranu, więc sprawili, że rozdzielczość logiczna była wyższa niż rozdzielczość fizyczna.
źródło
Mathematica, 496 bajtów, Wynik: duża (> 1157)
Dolna granica, którą tam mam, jest absurdalnie niska, ale jeszcze nie znalazłem lepszego sposobu niż brutalna siła, by to sprawdzić.
Nie grałem jeszcze w golfa, ponieważ nie było takiej potrzeby. Zrobię to, gdy ktoś udowodni, że faktycznie się ze mną wiąże.
Algorytm zasadniczo wykonuje wypełnienie zalewowe z lewego górnego rogu obrazu 109x109 (przesunięty o jeden piksel, aby uwzględnić linię), a kiedy zalałem 1009 komórek, zatrzymuję się i zaznaczam ramkę. Powiedziałeś, że kolory zależą od nas, więc tło jest białe, linia jest czarna, a wnętrze jest szare (w razie potrzeby mogę usunąć szarość dla garści znaków).
Wypełnienie powodziowe jest dość ograniczone, ale to zapewnia, że nie muszę się martwić o dziury. Złagodzenie tych ograniczeń prawdopodobnie znacznie zwiększy mój (jeszcze nieznany) wynik.
Spróbuję teraz ustawić dolne granice na wynik.
źródło
Python 2, wynik> 10 ^ 395
Jest bardzo wolny i nie udało mi się uzyskać żadnego wyniku innego niż n = 0, ale jeśli chcesz go przetestować niżej
SIZE
(liczba pikseli) iBOUND
maksymalnej długości boku ograniczającego kwadratu i powinieneś być w stanie aby uzyskać mnóstwo wyników. Bardzo trudno było obliczyć, ile wyprodukuje; Jestem całkiem pewien, że dolna granica, którą podaję, jest dokładna, ale podejrzewam, że faktyczna liczba jest znacznie większa i mogę spróbować poprawić ją później.źródło
n=0
? A także czy możesz wyjaśnić, w jaki sposób osiągasz 10 ^ 395?