Ich sehe deine BIDMAS und ziehe dir ein BADMIS auf
Herausforderung
Wenn eine Reihe von Zahlen mit Operatoren dazwischen gegeben ist: "5 + 4 * 9/3 - 8", geben Sie alle möglichen Ergebnisse des Ausdrucks für jede Permutation in der Reihenfolge der Grundoperationen zurück: [/, *, +, -].
Regeln
- Standardlücken verboten
- I / O
- Die Eingabe muss mit Infix-Operationen bestellt werden, dies ist jedoch am einfachsten (Zeichenfolge oder Array).
- Sie müssen keine unären Operatoren unterstützen (z. B. "-3 * 8 / +2")
- Ganzzahlen können durch Gleitkommazahlen für Sprachen ersetzt werden, die den Typ implizit analysieren (z. B. 45 ⟶ 45.0).
- Die Ausgabe muss alle möglichen Ergebnisse des Ausdrucks enthalten, kein bestimmtes Format oder keine bestimmte Reihenfolge
- Alle Eingaben sind gültig (z. B. muss nicht mit "7/3 + *" umgegangen werden). Dies bedeutet auch, dass Sie niemals durch Null teilen müssen.
- Operatoren sind alle linksassoziativ, so dass "20/4/2" = "(20/4) / 2"
- Dies ist Code Golf, so dass die geringste Anzahl von Bytes gewinnt
Testfälle (mit Erläuterung)
- "2 + 3 * 4" = [14, 20]
- 2 + (3 * 4) ≤ 2 + (12) ≤ 14
- (2 + 3) * 4 ≤ (5) * 4 ≤ 20
- "18/3 * 2 - 1" = [11, 2, 6]
- ((18/3) * 2) - 1 ≤ ((6) * 2) - 1 ≤ (12) - 1 ≤ 11
- (18/3) * (2 - 1) ≤ (6) * (1) ≤ 6
- (18 / (3 * 2)) - 1 ⟶ (18 / (6)) - 1 ⟶ (3) - 1 ⟶ 2
- 18 / (3 * (2 - 1)) ≤ 18 / (3 * (1)) ≤ 6
- 18 / ((3 * 2) - 1) ≤ 18/5 ≤ 3.6
Testfälle (ohne Erklärung)
- "45/8 + 19/45 * 3" = [6.891666666666667, 18.1416666666666, 0.11111111111111113, 0.01234567901234568, 0.01234567901234568, 5.765740740740741]
- "2 + 6 * 7 * 2 + 6/4" = [112 196 23 87.5]
2 - 3 + 4
=>[-5, 3]
2*3-6+2-9/6*8+5/2-9
24 eindeutige Ergebnisse.