DC, 104 byte
Đầu vào được lấy từ thiết bị đầu cuối, đầu ra được in và cũng trên ngăn xếp.
Bởi vì điều này sử dụng? Toán tử, bạn cần sử dụng dc -e "<solution>"
hoặc dc <file with solution in it>
.
Không ai từng thấy câu trả lời của tôi, chứ đừng nói đến việc bỏ phiếu cho họ, nhưng tôi thực sự chỉ thích giải quyết các vấn đề ở DC. Đó là giải pháp kém hiệu quả nhất trong chủ đề này cho đến nay, nhưng tôi nghĩ rằng dù sao tôi cũng sẽ đăng nó.
1sb?sn[lesi]ss[lble1+dse^dln=sln>c]sc[liSflq1+sq]sm[Lfplq1-dsq0<p]dsp[lb1+sb0si0selcxli0!=mlbln!=h]dshxx
công cụ khởi động
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
Macro để tăng cơ sở cho tất cả các quyền hạn cho đến khi kết quả lớn hơn mục tiêu hoặc bằng với mục tiêu
[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
Macro để lưu giá trị số mũ hợp lệ như được tìm thấy từ các macro số mũ ở trên vào ngăn xếp khác
[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
Macro để chạy macro trên 2 lần (macro c) thông qua tất cả các cơ sở từ 2 đến số mục tiêu của chúng tôi
[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
Macro để in các giá trị từ ngăn xếp f
[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]
cho trường hợp thử nghiệm cuối cùng. Nó cũng có thể in[6 3 2 1]
,[1.0 2.0 3.0 6.0]
hoặc[6.0 3.0 2.0 1.0]
?