general_fizzbuzz.sf 566 B

1234567891011121314151617181920212223242526
  1. #!/usr/bin/ruby
  2. #
  3. ## https://rosettacode.org/wiki/General_FizzBuzz
  4. #
  5. class FizzBuzz(schema=Hash.new(<3 Fizz 5 Buzz>...)) {
  6. method filter(this) {
  7. var fb = '';
  8. schema.sort_by {|k,_| k.to_i }.each { |pair|
  9. fb += (this %% pair[0].to_n ? pair[1] : '');
  10. }
  11. fb.len > 0 ? fb : this;
  12. }
  13. }
  14. func GeneralFizzBuzz(upto, schema) {
  15. var ping = FizzBuzz();
  16. defined(schema) && (
  17. ping.schema = schema.to_hash;
  18. );
  19. upto.of {|i| ping.filter(i+1) };
  20. }
  21. GeneralFizzBuzz(20, <3 Fizz 5 Buzz 7 Baxx>).each { .say };