RosettaCodeData/Task/Gapful-numbers/Forth/gapful-numbers.fth
2023-07-01 13:44:08 -04:00

20 lines
811 B
Forth

variable cnt
: Int>Str s>d <# #s #> ;
: firstDigit C@ [char] 0 - ;
: lastDigit + 1- c@ [char] 0 - ;
: cnt++ cnt dup @ 1+ dup rot ! ;
: GapfulNumber? dup dup Int>Str
2dup drop firstDigit 10 *
-rot lastDigit +
/mod drop 0= ;
: main 0 cnt ! 2dup
cr ." First " . ." gapful numbers >= " .
begin dup cnt @ -
while swap GapfulNumber?
if dup cr cnt++ . ." : " . then
1+ swap
repeat 2drop ;
100 30 main cr
1000000 15 main cr
1000000000 10 main cr