图片
Kürzlich habe ich ein digitales Kreuzrätsel namens „Logic Painting“ gespielt. Oberflächlich betrachtet zeichnet es lediglich ein Gitter auf der Grundlage von Zahlenreihen, verbirgt jedoch tatsächlich ein effizientes numerisches Einschränkungssystem. Als Hardcore-Strategiespieler habe ich die zugrunde liegende Logik direkt analysiert und herausgefunden, dass sich die Geschwindigkeit beim Lösen von Rätseln verdoppeln lässt, solange ich ein paar numerische Regeln beherrsche.
Lassen Sie uns zunächst über die numerische Kernstruktur sprechen: Die Zahlen in jeder Zeile und Spalte stellen die Länge des durchgehenden schwarzen Gitters dar und die Reihenfolge ist von links nach rechts oder von oben nach unten. Angenommen, die Gitterbreite beträgt N und die Zahlen in einer Zeile sind [a1, a2, ..., ak], dann beträgt die Gesamtzahl der von diesen Zahlen belegten Zellen a1+a2+...+ak, und zwischen den Zahlen ist mindestens 1 Leerzeichen erforderlich (insgesamt k-1), sodass die erforderliche Gesamtlänge = Summe + (k-1) ist. Ist dieser Wert größer als N, bedeutet dies, dass die aktuelle Zahlenkombination nicht ermittelt werden kann und direkt eliminiert wird. Im Gegenteil, wenn die Summe + (k-1) = N ist, kann zwischen den Zahlen nur genau 1 Leerzeichen liegen, und alle Gitter müssen bestimmt werden, was dem Zustand „vollständige Füllung“ entspricht.
Der erste Schritt der optimalen Strategie: Scannen Sie zuerst die Zeilen oder Spalten, deren Summe + (k-1) = N ist. Sie können alle entsprechenden Gitter direkt füllen und Leerintervalle festlegen. Dadurch können schnell mehrere identifizierte Zellen erstellt und Ankerpunkte für Querbegründungen bereitgestellt werden.
Der zweite Schritt besteht darin, die „Überlappungsmethode“ zu verwenden. Wenn der Wert einer bestimmten Zahl groß ist, beispielsweise die Zeilenlänge 10 und die Zahl [7] beträgt, sind die möglichen Startpositionen von 7 aufeinanderfolgenden Gittern 1 bis 4 (da das Ende 10 nicht überschreiten darf). Unter diesen 7 Gittern werden die Positionen 4 bis 7 (d. h. das Ende von Startposition 1 und der Anfang von Startposition 4 überlappen) unabhängig davon gezeichnet – die Berechnungsmethode lautet: Startpositionsbereich = [1, N – a + 1], Überlappungsintervall = [max(1, Startminimum + a – 1), min(N, Startmaximum + a – 1)]. Das Wesentliche besteht darin, einen Bereich zu zeichnen und den Schnittpunkt zu finden. Das Zeichnen eines solchen Rasters, das zuerst gemalt werden muss, ist gleichbedeutend mit dem Festlegen der wichtigsten Hinweise.
Der dritte Schritt ist die numerische Subtraktion. Sobald eine Zeile oder Spalte teilweise bestimmt ist, kann die Anzahl der verbleibenden ungelösten Zellen aktualisiert und der Kombinationsraum der verbleibenden Zahlen neu berechnet werden. Wenn eine Zeile beispielsweise bereits eine geschwärzte Zeile hat und die Zahl [2,1] ist, muss der verbleibende Platz neu zugewiesen werden und die verbleibenden geschwärzten Positionen können direkt abgeleitet werden.
Nach tatsächlichen Tests kann nach diesem numerischen Berechnungsverfahren die durchschnittliche Lösungsgeschwindigkeit eines 20x20-Rätsels um mehr als 40 % verkürzt werden, was besonders für Level mit dichten „Zahlenstapeln“ geeignet ist. Übrigens ist die Pixelkunst, die durch die versteckten Bilder im Spiel erzeugt wird, sehr exquisit. Ich habe sogar die gezeichneten Bilder abgeschnitten und als Avatare verwendet, was ein unerwarteter Bonus war 😂