Un numero di Friedman è un numero intero positivo uguale a un'espressione non banale che utilizza le proprie cifre in combinazione con le operazioni +, -, *, /, ^, parentesi e concatenazione.
Un Nice Friedman Number è un numero intero positivo uguale a un'espressione non banale che utilizza le proprie cifre in combinazione con le stesse operazioni, con le cifre nell'ordine originale.
Un Very Nice Friedman Number (VNFN), che sto inventando qui, è un Nice Friedman Number che può essere scritto senza le parti meno belle (a mio avviso) di tale espressione. Non sono consentite parentesi, concatenazione e negazione unaria.
Per questa sfida, ci sono tre modi possibili di scrivere un'espressione senza parentesi.
Prefisso: equivale all'associatività di sinistra. Questo tipo di espressione è scritto con tutti gli operatori a sinistra delle cifre. Ogni operatore si applica alle seguenti due espressioni. Per esempio:
*+*1234 = *(+(*(1,2),3),4) = (((1*2)+3)*4) = 20
Un VNFN che può essere scritto in questo modo è 343:
^+343 = ^(+(3,4),3) = ((3+4)^3) = 343
Postfix: equivale alla giusta associatività. È proprio come la notazione del prefisso, tranne per il fatto che l'operazione va a destra delle cifre. Ogni operatore si applica alle due espressioni precedenti. Per esempio:
1234*+* = (1,(2,(3,4)*)+)* = (1*(2+(3*4))) = 14
Un VNFN che può essere scritto in questo modo è 15655:
15655^+** = (1,(5,(6,(5,5)^)+)*)* = (1*(5*(6+(5^5)))) = 15655
Infix: la notazione Infix utilizza l'ordine standard delle operazioni per le cinque operazioni. Ai fini della sfida, tale ordine di operazioni sarà definito come segue: ^
prima tra parentesi , associativamente a destra. Quindi, tra parentesi *
e /
contemporaneamente, lasciato associativamente. Infine, tra parentesi +
e -
contemporaneamente, lasciato associativamente.
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 che può essere scritto in questo modo è 11664:
1*1*6^6/4 = (((1*1)*(6^6))/4) = 11664
Sfida: dato un numero intero positivo, se può essere espresso come espressione non banale delle proprie cifre in notazione prefisso, infisso o postfisso, genera quell'espressione. In caso contrario, non produrre nulla.
Chiarimenti: se sono possibili più rappresentazioni, è possibile produrre qualsiasi sottoinsieme non vuoto di esse. Ad esempio, 736 è un VNFN:
+^736 = 736
7+3^6 = 736
+^736
, 7+3^6
O entrambi sarebbero tutti uscite accettabili.
Un'espressione "Trivial" indica una che non utilizza alcun operatore. Questo è rilevante solo per numeri di una cifra e significa che i numeri di una cifra non possono essere VNFN. Questo è ereditato dalla definizione di un numero di Friedman.
Le risposte dovrebbero essere eseguite in secondi o minuti su input inferiori a un milione.
IO: regole IO standard. Programma completo, funzione, verbo o simili. STDIN, riga di comando, argomento della funzione o simile. Per l'output di "Nothing", la stringa vuota, una riga vuota null
o simile e una raccolta vuota vanno bene. L'output può essere una stringa delimitata da un carattere che non può essere in una rappresentazione o può essere una raccolta di stringhe.
Esempi:
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
Punteggio: questo è il codice golf. Vince il minor numero di byte.
Inoltre, se ne trovi uno, ti preghiamo di fornire un nuovo numero Friedman molto bello nella tua risposta.
Parentheses, concatenation and unary negation are disallowed.
*(+(*(1,2),3,4)
manca un paren vicino, dopo,3