20 lines
502 B
Text
20 lines
502 B
Text
|
|
class FizzBuzz(schema=Hash(<3 Fizz 5 Buzz>...)) {
|
|||
|
|
method filter(this) {
|
|||
|
|
var fb = ''
|
|||
|
|
schema.sort_by {|k,_| k.to_i }.each { |pair|
|
|||
|
|
fb += (pair[0].to_i `divides` this ? pair[1] : '')
|
|||
|
|
}
|
|||
|
|
fb.len > 0 ? fb : this
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
func GeneralFizzBuzz(upto, schema) {
|
|||
|
|
var ping = FizzBuzz()
|
|||
|
|
if (nil != schema) {
|
|||
|
|
ping.schema = schema.to_hash
|
|||
|
|
}
|
|||
|
|
(1..upto).map {|i| ping.filter(i) }
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
GeneralFizzBuzz(20, <3 Fizz 5 Buzz 7 Baxx>).each { .say }
|