Ich habe diese letzte rätselhafte Frage gesehen:
Fügen Sie Klammern hinzu, um dies zu bestätigen
Und sah, dass eine Antwort ein Python-Skript verwendete, um alle Möglichkeiten auszuprobieren .
Ihre Herausforderung besteht darin, bei einem Ausdruck (als Zeichenfolge) und einer Ganzzahl ein Programm zu erstellen, das erkennen kann, ob Sie Parens hinzufügen können, damit der Ausdruck der Ganzzahl entspricht.
Wenn beispielsweise der Ausdruck 1 + 2 * 3
und die Ganzzahl ist 9
, können Sie Parens wie (1 + 2) * 3
9 hinzufügen , sodass die Ausgabe wahr sein sollte. Aber wenn der Ausdruck 1 + 2 - 3 * 4 / 5
und die Ganzzahl ist 9999999999999
, können Sie keine Anzahl von Parens hinzufügen, um dies gleich zu machen 9999999999999
, daher sollte die Ausgabe falsch sein.
Beachten Sie, dass die Ganzzahleingabe positiv oder negativ sein kann, der Ausdruck jedoch nur positive Ganzzahlen enthält. Tatsächlich (\d+ [+*/-] )+ \d
stimmt der Ausdruck immer überein (Regex). Mit anderen Worten, ohne parens, keine Exponenten, nur +
, -
, *
und /
. Standardoperatorreihenfolge ( *
und /
dann +
und -
).
Weitere Testfälle:
1 + 2 - 3 * 4 / 9 and -1 -> truthy, ((1 + 2) - (3 * 4)) / 9
10 - 9 * 8 - 7 * 6 - 5 * 4 - 3 * 2 - 2 * 1 and 1, falsey, see linked question
10 + 9 - 8 * 7 + 6 - 5 * 4 + 3 - 2 * 1 and 82 -> truthy, (10 + (9 - 8)) * 7 + (6 - 5) * 4 + 3 - 2 * 1
34 + 3 and 15 -> falsey
1 + 2 + 5 + 7 and 36 -> falsey
1 / 10 * 3 + 3 / 10 * 10 and 6 -> truthy, (1/10*3+3/10)*10
Irgendwelche Fragen?
Sie können den Ausdruck in Klammern ausgeben, wenn dies möglich ist, beispielsweise (10 + (9 - 8)) * 7 + (6 - 5) * 4 + 3 - 2 * 1
für den letzten Testfall. Ich würde dies nur einem wahrheitsgemäßen Wert vorziehen, aber es liegt an Ihnen. Die Verwendung 2(5)
zur Multiplikation ist nur nicht zulässig *
.
quelle
/
ist Float Division, richtig?3 / 2 - 1 - 1 and 2 -> 3 / (2 - 1) - 1
Antworten:
Python 2,
286285282 BytesProbieren Sie es online aus
Erläuterung:
Diese Version druckt alle Arbeitsausdrücke (mit den
Fraction
Objekten).Probieren Sie es online aus
Verweise:
Partitionierungsfunktion
Wechselnder Reißverschluss
Dank Felipe Nardi Batista wurden 3 Bytes gespeichert
quelle
/
ist Float Division) verwenden und alle Verwendungen löschenfractions
? 2 - Was ist mit Divisionen durch 0?