Ci sono state molte domande riguardanti i calcolatori; tuttavia, non sembra che nessuno implichi l'implementazione di una calcolatrice grafica.
La sfida
Devi scrivere un programma completo che prende più formule come input da STDIN e le rappresenta graficamente su STDOUT. L'input prenderà la forma f1(x)=x^2-x-1. Ci sarà un fseguito da un numero 0-9 (incluso), seguito da (x)=, seguito dalla formula da rappresentare graficamente. Il tuo programma dovrebbe essere in grado di prendere input, grafico, prendere più input, grafico, ecc.
Questo è il codice golf.
Il grafico dovrebbe avere un intervallo dell'asse X da -5 a 5, con una risoluzione di almeno un punto ogni 1/2 unità. I requisiti dell'asse Y sono gli stessi. Questo può sembrare un piccolo intervallo rispetto ai calcolatori moderni, ma molto probabilmente sarà banale aumentarlo. Il grafico dovrebbe avere l'asse disegnato su di essi, con segni di spunta sotto forma di +numeri interi.
La formula deve essere valutata con il normale ordine di funzionamento. Non ci saranno asintoti verticali / regioni indefinite in queste formule. La variabile sarà sempre x. Se vengono inserite due formule con lo stesso numero di equazione, quella più vecchia deve essere cancellata e sostituita con la nuova formula. Le formule vuote devono essere valutate a zero. Poiché è probabile che la formula non fornisca sempre un bel multiplo di 1/2, devi arrotondare al 1/2 più vicino.
Quando una formula viene rappresentata graficamente, la sua linea dovrebbe essere formata dal numero della formula. Quando una linea attraversa un asse, l'asse deve essere disegnato in alto. Quando due linee si incrociano, non importa quale sia mostrato.
Esempio di input
f1(x)=x+1
Produzione
+ 1
| 1
+ 1
| 1
+ 1
| 1
+ 1
|1
+
1|
+-+-+-+-+-+-+-+-+-+-+
1 |
1 +
1 |
1 +
1 |
1 +
1 |
1 +
|
+
Ingresso
f2(x)=(x^2)^0.25
Produzione
+ 1
| 1
+ 1
| 1
+ 1
| 1
2222 + 1 2222
222 |1 222
22 + 22
2|2
+-+-+-+-+-+-+-+-+-+-+
1 |
1 +
1 |
1 +
1 |
1 +
1 |
1 +
|
+
Ingresso
f1(x)=-x
(nota, è accettabile per il tuo programma rifiutare questo input e solo tranne 0-xo x * -1, ma questo dovrebbe essere documentato)
Produzione
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.5pery/2e sbarazzarsi di due personaggi? Non conosco Ruby, quindi potrei non avere ragione.