Die Kunst der Computerprogrammierung
BEARBEITEN: Ich weiß, dass wir nach dem ersten Posten keine neuen Anforderungen bearbeiten sollen, aber soweit ich das verstehe, ist diese Anforderung in allen Fragen hier enthalten:
Erklären Sie Ihre Antwort! Zumindest ein bisschen. Ein Gelegenheitsleser hat also die Möglichkeit, Ihren Überlegungen zu folgen und Ihr Genie zu schätzen.
Hier ist eine einfache, aber ich hoffe, es macht Spaß:
Können Sie eines der folgenden Muster neu erstellen?
Regeln:
Nur ganzzahlige Arithmetik
Streng lokal, dh nur die x, y-Koordinaten eines Punktes dürfen zur Berechnung seiner Farbe verwendet werden
Keine Nachschlagetabellen
Kein Brute-Forcing (deshalb gibt es das No-Computers-Tag, falls Sie sich fragen), außerdem können Sie Computer verwenden, wie Sie es für richtig halten.
(5.) Je einfacher desto besser
Anmerkungen:
Die Muster sind alle periodisch und verwenden die Farben 0,1,2,3,4.
Sie müssen nicht genau die gleichen Farben verwenden, fünf Farben reichen aus.
Ich habe absichtlich keine Textversion der Muster eingefügt, weil Sie sie nicht brutal erzwingen sollen.
Ich bin noch ziemlich neu im Erstellen von Rätseln. Jedes Feedback ist willkommen.
Ein Beispiel mit Lösung:
![]()
Mögliche Antwort $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$
Antworten
Ich glaube, das erste Muster ist (mit (0,0) oben links)
$$\Biggl\{\left\lfloor\frac{2x+3y-2}8\right\rfloor+\left\lfloor\frac{-3x-2y+3}8\right\rfloor \Biggr\} \mathop{\textrm{mod}}5.$$
Und der letzte ist (mit (0,0) oben links)
$$\Biggl\{x+y+m(x-y)-\left\lfloor\frac x4\right\rfloor\Biggl\}\mathop{\textrm{mod}}5$$
wo
$m(x)$ geht $0, +1, 0, -1$ es hängt davon ab $x$ mod 4. Es gibt viele nachschlagetabellenfreie Möglichkeiten zum Definieren $m$;; beispielsweise$m(x)=(x \mathop{\textrm{mod}}2)\cdot(-1)^{\lfloor x/2\rfloor}$.
Die Frage wurde aktualisiert und enthält nun eine Anfrage zur "Erläuterung Ihrer Antwort".
Ich habe nicht viel Erklärung für das erste Muster anzubieten. Ich habe gerade
dachte, ich sollte Dinge der Form ausprobieren $\lfloor\textrm{linear}(x,y)\rfloor+\lfloor\textrm{linear}(x,y)\rfloor\pmod5$wobei die Koeffizienten der beiden linearen Dinge übereinstimmen, um dem Muster die richtige Art von Symmetrie zu verleihen; Die Periodizität des Musters deutete darauf hin, dass ich wahrscheinlich 8 oder 16 im Nenner haben wollte. Ein bisschen Experimentieren zeigte (wie von Anfang an offensichtlich sein sollte), dass der Unterschied zwischen dem$x$ und $y$Koeffizienten zeigen sich in der Anzahl der "Banden" von Südwesten nach Nordosten, und dann gab es nur wenige Fälle, in denen versucht wurde, festzustellen, ob sie das richtige Muster ergaben. Nachdem Sie etwas mit dem richtigen Muster, aber einem Versatz in gefunden haben$x$ und $y$, Ich ersetzte $x,y$ mit $x-\delta,y-\epsilon$ wo $\delta,\epsilon$war der Offset, den ich produzieren musste, und vereinfacht. Erledigt.
Ich kann etwas mehr über den vierten sagen.
Zunächst deutete das sehr offensichtliche Streifenmuster darauf hin, dass ich in meinem "... mod 5" einen Begriff haben wollte $\lfloor x/4\rfloor$. Der Rest musste dann ein schönes einfaches periodisches "Schlangen" -Muster ergeben. Die Schlangen laufen von Südwesten nach Nordosten und gehen nach rechts, rechts, oben, oben, rechts, rechts, oben, oben, rechts, rechts usw. Wenn wir nur die Konturen von nehmen$x+y$dann hätten wir einfache diagonale Linien, die diesen Schlangen eigentlich ziemlich ähnlich sind; Wir können diagonale Linien in Schlangen verwandeln, indem wir an einer sorgfältig ausgewählten Menge von Stellen Einsen addieren und subtrahieren. Wenn Sie 1 entlang einer diagonalen Linie von Nordwesten nach Südosten addieren, drücken Sie effektiv alle Konturen eine Einheit diagonal nach innen. Wenn Sie 1 subtrahieren, drücken Sie sie effektiv eine Einheit diagonal nach außen. Wenn man ein wenig auf das Muster starrt, sieht man, dass die Hälfte der NW-SE-Diagonalen so bleibt, wie sie sind, und die andere Hälfte abwechselnd hineingeschoben und herausgedrückt wird, was bedeutet, dass wir diese Funktion hinzufügen müssen$m(x,y)$ vor dem Reduzieren von Mod 5.
(2 von 4)
$(0,0)$ ist unten links, nicht oben links.
2. Muster:
$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. Muster:
$f(x,y) = \left [ \left\lceil \frac {3x+3} 7 \right\rceil - \left\lfloor \frac {6x-y} 7 \right\rfloor - 7 \right] \mod 5$
![]()