Messen der Schwierigkeit eines Str8ts

Hilfen, Tipps, Regelfragen, Anregungen
Post Reply
User avatar
Ulrich
Posts: 86
Joined: Monday 24. May 2010, 20:05
Location: Region Augsburg München

Messen der Schwierigkeit eines Str8ts

Post by Ulrich » Sunday 13. June 2010, 13:24

Trephanor:
Hier ein kleiner Vorschlag: Man berechnet die Sterne aufgrund der Häufigkeit der notwendigen gewichteten Lösungsarten. Dazu müsste man aber alle möglichen Lösungswege erst einmal identifizieren und bewerten. Ein kleines Beispiel:
J6 oben hätte eine Schwierigkeit von 0(S0), da direkt einsetzbar.
G8 hätte eine Schwierigkeit von 1 (S1), da man eindeutig aufgrund der Zeile von Beginn an die richtige Zahl einsetzen kann, dies aber nicht sofort ersichtlich ist.
usw.
Mein Solver arbeitet in folgender Sequenz:

1. Zeilen-Spalten-Regel
2. Compartment-Check (Loop)
3. Hidden single
4. Paare (Loop)
5. Stranded digits (Loop)
6. Tripel
7. Hidden pairs/triples (noch nicht implementiert)
8. weiß ich noch nicht
9. Trial and Error (wird gerade implementiert)

Werden in einer Stufe Lösungen gefunden, so wird der Zähler um Anzahl_Lösungen x Lösungsstufe erhöht.

In den Stufen, die mit Loop gekennzeichnet sind, wird die Stufe solange wiederholt, wie sich die Zahl der Kandidaten reduziert. Jede Loop erhöht den Zähler um einen Punkt.

Sind alle Lösungslevel durchlaufen, ohne eine Lösung gefunden zu haben, wird nochmal von vorne gestartet, wenn sich die Zahl der Kandidaten verringert hat. Dies gibt weitere 5 Punkte.

Ist auch das nicht der Fall, wird abgebrochen. An dieser Stelle wird dann später der Trial-and-Error-Solver aufsetzen.


Damit wird folgendes erreicht:

Wenn mit der Zeilen-Spalten-Regel sofort 5 Lösungen gefunden werden, gibt das 6 Punkte (1 Loop, 5 Lösungen in Level 1). Werden die 5 Lösungen jeweils eine nach der anderen gefunden, d.h. in 5 Loops, dann gibt es 10 Punkte.

Die Ziffern aus höheren Leveln ergeben entsprechend mehr Punkte.

Ob die so ermittelten Schwierigkeiten stimmen (d.h. mit dem mittleren subjektiven Empfinden der Rätsellöser übereinstimmen), ist schwer zu sagen. Mit meinem persönlichen Empfinden stimmt das schon ziemlich gut.

Was noch nicht so richtig zutreffend bewertet wird, ist der Compartment Check: da ich den sehr präzise mache, egal ob eine Straße schon Ziffern enthält oder nicht, werden leichte und schwierig zu sehende Sachverhalte gleich bewertet. Vielleicht ändere ich das nochmal, um es dem menschlichen Vorgehen besser anzupassen.

Für die beiden heutigen ergibt sich:
Symmetrisch: 3 Sterne Nr. 301
Asymmetrisch: 2 Sterne Nr. 302
Ulrich
Str8ts addicted

Trephanor
Posts: 2
Joined: Sunday 13. June 2010, 17:57

Re: Messen der Schwierigkeit eines Str8ts

Post by Trephanor » Sunday 13. June 2010, 18:02

Ich glaube, du hast etwas entscheidendes vergessen: Wie wird bei dir jetzt die Schwierigkeit berechnet? Mir ist noch nicht klar, welche Werte zu welcher Einstufung führen.

Ganz interessantes Detail nebenbei: Während ich heute über Str8ts-Metriken nachdachte überlegte ich auch, wie man am besten löst. Und da unterscheidet sich mein Ansatz ganz erheblich von deinem. Zumindest in der Reihenfolge. Vielleicht code ich da heute doch noch was. In welcher Programmiersprache hast du deinen Solver geschrieben?

User avatar
Ulrich
Posts: 86
Joined: Monday 24. May 2010, 20:05
Location: Region Augsburg München

Re: Messen der Schwierigkeit eines Str8ts

Post by Ulrich » Sunday 13. June 2010, 19:21

Wie wird bei dir jetzt die Schwierigkeit berechnet?
Der in meinem Beitrag erwähnte Zähler (LösungenxLevel) plus Zuschläge für Loops wird bis zur vollständigen Lösung aufaddiert. Das ergibt dann typischerweise Punkte zwischen 100 und 250. Je höher die Punktzahl, desto höher die Schwierigkeit.
In welcher Programmiersprache hast du deinen Solver geschrieben?
Da ich schon eine Spielumgebung für Sudoku in EXCEL hatte, habe ich das Ganze darauf aufgesetzt. D.h., mein Solver ist in Visual Basic geschrieben. Derzeit noch in einem furchtbaren Spaghetticode, aber irgendwann räume ich das nochmal auf.

Wenn du was geschieben hast, teste doch mal die Beispiele unter "Spezielle Rätsel" hier im Forum.
...unterscheidet sich mein Ansatz ganz erheblich von deinem.
Wie ist denn dein Ansatz?
Ulrich
Str8ts addicted

Trephanor
Posts: 2
Joined: Sunday 13. June 2010, 17:57

Re: Messen der Schwierigkeit eines Str8ts

Post by Trephanor » Monday 14. June 2010, 17:33

Ich wollte gestern was schreiben, aber da wurde ich schon krank. Und denken funktioniert mit dieren Kopfschmerzen so was von gar nicht, ganz abgesehen vom Coden ;)

Meine Idee war:
1. Betrachte zuerst die Straße.
2. Dann die Zeile bzw. Spalte der Straße.
3. Dann die Straße querende Straßen
4. Dann die Straße querende Spalten/Zeilen.

Und da jeweils verschiedene Lösungsstrategien drauf anwenden. Compartment z.b. auf 1. und 2.... oder so was in der Art...

User avatar
Ulrich
Posts: 86
Joined: Monday 24. May 2010, 20:05
Location: Region Augsburg München

Re: Messen der Schwierigkeit eines Str8ts

Post by Ulrich » Thursday 17. June 2010, 19:22

Ich versuche demnächst mal, eine Statistik der Rechenzeiten meines Solvers für die einzelnen Str8ts aufzubauen. Da der Solver ziemlich nah am hirnmäßigen Vorgehen orientiert ist, könnte die Rechenzeit ein gutes Maß für die Schwierigkeit sein. Ich denke dabei an eine Maßzahl in ms/Lösungsziffer. Erste Stichproben ergeben dabei schon deutliche Unterschiede, je nach "gefühltem" Schwierigkeitsgrad.
Ulrich
Str8ts addicted

Post Reply