Wprowadzenie:
Zainspirowany trwającą od wielu lat dyskusją na temat wyrażenia .
Dzięki wyrażeniu matematycy szybko przekonają się, że poprawna odpowiedź to , a osoby o prostym pochodzeniu matematycznym ze szkoły szybko przekonają się, że poprawna odpowiedź to . Skąd więc ta kontrowersja, a zatem różne odpowiedzi? Istnieją dwie sprzeczne reguły w sposobie pisania . Jeden ze względu na część
2(
, a drugi ze względu na symbol podziału÷
.Chociaż zarówno matematycy, jak i „zwykli ludzie” będą używać PEMDAS (nawias - wykładniki - dzielenie / mnożenie - dodawanie / odejmowanie), dla matematyków wyrażenie jest oceniane w ten sposób poniżej, ponieważ jest jak na przykład monomial aka „ pojedynczy termin wynikający z domniemanego mnożenia przez zestawienie ” (a zatem część
P
inPEMDAS
), który zostanie oceniony inaczej niż (dwumianowy aka dwa terminy):
Podczas gdy dla „zwykłych ludzi” i będą takie same (a zatem część
MD
inPEMDAS
), więc użyją tego zamiast tego:
Jednak nawet gdybyśmy zapisali pierwotne wyrażenie jako , nadal mogą istnieć pewne kontrowersje związane z użyciem symbolu podziału ÷
. We współczesnej matematyce symbole /
i ÷
mają dokładnie to samo znaczenie: dziel. Niektóre reguły sprzed 1918 † dotyczące symbolu podziału ÷
†† mówią, że miał on inne znaczenie niż symbol podziału /
. Dzieje się tak, ponieważ ÷
oznacza „ dziel liczbę / wyrażenie po lewej stronie przez liczbę / wyrażenie po prawej stronie ” ††† . Zatem byłoby lub teraz. W takim przypadkubyłyby oceniane w ten sposób przez osoby przed 1918 r .:
†: Chociaż znalazłem wiele źródeł wyjaśniających, w jaki sposób ÷
był używany w przeszłości (patrz ††† poniżej), nie byłem w stanie znaleźć ostatecznego dowodu, że zmieniło się to gdzieś około 1918 roku. Ale dla tego wyzwania zakładamy, że 1918 był punkt zwrotny, w którym ÷
i
/
zaczynają oznaczać to samo, gdzie różniły się w przeszłości.
††: Inne symbole były również używane w przeszłości do podziału, jak
:
w 1633 r. (Lub teraz nadal w Holandii i innych europejskich krajach nieanglojęzycznych, ponieważ tego właśnie nauczyłem się w szkole podstawowej xD) lub)
w lata 40. Ale w przypadku tego wyzwania skupiamy się wyłącznie na znaczeniu symbolu obelusa sprzed 1918 r÷
.
†††: Źródła: ogólnie ten artykuł . A zasady dotyczące sprzed 1918 r.÷
Są wymienione w: tym artykule z amerykańskiego miesięcznika matematycznego z lutego 1917 r . ; niemiecka książka Teutsche Algebra z 1659 strona 9 i strona 76 ; ta pierwsza książka w algebrzeod 1895 strona 46 [48/189] .Nieco tematyczny: dotyczący faktycznej dyskusji na temat tego wyrażenia: nigdy nie należy go tak pisać! Prawidłowa odpowiedź nie ma znaczenia, jeśli pytanie jest niejasne. * Klika przycisk „Zamknij, ponieważ nie jest jasne, o co pytasz” * .
I dla przypomnienia, nawet różne wersje kalkulatorów Casio nie wiedzą, jak poprawnie radzić sobie z tym wyrażeniem:
Wyzwanie:
Otrzymujesz dwa dane wejściowe:
- (Prawidłowe) wyrażenie matematyczne składające się tylko z symboli
0123456789+-×/÷()
- Rok
I wyprowadzasz wynik wyrażenia matematycznego na podstawie roku (gdzie ÷
jest używany inaczej, gdy , ale jest używany dokładnie tak samo, jak /
gdy ).
Zasady konkursu:
- Możesz założyć, że wyrażenie matematyczne jest poprawne i używa tylko symboli
0123456789+-×/÷()
. Oznacza to również, że nie będziesz musiał radzić sobie z potęgowaniem. (Możesz także używać innych symboli dla×
lub÷
(tj.*
Lub%
), jeśli to pomaga w grze w golfa lub jeśli twój język obsługuje tylko ASCII.) - Dozwolone jest dodawanie separatorów spacji do wyrażenia wejściowego, jeśli pomaga to (być może ręcznie) w ocenie wyrażenia.
- I / O jest elastyczny. Dane wejściowe mogą być ciągiem, tablicą znaków itp. Rok może być liczbą całkowitą, obiektem daty, ciągiem itp. Dane wyjściowe będą liczbą dziesiętną.
- Możesz założyć, że nie będzie podziału na 0 przypadków testowych.
- Możesz założyć, że liczby w wyrażeniu wejściowym będą nieujemne (więc nie będziesz musiał radzić sobie z rozróżnianiem
-
jako symbolu ujemnego vs-
jako symbolu odejmowania). Wynik może być jednak nadal ujemny! - Możesz założyć,
N(
że zawsze będzie napisane jakN×(
zamiast. Skupimy się tylko na drugą kontrowersje symboli podziału/
vs÷
w tym wyzwaniem. - Dziesiętne wartości wyjściowe powinny mieć dokładność co najmniej trzech cyfr dziesiętnych.
÷
).÷
×
/
Główne zasady:
- To jest golf golfowy , więc wygrywa najkrótsza odpowiedź w bajtach.
Nie pozwól, aby języki gry w golfa zniechęcały Cię do publikowania odpowiedzi w językach niekodujących golfa. Spróbuj znaleźć możliwie najkrótszą odpowiedź na „dowolny” język programowania. - Do odpowiedzi mają zastosowanie standardowe reguły z domyślnymi regułami We / Wy , więc możesz używać STDIN / STDOUT, funkcji / metody z odpowiednimi parametrami i typem zwracanych, pełnych programów. Twoja decyzja.
- Domyślne luki są zabronione.
- Jeśli to możliwe, dodaj link z testem na swój kod (tj TIO ).
- Zalecane jest również dodanie wyjaśnienia do odpowiedzi.
Przypadki testowe:
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))
`=`=`/`
jest diabelski! Świetne rozwiązanie!