DC, 104 Bytes
Die Eingabe wird vom Terminal übernommen, die Ausgabe wird gedruckt und auch auf dem Stapel abgelegt.
Weil dies das? Betreiber, müssen Sie dc -e "<solution>"
oder verwenden dc <file with solution in it>
.
Niemand kann meine Antworten sehen, geschweige denn darüber abstimmen, aber es macht mir wirklich Spaß, Probleme in DC zu lösen. Es ist die am wenigsten effiziente Lösung in diesem Thread, aber ich dachte, ich würde es trotzdem posten.
1sb?sn[lesi]ss[lble1+dse^dln=sln>c]sc[liSflq1+sq]sm[Lfplq1-dsq0<p]dsp[lb1+sb0si0selcxli0!=mlbln!=h]dshxx
Starter Zeug
1sb Store 1 in register b
?sn Store user input in register n
[lesi]ss A macro to copy the e to the i register, stored in the s register
Makro, um eine Basis für alle Kräfte zu erhöhen, bis das Ergebnis größer als das Ziel oder gleich dem Ziel ist
[lble1+dse^dln=sln>c]sc
[lb ] load our base num (register b)
[ le ] load our exponent (register e)
[ 1+dse ] add 1 to the exponent, copy and store in the e register
[ ^d ] raise the base to the exponent and copy it
[ ln=s ] load the user input, if that is equal to the power result run the macro in register s
[ ln>c] load the user input, if it's greater than the power result run the macro in register c (this one)
[ ]sc save this macro in register c
Makro zum Speichern eines gültigen Exponentenwerts aus den obigen Exponentenmakros in einem anderen Stapel
[liSflq1+sq]sm
[liSf ] copy the i register to the top of the stack in register f
[ lq1+sq] add 1 to the q register
[ ]sm save this macro in the m register
Makro, um das obige Makro 2x (Makro c) durch alle Basen von 2 bis zu unserer Zielnummer zu führen
[lb1+sb0si0selcxli0!=mlbln!=h]dsh
[lb1+sb ] add 1 to the base number
[ 0si0se ] reset the i and e registers (previously found value and exponent
[ lcx ] load and run the c macro
[ li0!=m ] load the result of the c macro and if it's not 0, run m to save it to the f stack
[ lbln!=h] if our base number is not equal to our target number, run macro h (this macro)
[ ]dsh duplicate this macro and save one copy, so that one is left on the stack to run later
Makro zum Drucken der Werte aus dem f-Stapel
[Lfplq1-dsq0<p]dsp
[Lfp ] load the top value from the f register and print it
[ lq1-dsq ] load the q register and subtract one from it and save it
[ 0<p] if the q register is greater than 0, run macro p (this macro) again
[ ]dsp duplicate this macro and save one copy, so that one is left on the stack to run later
xx finally run the two macros on the stack (h and then p)
[1 2 3 6]
für den letzten Testfall gedruckt . Könnte es auch drucken[6 3 2 1]
,[1.0 2.0 3.0 6.0]
oder[6.0 3.0 2.0 1.0]
?