TI-BASIC(TI-84)、30 32 31バイト
@SolomonUckoのおかげで-1バイト!
While Ans>9:Disp Ans:prod(int(10fPart(Ans10^(seq(-X-1,X,0,log(Ans:End:Ans
入力はですAns
。
出力はチャレンジ要求として表示されます。Ans
最後のステップを印刷するには、末尾が必要です。
私はこの式を自分で考えたのではなく、ここでそれを見つけて、より適切に挑戦に合うように修正しました。
編集: 課題を読み直すと、製品が1桁の場合、プログラムを終了する必要があることに気付きました。したがって、これを説明するために2バイトが追加されました。
例:
24456756
24456756
prgmCDGF8
24456756
201600
0
11112
11112
prgmCDGF8
11112
2
説明:
While Ans>9 ;loop until the product is one digit
Disp Ans ;display the current product
prod( ;get the product of...
int( ; the integer part of...
10fPart( ; ten times the fractional part of...
Ans ; each element in the following list times the
; current product
10^( ; multiplied by the list generated by using each
; element of the following list as an exponent
; for 10^n
seq(-X-1),X,0,log(Ans ; generate a list of exponents from -1 to -L where
; L = the length of the current product
End
Ans ;leave the final product in "Ans" and implicitly
; print it
Visual Model:
Ans
から始まります125673
。
このモデルは、数字の乗算の背後にあるロジックのみを対象としています。他のすべてが理解しやすいです。
seq(-X-1,X,0,log(Ans => seq(-X-1,X,0,5.0992
{-1 -2 -3 -4 -5 -6}
10^(...
{.1 .01 .001 1E-4 1E-5 1E-6}
Ans...
{12567.3 1256.73 125.673 12.5673 1.25673 .125673}
fPart(...
{.3 .73 .673 .5673 .25673 .125673}
10...
{3 7.3 6.73 5.673 2.5673 1.25673}
int(...
{3 7 6 5 2 1}
(the digits of the number, reversed)
prod(...
1260
(process is repeated again)
seq(-X-1,X,0,log(Ans => seq(-X-1,X,0,3.1004
{-1 -2 -3 -4}
10^(...
{.1 .01 .001 1E-4}
Ans...
{126 12.6 1.26 .126}
fPart(...
{0 .6 .26 .126}
10...
{0 6 2.6 1.26}
int(...
{0 6 2 1}
prod(...
0
(product is less than 10. loop ends)
ノート:
TI-BASICはトークン化された言語です。文字数がバイト数と等しくありません。
10^(
で、この1バイトのトークンが。
このプログラムは、TI計算機の10進精度の制限のため、14桁を超える整数を持つ正しい製品シーケンスを提供しません。