Un nombre de Friedman est un entier positif qui est égal à une expression non triviale qui utilise ses propres chiffres en combinaison avec les opérations +, -, *, /, ^, les parenthèses et la concaténation.
Un nombre de Nice Friedman est un entier positif qui est égal à une expression non triviale qui utilise ses propres chiffres en combinaison avec les mêmes opérations, avec les chiffres dans leur ordre d'origine.
Un Very Nice Friedman Number (VNFN), que j'invente ici, est un Nice Friedman Number qui peut être écrit sans les parties les moins jolies (à mon avis) d'une telle expression. Les parenthèses, la concaténation et la négation unaire sont interdites.
Pour ce défi, il existe trois façons possibles d'écrire une expression sans parenthèses.
Préfixe: cela équivaut à l'associativité de gauche. Ce type d'expression est écrit avec tous les opérateurs à gauche des chiffres. Chaque opérateur s'applique aux deux expressions suivantes. Par exemple:
*+*1234 = *(+(*(1,2),3),4) = (((1*2)+3)*4) = 20
Un VNFN qui peut être écrit de cette façon est 343:
^+343 = ^(+(3,4),3) = ((3+4)^3) = 343
Postfix: c'est l'équivalent de l'associativité droite. C'est comme la notation de préfixe, sauf que l'opération va à droite des chiffres. Chaque opérateur s'applique aux deux expressions précédentes. Par exemple:
1234*+* = (1,(2,(3,4)*)+)* = (1*(2+(3*4))) = 14
Un VNFN qui peut être écrit de cette façon est le 15655:
15655^+** = (1,(5,(6,(5,5)^)+)*)* = (1*(5*(6+(5^5)))) = 15655
Infix: la notation Infix utilise l'ordre standard des opérations pour les cinq opérations. Aux fins du défi, cet ordre d'opérations sera défini comme suit: Parenthèse d' ^
abord, à droite de manière associative. Ensuite, entre parenthèses *
et /
simultanément, à gauche de manière associative. Enfin, entre parenthèses +
et -
simultanément, laissé associativement.
1-2-3 = (1-2)-3 = -4
2/3*2 = (2/3)*2 = 4/3
2^2^3 = 2^(2^3) = 256
1^2*3+4 = (1^2)*3+4 = 7
Un VNFN qui peut être écrit de cette façon est 11664:
1*1*6^6/4 = (((1*1)*(6^6))/4) = 11664
Défi: étant donné un entier positif, s'il peut être exprimé comme une expression non triviale de ses propres chiffres dans la notation préfixée, infixée ou postfixée, affichez cette expression. Sinon, ne rien produire.
Clarifications: si plusieurs représentations sont possibles, vous pouvez en sortir n'importe quel sous-ensemble non vide. Par exemple, 736 est un VNFN:
+^736 = 736
7+3^6 = 736
+^736
, 7+3^6
ou les deux seraient tous des sorties acceptables.
Une expression "triviale" signifie une expression qui n'utilise aucun opérateur. Cela ne concerne que les numéros à un chiffre et signifie que les numéros à un chiffre ne peuvent pas être des VNFN. Ceci est hérité de la définition d'un nombre de Friedman.
Les réponses devraient s'exécuter en quelques secondes ou minutes sur des entrées inférieures à un million.
IO: règles d'E / S standard. Programme complet, fonction, verbe ou similaire. STDIN, ligne de commande, argument de fonction ou similaire. Pour la sortie de "Nothing", la chaîne vide, une ligne vierge null
ou similaire et une collection vide conviennent parfaitement. La sortie peut être une chaîne délimitée avec un caractère qui ne peut pas être dans une représentation, ou peut être une collection de chaînes.
Exemples:
127
None
343
^+343
736
736^+
7+3^6
2502
None
15655
15655^+**
11664
1*1*6^6/4
1^1*6^6/4
5
None
Notation: Il s'agit du code golf. Le moins d'octets gagne.
De plus, si vous en trouvez un, veuillez donner un nouveau numéro de Friedman très agréable dans votre réponse.
Parentheses, concatenation and unary negation are disallowed.
*(+(*(1,2),3,4)
manque une parenthèse rapprochée, après,3