Ada banyak pertanyaan yang melibatkan kalkulator; Namun, tampaknya tidak ada yang melibatkan penerapan kalkulator grafik.
Tantangan
Anda harus menulis program lengkap yang mengambil banyak rumus sebagai input dari STDIN dan grafik mereka ke STDOUT. Masukan akan berbentuk f1(x)=x^2-x-1
. Akan ada f
diikuti oleh angka 0-9 (inklusif), diikuti oleh (x)=
, diikuti oleh rumus untuk grafik. Program Anda harus dapat mengambil input, grafik, mengambil lebih banyak input, grafik, dll.
Ini golf kode.
Grafik Anda harus memiliki kisaran sumbu X dari -5 hingga 5, dengan resolusi setidaknya satu titik setiap 1/2 unit. Persyaratan sumbu Y sama. Ini mungkin tampak seperti kisaran kecil dibandingkan dengan kalkulator modern, tetapi kemungkinan besar akan sepele dalam meningkatkan ini. Grafik harus memiliki sumbu yang digambar di atasnya, dengan tanda centang dalam bentuk +
pada bilangan bulat.
Formula harus dievaluasi dengan urutan operasi normal. Tidak akan ada asimtot vertikal / daerah tidak terdefinisi dalam formula ini. Variabel akan selalu x. Jika dua rumus dimasukkan dengan nomor persamaan yang sama, yang tertua harus dihapus dan diganti dengan rumus baru. Formula kosong harus dievaluasi menjadi nol. Karena kemungkinan formula tidak akan selalu memberikan kelipatan 1/2 yang bagus, Anda harus membulatkan ke 1/2 terdekat.
Ketika suatu rumus digambarkan, garisnya harus dibentuk dari jumlah rumus tersebut. Ketika sebuah garis melewati sumbu, sumbu harus digambarkan di atas. Ketika dua garis saling bersilangan, tidak masalah yang ditampilkan.
Contoh Input
f1(x)=x+1
Keluaran
+ 1
| 1
+ 1
| 1
+ 1
| 1
+ 1
|1
+
1|
+-+-+-+-+-+-+-+-+-+-+
1 |
1 +
1 |
1 +
1 |
1 +
1 |
1 +
|
+
Memasukkan
f2(x)=(x^2)^0.25
Keluaran
+ 1
| 1
+ 1
| 1
+ 1
| 1
2222 + 1 2222
222 |1 222
22 + 22
2|2
+-+-+-+-+-+-+-+-+-+-+
1 |
1 +
1 |
1 +
1 |
1 +
1 |
1 +
|
+
Memasukkan
f1(x)=-x
(perhatikan, program Anda dapat menolak input ini dan hanya kecuali 0-x atau x * -1, tetapi ini harus didokumentasikan)
Keluaran
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
key/2
dan menyingkirkan dua karakter? Saya tidak tahu Ruby, jadi saya mungkin tidak benar.