Код:
VARIABLE Позиция
: ВХодное_Число S" 012345000" ;
CREATE Счётчик_Цифр 10 ALLOT
CREATE ВЫходное_Число ВХодное_Число 2* ALLOT DROP
: Цифру_в_Позицию ( CH -- )
48 + ВЫходное_Число Позиция @ + C! Позиция @ 1+ Позиция !
;
: Подсчёт_Цифр ( --)
ВХодное_Число OVER + SWAP
DO I C@ 48 - Счётчик_Цифр + DUP C@ 1+ SWAP C!
LOOP
;
: Создание_Числа_по_Правилу ( --)
ВХодное_Число OVER + SWAP
DO I C@ 48 - DUP DUP Счётчик_Цифр + C@ 1 =
IF DUP Цифру_в_Позицию Цифру_в_Позицию
ELSE Цифру_в_Позицию
THEN
LOOP
;
: Вывод_Результата ( --)
ВХодное_Число TYPE CR
ВЫходное_Число Позиция @ TYPE
;
: BOSS ( --)
Подсчёт_Цифр
Создание_Числа_по_Правилу
Вывод_Результата
;
CR BOSS CR KEY DROP BYE