Eine Friedman-Zahl ist eine positive Ganzzahl, die einem nicht trivialen Ausdruck entspricht, der seine eigenen Ziffern in Kombination mit den Operationen +, -, *, /, ^, Klammern und Verkettung verwendet.
Eine Nice Friedman-Zahl ist eine positive Ganzzahl, die einem nicht trivialen Ausdruck entspricht, der seine eigenen Ziffern in Kombination mit denselben Operationen verwendet, wobei die Ziffern in ihrer ursprünglichen Reihenfolge vorliegen.
Eine Very Nice Friedman Number (VNFN), die ich hier erfinde, ist eine Nice Friedman Number, die ohne die (meiner Meinung nach) weniger hübschen Teile eines solchen Ausdrucks geschrieben werden kann. Klammern, Verkettung und unäre Verneinung sind nicht zulässig.
Für diese Herausforderung gibt es drei Möglichkeiten, einen Ausdruck ohne Klammern zu schreiben.
Präfix: Dies entspricht der Linksassoziativität . Diese Art von Ausdruck wird mit allen Operatoren links von den Ziffern geschrieben. Jeder Operator gilt für die folgenden zwei Ausdrücke. Zum Beispiel:
*+*1234 = *(+(*(1,2),3),4) = (((1*2)+3)*4) = 20
Eine VNFN, die auf diese Weise geschrieben werden kann, ist 343:
^+343 = ^(+(3,4),3) = ((3+4)^3) = 343
Postfix: Dies entspricht der Rechtsassoziativität. Es ist wie bei der Präfixnotation, nur dass die Operation rechts von den Ziffern steht. Jeder Operator gilt für die beiden vorherigen Ausdrücke. Zum Beispiel:
1234*+* = (1,(2,(3,4)*)+)* = (1*(2+(3*4))) = 14
Eine VNFN, die auf diese Weise geschrieben werden kann, ist 15655:
15655^+** = (1,(5,(6,(5,5)^)+)*)* = (1*(5*(6+(5^5)))) = 15655
Infix: Die Infix-Notation verwendet die Standardreihenfolge für die fünf Operationen. Für die Zwecke der Herausforderung wird diese Operationsreihenfolge wie folgt definiert: Klammern Sie ^
zuerst rechts assoziativ ein. Dann in Klammern *
und /
gleichzeitig assoziativ verlassen. Schließlich in Klammern +
und -
gleichzeitig assoziativ verlassen.
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
Eine VNFN, die auf diese Weise geschrieben werden kann, ist 11664:
1*1*6^6/4 = (((1*1)*(6^6))/4) = 11664
Herausforderung: Wenn eine positive Ganzzahl als nicht-trivialer Ausdruck der eigenen Ziffern in Präfix-, Infix- oder Postfix-Notation angegeben werden kann, geben Sie diesen Ausdruck aus. Wenn nicht, nichts ausgeben.
Erläuterungen: Wenn mehrere Darstellungen möglich sind, können Sie eine beliebige nicht leere Teilmenge davon ausgeben. Zum Beispiel ist 736 eine VNFN:
+^736 = 736
7+3^6 = 736
+^736
, 7+3^6
oder beides wären alles akzeptable Ausgaben.
Ein "Trivial" -Ausdruck bedeutet einen Ausdruck, der keine Operatoren verwendet. Dies ist nur für einstellige Nummern relevant und bedeutet, dass einstellige Nummern keine VNFNs sein können. Dies geht aus der Definition einer Friedman-Zahl hervor.
Bei Eingaben unter einer Million sollten die Antworten in Sekunden oder Minuten ausgeführt werden.
IO: Standard IO-Regeln. Volles Programm, Funktion, Verb oder ähnliches. STDIN, Kommandozeile, Funktionsargument oder ähnliches. Für die Ausgabe von "Nothing" sind die leere Zeichenfolge, eine leere Zeile null
oder ähnliches und eine leere Auflistung in Ordnung. Die Ausgabe kann eine Zeichenfolge sein, die durch ein Zeichen begrenzt ist, das sich nicht in einer Darstellung befindet, oder es kann sich um eine Sammlung von Zeichenfolgen handeln.
Beispiele:
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
Wertung: Dies ist Codegolf. Wenigste Bytes gewinnt.
Wenn Sie eine finden, geben Sie in Ihrer Antwort bitte eine neue Very Nice Friedman-Nummer an.
Parentheses, concatenation and unary negation are disallowed.
*(+(*(1,2),3,4)
fehlt eine enge paren, nach,3