En utilisant nos symboles mathématiques familiers: +, x, parenthèses et tout nombre rationnel, il est facile de créer des expressions qui évaluent un certain nombre souhaité. Par exemple: 1+(2x3)=7
, (1+2)+(3x6.5)=22.5
et ainsi de suite. Assez ennuyeux.
Dans ce défi, nous allons utiliser un nouvel opérateur: ±
. L'utilisation de ±
dans une expression signifie que vous devez évaluer l'expression en remplaçant le ±
s par +
ou -
de toutes les manières possibles, et renvoyer l'ensemble de toutes les valeurs possibles. Par exemple:
1±2±3 = {-4,0,2,6}
parce que1±2±3
peut être l' un1+2+3
,1+2-3
,1-2+3
et1-2-3
et leurs valeurs sont6,0,2,-4
respectivement.(±2)x(2±3) = {-10,-2,2,10}
pour des raisons similaires.
Maintenant, il se trouve que , étant donné un ensemble de nombres réels distincts, il est possible de créer une expression avec +
, x
, (
, )
, ±
et des nombres réels qui permet d' évaluer à l'ensemble donné.
Tâche
Votre tâche est d'écrire un programme ou une fonction dans une langue de votre choix, qui prend une séquence (liste / série / tout format pratique) des entiers et génère une expression (comme une chaîne) comprenant +
, x
, (
, )
, ±
et nombres rationnels qui évalue à l'ensemble des nombres donnés.
- Notez que le caractère exact
±
n'a pas d'importance; vous pouvez utiliser tout autre personnage de votre choix tant qu'il se distingue des autres personnages que vous utilisez. Mais vous devez mentionner quel personnage vous utilisez dans votre soumission. - L'entrée peut consister en approximations décimales (jusqu'à une précision raisonnable) des nombres rationnels utilisés.
- L'entrée et la sortie peuvent être prises de n'importe quelle manière standard.
- Les failles standard sont interdites.
- Vous pouvez supposer que les entiers donnés seront distincts et fournis dans l'ordre croissant.
- La sortie peut contenir des espaces et des retours à la ligne.
Critère gagnant
C'est le code-golf , donc le code le plus court en octets gagne.
Exemples
Entrée | Sortie possible ------------- + ----------------------------- [1,2,3] | 2 ± 0,5 ± 0,5 [-7, -3,1,21] | (1 ± 2) x (3 ± 4)
Idée tirée d'une question du Tournoi des villes, automne 2015 .
la source
Réponses:
Python 2 , 56 octets
Essayez-le en ligne!
Le
?
représente±
. Exemple d'utilisation:L'idée est que nous pouvons prendre une expression
E
et attacher une nouvelle valeurh
à son ensemble de valeurs en faisant(.5±.5)*(E+-h)+h
.la source
+-h
, et pas seulement-h
? Autrement dit, pourquoi ne pas faire le+
a-
et supprimer le-
qui est actuellement dans le programme?-
opérateur dans l'expression.Haskell , 52 octets
Essayez-le en ligne!
Utilise
?
pour±
. Exemple:La fonction le
shows
faitshows a b=(show a)++b
, une astuce que j'ai apprise de Lynn.la source
Haskell , 58 octets
En utilisant
#
de±
, car c'est un octet de moins.f
prend une liste d'entiers et renvoie une chaîne.Le résultat est de la forme
n+(.5#.5)x(rest)
, oùn
est le premier élément de la liste etrest
est la représentation de tous les autres avecn
soustrait de chacun.Essayez-le en ligne!
la source
Gelée , 29 octets
Imprime v + (0,5¤0,5) × (i 1 + (0,5¤0,5) × ((i 2 + (0,5¤0,5) × (... (i n ) ...))) où v est le premier nombre de le tableau d'entrée et i n est le n ème différence incrémentale entre les éléments du tableau d'entrée.
Essayez-le en ligne!
Comment?
la source
05AB1E , 25 octets
Essayez-le en ligne!
Explication
Construire l'expression à partir de la droite se termine malheureusement avec le même nombre d'octets
0¸«¥¤s¨RvX;Dy"ÿ+(ÿ±ÿ)*(ÿ)
. Les 8 octets utilisés pour la configuration sont le gros gaspillage ici.la source
Haskell, 54 octets
le signe + - est
'?'
. Exemple:la source
JavaScript (ES6),
5651 octetsBasé sur la formule de @ JonathanAllan.
@
représente±
.la source