Einführung:
Inspiriert von einer Diskussion, die bereits seit vielen Jahren über den Ausdruck .
Mit dem Ausdruck Mathematiker schnell, dass die richtige Antwort , während Menschen mit einem einfachen mathematischen Hintergrund aus der Schule schnell erkennen, dass die richtige Antwort . Woher kommt diese Kontroverse und damit die unterschiedlichen Antworten? Es gibt zwei widersprüchliche Regeln in der Schreibweise von . Eine wegen des Teils und eine wegen des Teilungssymbols .
2(
÷
Obwohl sowohl Mathematiker als auch "normale Leute" PEMDAS (Parenthesis - Exponents - Division / Multiplication - Addition / Subtraction) verwenden, wird der Ausdruck für Mathematiker wie folgt ausgewertet, da genau wie zum Beispiel ein Monom ist aka " ein einziger Term aufgrund impliziter Multiplikation durch Nebeneinanderstellung " (und daher Teil des In ), der anders ausgewertet wird als (ein Binom, aka zwei Terme): 2 × ( 3 )
P
PEMDAS
Während für „normale Leute“ und gleich sind (und daher Teil des Eingangs sind ), verwenden sie stattdessen Folgendes:
MD
PEMDAS
Selbst wenn wir den ursprünglichen Ausdruck als , kann es aufgrund der Verwendung des Teilungssymbols dennoch zu Kontroversen kommen . In der modernen Mathematik haben die Symbole und genau die gleiche Bedeutung: Teilen. Einige Regeln vor 1918 † bezüglich des Teilungssymbols †† besagen, dass es eine andere Bedeutung hatte als das Teilungssymbol . Dies ist so, weil es bedeutet " Teilen Sie die Zahl / den Ausdruck links mit der Zahl / dem Ausdruck rechts " ††† . Also wäre jetzt oder . In diesem Fall ista ≤ b ( a ) / ( b ) a÷
/
÷
÷
/
÷
würde von Leuten vor 1918 so bewertet werden:
†: Obwohl ich mehrere Quellen gefunden habe, die erklären, wie ÷
in der Vergangenheit gearbeitet wurde (siehe ††† unten), konnte ich keinen endgültigen Beweis dafür finden, dass sich dies irgendwo um 1918 geändert hat der Wendepunkt, an dem ÷
und zu
/
Beginn dasselbe bedeutete, wo sie sich in der Vergangenheit unterschieden.
††: In der Vergangenheit wurden auch andere Symbole für die Teilung verwendet, wie
:
1633 (oder jetzt noch in den Niederlanden und anderen nicht englischsprachigen Ländern in Europa, da ich dies in der Grundschule xD persönlich gelernt habe) oder)
in die 1540er Jahre. Bei dieser Herausforderung konzentrieren wir uns jedoch nur auf die Bedeutung des Obelussymbols vor 1918÷
.
†††: Quellen: dieser Artikel im Allgemeinen . Und die prä-1918 Regeln in Bezug÷
erwähnt in: dieser The American Mathematical Monthly Artikel vom Februar 1917 ; dieses deutsche Teutsche Algebra Buch von 1659 Seite 9 und Seite 76 ; Dies ist ein erstes Buch in der Algebraab 1895 Seite 46 [48/189] .Etwas abseits des Themas: Bezüglich der eigentlichen Diskussion über diesen Ausdruck: Es sollte niemals so geschrieben werden! Die richtige Antwort ist irrelevant, wenn die Frage unklar ist. * Klicken Sie auf die Schaltfläche "Schließen, da nicht klar ist, wonach Sie fragen" * .
Und im Grunde wissen auch verschiedene Versionen von Casio-Rechnern nicht, wie man mit diesem Ausdruck richtig umgeht:
Herausforderung:
Sie erhalten zwei Eingaben:
- Ein (gültiger) mathematischer Ausdruck, der nur aus den Symbolen besteht
0123456789+-×/÷()
- Ein Jahr
Und Sie geben das Ergebnis des mathematischen Ausdrucks basierend auf dem Jahr aus (wobei ÷
anders verwendet wird, wenn das , aber genau so verwendet wird, wie wenn das ).y e ein r ≥ 1918/
Herausforderungsregeln:
- Sie können davon ausgehen, dass der mathematische Ausdruck gültig ist und nur die Symbole verwendet
0123456789+-×/÷()
. Dies bedeutet auch, dass Sie sich nicht mit Potenzierung befassen müssen. (Sie dürfen auch andere Symbole für×
oder÷
(dh*
oder%
) verwenden, wenn dies das Golfen erleichtert oder wenn Ihre Sprache nur ASCII unterstützt.) - Sie können dem Eingabeausdruck Leerzeichen hinzufügen, wenn dies die (möglicherweise manuelle) Auswertung des Ausdrucks erleichtert.
- I / O ist flexibel. Die Eingabe kann als Zeichenfolge, Zeichenfeld usw. erfolgen. Das Jahr kann als Ganzzahl, Datumsobjekt, Zeichenfolge usw. erfolgen. Die Ausgabe erfolgt als Dezimalzahl.
- Sie können davon ausgehen, dass es keine Division durch 0 Testfälle gibt.
- Sie können davon ausgehen, dass die Zahlen im Eingabeausdruck nicht negativ sind (Sie müssen also nicht zwischen dem
-
negativen-
und dem subtraktiven Symbol unterscheiden). Der Ausgang kann aber immer noch negativ sein! - Sie können davon ausgehen
N(
, dassN×(
stattdessen immer geschrieben wird. Wir werden uns bei dieser Herausforderung nur auf die zweite Kontroverse der Divisionssymbole/
gegen konzentrieren÷
. - Dezimal-Ausgabewerte sollten eine Genauigkeit von mindestens drei Dezimalstellen haben.
÷
42÷22÷222- Beachten Sie, dass die Funktionsweise
÷
implizit bedeutet, dass der Operator Vorrang vor×
und hat/
(siehe Testfall ). - Sie können davon ausgehen, dass das Eingabejahr im Bereich .
Allgemeine Regeln:
- Das ist Code-Golf , also gewinnt die kürzeste Antwort in Bytes.
Lassen Sie sich von Code-Golf-Sprachen nicht davon abhalten, Antworten mit Nicht-Codegolf-Sprachen zu veröffentlichen. Versuchen Sie, für jede Programmiersprache eine möglichst kurze Antwort zu finden. - Für Ihre Antwort gelten Standardregeln mit Standard-E / A-Regeln. Daher dürfen Sie STDIN / STDOUT, Funktionen / Methoden mit den richtigen Parametern und vollständige Programme vom Rückgabetyp, verwenden. Ihr Anruf.
- Standardlücken sind verboten.
- Fügen Sie nach Möglichkeit einen Link mit einem Test für Ihren Code hinzu (z. B. TIO ).
- Außerdem wird dringend empfohlen, eine Erklärung für Ihre Antwort hinzuzufügen.
Testfälle:
Input-expression: Input-year: Output: Expression interpretation with parenthesis:
6÷2×(1+2) 2018 9 (6/2)×(1+2)
6÷2×(1+2) 1917 1 6/(2×(1+2))
9+6÷3-3+15/3 2000 13 ((9+(6/3))-3)+(15/3)
9+6÷3-3+15/3 1800 3 (9+6)/((3-3)+(15/3))
4÷2÷2 1918 1 (4/2)/2
4÷2÷2 1900 4 4/(2/2)
(1÷6-3)×5÷2/2 2400 -3.541... ((((1/6)-3)×5)/2)/2
(1÷6-3)×5÷2/2 1400 1.666... ((1/(6-3))×5)/(2/2)
1×2÷5×5-15 2015 -13 (((1×2)/5)×5)-15
1×2÷5×5-15 1719 0.2 (1×2)/((5×5)-15)
10/2+3×7 1991 26 (10/2)+(3×7)
10/2+3×7 1911 26 (10/2)+(3×7)
10÷2+3×7 1991 26 (10/2)+(3×7)
10÷2+3×7 1911 0.434... 10/(2+(3×7))
4÷2+2÷2 2000 3 (4/2)+(2/2)
4÷2+2÷2 1900 2 4/((2+2)/2)
4÷2×2÷3 9999 1.333... ((4/2)×2)/3
4÷2×2÷3 0000 3 4/((2×2)/3)
((10÷2)÷2)+3÷7 2000 2.928... ((10/2)/2)+(3/7)
((10÷2)÷2)+3÷7 1900 0.785... (((10/2)/2)+3)/7
(10÷(2÷2))+3×7+(10÷(2÷2))+3×7
1920 62 (10/(2/2))+(3×7)+(10/(2/2))+(3×7)
(10÷(2÷2))+3×7+(10÷(2÷2))+3×7
1750 62 (10/(2/2))+(3×7)+(10/(2/2))+(3×7)
10÷2/2+4 2000 6.5 ((10/2)/2)+4
10÷2/2+4 0100 2 10/((2/2)+4)
9+6÷3-3+15/3 9630 13 9+(6/3)-3+(15/3)
9+6÷3-3+15/3 0369 3 (9+6)/(3-3+(15/3))
`=`=`/`
ist teuflisch! Tolle Lösung!