Middle three digits: Difference between revisions
m
→{{header|Factor}}: style tweaks
No edit summary |
m (→{{header|Factor}}: style tweaks) |
||
Line 2,026:
IN: rosetta-code.middle-three-digits
CONSTANT: test-values {
-123 -100 100 -12345 1 2 -1 -10 2002 -2002 0
}
: (middle-three) ( str -- str' )
[ midpoint@ ] keep [ [ 1 - ] [ 2 + ] bi ] dip subseq ;
: too-short ( -- )
"Number must have at least three digits." print ;
: number-even ( -- )
"Number must have an odd number of digits." print ;
:
abs number>string {
{ [ dup length 3 < ] [ drop too-short ] }
{ [ dup length even? ] [ drop number-even ] }
[ (middle-three) print ]
} cond ;
: main ( -- )
test-values [ dup "%9d : " printf middle-three ] each ;
MAIN: main</lang>
|