Usando i nostri familiari simboli matematici: +, x, parentesi e qualsiasi numero razionale, è facile creare espressioni che valutino il numero desiderato. Ad esempio: 1+(2x3)=7
, (1+2)+(3x6.5)=22.5
e così via. Abbastanza noioso.
In questa sfida, useremo un nuovo operatore: ±
. L'uso di ±
in un'espressione significa che è necessario valutare l'espressione sostituendo quella ±
di +
o -
in tutti i modi possibili e restituendo l'insieme di tutti i possibili valori. Per esempio:
1±2±3 = {-4,0,2,6}
perché1±2±3
può essere qualsiasi1+2+3
,1+2-3
,1-2+3
e1-2-3
ei loro valori sono6,0,2,-4
rispettivamente.(±2)x(2±3) = {-10,-2,2,10}
per ragioni simili.
Ora, come risulta, in ogni insieme di numeri reali distinti, è possibile creare un'espressione con +
, x
, (
, )
, ±
, e numeri reali che restituisce il set indicato.
Compito
Il vostro compito è quello di scrivere un programma o una funzione in una lingua di vostra scelta, che prende una sequenza (lista / array / qualsiasi formato conveniente) di interi ed emette un'espressione (come una stringa) composto da +
, x
, (
, )
, ±
, e numeri razionali che valuta l'insieme dei numeri indicati.
- Nota che il personaggio esatto
±
non ha importanza; puoi usare qualsiasi altro personaggio di tua scelta purché sia distinguibile dagli altri personaggi che stai usando. Ma devi menzionare quale personaggio stai usando nella tua presentazione. - È possibile che l'input sia costituito da approssimazioni decimali (fino a un'accuratezza ragionevole) dei numeri razionali utilizzati.
- Input e output possono essere acquisiti in uno dei modi standard.
- Sono vietate le scappatoie standard.
- Puoi presumere che i numeri interi indicati siano distinti e forniti in ordine crescente.
- L'output può contenere spazi e newline.
Criterio vincente
Questo è code-golf , quindi vince il codice più breve in byte.
Esempi
Input | Uscita possibile ------------- + ----------------------------- [1,2,3] | 2 ± 0,5 ± 0,5 [-7, -3,1,21] | (1 ± 2) x (3 ± 4)
Idea tratta da una domanda del Torneo delle città, autunno 2015 .