Đối phó với các phương trình trong trường hợp không có trình soạn thảo phương trình tốt là lộn xộn và khó chịu. Ví dụ: nếu tôi muốn thể hiện một tích phân và giải pháp của nó, nó có thể trông giống như thế này:
Tích phân [x ^ 3 e ^ (- mx ^ 2 b / 2), dx] = - ((2 + b m x ^ 2) / (b ^ 2 * e ^ ((b m x ^ 2) / 2) * m ^ 2))
Tại integrals.wolfram.com , đây được gọi là "mẫu đầu vào." Không ai thích nhìn thấy một phương trình trong "hình thức đầu vào." Cách lý tưởng để hình dung phương trình này sẽ là:
(Wolfram gọi đây là "hình thức truyền thống")
Đối với codegolf này, hãy viết một chương trình sẽ lấy một số phương trình ở "dạng đầu vào" làm đầu vào và trực quan hóa phương trình đó trong một biểu diễn ascii của "dạng truyền thống". Vì vậy, với ví dụ này, chúng ta có thể nhận được một cái gì đó như thế này:
/\ 3
| x
| ------------ dx =
| 2
\/ (m x b)/2
e
2
2 + b m x
-(-----------------)
2
2 (b m x )/2 2
b e m
Yêu cầu:
- Không xáo trộn, đơn giản hóa hoặc sắp xếp lại đầu vào theo bất kỳ cách nào. Kết xuất nó ở dạng chính xác giống như được mô tả bởi đầu vào.
- Hỗ trợ bốn phép toán cơ bản (+, -, *, /). Khi không nhân hai số liền kề, ký hiệu * được ngụ ý và nên được bỏ qua.
- Hỗ trợ cho hội nhập (như trong ví dụ trên) là không cần thiết. Có thể hỗ trợ đầu vào với các chức năng như Tích hợp [...] hoặc Sqrt [...] là một phần thưởng.
- Hỗ trợ các quyền hạn như trong ví dụ trên (gốc thứ n có thể được mô hình hóa bằng cách nâng lên công suất 1 / n).
- Dấu ngoặc thừa (như những người xung quanh mẫu số và tử số của phần lớn trong ví dụ trên) nên được bỏ qua.
- Biểu thức trong mẫu số và tử số của một phân số phải được căn giữa ở trên và dưới đường phân chia ngang.
- Bạn có thể chọn có bắt đầu một dòng mới hay không sau một dấu bằng. Trong ví dụ trên, một dòng mới được bắt đầu.
- Thứ tự các hoạt động phải giống hệt nhau trong đầu ra như trong đầu vào.
Một số ví dụ về đầu vào và đầu ra liên quan để kiểm tra giải pháp của bạn:
Đầu vào:
1/2 + 1/3 + 1/4
Đầu ra:
1 1 1
- + - + -
2 3 4
Đầu vào:
3x^2 / 2 + x^3^3
Đầu ra:
2 3
3 x 3
---- + x
2
Đầu vào:
(2 / x) / (5 / 4^2)
Đầu ra:
2
-
x
--
5
--
2
4
Đầu vào:
(3x^2)^(1/2)
Đầu ra:
2 1/2
(3 x )