Đã có nhiều câu hỏi liên quan đến máy tính; tuy nhiên, dường như không có bất kỳ liên quan đến việc thực hiện một máy tính vẽ đồ thị.
Các thách thức
Bạn phải viết một chương trình hoàn chỉnh lấy nhiều công thức làm đầu vào từ STDIN và vẽ đồ thị cho STDOUT. Đầu vào sẽ có hình thức f1(x)=x^2-x-1
. Sẽ có một số f
theo sau là một số 0-9 (đã bao gồm), theo (x)=
sau là công thức cho biểu đồ. Chương trình của bạn sẽ có thể lấy đầu vào, đồ thị, lấy thêm đầu vào, đồ thị, v.v.
Đây là mã golf.
Biểu đồ của bạn nên có phạm vi trục X từ -5 đến 5, với độ phân giải ít nhất một điểm mỗi 1/2 đơn vị. Yêu cầu trục Y là như nhau. Điều này có vẻ như là một phạm vi nhỏ so với các máy tính hiện đại, nhưng rất có thể nó sẽ không đáng kể trong việc tăng này. Biểu đồ nên có trục được vẽ trên chúng, với các dấu tick ở dạng +
số nguyên.
Công thức nên được đánh giá với thứ tự hoạt động bình thường. Sẽ không có bất kỳ tiệm cận đứng / vùng không xác định trong các công thức này. Biến sẽ luôn là x. Nếu hai công thức được nhập với cùng một số phương trình, thì công thức cũ nhất sẽ bị xóa và thay thế bằng công thức mới. Công thức trống nên đánh giá bằng không. Vì có thể công thức không phải lúc nào cũng cho bội số 1/2, nên bạn phải làm tròn đến 1/2 gần nhất.
Khi một công thức được vẽ đồ thị, dòng của nó sẽ được hình thành từ số lượng của công thức. Khi một đường ngang qua một trục, trục sẽ được vẽ trên đầu. Khi hai dòng giao nhau, không có vấn đề gì được hiển thị.
Ví dụ đầu vào
f1(x)=x+1
Đầu ra
+ 1
| 1
+ 1
| 1
+ 1
| 1
+ 1
|1
+
1|
+-+-+-+-+-+-+-+-+-+-+
1 |
1 +
1 |
1 +
1 |
1 +
1 |
1 +
|
+
Đầu vào
f2(x)=(x^2)^0.25
Đầu ra
+ 1
| 1
+ 1
| 1
+ 1
| 1
2222 + 1 2222
222 |1 222
22 + 22
2|2
+-+-+-+-+-+-+-+-+-+-+
1 |
1 +
1 |
1 +
1 |
1 +
1 |
1 +
|
+
Đầu vào
f1(x)=-x
(lưu ý, chương trình của bạn có thể từ chối đầu vào này và chỉ ngoại trừ 0-x hoặc x * -1, nhưng điều này phải được ghi lại)
Đầu ra
1 +
1 |
1 +
1 |
1 +
1 |
2222 1 + 2222
2221 | 222
22 + 22
2|2
+-+-+-+-+-+-+-+-+-+-+
|1
+ 1
| 1
+ 1
| 1
+ 1
| 1
+ 1
| 1
+ 1
y*0.5
đểy/2
và thoát khỏi hai nhân vật? Tôi không biết Ruby, vì vậy tôi có thể không đúng.