wie finden Sie alle möglichen Lösungen für eine Formel, wie 100 * 7-8 * 3 + 7? (8 von 10 Katzen ist Countdown-Löser)

8

So wie Spaß, entschied ich mich, ein einfaches Programm zu schreiben, das die 8 von 10 Katzen löst Countdown Zahlenrätsel , Link ist Formular Countdown, aber gleiche Regeln. Also durchläuft mein Programm einfach alle möglichen Kombinationen von AxBxCxDxExF, wobei Buchstaben Zahlen sind und "x" +, -, / und *. Hier ist der Code dafür:

%Vor%

und hier verwende ich, um zu testen, ob die Kombination das ist, was ich nicht möchte.

%Vor%

In der letzten Episode habe ich ein Problem mit meinem Code gefunden. Das war die Lösung für eines der Rätsel.

%Vor%

Ich bemerkte, dass ich diese Kombination "10 * 7-8 * 3 + 7" (zweimal) finde, aber weil ich nach Lösungen suche, indem ich die Operation von links nach rechts mache, finde ich tatsächlich nicht alle Antworten. Ich suche nur nach solchen Lösungen ((((10 * 7) -8) * 3) +7). Obwohl ich die Kombination gefunden habe, habe ich nicht die richtige Reihenfolge.

Nun ist die Frage, wie ich alle möglichen mathematischen Ordnungen, wie (10 * 7) - (8 * (3 + 7)), (10 * 7) - ((8 * 3) +7) oder 10 * (7-8) * (3 + 7)? Ich kann zwar einen Balancebaum mit Operationen als Balancing-Knoten verwenden. aber ich habe immer noch keine Idee, wie ich alle möglichen Kombinationen durchgehen kann, ohne mich um die Formel zu kümmern.

%Vor%

Wie mache ich das im Code? nicht auf der Suche nach gelöstem Code mehr, wie ich Perspektive ändern sollte, um es zu beheben. Ich weiß nicht, warum ich darüber stehe.

über mich: 4. Jahr Informatik, nicht neu oder noob Programmierung (ich glaube zumindest;))

    
Shawn 23.07.2015, 20:56
quelle

1 Antwort

2

Dies wird einfacher mit einer dedizierten Klasse gelöst, die einen Ausdruck darstellt und nicht mit einem Array. Dann können Sie einfach alle möglichen Bäume aufzählen. Eine Mischung aus einer anderen Antwort, die ich für eine ähnliche Aufgabe geschrieben habe und Anfrage, die zeigt, wie alle binären Bäume generiert werden gab dies:

%Vor%

Es werden alle erstellten Kombinationen gedruckt, einschließlich der von Ihnen gesuchten:

%Vor%

Natürlich ist es sehr pragmatisch zu überprüfen, ob die richtige Lösung gefunden wird, indem man die String Darstellungen vergleicht, aber ich denke, dass der tatsächliche Ansatz der Generation hier wichtig ist.

(Ich hoffe, das ist wirklich das, was Sie gesucht haben - ich konnte die Seite, zu der Sie verlinkt haben, nicht sehen ...)

    
Marco13 23.07.2015, 22:38
quelle