Giới thiệu:
Lấy cảm hứng từ một cuộc thảo luận đã diễn ra trong nhiều năm liên quan đến biểu thức .
Với biểu thức , các nhà toán học sẽ nhanh chóng thấy rằng câu trả lời đúng là , trong khi những người có nền toán học đơn giản từ trường học sẽ nhanh chóng thấy rằng câu trả lời đúng là . Vì vậy, tranh cãi này và do đó câu trả lời khác nhau đến từ đâu? Có hai quy tắc mâu thuẫn trong cách viết . Một do một phần , và một do biểu tượng phân chia .
2(
÷
Mặc dù cả hai nhà toán học và 'người bình thường' sẽ sử dụng PEMDAS (ngoặc - số mũ - Division / Nhân - Bổ sung / Trừ), cho các nhà toán học biểu thức được đánh giá như thế này dưới đây, vì là giống như ví dụ một đơn thức aka " một thuật ngữ đơn do nhân ngụ ý bởi kề nhau " (và do đó là một phần của trong ), mà sẽ được đánh giá khác biệt so với (một nhị thức aka hai nhiệm kỳ):
P
PEMDAS
Trong khi đó cho 'người bình thường', và sẽ giống nhau (và do đó là một phần của trong ), vì vậy họ sẽ sử dụng này để thay thế:
MD
PEMDAS
Tuy nhiên, ngay cả khi chúng ta đã viết biểu thức ban đầu là , vẫn có thể có một số tranh cãi do việc sử dụng biểu tượng chia . Trong toán học hiện đại, các ký hiệu và có cùng một nghĩa chính xác: chia. Một số quy tắc trước-1918 † về dấu chia †† trạng thái đó nó có một ý nghĩa khác với dấu chia . Điều này là do sử dụng để có nghĩa là " chia số / biểu hiện trên trái cùng với số / biểu hiện ở phía bên phải " ††† . Vì vậy, sau đó, sẽ là hoặc ngay bây giờ. Trong trường hợpa ÷ b ( a ) / ( b ) a÷
/
÷
÷
/
÷
sẽ được đánh giá như thế này bởi những người trước năm 1918:
: Mặc dù tôi đã tìm thấy nhiều nguồn giải thích về cách ÷
sử dụng trong quá khứ (xem bên dưới), tôi không thể tìm thấy bằng chứng chắc chắn điều này đã thay đổi ở đâu đó vào khoảng năm 1918. Nhưng vì thách thức này, chúng tôi cho rằng năm 1918 là bước ngoặt nơi ÷
và
/
bắt đầu có nghĩa là cùng một điều, nơi chúng khác nhau trong quá khứ.
: Các biểu tượng khác cũng đã được sử dụng trong quá khứ để phân chia, như
:
vào năm 1633 (hoặc hiện vẫn ở Hà Lan và các quốc gia không nói tiếng Anh khác ở châu Âu, vì đây là những gì cá nhân tôi đã học ở trường tiểu học xD) hoặc)
ở những năm 1540. Nhưng đối với thử thách này, chúng tôi chỉ tập trung vào ý nghĩa trước năm 1918 của biểu tượng obelus÷
.
: Nguồn: bài viết này nói chung . Và trước-1918 quy định liên quan÷
được đề cập trong: này Các American Mathematical Monthly bài báo từ tháng hai năm 1917 ; cuốn sách Đại số Teutsche của Đức này từ 1659 trang 9 và trang 76 ; Đây là cuốn sách đầu tiên trong đại sốtừ 1895 trang 46 [48/189] .Hơi lạc đề: liên quan đến cuộc thảo luận thực tế về biểu hiện này: Không bao giờ nên viết như thế này ngay từ đầu! Câu trả lời đúng là không liên quan, nếu câu hỏi không rõ ràng. * Nhấp vào nút "đóng vì không rõ bạn đang hỏi gì" * .
Và để ghi lại, ngay cả các phiên bản khác nhau của máy tính Casio cũng không biết cách xử lý đúng biểu thức này:
Thử thách:
Bạn được cung cấp hai đầu vào:
- Một biểu thức toán học (hợp lệ) chỉ bao gồm các ký hiệu
0123456789+-×/÷()
- Một năm
Và bạn đưa ra kết quả của biểu thức toán học, dựa trên năm (nơi ÷
được sử dụng khác nhau khi , nhưng được sử dụng chính xác như khi ).y e a r ≥ 1918/
Quy tắc thử thách:
- Bạn có thể giả sử biểu thức toán học là hợp lệ và chỉ sử dụng các ký hiệu
0123456789+-×/÷()
. Điều này cũng có nghĩa là bạn sẽ không phải đối phó với lũy thừa. (Bạn cũng được phép sử dụng một ký hiệu khác cho×
hoặc÷
(tức là*
hoặc%
), nếu nó giúp chơi gôn hoặc nếu ngôn ngữ của bạn chỉ hỗ trợ ASCII.) - Bạn được phép thêm dấu phân cách không gian vào biểu thức nhập nếu điều này giúp đánh giá (có lẽ là thủ công) của biểu thức.
- I / O là linh hoạt. Đầu vào có thể là một chuỗi, mảng ký tự, v.v ... Năm có thể là một số nguyên, đối tượng ngày, chuỗi, v.v ... Đầu ra sẽ là một số thập phân.
- Bạn có thể cho rằng sẽ không có bất kỳ phân chia nào cho 0 trường hợp thử nghiệm.
- Bạn có thể giả sử các số trong biểu thức đầu vào sẽ không âm (vì vậy bạn sẽ không phải xử lý phân biệt
-
ký hiệu âm so-
với ký hiệu trừ). Tuy nhiên, đầu ra vẫn có thể âm! - Bạn có thể giả định
N(
sẽ luôn luôn được viết nhưN×(
thay thế. Chúng ta sẽ chỉ tập trung vào cuộc tranh cãi thứ hai về các biểu tượng phân chia/
so với÷
trong thử thách này. - Giá trị đầu ra thập phân phải có độ chính xác ít nhất ba chữ số thập phân.
- Nếu biểu thức đầu vào chứa nhiều
÷
(tức là ) với , chúng được đánh giá như sau: . (Hoặc bằng chữ: số được chia cho biểu thức , trong đó biểu thức lần lượt có nghĩa là số được chia cho số ) - Lưu ý rằng cách thức
÷
hoạt động ngầm có nghĩa là nó có quyền ưu tiên của toán tử×
và/
(xem trường hợp thử nghiệm ). - Bạn có thể giả sử năm đầu vào nằm trong phạm vi .
Quy tắc chung:
- Đây là môn đánh gôn , vì vậy câu trả lời ngắn nhất bằng byte thắng.
Đừng để ngôn ngữ mã-golf ngăn cản bạn đăng câu trả lời với các ngôn ngữ không mã hóa. Cố gắng đưa ra một câu trả lời càng ngắn càng tốt cho ngôn ngữ lập trình 'bất kỳ'. - Quy tắc chuẩn áp dụng cho câu trả lời của bạn với quy tắc I / O mặc định , vì vậy bạn được phép sử dụng STDIN / STDOUT, các hàm / phương thức với các tham số thích hợp và kiểu trả về, chương trình đầy đủ. Cuộc gọi của bạn.
- Lỗ hổng mặc định bị cấm.
- Nếu có thể, vui lòng thêm một liên kết với một bài kiểm tra cho mã của bạn (ví dụ TIO ).
- Ngoài ra, thêm một lời giải thích cho câu trả lời của bạn rất được khuyến khích.
Các trường hợp thử nghiệm:
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))
`=`=`/`
là độc ác! Giải pháp tuyệt vời!