← All posts tagged вызов-принят

Renha

Решение задачи из #2745090 на gforth. На оптимальность решения не претендую (оно наивное), также интересно было самому написать - в реализации стандартных слов (например, .) не подглядывал. Замечания приветствуются. Комментариями снабжать сперва начал (первая строка), но это выглядело странно, так что оставил только карты стека. Выполнять например так: -234 n>s type

\ create string buffer with 20 cells alloting
create string-buffer 20 cells allot

: n>s ( n --  c-addr u )
	dup 0< if negate '-' swap else 0 swap then 0 ( minus-char number length )
	begin 1+ swap 10 /mod swap '0' + -rot tuck 0= until nip
	1+ dup roll swap ( chars length )
	dup begin 2dup - string-buffer + 1 4 roll fill 1- dup 0= until drop
	string-buffer swap
;