Sztuka programowania
EDYCJA: Wiem, że nie powinniśmy edytować nowych wymagań po pierwszym wysłaniu, ale o ile rozumiem, ten wymóg jest domniemany we wszystkich pytaniach tutaj:
Wyjaśnij swoją odpowiedź! Przynajmniej trochę. Tak więc zwykły czytelnik ma szansę podążać za twoimi myślami i docenić twój geniusz.
Oto prosty, ale mam nadzieję, że fajny:
Czy potrafisz odtworzyć którykolwiek z poniższych wzorów?
Zasady:
Tylko arytmetyka liczb całkowitych
Ściśle lokalnie, tj. Tylko współrzędne x, y punktu mogą być użyte do obliczenia jego koloru
Brak tabel przeglądowych
Żadnego brutalnego wymuszania (dlatego tag „no-computers” jest tam na wypadek, gdybyś się zastanawiał), poza tym możesz używać komputerów według własnego uznania.
(5.) Im prostsze, tym lepsze
Uwagi:
Wszystkie wzory są okresowe i używają kolorów 0,1,2,3,4.
Nie musisz używać dokładnie tych samych kolorów, wystarczy pięć dowolnych kolorów.
Celowo nie umieściłem tekstowej wersji wzorców, ponieważ nie powinno się ich brutalnie forsować.
Wciąż jestem nowy w tworzeniu zagadek, wszelkie uwagi są mile widziane.
Jeden przykład z rozwiązaniem:
![]()
Możliwa odpowiedź $f(x,y) = \left [ \lfloor \frac x 3 \rfloor - \lceil \frac {y+2x+1} 6 \rceil - \lceil \frac {y+1} 6 \rceil \right ] \mod 5$
Odpowiedzi
Uważam, że pierwszy wzór to (z (0,0) w lewym górnym rogu)
$$\Biggl\{\left\lfloor\frac{2x+3y-2}8\right\rfloor+\left\lfloor\frac{-3x-2y+3}8\right\rfloor \Biggr\} \mathop{\textrm{mod}}5.$$
A ostatnia to (z (0,0) w lewym górnym rogu)
$$\Biggl\{x+y+m(x-y)-\left\lfloor\frac x4\right\rfloor\Biggl\}\mathop{\textrm{mod}}5$$
gdzie
$m(x)$ idzie $0, +1, 0, -1$ zależy od $x$ mod 4. Istnieje wiele sposobów definiowania bez użycia tabel przeglądowych $m$; na przykład$m(x)=(x \mathop{\textrm{mod}}2)\cdot(-1)^{\lfloor x/2\rfloor}$.
Pytanie zostało zaktualizowane i zawiera prośbę o „wyjaśnienie odpowiedzi”.
Nie mam wiele wyjaśnień dla pierwszego wzoru. ja tylko
pomyślałem, że powinienem spróbować rzeczy w formie $\lfloor\textrm{linear}(x,y)\rfloor+\lfloor\textrm{linear}(x,y)\rfloor\pmod5$, ze współczynnikami dwóch liniowych elementów dopasowujących się tak, aby nadać wzorowi właściwy rodzaj symetrii; okresowość wzoru sugerowała, że prawdopodobnie chciałem 8 lub 16 w mianownikach, trochę eksperymentów wykazało (co powinno być oczywiste od samego początku), że różnica między$x$ i $y$Współczynniki pokazują się w ilu „pasmach” jest od południowego zachodu do północnego wschodu, a wtedy było tylko kilka przypadków, w których trzeba było spróbować sprawdzić, czy dają one właściwy wzór. Po znalezieniu czegoś z odpowiednim wzorem, ale z przesunięciem w$x$ i $y$, Wymieniłem $x,y$ z $x-\delta,y-\epsilon$ gdzie $\delta,\epsilon$było offsetem, którego potrzebowałem, i uproszczonym. Gotowe.
O czwartym mogę powiedzieć trochę więcej.
Po pierwsze, bardzo oczywisty wzór pasm sugerował, że w moim „... mod 5” chciałem znaleźć termin $\lfloor x/4\rfloor$. Reszta musiała następnie dać ładny, prosty okresowy wzór „węża”. Węże biegną z południowego zachodu na północny wschód idąc w prawo, w prawo, w górę, w górę, w prawo, w prawo, w górę, w górę, w prawo, w prawo itd. Gdybyśmy tylko wzięli kontury$x+y$wtedy mielibyśmy proste ukośne linie, które w rzeczywistości są raczej podobne do tych węży; możemy zamienić ukośne linie w węże, dodając i odejmując jedynki w starannie dobranym zestawie miejsc. Jeśli dodasz 1 wzdłuż linii przekątnej z północnego zachodu na południowy wschód, w efekcie wszystkie kontury zostaną przesunięte o jedną jednostkę po przekątnej do wewnątrz; jeśli odejmiesz 1, skutecznie wypchniesz je o jedną jednostkę po przekątnej na zewnątrz. Wpatrując się nieco w wzór, widać, że potrzeba, aby połowa przekątnych NW-SE pozostała taka, jaka jest, a druga połowa naprzemiennie była wpychana i wypychana, co oznacza, że musimy dodać tę funkcję$m(x,y)$ przed redukcją mod 5.
(2 z 4)
$(0,0)$ jest na dole po lewej, a nie na górze po lewej.
2. wzór:
$f(x,y) = \left [ \left\lceil \frac {3x} 8 \right\rceil - \left\lfloor \frac {5x} 8 - \frac {y} 4 \right\rfloor \mod 5 - \left\lfloor -\frac {y} 8 \right\rfloor \mod 5 \right] \mod 5$
![]()
3. wzór:
$f(x,y) = \left [ \left\lceil \frac {3x+3} 7 \right\rceil - \left\lfloor \frac {6x-y} 7 \right\rfloor - 7 \right] \mod 5$
![]()