まずは整数をベクトル表記に変換します。
1: 25129925999 3: 25129925999 . 2: 10 1: [11, 10, 9, ..., 1, 0] . 25129925999 RET 10 RET 12 RET v x 12 RET -
1: 25129925999 1: [0, 2, 25, 251, 2512, ... ] 2: [100000000000, ... ] . . V M ^ s 1 V M \
(思い出してください。\ コマンドは整数商を計算します。)
1: [0, 2, 5, 1, 2, 9, 9, 2, 5, 9, 9, 9] . 10 V M % s 2
次にこの数をインクリメントしなければなりません。 これは最下位桁に 1 を加えて、かつ繰上り処理を伴います。 ある桁が 9 で、かつその右の全ての桁が 9 ならその桁より左に 繰上りが発生します。
1: [0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1] 1: [1, 1, 1, 0, 0, 1, ... ] . . 9 V M a = v v
1: [1, 1, 1, 0, 0, 0, ... ] 1: [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1] . . V U * v v 1 |
1 と 0 のベクトルに * を蓄積作用させると、1 の最初の連続だけが残ります。
(訳注: 蓄積作用は左から右に作用するので、
この前後にリスト反転 v v を入れている。)
最右桁を除き、1 が残った桁全てに繰上りが発生します。
右端に 1 を連結するのは、
繰上りフラグ 1 を繰上り先の桁に位置させ、右端に1を加える処理のためです。
2: [0, 0, 0, 0, ... ] 1: [0, 0, 2, 5, 1, 2, 9, 9, 2, 6, 0, 0, 0] 1: [0, 0, 2, 5, ... ] . . 0 r 2 | V M + 10 V M %
ここで、元の数の 左 に 0 を連結しました。 これは、繰上りが発生した桁から 1 桁繰上ることを見越しての操作です。
最後に、このリストを整数に変換します。
3: [0, 0, 2, 5, ... ] 2: [0, 0, 2, 5, ... ] 2: 1000000000000 1: [1000000000000, 100000000000, ... ] 1: [100000000000, ... ] . . 10 RET 12 ^ r 1 |
1: [0, 0, 20000000000, 5000000000, ... ] 1: 25129926000 . . V M * V R +
最終ステップの別の方法としては、 `10 $$ + $' を桁ベクトルにまとめ作用させる方法があります。
1: [0, 0, 2, 5, ... ] 1: 25129926000 . . V R ' 10 $$ + $ RET
Go to the first, previous, next, last section, table of contents.
利用度数