Wie löst man dieses Rätsel ohne Versuch und Irrtum?

8

Ich bin in Ubuntu auf das Puzzle slant gestoßen. Ich möchte das Rätsel logisch lösen und nicht durch Versuch und Irrtum usw.

Die Regeln sind einfach:

  1. Wir müssen alle Felder mit der rechten oder linken Neigung füllen.
  2. Die Anzahl der Schrägen, die eine Zahl berühren, muss mit dieser Zahl übereinstimmen.
  3. In der Karte sind keine Schleifen erlaubt. d. h. die Schrägen dürfen keine Schleifen bilden.

Puzzle:

Automatisch gelöste Antwort:

Wo fange ich an?

    
Muthu Ganapathy Nathan 01.03.2012, 17:12
quelle

2 Antworten

2

Anstelle der linken und rechten Schräglage verwende ich Schrägstrich (/) und umgekehrten Schrägstrich (\).

Nehmen wir ein Quadrat mit Ecken (x1) (11), wobei x alles andere als 1 ist. In der oberen linken Ecke befindet sich eine solche. Nehmen Sie an, dass die Schräglage auf diesem Quadrat ein Schrägstrich ist, der zwei Einsen verbindet. Diese 1 sind "verbraucht" und alle Quadrate, die sie berühren, müssen Linien haben, die die Zahlen nicht berühren. Aber das führt zu einer unmöglichen Situation, weil wir sowohl links als auch unterhalb unseres Quadrates einen Schrägstrich haben würden, was bedeutet, dass die verbleibende 1 zwei Schrägen berührt. Die Schlussfolgerung: Wenn Sie ein Quadrat mit drei 1en haben, muss die Linie in diesem Quadrat die Ecke berühren, die nicht 1 ist . Diese Regel gilt möglicherweise nicht für Kanten und Ecken, aber wenn Sie eine 1 in der Ecke haben, müssen Sie die Linie zeichnen, die diese Ecke berührt.

Die Zahlen 1 und 3 sind symmetrisch und mit ähnlicher Logik erhalten wir eine andere Regel: Wenn Sie ein Quadrat mit drei 3en haben, dann muss die Linie in diesem Quadrat zwei dieser drei 3er berühren.

Es gibt allgemeinere Regeln, aber sie gelten nicht in Ecken. Es muss Quadrate um das betreffende Quadrat geben. Nehmen wir ein Quadrat zwei gegenüberliegende 1 (x1) (1y), wobei x und y alles sind, einschließlich einer No-Zahl. Es gibt eine solche zwei Quadrate von der unteren linken Ecke entfernt. Nehmen Sie an, dass die Schräglage auf diesem Quadrat ein Schrägstrich ist, der zwei Einsen verbindet. Diese 1 sind "verbraucht" und alle Quadrate, die sie berühren, müssen Linien haben, die die Zahlen nicht berühren. Aber das führt zu einer Schleife um die Einsen. Die Schlussfolgerung: Wenn Sie ein Quadrat mit zwei gegenüberliegenden 1en haben, darf die Linie in diesem Quadrat diese beiden 1en nicht berühren . Diese Regel gilt möglicherweise nicht für die Platinenkanten.

Die Zahlen 1 und 3 sind symmetrisch, aber die vorherige Regel verwendet die Regel "keine Schleifen", und es gibt keine symmetrische Regel "keine Schleifen von Seitenlinien", und daher gibt es keine Regel mit zwei entgegengesetzten Dreiern.

Nun, da Sie wissen, welche Linie die 1 berührt, können Sie daraus schließen, dass keine andere Linie sie berühren kann. Wir können diese Argumentation auf folgende Füllregeln verallgemeinern: Wenn eine Zahl x x Linien berührt, haben alle anderen benachbarten Quadrate Linien, die die Zahl nicht berühren. Und symmetrisch: Wenn eine Zahl x eine Ecke von (4-x) Quadraten mit Linien ist, die die Zahl nicht berühren, müssen alle anderen benachbarten Quadrate Linien haben, die die Zahl berühren.

Nach dem Begriff " Gokigen Naname " gegoogelt habe ich mehr Regeln gefunden. Eins ist ungefähr zwei benachbarte 1 (11), aber Mweerden hat es bereits bedeckt.

Diese Regeln sind nicht genug, um das Board zu lösen. Es gibt wahrscheinlich andere Regeln. Aber möglicherweise muss der Algorithmus eine Vermutung treffen.

    
Dialecticus 02.03.2012, 10:50
quelle
2

"Logisch" ist ein sehr weiter Begriff. Wie Orbling in den Kommentaren erwähnt, kann Backtracking als logisch betrachtet werden. Man kann "logisch" auch so verstehen, wie man es löst, indem man es in eine logische Formel übersetzt. Aus den Kommentaren entnehme ich, dass Sie versuchen, einen Solver zu implementieren, der einem Sudoku-Solver ähnelt.

Eine einfache Methode zur Implementierung eines Solvers, ähnlich wie bei Sudokus, besteht darin, bestimmte Muster zu finden. Für die Puzzles, die von dem Programm erzeugt werden, auf das Sie sich beziehen, kann ich mit angemessener Sicherheit sagen, dass dies ausreichend sein sollte, um sie zu lösen, ohne zu raten und zurückzugehen.

Einige Beispiele für offensichtliche Muster sind <11> und >33< . Vor allem 2 hat einige schöne "transitive" Eigenschaften. Zum Beispiel: <12...23 -> <12...23< (mit 2 ... 2 eine beliebige Menge von 2s). Versuchen Sie Ihren Löser an verschiedenen Beispielen und wenn es feststeckt, bin ich sicher, dass Sie ein Beispiel gefunden haben, das Ihnen ein anderes Muster beibringen kann.

    
mweerden 02.03.2012 00:29
quelle

Tags und Links