fizzbuzz.factor
· 490 B · Factor
Raw
Playground
USING: io kernel math math.functions math.parser ranges
sequences ;
IN: rosetta-code.fizz-buzz
PREDICATE: fizz < integer 3 divisor? ;
PREDICATE: buzz < integer 5 divisor? ;
INTERSECTION: fizzbuzz fizz buzz ;
GENERIC: fizzbuzz>string ( n -- str )
M: fizz fizzbuzz>string
drop "Fizz" ;
M: buzz fizzbuzz>string
drop "Buzz" ;
M: fizzbuzz fizzbuzz>string
drop "FizzBuzz" ;
M: integer fizzbuzz>string
number>string ;
MAIN: [ 1 100 [a..b] [ fizzbuzz>string print ] each ]
| 1 | USING: io kernel math math.functions math.parser ranges |
| 2 | sequences ; |
| 3 | IN: rosetta-code.fizz-buzz |
| 4 | |
| 5 | PREDICATE: fizz < integer 3 divisor? ; |
| 6 | PREDICATE: buzz < integer 5 divisor? ; |
| 7 | |
| 8 | INTERSECTION: fizzbuzz fizz buzz ; |
| 9 | |
| 10 | GENERIC: fizzbuzz>string ( n -- str ) |
| 11 | |
| 12 | M: fizz fizzbuzz>string |
| 13 | drop "Fizz" ; |
| 14 | |
| 15 | M: buzz fizzbuzz>string |
| 16 | drop "Buzz" ; |
| 17 | |
| 18 | M: fizzbuzz fizzbuzz>string |
| 19 | drop "FizzBuzz" ; |
| 20 | |
| 21 | M: integer fizzbuzz>string |
| 22 | number>string ; |
| 23 | |
| 24 | MAIN: [ 1 100 [a..b] [ fizzbuzz>string print ] each ] |